소스 검색

1、移除账户余额设定(后续余额接入pay服务)
2、将金额改为Long类型

rayson 11 달 전
부모
커밋
e55a956e7e
25개의 변경된 파일74개의 추가작업 그리고 372개의 파일을 삭제
  1. 0 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/AccountRespDTO.java
  2. 0 14
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApi.java
  3. 0 18
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApiImpl.java
  4. 0 15
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/UserAccountController.java
  5. 1 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobSaveReqVO.java
  6. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/order/vo/AppRecruitTradeOrderCreateReqVO.java
  7. 1 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedRespVO.java
  8. 1 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedSaveReqVO.java
  9. 1 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedSimpleRespVO.java
  10. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderCreateReqVO.java
  11. 0 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderPageReqVO.java
  12. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderRespVO.java
  13. 2 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeSimpleRespVO.java
  14. 1 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobAdvertisedDO.java
  15. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/order/TradeOrderDO.java
  16. 0 12
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/record/UserAccountRecordDO.java
  17. 0 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/UserAccountDO.java
  18. 2 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java
  19. 52 120
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java
  20. 1 39
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  21. 6 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/order/TradeOrderServiceImpl.java
  22. 0 18
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/record/UserAccountRecordService.java
  23. 0 54
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/record/UserAccountRecordServiceImpl.java
  24. 0 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/UserAccountService.java
  25. 0 14
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/UserAccountServiceImpl.java

+ 0 - 3
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/AccountRespDTO.java

@@ -15,7 +15,4 @@ public class AccountRespDTO {
 
     @Schema(description = "积分")
     private Integer point;
-
-    @Schema(description = "余额")
-    private BigDecimal balance;
 }

+ 0 - 14
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApi.java

@@ -35,26 +35,12 @@ public interface UserAccountApi {
     })
     CommonResult<Boolean> updatePoint(@RequestParam("userId") Long userId, @RequestParam("point") Integer point);
 
-    @PutMapping(PREFIX + "/balance/update")
-    @Operation(summary = "更新用户的余额,则创建")
-    @Parameters({
-            @Parameter(name = "userId", description = "用户编号", example = "2", required = true),
-            @Parameter(name = "balance", description = "余额", example = "2", required = true),
-    })
-    CommonResult<Boolean> updateBalance(@RequestParam("userId") Long userId,
-                                        @RequestParam("balance") BigDecimal balance);
-
 
     @PermitAll
     @PostMapping(PREFIX + "/create/point/record")
     @Operation(summary = "创建用户账户积分变动记录")
     CommonResult<Boolean> createPointRecord(@RequestBody AccountRecordSaveReqDTO dto);
 
-    @PermitAll
-    @PostMapping(PREFIX + "/create/balance/record")
-    @Operation(summary = "创建用户账户余额变动记录")
-    CommonResult<Boolean> createBalanceRecord(@RequestBody AccountRecordSaveReqDTO dto);
-
 
     @GetMapping(PREFIX + "/get/point/count")
     @Operation(summary = "获取一段时间内的用户账户积分变动获得的数量")

+ 0 - 18
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApiImpl.java

@@ -31,7 +31,6 @@ public class UserAccountApiImpl implements UserAccountApi {
         UserAccountDO userAccountDO = service.createUserAccountIfAbsent(userId);
         AccountRespDTO dto = new AccountRespDTO();
         dto.setPoint(userAccountDO.getPoint());
-        dto.setBalance(userAccountDO.getBalance());
         return success(dto);
     }
 
@@ -40,10 +39,6 @@ public class UserAccountApiImpl implements UserAccountApi {
         return success(service.updatePoint(userId, point));
     }
 
-    @Override
-    public CommonResult<Boolean> updateBalance(Long userId, BigDecimal balance) {
-        return success(service.updateBalance(userId, balance));
-    }
 
     @Override
     public CommonResult<Boolean> createPointRecord(AccountRecordSaveReqDTO dto) {
@@ -59,19 +54,6 @@ public class UserAccountApiImpl implements UserAccountApi {
         return success(true);
     }
 
-    @Override
-    public CommonResult<Boolean> createBalanceRecord(AccountRecordSaveReqDTO dto) {
-        accountRecordService.createBalanceRecord(
-                dto.getUserId(),
-                dto.getTitle(),
-                MathOperationEnum.from(dto.getOperation()),
-                dto.getBalance(),
-                BalanceBizTypeEnum.from(dto.getBalanceBizType()),
-                dto.getBizId()
-        );
-        return success(true);
-    }
-
     @Override
     public CommonResult<Integer> getPointCount(Long userId,
                                                String url,

+ 0 - 15
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/UserAccountController.java

@@ -66,8 +66,6 @@ public class UserAccountController {
     }
 
 
-
-
     @PutMapping("/update-point")
     @Operation(summary = "修改账户积分")
     @PreAuthorize("@ss.hasPermission('menduner:system:user-point:update')")
@@ -83,18 +81,5 @@ public class UserAccountController {
         return success(true);
     }
 
-    @PutMapping("/update-balance")
-    @Operation(summary = "修改账户余额")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-balance:update')")
-    public CommonResult<Boolean> updateBalance(@Valid @RequestBody AccountBalanceUpdateReqVO updateReqVO) {
-        accountRecordService.createBalanceRecord(updateReqVO.getUserId(),
-                null,
-                MathOperationEnum.ADD.getOperator().equals(updateReqVO.getOperation())
-                        ? MathOperationEnum.ADD : MathOperationEnum.SUBTRACT,
-                updateReqVO.getBalance(),
-                BalanceBizTypeEnum.ADMIN,
-                String.valueOf(updateReqVO.getUserId()));
-        return success(true);
-    }
 
 }

+ 1 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobSaveReqVO.java

@@ -75,10 +75,7 @@ public class AppRecruitJobSaveReqVO {
     private Boolean hire = false;
 
     @Schema(description = "雇佣金额")
-    private BigDecimal hirePrice;
-
-    @Schema(description = "雇佣积分")
-    private Integer hirePoint;
+    private Long hirePrice;
 
 
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/order/vo/AppRecruitTradeOrderCreateReqVO.java

@@ -22,7 +22,7 @@ public class AppRecruitTradeOrderCreateReqVO {
 
     @Schema(description = "价格", example = "30381")
     @NotNull(message = "{1_100_046_013}")
-    private BigDecimal price;
+    private Long price;
 
     @Schema(description = "订单类型 0平台订单|1发布职位订单|2发布众聘职位订单", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private String type;

+ 1 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedRespVO.java

@@ -107,11 +107,7 @@ public class JobAdvertisedRespVO {
 
     @Schema(description = "雇佣金额")
     @ExcelProperty("雇佣金额")
-    private BigDecimal hirePrice;
-
-    @Schema(description = "雇佣积分")
-    @ExcelProperty("雇佣积分")
-    private Integer hirePoint;
+    private Long hirePrice;
 
     @Schema(description = "职位状态", example = "2")
     @ExcelProperty(value = "职位状态", converter = DictConvert.class)

+ 1 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedSaveReqVO.java

@@ -1,6 +1,5 @@
 package com.citu.module.menduner.system.controller.base.job;
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -87,10 +86,7 @@ public class JobAdvertisedSaveReqVO {
     private Boolean hire;
 
     @Schema(description = "雇佣金额")
-    private BigDecimal hirePrice;
-
-    @Schema(description = "雇佣积分")
-    private Integer hirePoint;
+    private Long hirePrice;
 
     @Schema(description = "职位状态", example = "2")
     private String status;

+ 1 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedSimpleRespVO.java

@@ -48,10 +48,7 @@ public class JobAdvertisedSimpleRespVO {
     private Boolean hire;
 
     @Schema(description = "雇佣金额")
-    private BigDecimal hirePrice;
-
-    @Schema(description = "雇佣积分")
-    private Integer hirePoint;
+    private Long hirePrice;
 
     @Schema(description = "状态", example = "1")
     private String status;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderCreateReqVO.java

@@ -30,6 +30,6 @@ public class TradeOrderCreateReqVO {
     private String spuName;
 
     @Schema(description = "价格,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "30381")
-    private BigDecimal price;
+    private Long price;
 
 }

+ 0 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderPageReqVO.java

@@ -1,16 +1,10 @@
 package com.citu.module.menduner.system.controller.base.order;
 
-import com.citu.framework.common.enums.TerminalEnum;
 import com.citu.framework.common.pojo.PageParam;
-import com.citu.module.menduner.system.enums.order.TradeOrderStatusEnum;
-import com.citu.module.menduner.system.enums.order.TradeOrderTypeEnum;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeOrderRespVO.java

@@ -40,7 +40,7 @@ public class TradeOrderRespVO {
     private String spuName;
 
     @Schema(description = "价格")
-    private BigDecimal price;
+    private Long price;
 
     @Schema(description = "订单取消时间")
     private LocalDateTime cancelTime;
@@ -71,7 +71,7 @@ public class TradeOrderRespVO {
     private Long payRefundId;
 
     @Schema(description = "退款金额")
-    private BigDecimal refundPrice;
+    private Long refundPrice;
 
     @Schema(description = "退款完成时间")
     private LocalDateTime refundTime;

+ 2 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/order/TradeSimpleRespVO.java

@@ -3,7 +3,6 @@ package com.citu.module.menduner.system.controller.base.order;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 @Data
@@ -17,7 +16,7 @@ public class TradeSimpleRespVO extends TradeOrderRespVO {
     private String spuName;
 
     @Schema(description = "价格,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "30381")
-    private BigDecimal price;
+    private Long price;
 
     @Schema(description = "是否已支付", requiredMode = Schema.RequiredMode.REQUIRED)
     private Boolean payStatus;
@@ -29,7 +28,7 @@ public class TradeSimpleRespVO extends TradeOrderRespVO {
     private String payChannelCode;
 
     @Schema(description = "退款金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "14039")
-    private BigDecimal refundPrice;
+    private Long refundPrice;
 
     @Schema(description = "退款时间")
     private LocalDateTime refundTime;

+ 1 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobAdvertisedDO.java

@@ -119,11 +119,7 @@ public class JobAdvertisedDO extends TenantBaseDO {
     /**
      * 雇佣金额
      */
-    private BigDecimal hirePrice;
-    /**
-     * 雇佣积分
-     */
-    private Integer hirePoint;
+    private Long hirePrice;
     /**
      * 职位状态
      * <p>

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/order/TradeOrderDO.java

@@ -75,7 +75,7 @@ public class TradeOrderDO extends BaseDO {
     /**
      * 价格,单位:分
      */
-    private BigDecimal price;
+    private Long price;
 
     /**
      * 订单取消时间
@@ -125,7 +125,7 @@ public class TradeOrderDO extends BaseDO {
     /**
      * 退款金额,单位:分
      */
-    private BigDecimal refundPrice;
+    private Long refundPrice;
     /**
      * 退款完成时间
      */

+ 0 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/record/UserAccountRecordDO.java

@@ -78,16 +78,4 @@ public class UserAccountRecordDO extends BaseDO {
      */
     private Integer totalPoint;
 
-    /**
-     * 变动余额
-     * <p>
-     * 1、正数表示获得余额
-     * 2、负数表示消耗余额
-     */
-    private BigDecimal balance;
-    /**
-     * 变动后的余额
-     */
-    private BigDecimal totalBalance;
-
 }

+ 0 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/UserAccountDO.java

@@ -33,10 +33,6 @@ public class UserAccountDO extends BaseDO {
      * 用户id
      */
     private Long userId;
-    /**
-     * 账户余额
-     */
-    private BigDecimal balance;
     /**
      * 积分数量
      */

+ 2 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java

@@ -3,7 +3,6 @@ package com.citu.module.menduner.system.dal.es.job;
 
 import com.citu.framework.es.core.dataobject.ESBaseDO;
 import com.citu.module.menduner.system.enums.FieldAnalyzer;
-import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.data.elasticsearch.annotations.DateFormat;
 import org.springframework.data.elasticsearch.annotations.Document;
@@ -134,13 +133,8 @@ public class ESJobAdvertisedMergeDO extends ESBaseDO {
     /**
      * 雇佣金额
      */
-    @Field(type = FieldType.Double)
-    private BigDecimal hirePrice;
-    /**
-     * 雇佣积分
-     */
-    @Field(type = FieldType.Integer)
-    private Integer hirePoint;
+    @Field(type = FieldType.Auto)
+    private Long hirePrice;
     /**
      * 职位状态
      * <p>

+ 52 - 120
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java

@@ -21,7 +21,6 @@ import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.enums.MathOperationEnum;
 import com.citu.module.menduner.system.enums.account.BalanceBizTypeEnum;
-import com.citu.module.menduner.system.enums.account.PointBizTypeEnum;
 import com.citu.module.menduner.system.enums.cv.ConversationStatusEnum;
 import com.citu.module.menduner.system.enums.interview.InterviewInviteStatusEnum;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
@@ -294,10 +293,6 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
             priceSettlement(job, ratio, cv);
         }
 
-        if (null != job.getHirePoint()) {
-            // 积分结算
-            pointSettlement(job, ratio, cv);
-        }
         //TODO 发送推送消息
     }
 
@@ -309,147 +304,84 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
      * @param cv    投递信息
      **/
     public void priceSettlement(JobAdvertisedDO job, HireCommissionRatioDO ratio, JobCvRelDO cv) {
-        BigDecimal hirePrice = job.getHirePrice();
+        Long hirePrice = job.getHirePrice();
         // 总比例
         BigDecimal totalRate = BigDecimal.valueOf(100);
         // 猎头佣金
-        BigDecimal headhuntPrice = hirePrice.multiply(ratio.getHeadhuntRate())
-                .divide(totalRate, 2, RoundingMode.HALF_UP);
+        Long headhuntPrice =  calculateCommission(hirePrice, ratio.getHeadhuntRate(), totalRate);
         // 推荐人佣金
-        BigDecimal recommendPrice = hirePrice.multiply(ratio.getRecommendRate())
-                .divide(totalRate, 2, RoundingMode.HALF_UP);
+        Long recommendPrice = calculateCommission(hirePrice, ratio.getRecommendRate(), totalRate);
         // 投递人佣金
-        BigDecimal cvPrice = hirePrice.multiply(ratio.getCvRate())
-                .divide(totalRate, 2, RoundingMode.HALF_UP);
+        Long cvPrice =calculateCommission(hirePrice, ratio.getCvRate(), totalRate);
 
         // 猎头 (平台自己)
-        if (headhuntPrice.compareTo(BigDecimal.ZERO) > 0) {
-            userAccountRecordService.createBalanceRecord(
-                    1L,
-                    BalanceBizTypeEnum.PLATFORM_COMMISSION.getName(),
-                    MathOperationEnum.ADD,
-                    headhuntPrice,
-                    BalanceBizTypeEnum.PLATFORM_COMMISSION,
-                    String.valueOf(job.getId())
-            );
+        if (headhuntPrice > 0) {
+//            userAccountRecordService.createBalanceRecord(
+//                    1L,
+//                    BalanceBizTypeEnum.PLATFORM_COMMISSION.getName(),
+//                    MathOperationEnum.ADD,
+//                    headhuntPrice,
+//                    BalanceBizTypeEnum.PLATFORM_COMMISSION,
+//                    String.valueOf(job.getId())
+//            );
         }
 
         // 如果推荐人ID为空,则将推荐人的佣金也给到猎头
         if (null == cv.getRecommendUserId()) {
-            userAccountRecordService.createBalanceRecord(
-                    1L,
-                    BalanceBizTypeEnum.NOT_RECOMMENDED.getName(),
-                    MathOperationEnum.ADD,
-                    recommendPrice,
-                    BalanceBizTypeEnum.NOT_RECOMMENDED,
-                    String.valueOf(job.getId())
-            );
+//            userAccountRecordService.createBalanceRecord(
+//                    1L,
+//                    BalanceBizTypeEnum.NOT_RECOMMENDED.getName(),
+//                    MathOperationEnum.ADD,
+//                    recommendPrice,
+//                    BalanceBizTypeEnum.NOT_RECOMMENDED,
+//                    String.valueOf(job.getId())
+//            );
         }
 
         // 推荐人
-        if (headhuntPrice.compareTo(BigDecimal.ZERO) > 0
+        if (headhuntPrice > 0
                 && null != cv.getRecommendUserId()) {
-            userAccountRecordService.createBalanceRecord(
-                    cv.getRecommendUserId(),
-                    BalanceBizTypeEnum.RECOMMENDED_POSITIONS.getName(),
-                    MathOperationEnum.ADD,
-                    recommendPrice,
-                    BalanceBizTypeEnum.RECOMMENDED_POSITIONS,
-                    String.valueOf(job.getId())
-            );
+//            userAccountRecordService.createBalanceRecord(
+//                    cv.getRecommendUserId(),
+//                    BalanceBizTypeEnum.RECOMMENDED_POSITIONS.getName(),
+//                    MathOperationEnum.ADD,
+//                    recommendPrice,
+//                    BalanceBizTypeEnum.RECOMMENDED_POSITIONS,
+//                    String.valueOf(job.getId())
+//            );
         }
 
         // 投递人
-        if (headhuntPrice.compareTo(BigDecimal.ZERO) > 0) {
-            userAccountRecordService.createBalanceRecord(
-                    cv.getUserId(),
-                    BalanceBizTypeEnum.DELIVERY_PERSON.getName(),
-                    MathOperationEnum.ADD,
-                    cvPrice,
-                    BalanceBizTypeEnum.DELIVERY_PERSON,
-                    String.valueOf(job.getId())
-            );
+        if (headhuntPrice > 0) {
+//            userAccountRecordService.createBalanceRecord(
+//                    cv.getUserId(),
+//                    BalanceBizTypeEnum.DELIVERY_PERSON.getName(),
+//                    MathOperationEnum.ADD,
+//                    cvPrice,
+//                    BalanceBizTypeEnum.DELIVERY_PERSON,
+//                    String.valueOf(job.getId())
+//            );
         }
     }
 
     /**
-     * 积分结算
+     * 计算佣金
      *
-     * @param job   职位信息
-     * @param ratio 佣金比例
-     * @param cv    投递信息
+     * @param hirePrice 职位价格
+     * @param rate      比例
+     * @param totalRate 总比例
+     * @return 佣金
      **/
-    public void pointSettlement(JobAdvertisedDO job, HireCommissionRatioDO ratio, JobCvRelDO cv) {
-        Integer hirePoint = job.getHirePoint();
-        int totalRate = 100; // 总比例
-
-        // 猎头佣金
-        int headhuntPoint = (int) (hirePoint * ratio.getHeadhuntRate().intValue() / (long) totalRate);
+    public static Long calculateCommission(Long hirePrice, BigDecimal rate, BigDecimal totalRate) {
+        // 将hirePrice转换为BigDecimal
+        BigDecimal hirePriceBD = BigDecimal.valueOf(hirePrice);
 
-        // 推荐人佣金
-        int recommendPoint = (int) (hirePoint * ratio.getRecommendRate().intValue() / (long) totalRate);
-
-        // 投递人佣金
-        int cvPoint = (int) (hirePoint * ratio.getCvRate().intValue() / (long) totalRate);
+        // 计算佣金
+        // 使用 (hirePrice * rate + totalRate / 2) / totalRate 来确保四舍五入
+        BigDecimal commission = hirePriceBD.multiply(rate).add(totalRate.divide(BigDecimal.valueOf(2), 0, RoundingMode.HALF_UP)).divide(totalRate, 0, RoundingMode.HALF_UP);
 
-        // 由于比例之和可能不等于100%,剩余的点数可能需要进行分配或处理
-        int remainingPoint = hirePoint - (headhuntPoint + recommendPoint + cvPoint);
-
-        // 这里你可以选择将剩余点数分配给任意一方,或者按照比例再次分配
-        // 将剩余点数全部分配给猎头
-        headhuntPoint += remainingPoint;
-
-        // 猎头 (平台自己)
-        if (headhuntPoint > 0) {
-            userAccountRecordService.createPointRecord(
-                    1L,
-                    "",
-                    PointBizTypeEnum.PLATFORM_COMMISSION.getName(),
-                    MathOperationEnum.ADD,
-                    headhuntPoint,
-                    PointBizTypeEnum.PLATFORM_COMMISSION,
-                    String.valueOf(job.getId())
-            );
-        }
-
-        // 如果推荐人ID为空,则将推荐人的佣金也给到猎头
-        if (null == cv.getRecommendUserId()) {
-            userAccountRecordService.createPointRecord(
-                    1L,
-                    "",
-                    PointBizTypeEnum.NOT_RECOMMENDED.getName(),
-                    MathOperationEnum.ADD,
-                    recommendPoint,
-                    PointBizTypeEnum.NOT_RECOMMENDED,
-                    String.valueOf(job.getId())
-            );
-        }
-
-        // 推荐人
-        if (headhuntPoint > 0 && null!= cv.getRecommendUserId()) {
-            userAccountRecordService.createPointRecord(
-                    cv.getRecommendUserId(),
-                    "",
-                    PointBizTypeEnum.RECOMMENDED_POSITIONS.getName(),
-                    MathOperationEnum.ADD,
-                    recommendPoint,
-                    PointBizTypeEnum.RECOMMENDED_POSITIONS,
-                    String.valueOf(job.getId())
-            );
-        }
-
-        // 投递人
-        if (headhuntPoint > 0) {
-            userAccountRecordService.createPointRecord(
-                    cv.getUserId(),
-                    "",
-                    PointBizTypeEnum.RECOMMENDED_POSITIONS.getName(),
-                    MathOperationEnum.ADD,
-                    cvPoint,
-                    PointBizTypeEnum.RECOMMENDED_POSITIONS,
-                    String.valueOf(job.getId())
-            );
-        }
+        // 将结果转换为Long类型
+        return commission.longValue();
     }
 
 }

+ 1 - 39
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -313,8 +313,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
             job.setStatus(JobStatusEnum.WAIT_ENABLE.getStatus());
             job.setTop(false);
             if (!job.getHire()) {
-                job.setHirePoint(0);
-                job.setHirePrice(BigDecimal.ZERO);
+                job.setHirePrice(0L);
                 job.setStatus(JobStatusEnum.ENABLE.getStatus());
             }
             // 后置处理
@@ -358,13 +357,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
                     throw exception(MDE_JOB_ADVERTISED_BALANCE_UPDATE);
                 }
             }
-            // price 不为空 && 之前是众聘的职位(防止平台职位切换成众聘职位这种情况)
-            if (null != reqVO.getHirePoint() && entity.getHire()) {
-                // 积分
-                if (!entity.getHirePoint().equals(reqVO.getHirePoint())) {
-                    throw exception(MDE_JOB_ADVERTISED_POINT_UPDATE);
-                }
-            }
         }
 
 
@@ -465,36 +457,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
             jobAdvertisedMapper.updateById(job);
         }
 
-        // ========== 众聘处理 ==========
-        // TODO 待改
-
-        //        if (job.getHire()) {
-        //            if (null != job.getHirePrice()) {
-        //                // 创建记录 并扣除余额
-        //                accountRecordService.createBalanceRecord(
-        //                        userId,
-        //                        BalanceBizTypeEnum.PUBLISH.getName(),
-        //                        MathOperationEnum.SUBTRACT,
-        //                        job.getHirePrice(),
-        //                        BalanceBizTypeEnum.PUBLISH,
-        //                        String.valueOf(job.getId()));
-        //            }
-        //            if (null != job.getHirePoint()) {
-        //                // 创建记录 并扣除积分
-        //                accountRecordService.createPointRecord(
-        //                        userId,
-        //                        "",
-        //                        PointBizTypeEnum.PUBLISH.getName(),
-        //                        MathOperationEnum.SUBTRACT,
-        //                        job.getHirePoint(),
-        //                        PointBizTypeEnum.PUBLISH,
-        //                        String.valueOf(job.getId()));
-        //
-        //            }
-        //
-        //        }
-
-
         // ========== ES数据同步处理 ==========
         jobDataSync(job, operate);
 

+ 6 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/order/TradeOrderServiceImpl.java

@@ -88,7 +88,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         // 1.2 插入 订单
         TradeOrderDO tradeOrderDO = new TradeOrderDO().setUserId(createReqVO.getUserId())
                 .setSpuId(createReqVO.getSpuId()).setSpuName(createReqVO.getSpuName())
-                .setPrice(createReqVO.getPrice()).setPayStatus(false).setRefundPrice(BigDecimal.ZERO);
+                .setPrice(createReqVO.getPrice()).setPayStatus(false).setRefundPrice(0L);
         // 初始化默认
         buildDefaultOrder(tradeOrderDO, null == createReqVO.getType() ?
                 TradeOrderTypeEnum.PLATFORM_ORDER.getType() : createReqVO.getType());
@@ -100,7 +100,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                 .setAppId(PAY_APP_ID).setUserIp(getClientIP()) // 支付应用
                 .setMerchantOrderId(tradeOrderDO.getId().toString()) // 业务的订单编号
                 .setSubject(createReqVO.getSpuName()).setBody("")
-                .setPrice(convertPrice(createReqVO.getPrice())) // 价格信息
+                .setPrice(Math.toIntExact(createReqVO.getPrice())) // 价格信息
                 .setExpireTime(addTime(Duration.ofHours(2L)))).getCheckedData(); // 支付的过期时间
         // 2.2 更新支付单到 订单
         tradeOrderMapper.updateById(new TradeOrderDO().setId(tradeOrderDO.getId())
@@ -115,7 +115,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         order.setUserIp(getClientIP()).setTerminal(getTerminal().toString());
         // 支付 + 退款信息
         order.setPayStatus(false);
-        order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus()).setRefundPrice(BigDecimal.ZERO);
+        order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus()).setRefundPrice(0L);
     }
 
     @Override
@@ -190,7 +190,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             throw exception(ORDER_UPDATE_PAID_FAIL_PAY_ORDER_STATUS_NOT_SUCCESS);
         }
         // 2.3 校验支付金额一致
-        if (notEqual(payOrder.getPrice(), convertPrice(order.getPrice()))) {
+        if (notEqual(payOrder.getPrice(), Math.toIntExact(order.getPrice()))) {
             log.error("[validateOrderCanPaid][order({}) payOrder({}) 支付金额不匹配,请进行处理!order 数据是:{},payOrder 数据是:{}]",
                     id, payOrderId, toJsonString(order), toJsonString(payOrder));
             throw exception(ORDER_UPDATE_PAID_FAIL_PAY_PRICE_NOT_MATCH);
@@ -218,7 +218,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                 .setAppId(PAY_APP_ID).setUserIp(getClientIP()) // 支付应用
                 .setMerchantOrderId(String.valueOf(order.getId())) // 支付单号
                 .setMerchantRefundId(refundId)
-                .setReason("想退钱").setPrice(convertPrice(order.getPrice()))).getCheckedData();// 价格信息
+                .setReason("想退钱").setPrice(Math.toIntExact(order.getPrice()))).getCheckedData();// 价格信息
         // 2.3 更新退款单到 demo 订单
         tradeOrderMapper.updateById(new TradeOrderDO().setId(id)
                 .setPayRefundId(payRefundId).setRefundPrice(order.getPrice()));
@@ -314,7 +314,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             throw exception(ORDER_REFUND_FAIL_REFUND_NOT_SUCCESS);
         }
         // 2.3 校验退款金额一致
-        if (notEqual(payRefund.getRefundPrice(), convertPrice(order.getPrice()))) {
+        if (notEqual(payRefund.getRefundPrice(), Math.toIntExact(order.getPrice()))) {
             log.error("[validateOrderCanRefunded][order({}) payRefund({}) 退款金额不匹配,请进行处理!order 数据是:{},payRefund 数据是:{}]",
                     id, payRefundId, toJsonString(order), toJsonString(payRefund));
             throw exception(ORDER_REFUND_FAIL_REFUND_PRICE_NOT_MATCH);

+ 0 - 18
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/record/UserAccountRecordService.java

@@ -47,24 +47,6 @@ public interface UserAccountRecordService {
                            PointBizTypeEnum bizType,
                            String bizId);
 
-    /**
-     * 创建用户账户变动记录
-     *
-     * @param userId    用户ID
-     * @param title     规则标题
-     * @param operation 操作
-     * @param balance   变动余额
-     * @param bizType   业务类型
-     * @param bizId     业务编号
-     */
-    void createBalanceRecord(Long userId,
-                             String title,
-                             MathOperationEnum operation,
-                             BigDecimal balance,
-                             BalanceBizTypeEnum bizType,
-                             String bizId);
-
-
     /**
      * 获取一段时间内的用户账户积分变动获得的数量
      *

+ 0 - 54
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/record/UserAccountRecordServiceImpl.java

@@ -107,60 +107,6 @@ public class UserAccountRecordServiceImpl implements UserAccountRecordService {
         mapper.insert(record);
     }
 
-    @Override
-    @DSTransactional
-    public void createBalanceRecord(Long userId,
-                                    String title,
-                                    MathOperationEnum operation,
-                                    BigDecimal balance,
-                                    BalanceBizTypeEnum bizType,
-                                    String bizId) {
-        if (0 == balance.compareTo(BigDecimal.ZERO)) {
-            return;
-        }
-
-        // 1. 校验用户余额
-        UserAccountDO userAccountDO = userAccountService.
-                createUserAccountIfAbsent(userId);
-
-        BigDecimal userBalance = ObjectUtil.defaultIfNull(userAccountDO.getBalance(), BigDecimal.ZERO);
-        BigDecimal totalBalance = userBalance.add(balance);
-
-        if (totalBalance.compareTo(BigDecimal.ZERO) < 0) {
-            throw ServiceExceptionUtil.exception(USER_BALANCE_NOT_ENOUGH);
-        }
-
-        if (MathOperationEnum.SUBTRACT.equals(operation)) {
-            if (userBalance.subtract(balance).compareTo(BigDecimal.ZERO) < 0) {
-                throw ServiceExceptionUtil.exception(USER_BALANCE_NOT_ENOUGH);
-            }
-            totalBalance = userBalance.subtract(balance);
-            balance = balance.negate();
-            // 标记操作为减少
-            operation = MathOperationEnum.SUBTRACT;
-        }
-
-        // 2. 更新用户余额
-        boolean success = userAccountService.updateBalance(userId, balance);
-        if (!success) {
-            throw ServiceExceptionUtil.exception(USER_BALANCE_NOT_ENOUGH);
-        }
-
-        // 3. 增加用户账户变动
-        UserAccountRecordDO record = new UserAccountRecordDO()
-                .setUserId(userId)
-                .setType(AccountRecordTypeEnum.BALANCE.getType())
-                .setBizId(bizId)
-                .setBizType(bizType.getType())
-                .setTitle(bizType.getName())
-                .setOperation(operation.getOperator())
-                .setDescription(StrUtil.format(bizType.getDescription(), balance))
-                .setBalance(balance)
-                .setTotalBalance(totalBalance);
-
-        mapper.insert(record);
-    }
-
     @Override
     public Integer getPointCount(Long userId, String url, LocalDateTime startDate, LocalDateTime endDate) {
         Integer pointCount = mapper.sumPoint(userId, url, startDate, endDate);

+ 0 - 9
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/UserAccountService.java

@@ -39,15 +39,6 @@ public interface UserAccountService {
      */
     boolean updatePoint(Long userId, Integer point);
 
-    /**
-     * 更新用户的余额
-     *
-     * @param userId  用户编号
-     * @param balance 余额数量
-     * @return 更新结果
-     */
-    boolean updateBalance(Long userId, BigDecimal balance);
-
     /**
      * 如果用户账户不存在,则创建
      *

+ 0 - 14
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/UserAccountServiceImpl.java

@@ -46,19 +46,6 @@ public class UserAccountServiceImpl implements UserAccountService {
         return true;
     }
 
-    @Override
-    public boolean updateBalance(Long userId, BigDecimal balance) {
-        if (balance.compareTo(BigDecimal.ZERO) > 0) {
-            // 当余额为正数时,增加余额
-            userAccountMapper.updateBalanceIncr(userId, balance);
-        } else if (balance.compareTo(BigDecimal.ZERO) < 0) {
-            // 当余额为负数时,减少余额
-            // 注意:传递给方法的是绝对值,因为我们要减去一个正值
-            return userAccountMapper.updateBalanceDecr(userId, balance) > 0;
-
-        }
-        return true;
-    }
 
     @Override
     @DSTransactional
@@ -69,7 +56,6 @@ public class UserAccountServiceImpl implements UserAccountService {
         }
         UserAccountDO entity = UserAccountDO.builder()
                 .userId(userId)
-                .balance(BigDecimal.ZERO)
                 .point(0)
                 .build();
         userAccountMapper.insert(entity);