Forráskód Böngészése

1、增加企业账户变动记录

rayson 1 éve
szülő
commit
547962ee0f
60 módosított fájl, 984 hozzáadás és 764 törlés
  1. 2 2
      menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/ErrorCodeConstants.java
  2. 4 3
      menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/record/AccountRecordTypeEnum.java
  3. 65 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/account/EnterpriseAccountController.java
  4. 23 9
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/account/UserAccountController.java
  5. 44 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/record/EnterpriseAccountRecordController.java
  6. 0 63
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/record/PointRecordController.java
  7. 43 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/record/UserAccountRecordController.java
  8. 0 51
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/AppPointRecordController.java
  9. 44 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/AppUserAccountRecordController.java
  10. 18 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/vo/AppAccountRecordPageReqVO.java
  11. 0 11
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/vo/AppPointRecordRespVO.java
  12. 11 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/vo/AppUserAccountRecordRespVO.java
  13. 3 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/user/AppUserPointController.java
  14. 20 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/account/AccountBalanceUpdateReqVO.java
  15. 24 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/account/AccountBaseVO.java
  16. 19 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/account/AccountPointUpdateReqVO.java
  17. 8 2
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/EnterpriseAccountRecordPageReqVO.java
  18. 15 2
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/EnterpriseAccountRecordRespVO.java
  19. 1 1
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/UserAccountRecordPageReqVO.java
  20. 2 2
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/UserAccountRecordRespVO.java
  21. 0 24
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointBaseVO.java
  22. 0 29
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointPageReqVO.java
  23. 0 25
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointRespVO.java
  24. 0 20
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointSaveReqVO.java
  25. 0 25
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointUpdateReqVO.java
  26. 16 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/EnterpriseAccountRecordConvert.java
  27. 0 20
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/PointRecordConvert.java
  28. 6 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/UserAccountRecordConvert.java
  29. 0 22
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/UserPointConvert.java
  30. 28 10
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/record/EnterpriseAccountRecordDO.java
  31. 1 1
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/record/UserAccountRecordDO.java
  32. 0 41
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/user/UserPointDO.java
  33. 74 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/record/EnterpriseAccountRecordMapper.java
  34. 0 62
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/record/PointRecordMapper.java
  35. 0 78
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/user/UserPointMapper.java
  36. 3 2
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/framework/rpc/config/RpcConfiguration.java
  37. 3 6
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/mq/consumer/UserPointConsumer.java
  38. 4 4
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventRecordServiceImpl.java
  39. 106 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/EnterpriseAccountRecordService.java
  40. 186 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/EnterpriseAccountRecordServiceImpl.java
  41. 0 71
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/PointRecordService.java
  42. 0 119
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/PointRecordServiceImpl.java
  43. 9 8
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/UserAccountRecordService.java
  44. 14 15
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/UserAccountRecordServiceImpl.java
  45. 3 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/signin/SignInRecordServiceImpl.java
  46. 2 1
      menduner/menduner-reward-biz/src/main/resources/i18n/messages_en_US.properties
  47. 2 1
      menduner/menduner-reward-biz/src/main/resources/i18n/messages_zh_CN.properties
  48. 3 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/AccountRespDTO.java
  49. 59 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/EnterpriseAccountApi.java
  50. 2 2
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApi.java
  51. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/account/EnterpriseAccountApiImpl.java
  52. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApiImpl.java
  53. 9 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/hire/AppHireJobCvRelController.java
  54. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/hire/vo/AppHireJobCvRelReqVO.java
  55. 6 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseAccountMapper.java
  56. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/hire/HireJobCvRelMapper.java
  57. 18 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/account/EnterpriseAccountService.java
  58. 15 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/account/EnterpriseAccountServiceImpl.java
  59. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  60. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/UserAccountServiceImpl.java

+ 2 - 2
menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/ErrorCodeConstants.java

@@ -42,15 +42,15 @@ public interface ErrorCodeConstants {
     ErrorCode SIGN_IN_CONFIG_POINT_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_003_004, "奖励积分不能为空");
     ErrorCode SIGN_IN_CONFIG_POINT_CAN_NOT_BE_LESS_THAN_ZERO = new ErrorCode(1_110_003_005, "奖励积分不能小于 0");
 
-
     //========== 签到记录 1_110_004_000 ==========
     ErrorCode SIGN_IN_RECORD_TODAY_EXISTS = new ErrorCode(1_110_004_001, "今日已签到,请勿重复签到");
 
-    // ========== 户相关  1_110_005_000 ============
+    // ========== 户相关  1_110_005_000 ============
     ErrorCode USER_NOT_EXISTS = new ErrorCode(1_110_005_001, "用户不存在");
     ErrorCode USER_POINT_NOT_ENOUGH = new ErrorCode(1_110_005_002, "用户积分余额不足");
     ErrorCode USER_POINT_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_005_003, "变动积分不能为空");
     ErrorCode USER_BALANCE_NOT_ENOUGH = new ErrorCode(1_110_005_004, "用户余额不足");
+    ErrorCode USER_BALANCE_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_005_005, "变动余额不能为空");
 
     // ========== 事件指标 1_110_006_000 ==========
     ErrorCode EVENT_METRIC_NOT_EXISTS = new ErrorCode(1_110_006_001, "事件指标不存在");

+ 4 - 3
menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/record/AccountRecordTypeEnum.java

@@ -5,15 +5,16 @@ import lombok.Getter;
 
 /**
  * 账户记录类型枚举
- * (0 变动余额 | 1 变动积分)
+ * (0 变动积分 | 1 变动余额)
  *
  * @author Rayson
  */
 @AllArgsConstructor
 @Getter
 public enum AccountRecordTypeEnum {
-    BALANCE("0", "变动余额"),
-    POINT("1", "变动积分");
+
+    POINT("0", "变动积分"),
+    BALANCE("1", "变动余额");
 
     final String type;
     final String name;

+ 65 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/account/EnterpriseAccountController.java

@@ -0,0 +1,65 @@
+package com.citu.module.menduner.reward.controller.admin.account;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.reward.controller.base.account.AccountBalanceUpdateReqVO;
+import com.citu.module.menduner.reward.controller.base.account.AccountPointUpdateReqVO;
+import com.citu.module.menduner.reward.enums.MathOperationEnum;
+import com.citu.module.menduner.reward.enums.record.BalanceBizTypeEnum;
+import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
+import com.citu.module.menduner.reward.service.record.EnterpriseAccountRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 企业账户")
+@RestController
+@RequestMapping("/menduner/reward/enterprise/account")
+@Validated
+public class EnterpriseAccountController {
+
+    @Resource
+    private EnterpriseAccountRecordService service;
+
+    @PutMapping("/update-point")
+    @Operation(summary = "修改账户的积分")
+    @PreAuthorize("@ss.hasPermission('menduner:reward:enterprise-point:update')")
+    public CommonResult<Boolean> updateUserPoint(@Valid @RequestBody AccountPointUpdateReqVO updateReqVO) {
+        service.createPointRecord(
+                updateReqVO.getEnterpriseId(),
+                updateReqVO.getUserId(),
+                null,
+                MathOperationEnum.ADD.getOperator().equals(updateReqVO.getOperation())
+                        ? MathOperationEnum.ADD : MathOperationEnum.SUBTRACT,
+                updateReqVO.getPoint(),
+                PointBizTypeEnum.ADMIN,
+                String.valueOf(updateReqVO.getUserId()));
+        return success(true);
+    }
+
+    @PutMapping("/update-balance")
+    @Operation(summary = "修改账户余额")
+    @PreAuthorize("@ss.hasPermission('menduner:reward:enterprise-balance:update')")
+    public CommonResult<Boolean> updateBalance(@Valid @RequestBody AccountBalanceUpdateReqVO updateReqVO) {
+        service.createBalanceRecord(
+                updateReqVO.getEnterpriseId(),
+                updateReqVO.getUserId(),
+                null,
+                MathOperationEnum.ADD.getOperator().equals(updateReqVO.getOperation())
+                        ? MathOperationEnum.ADD : MathOperationEnum.SUBTRACT,
+                updateReqVO.getBalance(),
+                BalanceBizTypeEnum.ADMIN,
+                String.valueOf(updateReqVO.getUserId()));
+        return success(true);
+    }
+
+}

+ 23 - 9
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/user/UserPointController.java → menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/account/UserAccountController.java

@@ -1,11 +1,11 @@
-package com.citu.module.menduner.reward.controller.admin.user;
+package com.citu.module.menduner.reward.controller.admin.account;
 
 import com.citu.framework.common.pojo.CommonResult;
-import com.citu.module.menduner.reward.controller.base.user.UserPointUpdateReqVO;
-import com.citu.module.menduner.reward.dal.dataobject.record.UserAccountRecordDO;
+import com.citu.module.menduner.reward.controller.base.account.AccountBalanceUpdateReqVO;
+import com.citu.module.menduner.reward.controller.base.account.AccountPointUpdateReqVO;
 import com.citu.module.menduner.reward.enums.MathOperationEnum;
+import com.citu.module.menduner.reward.enums.record.BalanceBizTypeEnum;
 import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
-import com.citu.module.menduner.reward.service.record.PointRecordService;
 import com.citu.module.menduner.reward.service.record.UserAccountRecordService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -21,19 +21,19 @@ import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "管理后台 - 用户积分")
+@Tag(name = "管理后台 - 用户账户")
 @RestController
-@RequestMapping("/menduner/reward/user-point")
+@RequestMapping("/menduner/reward/user/account")
 @Validated
-public class UserPointController {
+public class UserAccountController {
 
     @Resource
     private UserAccountRecordService accountRecordService;
 
     @PutMapping("/update-point")
-    @Operation(summary = "修改用户的积分")
+    @Operation(summary = "修改账户积分")
     @PreAuthorize("@ss.hasPermission('menduner:reward:user-point:update')")
-    public CommonResult<Boolean> updateUserPoint(@Valid @RequestBody UserPointUpdateReqVO updateReqVO) {
+    public CommonResult<Boolean> updatePoint(@Valid @RequestBody AccountPointUpdateReqVO updateReqVO) {
         accountRecordService.createPointRecord(updateReqVO.getUserId(),
                 null,
                 null,
@@ -45,5 +45,19 @@ public class UserPointController {
         return success(true);
     }
 
+    @PutMapping("/update-balance")
+    @Operation(summary = "修改账户余额")
+    @PreAuthorize("@ss.hasPermission('menduner:reward: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);
+    }
+
 
 }

+ 44 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/record/EnterpriseAccountRecordController.java

@@ -0,0 +1,44 @@
+package com.citu.module.menduner.reward.controller.admin.record;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.reward.controller.base.record.EnterpriseAccountRecordPageReqVO;
+import com.citu.module.menduner.reward.controller.base.record.EnterpriseAccountRecordRespVO;
+import com.citu.module.menduner.reward.convert.EnterpriseAccountRecordConvert;
+import com.citu.module.menduner.reward.dal.dataobject.record.EnterpriseAccountRecordDO;
+import com.citu.module.menduner.reward.service.record.EnterpriseAccountRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 企业账户变动记录")
+@RestController
+@RequestMapping("/menduner/reward/enterprise/account/record")
+@Validated
+public class EnterpriseAccountRecordController {
+
+    @Resource
+    private EnterpriseAccountRecordService service;
+
+    @GetMapping("/page")
+    @Operation(summary = "分页")
+    @PreAuthorize("@ss.hasPermission('menduner:reward:enterprise-account-record:query')")
+    public CommonResult<PageResult<EnterpriseAccountRecordRespVO>> page
+            (@Valid EnterpriseAccountRecordPageReqVO pageVO) {
+        // 执行分页查询
+        PageResult<EnterpriseAccountRecordDO> pageResult = service.page(pageVO);
+        return success(EnterpriseAccountRecordConvert.INSTANCE.convertPage(pageResult));
+    }
+
+
+
+}

+ 0 - 63
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/record/PointRecordController.java

@@ -1,63 +0,0 @@
-package com.citu.module.menduner.reward.controller.admin.record;
-
-import com.citu.framework.common.pojo.CommonResult;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordPageReqVO;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordRespVO;
-import com.citu.module.menduner.reward.controller.base.record.UserAccountRecordPageReqVO;
-import com.citu.module.menduner.reward.convert.PointRecordConvert;
-import com.citu.module.menduner.reward.convert.UserAccountRecordConvert;
-import com.citu.module.menduner.reward.dal.dataobject.record.PointRecordDO;
-import com.citu.module.menduner.reward.dal.dataobject.record.UserAccountRecordDO;
-import com.citu.module.menduner.reward.service.record.PointRecordService;
-import com.citu.module.menduner.reward.service.record.UserAccountRecordService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 积分记录")
-@RestController
-@RequestMapping("/menduner/reward/point/record")
-@Validated
-public class PointRecordController {
-
-//    @Resource
-//    private PointRecordService pointRecordService;
-
-    @Resource
-    private UserAccountRecordService accountRecordService;
-//    @GetMapping("/page")
-//    @Operation(summary = "获得用户积分记录分页")
-//    @PreAuthorize("@ss.hasPermission('menduner:reward:point-record:query')")
-//    public CommonResult<PageResult<PointRecordRespVO>> getPointRecordPage(@Valid PointRecordPageReqVO pageVO) {
-//        // 执行分页查询
-//        PageResult<PointRecordDO> pageResult = pointRecordService.getPointRecordPage(pageVO);
-//        if (CollectionUtils.isEmpty(pageResult.getList())) {
-//            return success(PageResult.empty(pageResult.getTotal()));
-//        }
-//        return success(PointRecordConvert.INSTANCE.convertPage(pageResult));
-//    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得用户积分记录分页")
-    @PreAuthorize("@ss.hasPermission('menduner:reward:point-record:query')")
-    public CommonResult<PageResult<PointRecordRespVO>> getPointRecordPage(@Valid UserAccountRecordPageReqVO pageVO) {
-        // 执行分页查询
-        PageResult<UserAccountRecordDO> pageResult = accountRecordService.getPointRecordPage(pageVO);
-        if (CollectionUtils.isEmpty(pageResult.getList())) {
-            return success(PageResult.empty(pageResult.getTotal()));
-        }
-        return success(UserAccountRecordConvert.INSTANCE.convertPage(pageResult));
-    }
-
-}

+ 43 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/record/UserAccountRecordController.java

@@ -0,0 +1,43 @@
+package com.citu.module.menduner.reward.controller.admin.record;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.reward.controller.base.record.UserAccountRecordRespVO;
+import com.citu.module.menduner.reward.controller.base.record.UserAccountRecordPageReqVO;
+import com.citu.module.menduner.reward.convert.UserAccountRecordConvert;
+import com.citu.module.menduner.reward.dal.dataobject.record.UserAccountRecordDO;
+import com.citu.module.menduner.reward.service.record.UserAccountRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 用户账户变动记录")
+@RestController
+@RequestMapping("/menduner/reward/user/account/record")
+@Validated
+public class UserAccountRecordController {
+
+    @Resource
+    private UserAccountRecordService accountRecordService;
+
+    @GetMapping("/page")
+    @Operation(summary = "分页")
+    @PreAuthorize("@ss.hasPermission('menduner:reward:user-account-record:query')")
+    public CommonResult<PageResult<UserAccountRecordRespVO>> page
+            (@Valid UserAccountRecordPageReqVO pageVO) {
+        // 执行分页查询
+        PageResult<UserAccountRecordDO> pageResult = accountRecordService.page(pageVO);
+        return success(UserAccountRecordConvert.INSTANCE.convertPage(pageResult));
+    }
+
+
+}

+ 0 - 51
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/AppPointRecordController.java

@@ -1,51 +0,0 @@
-package com.citu.module.menduner.reward.controller.app.record;
-
-import com.citu.framework.common.pojo.CommonResult;
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.security.core.annotations.PreAuthenticated;
-import com.citu.module.menduner.common.util.LoginUserContext;
-import com.citu.module.menduner.reward.controller.app.record.vo.AppPointRecordRespVO;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordPageReqVO;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordRespVO;
-import com.citu.module.menduner.reward.convert.PointRecordConvert;
-import com.citu.module.menduner.reward.dal.dataobject.record.PointRecordDO;
-import com.citu.module.menduner.reward.service.record.PointRecordService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "求职端 - 积分记录")
-@RestController
-@RequestMapping("/menduner/reward/point/record")
-@Validated
-public class AppPointRecordController {
-
-    @Resource
-    private PointRecordService pointRecordService;
-
-
-    @GetMapping("/page")
-    @PreAuthenticated
-    @Operation(summary = "获得用户积分记录分页")
-    public CommonResult<PageResult<AppPointRecordRespVO>> page(PageParam pageVO) {
-        // 执行分页查询
-        PageResult<PointRecordDO> pageResult =
-                pointRecordService.page(LoginUserContext.getUserId(),pageVO);
-        if (CollectionUtils.isEmpty(pageResult.getList())) {
-            return success(PageResult.empty(pageResult.getTotal()));
-        }
-        return success(PointRecordConvert.INSTANCE.convertPage2(pageResult));
-    }
-
-}

+ 44 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/AppUserAccountRecordController.java

@@ -0,0 +1,44 @@
+package com.citu.module.menduner.reward.controller.app.record;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.reward.controller.app.record.vo.AppAccountRecordPageReqVO;
+import com.citu.module.menduner.reward.controller.app.record.vo.AppUserAccountRecordRespVO;
+import com.citu.module.menduner.reward.convert.UserAccountRecordConvert;
+import com.citu.module.menduner.reward.dal.dataobject.record.UserAccountRecordDO;
+import com.citu.module.menduner.reward.service.record.UserAccountRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "求职端 - 用户账户变动记录")
+@RestController
+@RequestMapping("/menduner/reward/user/account/record")
+@Validated
+public class AppUserAccountRecordController {
+
+    @Resource
+    private UserAccountRecordService accountRecordService;
+
+    @GetMapping("/page")
+    @PreAuthenticated
+    @Operation(summary = "获得用户积分记录分页")
+    public CommonResult<PageResult<AppUserAccountRecordRespVO>> page
+            (@Valid AppAccountRecordPageReqVO pageVO) {
+        // 执行分页查询
+        PageResult<UserAccountRecordDO> pageResult =
+                accountRecordService.page(LoginUserContext.getUserId(), pageVO.getType(), pageVO);
+        return success(UserAccountRecordConvert.INSTANCE.convertPage2(pageResult));
+    }
+
+}

+ 18 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/vo/AppAccountRecordPageReqVO.java

@@ -0,0 +1,18 @@
+package com.citu.module.menduner.reward.controller.app.record.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@Schema(description = "管理后台 - 账户变动记录分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class AppAccountRecordPageReqVO extends PageParam {
+
+    @Schema(description = "记录类型(0 变动积分 | 1 变动余额)")
+    private String type;
+
+}

+ 0 - 11
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/vo/AppPointRecordRespVO.java

@@ -1,11 +0,0 @@
-package com.citu.module.menduner.reward.controller.app.record.vo;
-
-import com.citu.module.menduner.reward.controller.base.record.PointRecordRespVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "menduner - 用户积分记录 Response VO")
-@Data
-public class AppPointRecordRespVO extends PointRecordRespVO {
-
-}

+ 11 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/record/vo/AppUserAccountRecordRespVO.java

@@ -0,0 +1,11 @@
+package com.citu.module.menduner.reward.controller.app.record.vo;
+
+import com.citu.module.menduner.reward.controller.base.record.UserAccountRecordRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner - 用户账户变动积分记录 Response VO")
+@Data
+public class AppUserAccountRecordRespVO extends UserAccountRecordRespVO {
+
+}

+ 3 - 3
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/user/AppUserPointController.java

@@ -4,8 +4,8 @@ package com.citu.module.menduner.reward.controller.app.user;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.common.util.LoginUserContext;
-import com.citu.module.menduner.system.api.user.UserAccountApi;
-import com.citu.module.menduner.system.api.user.UserAccountRespDTO;
+import com.citu.module.menduner.system.api.account.UserAccountApi;
+import com.citu.module.menduner.system.api.account.AccountRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.validation.annotation.Validated;
@@ -31,7 +31,7 @@ public class AppUserPointController {
     @Operation(summary = "获得用户积分")
     @PreAuthenticated
     public CommonResult<Integer> get() {
-        UserAccountRespDTO dto =
+        AccountRespDTO dto =
                 userAccountApi.createUserAccountIfAbsent(LoginUserContext.getUserId())
                         .getCheckedData();
         return success(dto.getPoint());

+ 20 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/account/AccountBalanceUpdateReqVO.java

@@ -0,0 +1,20 @@
+package com.citu.module.menduner.reward.controller.base.account;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 修改余额 Request VO")
+@Data
+@ToString(callSuper = true)
+public class AccountBalanceUpdateReqVO extends AccountBaseVO{
+
+
+    @Schema(description = "变动余额,正数为增加,负数为减少")
+    @NotNull(message = "{1_110_005_005}")
+    private BigDecimal balance;
+
+}

+ 24 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/account/AccountBaseVO.java

@@ -0,0 +1,24 @@
+package com.citu.module.menduner.reward.controller.base.account;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 用户积分 Base VO,提供给添加、修改、详细的子 VO 使用
+ * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
+ */
+@Data
+public class AccountBaseVO {
+
+    @Schema(description = "企业编号")
+    private Long enterpriseId;
+
+    @Schema(description = "用户编号")
+    private Long userId;
+
+    @Schema(description = "递增、递减")
+    private String operation;
+
+}

+ 19 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/account/AccountPointUpdateReqVO.java

@@ -0,0 +1,19 @@
+package com.citu.module.menduner.reward.controller.base.account;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 修改积分 Request VO")
+@Data
+@ToString(callSuper = true)
+public class AccountPointUpdateReqVO extends AccountBaseVO{
+
+
+    @Schema(description = "变动积分,正数为增加,负数为减少", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
+    @NotNull(message = "{1_110_005_003}")
+    private Integer point;
+
+}

+ 8 - 2
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/PointRecordPageReqVO.java → menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/EnterpriseAccountRecordPageReqVO.java

@@ -6,13 +6,16 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
 
-@Schema(description = "管理后台 - 用户积分记录分页 Request VO")
+@Schema(description = "管理后台 - 企业账户变动记录分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class PointRecordPageReqVO extends PageParam {
+public class EnterpriseAccountRecordPageReqVO extends PageParam {
 
 
+    @Schema(description = "企业编号", example = "123")
+    private Long enterpriseId;
+    
     @Schema(description = "用户编号", example = "123")
     private Long userId;
 
@@ -22,4 +25,7 @@ public class PointRecordPageReqVO extends PageParam {
     @Schema(description = "积分标题", example = "呵呵")
     private String title;
 
+    @Schema(description = "记录类型(0 变动积分 | 1 变动余额)")
+    private String type;
+
 }

+ 15 - 2
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/PointRecordRespVO.java → menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/EnterpriseAccountRecordRespVO.java

@@ -3,18 +3,25 @@ package com.citu.module.menduner.reward.controller.base.record;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
-@Schema(description = "管理后台 - 用户积分记录 Response VO")
+@Schema(description = "管理后台 - 企业账户变动积分记录 Response VO")
 @Data
-public class PointRecordRespVO {
+public class EnterpriseAccountRecordRespVO {
 
     @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
     private Long id;
 
+    @Schema(description = "企业编号", example = "123")
+    private Long enterpriseId;
+
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long userId;
 
+    @Schema(description = "记录类型(0 变动积分 | 1 变动余额)")
+    private String type;
+
     @Schema(description = "业务编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "22706")
     private String bizId;
 
@@ -33,6 +40,12 @@ public class PointRecordRespVO {
     @Schema(description = "变动后的积分", requiredMode = Schema.RequiredMode.REQUIRED, example = "200")
     private Integer totalPoint;
 
+    @Schema(description = "余额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
+    private BigDecimal balance;
+
+    @Schema(description = "变动后的余额", requiredMode = Schema.RequiredMode.REQUIRED, example = "200")
+    private BigDecimal totalBalance;
+
     @Schema(description = "发生时间", requiredMode = Schema.RequiredMode.REQUIRED)
     private LocalDateTime createTime;
 

+ 1 - 1
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/UserAccountRecordPageReqVO.java

@@ -22,7 +22,7 @@ public class UserAccountRecordPageReqVO extends PageParam {
     @Schema(description = "积分标题", example = "呵呵")
     private String title;
 
-    @Schema(description = "记录类型(0 变动余额 | 1 变动积分)")
+    @Schema(description = "记录类型(0 变动积分 | 1 变动余额)")
     private String type;
 
 }

+ 2 - 2
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/UserAccountPointRecordRespVO.java → menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/record/UserAccountRecordRespVO.java

@@ -8,7 +8,7 @@ import java.time.LocalDateTime;
 
 @Schema(description = "管理后台 - 用户账户变动积分记录 Response VO")
 @Data
-public class UserAccountPointRecordRespVO {
+public class UserAccountRecordRespVO {
 
     @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
     private Long id;
@@ -16,7 +16,7 @@ public class UserAccountPointRecordRespVO {
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long userId;
 
-    @Schema(description = "记录类型(0 变动余额 | 1 变动积分)")
+    @Schema(description = "记录类型(0 变动积分 | 1 变动余额)")
     private String type;
 
     @Schema(description = "业务编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "22706")

+ 0 - 24
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointBaseVO.java

@@ -1,24 +0,0 @@
-package com.citu.module.menduner.reward.controller.base.user;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * 用户积分 Base VO,提供给添加、修改、详细的子 VO 使用
- * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
- */
-@Data
-public class UserPointBaseVO {
-    
-    @Schema(description = "用户id", example = "1")
-    private Long userId;
-
-    @Schema(description = "积分数量积分", requiredMode = Schema.RequiredMode.REQUIRED, example = "23788")
-    private Integer point;
-    
-    @Schema(description = "标签", example = "[1, 2]")
-    private List<Long> tagIds;
-
-}

+ 0 - 29
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointPageReqVO.java

@@ -1,29 +0,0 @@
-package com.citu.module.menduner.reward.controller.base.user;
-
-import com.citu.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 用户积分分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class UserPointPageReqVO extends PageParam {
-    
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "标签编号列表", example = "[1, 2]")
-    private List<Long> tagIds;
-    
-
-}

+ 0 - 25
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointRespVO.java

@@ -1,25 +0,0 @@
-package com.citu.module.menduner.reward.controller.base.user;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "管理后台 - 用户积分 Response VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class UserPointRespVO extends UserPointBaseVO {
-
-    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23788")
-    private Long id;
-    
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-    @Schema(description = "更新时间")
-    private LocalDateTime updateTime;
-}

+ 0 - 20
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointSaveReqVO.java

@@ -1,20 +0,0 @@
-package com.citu.module.menduner.reward.controller.base.user;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 用户积分更新 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class UserPointSaveReqVO extends UserPointBaseVO {
-
-    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23788")
-    @NotNull(message = "{1_110_000_002}")
-    private Long id;
-
-}

+ 0 - 25
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/user/UserPointUpdateReqVO.java

@@ -1,25 +0,0 @@
-package com.citu.module.menduner.reward.controller.base.user;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.ToString;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 用户修改积分 Request VO")
-@Data
-@ToString(callSuper = true)
-public class UserPointUpdateReqVO {
-
-    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23788")
-    @NotNull(message = "{1_110_000_003}")
-    private Long userId;
-
-    @Schema(description = "递增、递减", requiredMode = Schema.RequiredMode.REQUIRED, example = "+")
-    private String operation;
-
-    @Schema(description = "变动积分,正数为增加,负数为减少", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
-    @NotNull(message = "{1_110_005_003}")
-    private Integer point;
-
-}

+ 16 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/EnterpriseAccountRecordConvert.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.reward.convert;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.reward.controller.base.record.EnterpriseAccountRecordRespVO;
+import com.citu.module.menduner.reward.dal.dataobject.record.EnterpriseAccountRecordDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface EnterpriseAccountRecordConvert {
+
+    EnterpriseAccountRecordConvert INSTANCE = Mappers.getMapper(EnterpriseAccountRecordConvert.class);
+
+    PageResult<EnterpriseAccountRecordRespVO> convertPage(PageResult<EnterpriseAccountRecordDO> page);
+
+}

+ 0 - 20
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/PointRecordConvert.java

@@ -1,20 +0,0 @@
-package com.citu.module.menduner.reward.convert;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.reward.controller.app.record.vo.AppPointRecordRespVO;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordRespVO;
-import com.citu.module.menduner.reward.dal.dataobject.record.PointRecordDO;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-
-@Mapper
-public interface PointRecordConvert {
-    PointRecordConvert INSTANCE = Mappers.getMapper(PointRecordConvert.class);
-
-
-    PageResult<PointRecordRespVO> convertPage(PageResult<PointRecordDO> pageResult);
-
-    PageResult<AppPointRecordRespVO> convertPage2(PageResult<PointRecordDO> pageResult);
-
-}

+ 6 - 3
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/UserAccountRecordConvert.java

@@ -1,7 +1,8 @@
 package com.citu.module.menduner.reward.convert;
 
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordRespVO;
+import com.citu.module.menduner.reward.controller.app.record.vo.AppUserAccountRecordRespVO;
+import com.citu.module.menduner.reward.controller.base.record.UserAccountRecordRespVO;
 import com.citu.module.menduner.reward.dal.dataobject.record.UserAccountRecordDO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
@@ -11,8 +12,10 @@ public interface UserAccountRecordConvert {
 
     UserAccountRecordConvert INSTANCE = Mappers.getMapper(UserAccountRecordConvert.class);
 
-    PointRecordRespVO convert(UserAccountRecordDO bean);
 
-    PageResult<PointRecordRespVO> convertPage(PageResult<UserAccountRecordDO> page);
+    PageResult<UserAccountRecordRespVO> convertPage(PageResult<UserAccountRecordDO> page);
+
+
+    PageResult<AppUserAccountRecordRespVO> convertPage2(PageResult<UserAccountRecordDO> pageResult);
 
 }

+ 0 - 22
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/UserPointConvert.java

@@ -1,22 +0,0 @@
-package com.citu.module.menduner.reward.convert;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.reward.controller.base.user.UserPointRespVO;
-import com.citu.module.menduner.reward.controller.base.user.UserPointUpdateReqVO;
-import com.citu.module.menduner.reward.dal.dataobject.user.UserPointDO;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-@Mapper
-public interface UserPointConvert {
-
-    UserPointConvert INSTANCE = Mappers.getMapper(UserPointConvert.class);
-
-    UserPointDO convert(UserPointUpdateReqVO bean);
-
-    UserPointRespVO convert2(UserPointDO bean);
-
-    PageResult<UserPointRespVO> convertPage(PageResult<UserPointDO> page);
-
-
-}

+ 28 - 10
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/record/PointRecordDO.java → menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/record/EnterpriseAccountRecordDO.java

@@ -6,30 +6,40 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
 import lombok.*;
 
+import java.math.BigDecimal;
+
 /**
- * 用户积分记录 DO
+ * 企业账户变动记录 DO
  *
  * @author Rayson
  */
-@TableName("mde_reward_point_record")
-@KeySequence("mde_reward_point_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("mde_reward_enterprise_account_record")
+@KeySequence("mde_reward_enterprise_account_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class PointRecordDO extends BaseDO {
+public class EnterpriseAccountRecordDO extends BaseDO {
 
     /**
      * 自增主键
      */
     @TableId
     private Long id;
+    /**
+     * 企业编号
+     */
+    private Long enterpriseId;
     /**
      * 用户编号
      */
     private Long userId;
+    /**
+     * 记录类型(0 变动积分 | 1 变动余额)
+     */
+    private String type;
 
     /**
      * 业务编码
@@ -40,11 +50,6 @@ public class PointRecordDO extends BaseDO {
      */
     private Integer bizType;
 
-    /**
-     * 事件地址,用于记录积分规则访问的记录
-     */
-    private String url;
-
     /**
      * 积分标题
      */
@@ -61,14 +66,27 @@ public class PointRecordDO extends BaseDO {
 
     /**
      * 变动积分
-     *
+     * <p>
      * 1、正数表示获得积分
      * 2、负数表示消耗积分
      */
     private Integer point;
+
     /**
      * 变动后的积分
      */
     private Integer totalPoint;
 
+    /**
+     * 变动余额
+     * <p>
+     * 1、正数表示获得余额
+     * 2、负数表示消耗余额
+     */
+    private BigDecimal balance;
+    /**
+     * 变动后的余额
+     */
+    private BigDecimal totalBalance;
+
 }

+ 1 - 1
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/record/UserAccountRecordDO.java

@@ -33,7 +33,7 @@ public class UserAccountRecordDO extends BaseDO {
      */
     private Long userId;
     /**
-     * 记录类型(0 变动余额 | 1 变动积分)
+     * 记录类型(0 变动积分 | 1 变动余额)
      */
     private String type;
 

+ 0 - 41
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/user/UserPointDO.java

@@ -1,41 +0,0 @@
-package com.citu.module.menduner.reward.dal.dataobject.user;
-
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.citu.framework.mybatis.core.type.LongListTypeHandler;
-import com.citu.framework.tenant.core.db.TenantBaseDO;
-import lombok.*;
-
-import java.util.List;
-
-@TableName(value = "mde_reward_user_point", autoResultMap = true)
-@KeySequence("mde_reward_user_point_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class UserPointDO extends TenantBaseDO {
-
-
-    @TableId
-    private Long id;
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-
-    /**
-     * 积分
-     */
-    private Integer point;
-
-    /**
-     * 预留 标签列表,以逗号分隔
-     */
-    @TableField(typeHandler = LongListTypeHandler.class)
-    private List<Long> tagIds;
-}

+ 74 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/record/EnterpriseAccountRecordMapper.java

@@ -0,0 +1,74 @@
+package com.citu.module.menduner.reward.dal.mysql.record;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.menduner.reward.controller.base.record.EnterpriseAccountRecordPageReqVO;
+import com.citu.module.menduner.reward.dal.dataobject.record.EnterpriseAccountRecordDO;
+import com.citu.module.menduner.reward.enums.record.AccountRecordTypeEnum;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 企业账户变动记录 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface EnterpriseAccountRecordMapper extends BaseMapperX<EnterpriseAccountRecordDO> {
+
+    default PageResult<EnterpriseAccountRecordDO> selectPage(EnterpriseAccountRecordPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<EnterpriseAccountRecordDO>()
+                .eqIfPresent(EnterpriseAccountRecordDO::getEnterpriseId, reqVO.getEnterpriseId())
+                .eqIfPresent(EnterpriseAccountRecordDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(EnterpriseAccountRecordDO::getType, reqVO.getType())
+                .eqIfPresent(EnterpriseAccountRecordDO::getBizType, reqVO.getBizType())
+                .likeIfPresent(EnterpriseAccountRecordDO::getTitle, reqVO.getTitle())
+                .orderByDesc(EnterpriseAccountRecordDO::getCreateTime));
+    }
+
+    /**
+     * 获取一定时间范围内的企业积分记录
+     *
+     * @param enterpriseId 企业id
+     * @param userId       用户id
+     * @param startDate    开始时间
+     * @param endDate      结束时间
+     * @return List<EnterpriseAccountRecordDO>
+     **/
+    default List<EnterpriseAccountRecordDO> getEnterprisePointList(
+            Long enterpriseId,
+            Long userId,
+            LocalDateTime startDate,
+            LocalDateTime endDate) {
+        LambdaQueryWrapperX<EnterpriseAccountRecordDO> wrapperX = new LambdaQueryWrapperX<EnterpriseAccountRecordDO>();
+        wrapperX.eq(EnterpriseAccountRecordDO::getEnterpriseId, enterpriseId);
+        wrapperX.eq(EnterpriseAccountRecordDO::getUserId, userId);
+        wrapperX.eq(EnterpriseAccountRecordDO::getType, AccountRecordTypeEnum.POINT.getType());
+        if (null != startDate) {
+            wrapperX.ge(EnterpriseAccountRecordDO::getCreateTime, startDate);
+        }
+
+        if (null != endDate) {
+            wrapperX.le(EnterpriseAccountRecordDO::getCreateTime, endDate);
+        }
+
+        return selectList(wrapperX);
+    }
+
+    default PageResult<EnterpriseAccountRecordDO> selectPageByUserId(
+            Long enterpriseId,
+            Long userId,
+            String type,
+            PageParam pageVO) {
+        return selectPage(pageVO, new LambdaQueryWrapperX<EnterpriseAccountRecordDO>()
+                .eq(EnterpriseAccountRecordDO::getEnterpriseId, enterpriseId)
+                .eq(EnterpriseAccountRecordDO::getUserId, userId)
+                .eq(EnterpriseAccountRecordDO::getType, type)
+                .orderByDesc(EnterpriseAccountRecordDO::getCreateTime));
+    }
+
+}

+ 0 - 62
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/record/PointRecordMapper.java

@@ -1,62 +0,0 @@
-package com.citu.module.menduner.reward.dal.mysql.record;
-
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.mybatis.core.mapper.BaseMapperX;
-import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordPageReqVO;
-import com.citu.module.menduner.reward.dal.dataobject.record.PointRecordDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * 用户积分记录 Mapper
- *
- * @author Rayson
- */
-@Mapper
-public interface PointRecordMapper extends BaseMapperX<PointRecordDO> {
-
-    default PageResult<PointRecordDO> selectPage(PointRecordPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<PointRecordDO>()
-                .eqIfPresent(PointRecordDO::getUserId, reqVO.getUserId())
-                .eqIfPresent(PointRecordDO::getBizType, reqVO.getBizType())
-                .likeIfPresent(PointRecordDO::getTitle, reqVO.getTitle())
-                .orderByDesc(PointRecordDO::getCreateTime));
-    }
-
-    /**
-     * 获取一定时间范围内的用户积分记录
-     * @param userId 用户id
-     * @param url 事件地址
-     * @param startDate 开始时间
-     * @param endDate 结束时间
-     * @return List<PointRecordDO>
-     **/
-    default List<PointRecordDO> getUserPointList(Long userId,
-                                                 String url,
-                                                 LocalDateTime startDate,
-                                                 LocalDateTime endDate) {
-        LambdaQueryWrapperX<PointRecordDO> wrapperX = new LambdaQueryWrapperX<PointRecordDO>();
-        wrapperX.eq(PointRecordDO::getUserId, userId);
-        wrapperX.eqIfPresent(PointRecordDO::getUrl, url);
-        if (null != startDate) {
-            wrapperX.ge(PointRecordDO::getCreateTime, startDate);
-        }
-
-        if (null != endDate) {
-            wrapperX.le(PointRecordDO::getCreateTime, endDate);
-        }
-
-        return selectList(wrapperX);
-    }
-
-    default PageResult<PointRecordDO> selectPageByUserId(Long userId, PageParam pageVO) {
-        return selectPage(pageVO, new LambdaQueryWrapperX<PointRecordDO>()
-                .eq(PointRecordDO::getUserId, userId)
-                .orderByDesc(PointRecordDO::getCreateTime));
-    }
-
-}

+ 0 - 78
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/user/UserPointMapper.java

@@ -1,78 +0,0 @@
-package com.citu.module.menduner.reward.dal.mysql.user;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.lang.Assert;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.mybatis.core.mapper.BaseMapperX;
-import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
-import com.citu.module.menduner.reward.controller.base.user.UserPointPageReqVO;
-import com.citu.module.menduner.reward.dal.dataobject.user.UserPointDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.stream.Collectors;
-
-/**
- * 用户积分 Mapper
- *
- * @author Rayson
- */
-@Mapper
-public interface UserPointMapper extends BaseMapperX<UserPointDO> {
-
-
-    default PageResult<UserPointDO> selectPage(UserPointPageReqVO reqVO) {
-        // 处理 tagIds 过滤条件
-        String tagIdSql = "";
-        if (CollUtil.isNotEmpty(reqVO.getTagIds())) {
-            tagIdSql = reqVO.getTagIds().stream()
-                    .map(tagId -> "FIND_IN_SET(" + tagId + ", tag_ids)")
-                    .collect(Collectors.joining(" OR "));
-        }
-        // 分页查询
-        return selectPage(reqVO, new LambdaQueryWrapperX<UserPointDO>()
-                .betweenIfPresent(UserPointDO::getCreateTime, reqVO.getCreateTime())
-                .apply(StrUtil.isNotEmpty(tagIdSql), tagIdSql)
-                .orderByDesc(UserPointDO::getId));
-    }
-
-    default UserPointDO selectByUserId(Long userId) {
-        return selectOne(new LambdaQueryWrapperX<UserPointDO>().eq(UserPointDO::getUserId, userId));
-    }
-
-
-    default Long selectCountByTagId(Long tagId) {
-        return selectCount(new LambdaQueryWrapperX<UserPointDO>()
-                .apply("FIND_IN_SET({0}, tag_ids)", tagId));
-    }
-
-    /**
-     * 更新用户积分(增加)
-     *
-     * @param id        用户编号
-     * @param incrCount 增加积分(正数)
-     */
-    default void updatePointIncr(Long id, Integer incrCount) {
-        Assert.isTrue(incrCount > 0);
-        LambdaUpdateWrapper<UserPointDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<UserPointDO>()
-                .setSql(" point = point + " + incrCount)
-                .eq(UserPointDO::getUserId, id);
-        update(null, lambdaUpdateWrapper);
-    }
-
-    /**
-     * 更新用户积分(减少)
-     *
-     * @param id        用户编号
-     * @param incrCount 增加积分(负数)
-     * @return 更新行数
-     */
-    default int updatePointDecr(Long id, Integer incrCount) {
-        Assert.isTrue(incrCount < 0);
-        LambdaUpdateWrapper<UserPointDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<UserPointDO>()
-                .setSql(" point = point + " + incrCount) // 负数,所以使用 + 号
-                .eq(UserPointDO::getUserId, id);
-        return update(null, lambdaUpdateWrapper);
-    }
-}

+ 3 - 2
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/framework/rpc/config/RpcConfiguration.java

@@ -1,11 +1,12 @@
 package com.citu.module.menduner.reward.framework.rpc.config;
 
+import com.citu.module.menduner.system.api.account.EnterpriseAccountApi;
 import com.citu.module.menduner.system.api.url.MendunerSystemUrlApi;
-import com.citu.module.menduner.system.api.user.UserAccountApi;
+import com.citu.module.menduner.system.api.account.UserAccountApi;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration(proxyBeanMethods = false)
-@EnableFeignClients(clients = {MendunerSystemUrlApi.class, UserAccountApi.class})
+@EnableFeignClients(clients = {MendunerSystemUrlApi.class, UserAccountApi.class, EnterpriseAccountApi.class})
 public class RpcConfiguration {
 }

+ 3 - 6
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/mq/consumer/UserPointConsumer.java

@@ -1,11 +1,8 @@
 package com.citu.module.menduner.reward.mq.consumer;
 
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
-import com.citu.module.menduner.reward.enums.MathOperationEnum;
-import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
 import com.citu.module.menduner.reward.mq.message.UserPointSendMessage;
-import com.citu.module.menduner.reward.service.event.EventRecordService;
-import com.citu.module.menduner.reward.service.record.PointRecordService;
+import com.citu.module.menduner.reward.service.record.UserAccountRecordService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -27,14 +24,14 @@ import javax.annotation.Resource;
 public class UserPointConsumer implements RocketMQListener<UserPointSendMessage>, RocketMQPushConsumerLifecycleListener {
 
     @Resource
-    private PointRecordService pointRecordService;
+    private UserAccountRecordService accountRecordService;
 
     @Override
     @DSTransactional
     public void onMessage(UserPointSendMessage message) {
         log.info("接收到队列消息[{}]", message);
         // 增加用户积分
-        pointRecordService.createPointRecord(
+        accountRecordService.createPointRecord(
                 message.getUserId(),
                 message.getUrl(),
                 message.getTitle(),

+ 4 - 4
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventRecordServiceImpl.java

@@ -11,7 +11,7 @@ import com.citu.module.menduner.reward.dal.dataobject.event.EventMetricDO;
 import com.citu.module.menduner.reward.dal.dataobject.event.EventRecordDO;
 import com.citu.module.menduner.reward.dal.mysql.event.EventRecordMapper;
 import com.citu.module.menduner.reward.enums.event.EventMetricTypeEnum;
-import com.citu.module.menduner.reward.service.record.PointRecordService;
+import com.citu.module.menduner.reward.service.record.UserAccountRecordService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -42,7 +42,7 @@ public class EventRecordServiceImpl implements EventRecordService {
     private EventMetricService eventMetricService;
 
     @Resource
-    private PointRecordService pointRecordService;
+    private UserAccountRecordService userAccountService;
 
 
     @Override
@@ -124,9 +124,9 @@ public class EventRecordServiceImpl implements EventRecordService {
         EventMetricDO eventMetric = eventMetricService.getByValue(metricValue);
         LocalDateTime[] dateRange = generateDateRange(eventMetric);
         if (eventMetric.getValue().contains("event")) {
-            return pointRecordService.getPointCount(userId, url, dateRange[0], dateRange[1]);
+            return userAccountService.getPointCount(userId, url, dateRange[0], dateRange[1]);
         } else if (eventMetric.getValue().contains("point")) {
-            return pointRecordService.getPointCount(userId, null, dateRange[0], dateRange[1]);
+            return userAccountService.getPointCount(userId, null, dateRange[0], dateRange[1]);
         }
         List<EventRecordDO> list = eventRecordMapper.getList(userId, url, dateRange[0], dateRange[1]);
         if (ObjectUtil.isEmpty(list)) {

+ 106 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/EnterpriseAccountRecordService.java

@@ -0,0 +1,106 @@
+package com.citu.module.menduner.reward.service.record;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.reward.controller.base.record.EnterpriseAccountRecordPageReqVO;
+import com.citu.module.menduner.reward.dal.dataobject.record.EnterpriseAccountRecordDO;
+import com.citu.module.menduner.reward.enums.MathOperationEnum;
+import com.citu.module.menduner.reward.enums.record.BalanceBizTypeEnum;
+import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+/**
+ * 企业账户变动记录 Service 接口
+ *
+ * @author Rayson
+ */
+public interface EnterpriseAccountRecordService {
+
+    /**
+     * 【管理员】获得积分记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 签到记录分页
+     */
+    PageResult<EnterpriseAccountRecordDO> page(
+            EnterpriseAccountRecordPageReqVO pageReqVO);
+
+
+    /**
+     * 创建企业账户变动记录
+     *
+     * @param enterpriseId 企业id
+     * @param userId       用户id
+     * @param title        规则标题
+     * @param operation    操作
+     * @param point        变动积分
+     * @param bizType      业务类型
+     * @param bizId        业务编号
+     */
+    void createPointRecord(
+            Long enterpriseId,
+            Long userId,
+            String title,
+            MathOperationEnum operation,
+            Integer point,
+            PointBizTypeEnum bizType,
+            String bizId);
+
+    /**
+     * 创建企业账户变动记录
+     *
+     * @param enterpriseId 企业id
+     * @param userId       用户id
+     * @param title        规则标题
+     * @param operation    操作
+     * @param balance      变动余额
+     * @param bizType      业务类型
+     * @param bizId        业务编号
+     */
+    void createBalanceRecord(
+            Long enterpriseId,
+            Long userId,
+            String title,
+            MathOperationEnum operation,
+            BigDecimal balance,
+            BalanceBizTypeEnum bizType,
+            String bizId);
+
+
+    /**
+     * 获取一段时间内的企业账户积分变动获得的数量
+     *
+     * @param enterpriseId 企业id
+     * @param userId       用户id
+     * @param url          事件地址
+     * @param startDate    开始时间
+     * @param endDate      结束时间
+     * @return Integer
+     * @author Rayson
+     * @date 2024/6/28 上午10:06
+     **/
+    Integer getPointCount(Long enterpriseId,
+                          Long userId,
+                          String url,
+                          LocalDateTime startDate,
+                          LocalDateTime endDate
+    );
+
+    // ========== 求职端 ==========
+
+    /**
+     * 分页获取当前企业账户余额变动记录
+     *
+     * @param userId 企业id
+     * @param type   记录类型
+     * @param pageVO 分页
+     * @return PageResult<PointRecordDO>
+     **/
+    PageResult<EnterpriseAccountRecordDO> page(Long enterpriseId,
+                                               Long userId,
+                                               String type,
+                                               PageParam pageVO);
+}

+ 186 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/EnterpriseAccountRecordServiceImpl.java

@@ -0,0 +1,186 @@
+package com.citu.module.menduner.reward.service.record;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.reward.controller.base.record.EnterpriseAccountRecordPageReqVO;
+import com.citu.module.menduner.reward.dal.dataobject.record.EnterpriseAccountRecordDO;
+import com.citu.module.menduner.reward.dal.mysql.record.EnterpriseAccountRecordMapper;
+import com.citu.module.menduner.reward.enums.MathOperationEnum;
+import com.citu.module.menduner.reward.enums.record.AccountRecordTypeEnum;
+import com.citu.module.menduner.reward.enums.record.BalanceBizTypeEnum;
+import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
+import com.citu.module.menduner.system.api.account.AccountRespDTO;
+import com.citu.module.menduner.system.api.account.EnterpriseAccountApi;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.reward.enums.ErrorCodeConstants.USER_BALANCE_NOT_ENOUGH;
+import static com.citu.module.menduner.reward.enums.ErrorCodeConstants.USER_POINT_NOT_ENOUGH;
+
+/**
+ * 企业账户变动 Service 实现类
+ *
+ * @author Rayson
+ */
+@Slf4j
+@Service
+@Validated
+public class EnterpriseAccountRecordServiceImpl implements EnterpriseAccountRecordService {
+
+    @Resource
+    private EnterpriseAccountRecordMapper mapper;
+
+    @Resource
+    private EnterpriseAccountApi enterpriseAccountApi;
+
+    @Override
+    public PageResult<EnterpriseAccountRecordDO> page(EnterpriseAccountRecordPageReqVO pageReqVO) {
+        return mapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    @DSTransactional
+    public void createPointRecord(Long enterpriseId,
+                                  Long userId,
+                                  String title,
+                                  MathOperationEnum operation,
+                                  Integer point,
+                                  PointBizTypeEnum bizType,
+                                  String bizId) {
+        if (0 == point) {
+            return;
+        }
+        // 1. 校验用户积分余额
+        AccountRespDTO userAccountResp = enterpriseAccountApi
+                .createEnterpriseAccountIfAbsent(enterpriseId, userId).getCheckedData();
+        Integer userPoint = ObjectUtil.defaultIfNull(userAccountResp.getPoint(), 0);
+        int totalPoint = userPoint + point; // 用户变动后的积分
+        if (totalPoint < 0) {
+            throw exception(USER_POINT_NOT_ENOUGH);
+        }
+
+        if (MathOperationEnum.SUBTRACT.equals(operation)) {
+            if (userPoint - point < 0) {
+                throw exception(USER_POINT_NOT_ENOUGH);
+            }
+            totalPoint = userPoint - point;
+            // 减法
+            point = -Math.abs(point);
+
+        }
+
+        // 2. 更新用户积分
+        boolean success = enterpriseAccountApi.updatePoint(enterpriseId, userId, point).getCheckedData();
+        if (!success) {
+            throw exception(USER_POINT_NOT_ENOUGH);
+        }
+
+        // 3. 增加用户账户变动
+        EnterpriseAccountRecordDO record = new EnterpriseAccountRecordDO()
+                .setEnterpriseId(enterpriseId)
+                .setUserId(userId)
+                .setType(AccountRecordTypeEnum.POINT.getType())
+                .setBizId(bizId)
+                .setBizType(bizType.getType())
+                .setTitle(bizType.getName())
+                .setOperation(operation.getOperator())
+                .setDescription(StrUtil.format(bizType.getDescription(), point))
+                .setPoint(point).setTotalPoint(totalPoint);
+
+        if (PointBizTypeEnum.EVENT.equals(bizType)) {
+            if (MathOperationEnum.SUBTRACT.equals(operation)) {
+                record.setDescription(StrUtil.format(bizType.getDescription(), title, point));
+            } else {
+                record.setDescription(StrUtil.format(bizType.getDescription(), title, operation.getOperator(), point));
+            }
+        }
+        mapper.insert(record);
+    }
+
+    @Override
+    @DSTransactional
+    public void createBalanceRecord(Long enterpriseId,
+                                    Long userId,
+                                    String title,
+                                    MathOperationEnum operation,
+                                    BigDecimal balance,
+                                    BalanceBizTypeEnum bizType,
+                                    String bizId) {
+        if (0 == balance.compareTo(BigDecimal.ZERO)) {
+            return;
+        }
+
+        // 1. 校验用户余额
+        AccountRespDTO userAccountResp = enterpriseAccountApi.
+                createEnterpriseAccountIfAbsent(enterpriseId, userId).getCheckedData();
+
+        BigDecimal userBalance = ObjectUtil.defaultIfNull(userAccountResp.getBalance(), BigDecimal.ZERO);
+        BigDecimal totalBalance = userBalance.add(balance);
+
+        if (totalBalance.compareTo(BigDecimal.ZERO) < 0) {
+            throw exception(USER_BALANCE_NOT_ENOUGH);
+        }
+
+        if (MathOperationEnum.SUBTRACT.equals(operation)) {
+            if (userBalance.subtract(balance).compareTo(BigDecimal.ZERO) < 0) {
+                throw exception(USER_BALANCE_NOT_ENOUGH);
+            }
+            totalBalance = userBalance.subtract(balance);
+            balance = balance.negate();
+            // 标记操作为减少
+            operation = MathOperationEnum.SUBTRACT;
+        }
+
+        // 2. 更新用户余额
+        boolean success = enterpriseAccountApi.updateBalance(enterpriseId, userId, balance).getCheckedData();
+        if (!success) {
+            throw exception(USER_BALANCE_NOT_ENOUGH);
+        }
+
+        // 3. 增加用户账户变动
+        EnterpriseAccountRecordDO record = new EnterpriseAccountRecordDO()
+                .setEnterpriseId(enterpriseId)
+                .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 enterpriseId,
+                                 Long userId,
+                                 String url,
+                                 LocalDateTime startDate,
+                                 LocalDateTime endDate) {
+        List<EnterpriseAccountRecordDO> list = mapper.getEnterprisePointList(enterpriseId, userId, startDate, endDate);
+        if (ObjectUtil.isEmpty(list)) {
+            return 0;
+        }
+        return list.stream().mapToInt(EnterpriseAccountRecordDO::getPoint).sum();
+    }
+
+    @Override
+    public PageResult<EnterpriseAccountRecordDO> page(Long enterpriseId,
+                                                      Long userId,
+                                                      String type,
+                                                      PageParam pageVO) {
+        return mapper.selectPageByUserId(enterpriseId, userId, type, pageVO);
+    }
+}

+ 0 - 71
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/PointRecordService.java

@@ -1,71 +0,0 @@
-package com.citu.module.menduner.reward.service.record;
-
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordPageReqVO;
-import com.citu.module.menduner.reward.dal.dataobject.record.PointRecordDO;
-import com.citu.module.menduner.reward.enums.MathOperationEnum;
-import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
-
-/**
- * 用户积分记录 Service 接口
- *
- * @author Rayson
- */
-public interface PointRecordService {
-
-    /**
-     * 【管理员】获得积分记录分页
-     *
-     * @param pageReqVO 分页查询
-     * @return 签到记录分页
-     */
-    PageResult<PointRecordDO> getPointRecordPage(PointRecordPageReqVO pageReqVO);
-
-
-    /**
-     * 创建用户积分记录
-     *
-     * @param userId  用户ID
-     * @param url 事件地址
-     * @param title 规则标题
-     * @param operation 操作
-     * @param point   变动积分
-     * @param bizType 业务类型
-     * @param bizId   业务编号
-     */
-    void createPointRecord(Long userId,
-                           String url,
-                           String title,
-                           MathOperationEnum operation,
-                           Integer point,
-                           PointBizTypeEnum bizType,
-                           String bizId);
-
-
-    /**
-     * 获取一段时间内的用户积分获得的数量
-     * @author Rayson
-     * @param userId 用户id
-     * @param url 事件地址
-     * @param startDate 开始时间
-     * @param endDate 结束时间
-     * @date 2024/6/28 上午10:06
-     * @return Integer
-     **/
-    Integer getPointCount(Long userId,String url, LocalDateTime startDate, LocalDateTime endDate);
-
-    // ========== 求职端 ==========
-
-    /**
-     * 分页获取当前用户积分记录
-     * @param userId 用户id
-     * @param pageVO 分页
-     * @return PageResult<PointRecordDO>
-     **/
-    PageResult<PointRecordDO> page(Long userId,PageParam pageVO);
-}

+ 0 - 119
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/PointRecordServiceImpl.java

@@ -1,119 +0,0 @@
-package com.citu.module.menduner.reward.service.record;
-
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.reward.controller.base.record.PointRecordPageReqVO;
-import com.citu.module.menduner.reward.dal.dataobject.record.PointRecordDO;
-import com.citu.module.menduner.reward.dal.mysql.record.PointRecordMapper;
-import com.citu.module.menduner.reward.enums.MathOperationEnum;
-import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
-import com.citu.module.menduner.system.api.user.UserAccountApi;
-import com.citu.module.menduner.system.api.user.UserAccountRespDTO;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import javax.annotation.Resource;
-import java.time.LocalDateTime;
-import java.util.List;
-
-import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static com.citu.module.menduner.reward.enums.ErrorCodeConstants.USER_POINT_NOT_ENOUGH;
-
-
-/**
- * 积分记录 Service 实现类
- *
- * @author Rayson
- */
-@Slf4j
-@Service
-@Validated
-public class PointRecordServiceImpl implements PointRecordService {
-
-    @Resource
-    private PointRecordMapper mapper;
-
-    @Resource
-    private UserAccountApi userAccountApi;
-
-    @Override
-    public PageResult<PointRecordDO> getPointRecordPage(PointRecordPageReqVO pageReqVO) {
-        return mapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    @DSTransactional
-    public void createPointRecord(Long userId,
-                                  String url,
-                                  String title,
-                                  MathOperationEnum operation,
-                                  Integer point,
-                                  PointBizTypeEnum bizType,
-                                  String bizId) {
-        if (0 == point) {
-            return;
-        }
-        // 1. 校验用户积分余额
-        UserAccountRespDTO userAccountPoint = userAccountApi.createUserAccountIfAbsent(userId)
-                .getCheckedData();
-        Integer userPoint = ObjectUtil.defaultIfNull(userAccountPoint.getPoint(), 0);
-        int totalPoint = userPoint + point; // 用户变动后的积分
-        if (totalPoint < 0) {
-            throw exception(USER_POINT_NOT_ENOUGH);
-        }
-
-        if (MathOperationEnum.SUBTRACT.equals(operation)) {
-            if (userPoint - point < 0) {
-                throw exception(USER_POINT_NOT_ENOUGH);
-            }
-            totalPoint = userPoint - point;
-            // 减法
-            point = -Math.abs(point);
-
-        }
-
-        // 2. 更新用户积分
-        boolean success = userAccountApi.updatePoint(userId, point).getCheckedData();
-        if (!success) {
-            throw exception(USER_POINT_NOT_ENOUGH);
-        }
-
-        // 3. 增加积分记录
-        PointRecordDO record = new PointRecordDO()
-                .setUserId(userId)
-                .setBizId(bizId)
-                .setBizType(bizType.getType())
-                .setTitle(bizType.getName())
-                .setUrl(url)
-                .setOperation(operation.getOperator())
-                .setDescription(StrUtil.format(bizType.getDescription(), point))
-                .setPoint(point).setTotalPoint(totalPoint);
-
-        if (PointBizTypeEnum.EVENT.equals(bizType)) {
-            if (MathOperationEnum.SUBTRACT.equals(operation)) {
-                record.setDescription(StrUtil.format(bizType.getDescription(), title, point));
-            } else {
-                record.setDescription(StrUtil.format(bizType.getDescription(), title, operation.getOperator(), point));
-            }
-        }
-        mapper.insert(record);
-    }
-
-    @Override
-    public Integer getPointCount(Long userId, String url, LocalDateTime startDate, LocalDateTime endDate) {
-        List<PointRecordDO> list = mapper.getUserPointList(userId, url, startDate, endDate);
-        if (ObjectUtil.isEmpty(list)) {
-            return 0;
-        }
-        return list.stream().mapToInt(PointRecordDO::getPoint).sum();
-    }
-
-    @Override
-    public PageResult<PointRecordDO> page(Long userId, PageParam pageVO) {
-        return mapper.selectPageByUserId(userId, pageVO);
-    }
-}

+ 9 - 8
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/UserAccountRecordService.java

@@ -5,6 +5,7 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.reward.controller.base.record.UserAccountRecordPageReqVO;
 import com.citu.module.menduner.reward.dal.dataobject.record.UserAccountRecordDO;
 import com.citu.module.menduner.reward.enums.MathOperationEnum;
+import com.citu.module.menduner.reward.enums.record.BalanceBizTypeEnum;
 import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
 
 import java.math.BigDecimal;
@@ -24,7 +25,7 @@ public interface UserAccountRecordService {
      * @param pageReqVO 分页查询
      * @return 签到记录分页
      */
-    PageResult<UserAccountRecordDO> getPointRecordPage(UserAccountRecordPageReqVO pageReqVO);
+    PageResult<UserAccountRecordDO> page(UserAccountRecordPageReqVO pageReqVO);
 
 
     /**
@@ -57,15 +58,15 @@ public interface UserAccountRecordService {
      * @param bizId     业务编号
      */
     void createBalanceRecord(Long userId,
-                           String title,
-                           MathOperationEnum operation,
-                           BigDecimal balance,
-                           PointBizTypeEnum bizType,
-                           String bizId);
+                             String title,
+                             MathOperationEnum operation,
+                             BigDecimal balance,
+                             BalanceBizTypeEnum bizType,
+                             String bizId);
 
 
     /**
-     * 获取一段时间内的用户账户变动获得的数量
+     * 获取一段时间内的用户账户积分变动获得的数量
      *
      * @param userId    用户id
      * @param url       事件地址
@@ -80,7 +81,7 @@ public interface UserAccountRecordService {
     // ========== 求职端 ==========
 
     /**
-     * 分页获取当前用户账户变动记录
+     * 分页获取当前用户账户余额变动记录
      *
      * @param userId 用户id
      * @param type   记录类型

+ 14 - 15
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/record/UserAccountRecordServiceImpl.java

@@ -10,9 +10,10 @@ import com.citu.module.menduner.reward.dal.dataobject.record.UserAccountRecordDO
 import com.citu.module.menduner.reward.dal.mysql.record.UserAccountRecordMapper;
 import com.citu.module.menduner.reward.enums.MathOperationEnum;
 import com.citu.module.menduner.reward.enums.record.AccountRecordTypeEnum;
+import com.citu.module.menduner.reward.enums.record.BalanceBizTypeEnum;
 import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
-import com.citu.module.menduner.system.api.user.UserAccountApi;
-import com.citu.module.menduner.system.api.user.UserAccountRespDTO;
+import com.citu.module.menduner.system.api.account.AccountRespDTO;
+import com.citu.module.menduner.system.api.account.UserAccountApi;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -44,7 +45,7 @@ public class UserAccountRecordServiceImpl implements UserAccountRecordService {
     private UserAccountApi userAccountApi;
 
     @Override
-    public PageResult<UserAccountRecordDO> getPointRecordPage(UserAccountRecordPageReqVO pageReqVO) {
+    public PageResult<UserAccountRecordDO> page(UserAccountRecordPageReqVO pageReqVO) {
         return mapper.selectPage(pageReqVO);
     }
 
@@ -61,7 +62,7 @@ public class UserAccountRecordServiceImpl implements UserAccountRecordService {
             return;
         }
         // 1. 校验用户积分余额
-        UserAccountRespDTO userAccountResp = userAccountApi
+        AccountRespDTO userAccountResp = userAccountApi
                 .createUserAccountIfAbsent(userId).getCheckedData();
         Integer userPoint = ObjectUtil.defaultIfNull(userAccountResp.getPoint(), 0);
         int totalPoint = userPoint + point; // 用户变动后的积分
@@ -110,22 +111,21 @@ public class UserAccountRecordServiceImpl implements UserAccountRecordService {
     @Override
     @DSTransactional
     public void createBalanceRecord(Long userId,
-                                  String title,
-                                  MathOperationEnum operation,
-                                  BigDecimal balance,
-                                  PointBizTypeEnum bizType,
-                                  String bizId) {
+                                    String title,
+                                    MathOperationEnum operation,
+                                    BigDecimal balance,
+                                    BalanceBizTypeEnum bizType,
+                                    String bizId) {
         if (0 == balance.compareTo(BigDecimal.ZERO)) {
             return;
         }
 
         // 1. 校验用户余额
-        UserAccountRespDTO userAccountResp = userAccountApi.
+        AccountRespDTO userAccountResp = userAccountApi.
                 createUserAccountIfAbsent(userId).getCheckedData();
 
         BigDecimal userBalance = ObjectUtil.defaultIfNull(userAccountResp.getBalance(), BigDecimal.ZERO);
-        BigDecimal totalBalance = operation ==
-                MathOperationEnum.ADD ? userBalance.add(balance) : userBalance.subtract(balance);
+        BigDecimal totalBalance = userBalance.add(balance);
 
         if (totalBalance.compareTo(BigDecimal.ZERO) < 0) {
             throw exception(USER_BALANCE_NOT_ENOUGH);
@@ -136,8 +136,7 @@ public class UserAccountRecordServiceImpl implements UserAccountRecordService {
                 throw exception(USER_BALANCE_NOT_ENOUGH);
             }
             totalBalance = userBalance.subtract(balance);
-            // 为记录中存储的变动值确保其为正值,同时保留变动的方向信息在operation中
-            balance = balance.abs();
+            balance = balance.negate();
             // 标记操作为减少
             operation = MathOperationEnum.SUBTRACT;
         }
@@ -154,7 +153,7 @@ public class UserAccountRecordServiceImpl implements UserAccountRecordService {
                 .setType(AccountRecordTypeEnum.BALANCE.getType())
                 .setBizId(bizId)
                 .setBizType(bizType.getType())
-                .setTitle(title)
+                .setTitle(bizType.getName())
                 .setOperation(operation.getOperator())
                 .setDescription(StrUtil.format(bizType.getDescription(), balance))
                 .setBalance(balance)

+ 3 - 3
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/signin/SignInRecordServiceImpl.java

@@ -15,7 +15,7 @@ import com.citu.module.menduner.reward.dal.dataobject.signin.SignInRecordDO;
 import com.citu.module.menduner.reward.dal.mysql.signin.SignInRecordMapper;
 import com.citu.module.menduner.reward.enums.MathOperationEnum;
 import com.citu.module.menduner.reward.enums.record.PointBizTypeEnum;
-import com.citu.module.menduner.reward.service.record.PointRecordService;
+import com.citu.module.menduner.reward.service.record.UserAccountRecordService;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -40,7 +40,7 @@ public class SignInRecordServiceImpl implements SignInRecordService {
     @Resource
     private SignInConfigService signInConfigService;
     @Resource
-    private PointRecordService pointRecordService;
+    private UserAccountRecordService userAccountRecordService;
 
 
     @Override
@@ -74,7 +74,7 @@ public class SignInRecordServiceImpl implements SignInRecordService {
 
         // 4. 增加积分
         if (!ObjectUtils.equalsAny(record.getPoint(), null, 0)) {
-            pointRecordService.createPointRecord(
+            userAccountRecordService.createPointRecord(
                     userId,
                     null,
                     PointBizTypeEnum.SIGN.getName(),

+ 2 - 1
menduner/menduner-reward-biz/src/main/resources/i18n/messages_en_US.properties

@@ -39,11 +39,12 @@
 1_110_003_005=Reward points cannot be less than 0
 # ========== 签到记录 1_110_004_000 ==========
 1_110_004_001=Checked in today, please do not sign in again
-# ========== 户相关  1_110_005_000 ============
+# ========== 户相关  1_110_005_000 ============
 1_110_005_001=User does not exist
 1_110_005_002=Insufficient user points balance
 1_110_005_003=Variable integral cannot be empty
 1_110_005_004=User balance insufficient
+1_110_005_005=Variable balance cannot be empty
 # ========== 事件指标 1_110_006_000 ==========
 1_110_006_001=Event indicator does not exist
 # ========== 事件记录 1_110_007_000 ==========

+ 2 - 1
menduner/menduner-reward-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -39,11 +39,12 @@
 1_110_003_005=奖励积分不能小于 0
 # ========== 签到记录 1_110_004_000 ==========
 1_110_004_001=今日已签到,请勿重复签到
-# ========== 户相关  1_110_005_000 ============
+# ========== 户相关  1_110_005_000 ============
 1_110_005_001=用户不存在
 1_110_005_002=用户积分余额不足
 1_110_005_003=变动积分不能为空
 1_110_005_004=用户余额不足
+1_110_005_005=变动余额不能为空
 # ========== 事件指标 1_110_006_000 ==========
 1_110_006_001=事件指标不存在
 # ========== 事件记录 1_110_007_000 ==========

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

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.api.user;
+package com.citu.module.menduner.system.api.account;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -10,8 +10,8 @@ import java.math.BigDecimal;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-@Schema(description = "用户账户 DTO VO")
-public class UserAccountRespDTO {
+@Schema(description = "账户 DTO VO")
+public class AccountRespDTO {
 
     @Schema(description = "积分")
     private Integer point;

+ 59 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/EnterpriseAccountApi.java

@@ -0,0 +1,59 @@
+package com.citu.module.menduner.system.api.account;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.enums.ApiConstants;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+
+@FeignClient(name = ApiConstants.NAME)
+@Tag(name = "RPC 服务 - 企业账户")
+public interface EnterpriseAccountApi {
+
+    String PREFIX = ApiConstants.PREFIX + "/enterprise-account";
+
+    @PostMapping(PREFIX + "/create")
+    @Operation(summary = "如果企业账户不存在,则创建")
+    @Parameters({
+            @Parameter(name = "enterpriseId", description = "企业编号", example = "1", required = true),
+            @Parameter(name = "userId", description = "企业编号", example = "1", required = true)
+    })
+    CommonResult<AccountRespDTO> createEnterpriseAccountIfAbsent(
+            @RequestParam("enterpriseId") Long enterpriseId,
+            @RequestParam("userId") Long userId
+    );
+
+
+    @PutMapping(PREFIX + "/point/update")
+    @Operation(summary = "更新企业的积分,则创建")
+    @Parameters({
+            @Parameter(name = "enterpriseId", description = "企业编号", example = "1", required = true),
+            @Parameter(name = "userId", description = "企业编号", example = "2", required = true),
+            @Parameter(name = "point", description = "积分", example = "2", required = true),
+    })
+    CommonResult<Boolean> updatePoint(
+            @RequestParam("enterpriseId") Long enterpriseId,
+            @RequestParam("userId") Long userId,
+            @RequestParam("point") Integer point
+    );
+
+    @PutMapping(PREFIX + "/balance/update")
+    @Operation(summary = "更新企业的余额,则创建")
+    @Parameters({
+            @Parameter(name = "enterpriseId", description = "企业编号", example = "1", required = true),
+            @Parameter(name = "userId", description = "企业编号", example = "2", required = true),
+            @Parameter(name = "balance", description = "余额", example = "2", required = true),
+    })
+    CommonResult<Boolean> updateBalance(
+            @RequestParam("enterpriseId") Long enterpriseId,
+            @RequestParam("userId") Long userId,
+            @RequestParam("balance") BigDecimal balance);
+
+}

+ 2 - 2
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/user/UserAccountApi.java → menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApi.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.api.user;
+package com.citu.module.menduner.system.api.account;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.system.enums.ApiConstants;
@@ -24,7 +24,7 @@ public interface UserAccountApi {
     @Parameters({
             @Parameter(name = "userId", description = "用户编号", example = "1", required = true)
     })
-    CommonResult<UserAccountRespDTO> createUserAccountIfAbsent(@RequestParam("userId") Long userId);
+    CommonResult<AccountRespDTO> createUserAccountIfAbsent(@RequestParam("userId") Long userId);
 
 
     @PutMapping(PREFIX + "/point/update")

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

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.api.account;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAccountDO;
+import com.citu.module.menduner.system.service.enterprise.account.EnterpriseAccountService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@Validated
+public class EnterpriseAccountApiImpl implements EnterpriseAccountApi {
+
+    @Resource
+    private EnterpriseAccountService service;
+
+    @Override
+    public CommonResult<AccountRespDTO> createEnterpriseAccountIfAbsent(Long enterpriseId, Long userId) {
+        EnterpriseAccountDO accountDO = service.createEnterpriseAccountIfAbsent(enterpriseId, userId);
+        AccountRespDTO dto = new AccountRespDTO();
+        dto.setPoint(accountDO.getPoint());
+        dto.setBalance(accountDO.getBalance());
+        return success(dto);
+    }
+
+    @Override
+    public CommonResult<Boolean> updatePoint(Long enterpriseId, Long userId, Integer point) {
+        return success(service.updatePoint(enterpriseId, userId, point));
+    }
+
+    @Override
+    public CommonResult<Boolean> updateBalance(Long enterpriseId, Long userId, BigDecimal balance) {
+        return success(service.updateBalance(enterpriseId, userId, balance));
+    }
+}

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/user/UserAccountApiImpl.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/account/UserAccountApiImpl.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.api.user;
+package com.citu.module.menduner.system.api.account;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.system.dal.dataobject.user.UserAccountDO;
@@ -21,9 +21,9 @@ public class UserAccountApiImpl implements UserAccountApi {
 
 
     @Override
-    public CommonResult<UserAccountRespDTO> createUserAccountIfAbsent(Long userId) {
+    public CommonResult<AccountRespDTO> createUserAccountIfAbsent(Long userId) {
         UserAccountDO userAccountDO = service.createUserAccountIfAbsent(userId);
-        UserAccountRespDTO dto = new UserAccountRespDTO();
+        AccountRespDTO dto = new AccountRespDTO();
         dto.setPoint(userAccountDO.getPoint());
         dto.setBalance(userAccountDO.getBalance());
         return success(dto);

+ 9 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/hire/AppHireJobCvRelController.java

@@ -6,6 +6,7 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.app.hire.vo.AppHireJobCvRelQueryReqVO;
 import com.citu.module.menduner.system.controller.app.hire.vo.AppHireJobCvRelRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
 import com.citu.module.menduner.system.controller.appadmin.hire.vo.AppAdminHireJobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.hire.vo.AppAdminHireJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
@@ -14,9 +15,7 @@ import com.citu.module.menduner.system.service.hire.HireJobIntegrationService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -50,6 +49,13 @@ public class AppHireJobCvRelController {
         return success(service.getRecommendCount());
     }
 
+    @PostMapping("/send")
+    @PreAuthenticated
+    @Operation(summary = "投递简历")
+    public CommonResult<Boolean> send(@Valid @RequestBody AppJobCvRelReqVO reqVO) {
+//        jobCvRelService.send(reqVO);
+        return success(true);
+    }
 
 
 }

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/hire/vo/AppHireJobCvRelReqVO.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.controller.app.hire.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "menduner - 众聘 - 招聘职位简历投递 Request VO")
+@Data
+public class AppHireJobCvRelReqVO {
+
+    @Schema(description = "发布的职位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19402")
+    @NotNull(message = "{1_100_036_002}")
+    private Long jobId;
+
+    @Schema(description = "简历附件地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
+    @NotEmpty(message = "{1_100_036_008}")
+    private String url;
+
+}

+ 6 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseAccountMapper.java

@@ -16,6 +16,8 @@ import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserB
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.math.BigDecimal;
+
 /**
  * 企业账户 Mapper
  *
@@ -113,8 +115,8 @@ public interface EnterpriseAccountMapper extends BaseMapperX<EnterpriseAccountDO
      * @param userId       用户编号
      * @param incrCount    增加余额(正数)
      */
-    default void updateBalanceIncr(Long enterpriseId, Long userId, Integer incrCount) {
-        Assert.isTrue(incrCount > 0);
+    default void updateBalanceIncr(Long enterpriseId, Long userId, BigDecimal incrCount) {
+        Assert.isTrue(incrCount.compareTo(BigDecimal.ZERO) > 0);
         LambdaUpdateWrapper<EnterpriseAccountDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<EnterpriseAccountDO>()
                 .setSql(" balance = balance + " + incrCount)
                 .eq(EnterpriseAccountDO::getEnterpriseId, enterpriseId)
@@ -130,8 +132,8 @@ public interface EnterpriseAccountMapper extends BaseMapperX<EnterpriseAccountDO
      * @param incrCount    增加余额(负数)
      * @return 更新行数
      */
-    default int updateBalanceDecr(Long enterpriseId, Long userId, Integer incrCount) {
-        Assert.isTrue(incrCount < 0);
+    default int updateBalanceDecr(Long enterpriseId, Long userId, BigDecimal incrCount) {
+        Assert.isTrue(incrCount.compareTo(BigDecimal.ZERO) < 0);
         LambdaUpdateWrapper<EnterpriseAccountDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<EnterpriseAccountDO>()
                 .setSql(" balance = balance + " + incrCount) // 负数,所以使用 + 号
                 .eq(EnterpriseAccountDO::getEnterpriseId, enterpriseId)

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/hire/HireJobCvRelMapper.java

@@ -81,7 +81,7 @@ public interface HireJobCvRelMapper extends BaseMapperX<HireJobCvRelDO> {
         // 投递的职位 inner 招聘职位
         wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, HireJobCvRelDO::getJobId);
         // 投递的职位 inner 企业信息
-        wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, HireJobCvRelDO::getEnterpriseId);
+        wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
         // 投递的职位 inner 人才信息 (推荐人)
         wrapper.innerJoin(PersonInfoDO.class, PersonInfoDO::getUserId, HireJobCvRelDO::getRecommendUserId);
 

+ 18 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/account/EnterpriseAccountService.java

@@ -4,7 +4,8 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.enterprise.vo.EnterpriseAccountPageRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.account.EnterpriseAccountPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAccountDO;
-import com.citu.module.menduner.system.dal.dataobject.user.UserAccountDO;
+
+import java.math.BigDecimal;
 
 /**
  * 企业账户 Service 接口
@@ -33,23 +34,34 @@ public interface EnterpriseAccountService {
      * 更新用户的积分
      *
      * @param enterpriseId 企业编号
-     * @param userId 用户编号
-     * @param point  积分数量
+     * @param userId       用户编号
+     * @param point        积分数量
+     * @return 更新结果
+     */
+    boolean updatePoint(Long enterpriseId, Long userId, Integer point);
+
+    /**
+     * 更新企业的余额
+     *
+     * @param enterpriseId 企业编号
+     * @param userId       用户编号
+     * @param balance      余额数量
      * @return 更新结果
      */
-    boolean updatePoint(Long enterpriseId,Long userId, Integer point);
+    boolean updateBalance(Long enterpriseId, Long userId, BigDecimal balance);
 
     /**
      * 如果企业账户不存在,则创建
      *
      * @param enterpriseId 企业编号
-     * @param userId 用户编号
+     * @param userId       用户编号
      * @return 账户对象
      */
-    EnterpriseAccountDO createUserPointIfAbsent(Long enterpriseId,Long userId);
+    EnterpriseAccountDO createEnterpriseAccountIfAbsent(Long enterpriseId, Long userId);
 
 
     // ========== 招聘端 ==========
+
     /**
      * 获取企业账户信息
      *

+ 15 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/account/EnterpriseAccountServiceImpl.java

@@ -47,9 +47,22 @@ public class EnterpriseAccountServiceImpl implements EnterpriseAccountService {
         return true;
     }
 
+    @Override
+    public boolean updateBalance(Long enterpriseId, Long userId, BigDecimal balance) {
+        if (balance.compareTo(BigDecimal.ZERO) > 0) {
+            // 当余额为正数时,增加余额
+            enterpriseAccountMapper.updateBalanceIncr(enterpriseId, userId, balance);
+        } else if (balance.compareTo(BigDecimal.ZERO) < 0) {
+            // 当余额为负数时,减少余额
+            return enterpriseAccountMapper.updateBalanceDecr(enterpriseId, userId, balance) > 0;
+
+        }
+        return true;
+    }
+
     @Override
     @DSTransactional
-    public EnterpriseAccountDO createUserPointIfAbsent(Long enterpriseId, Long userId) {
+    public EnterpriseAccountDO createEnterpriseAccountIfAbsent(Long enterpriseId, Long userId) {
         EnterpriseAccountDO accountDO = enterpriseAccountMapper.selectByEnterpriseId(enterpriseId, userId);
         if (null != accountDO) {
             return accountDO;
@@ -64,7 +77,7 @@ public class EnterpriseAccountServiceImpl implements EnterpriseAccountService {
     @Override
     public EnterpriseAccountDO get() {
         LoginUser loginUser = LoginUserContext.get();
-        return createUserPointIfAbsent(
+        return createEnterpriseAccountIfAbsent(
                 LoginUserContext.getEnterpriseId(loginUser),
                 LoginUserContext.getUserId(loginUser)
         );

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

@@ -236,6 +236,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
             job.setEnterpriseId(enterpriseId);
             job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
             job.setTop(false);
+            if(!job.getHire()) {
+                job.setHirePoint(BigDecimal.ZERO);
+                job.setHirePrice(BigDecimal.ZERO);
+            }
             jobAdvertisedMapper.insert(job);
             esProducer.send(ESOperateEnum.ADD, job.getId());
 

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

@@ -54,7 +54,7 @@ public class UserAccountServiceImpl implements UserAccountService {
         } else if (balance.compareTo(BigDecimal.ZERO) < 0) {
             // 当余额为负数时,减少余额
             // 注意:传递给方法的是绝对值,因为我们要减去一个正值
-            return userAccountMapper.updateBalanceDecr(userId, balance.abs()) > 0;
+            return userAccountMapper.updateBalanceDecr(userId, balance) > 0;
 
         }
         return true;