Browse Source

分销的金额进入到sys_user_account和收支明细表

lipf 3 months ago
parent
commit
7c766b5136

+ 9 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java

@@ -236,4 +236,13 @@ public interface OrgClient {
      */
     @PostMapping("/userAccount/addUserAccountChangeLog")
     HttpResult<String> addUserAccountChangeLog(@RequestBody SysUserAccountChangeLog changeLog);
+
+    /**
+     * 查询sys_user_jzg_info 表的id和userId的对应关系
+     *
+     * @author lipf
+     * @date 2026/6/30 14:15
+     */
+    @PostMapping("/api/v1/organization/queryJzgInfoId2UserId")
+    public HttpResult<Map<String,String>> queryJzgInfoId2UserId(@RequestBody List<String> jzgInfoTids);
 }

+ 26 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/client/SysUserClient.java

@@ -0,0 +1,26 @@
+package com.jzg.quotation.summary.client;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUser;
+import com.jzg.quotation.summary.utils.FeignConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+
+/**
+ * 调用生活服务平台client
+ */
+@FeignClient(value = "jzg-organization", configuration = FeignConfig.class)
+public interface SysUserClient {
+
+
+    /**
+     * 根据userId查询用户信息SysUser
+     *
+     * @author lipf
+     * @date 2026/6/30 11:27
+     */
+    @GetMapping(value = "/userInfo/querySysUserByUserId")
+    public HttpResult<SysUser> querySysUserByUserId(@RequestParam String userId);
+}

+ 84 - 19
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -35,6 +36,7 @@ import com.jzg.quotation.commons.client.PartnerDistributionClient;
 import com.jzg.quotation.commons.client.PlatformClient;
 import com.jzg.quotation.summary.client.EsmInsCompanyClient;
 import com.jzg.quotation.summary.client.LocalLivingClient;
+import com.jzg.quotation.summary.client.SysUserClient;
 import com.jzg.quotation.summary.entity.Result;
 import com.jzg.quotation.summary.entity.dto.ChannelRightsApiGrantReceiverDTO;
 import com.jzg.quotation.summary.entity.dto.ChannelRightsApiGrantRecordDTO;
@@ -121,6 +123,9 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     @Autowired
     private InsOrderRightsPackageMapper insOrderRightsPackageMapper;
 
+    @Autowired
+    private SysUserClient sysUserClient;
+
     @Autowired
     private ExportBaseServiceImpl exportBaseService;
 
@@ -501,7 +506,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             exportChangeLog.setAmount(feeOrders.getTotalPayablePremium());
             exportChangeLog.setOperType(1);
             exportChangeLog.setIsDelete(0);
-            exportChangeLog.setRemark("订单提成");
+            exportChangeLog.setRemark("保单费用");
             exportChangeLog.setAmountBefore(sumAmountUnpaid);
             orgClient.addUserAccountChangeLog(exportChangeLog);
 
@@ -560,6 +565,38 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     private void dealDistribution(InsFeeOrders feeOrders, SysUserAccount userAccount){
         log.info("处理分销逻辑。 feeOrders=[{}],userAccount=[{}]", JSONUtil.toJsonStr(feeOrders), JSONUtil.toJsonStr(userAccount));
         SysUserAccount distributor1 = null,distributor2 = null,distributor3 = null;
+        List<String> jzgInfoTids = new ArrayList<>();
+        if(StrUtil.isNotEmpty(feeOrders.getFirstDistributorId())){
+            jzgInfoTids.add(feeOrders.getFirstDistributorId());
+        }
+        if(StrUtil.isNotEmpty(feeOrders.getSecondDistributorId())){
+            jzgInfoTids.add(feeOrders.getSecondDistributorId());
+        }
+        if(StrUtil.isNotEmpty(feeOrders.getThirdDistributorId())){
+            jzgInfoTids.add(feeOrders.getThirdDistributorId());
+        }
+        List<SysUserAccountChangeLog> builderIncomeLog =  new ArrayList<>();
+        if(CollUtil.isNotEmpty(jzgInfoTids)){
+            HttpResult<Map<String, String>> mapHttpResult = orgClient.queryJzgInfoId2UserId(jzgInfoTids);
+            if(mapHttpResult.getCode() != 200){
+                throw new ServiceException("服务间调用异常");
+            }
+            Map<String, String> idMaps = mapHttpResult.getData();
+            String distributor1UserId = "";
+            String distributor2UserId = "";
+            String distributor3UserId = "";
+            if(StrUtil.isNotEmpty(feeOrders.getFirstDistributorId())){
+                distributor1UserId = idMaps.getOrDefault(feeOrders.getFirstDistributorId(),"");
+            }
+            if(StrUtil.isNotEmpty(feeOrders.getSecondDistributorId())){
+                distributor2UserId = idMaps.getOrDefault(feeOrders.getSecondDistributorId(),"");
+            }
+            if(StrUtil.isNotEmpty(feeOrders.getThirdDistributorId())){
+                distributor3UserId = idMaps.getOrDefault(feeOrders.getThirdDistributorId(),"");
+            }
+            builderIncomeLog = this.builderIncomeLog(feeOrders.getOrderNo(),feeOrders,userAccount,distributor1UserId,distributor2UserId,distributor3UserId);
+        }
+
         // 一级分销费用户进账
         if (feeOrders.getFirstDistributorId() != null && feeOrders.getFirstDistributionFee().compareTo(BigDecimal.ZERO) > 0) {
             HttpResult<SysUserJzgInfo> jzgInfoResult = orgClient.getUserInfoById(feeOrders.getFirstDistributorId());
@@ -592,7 +629,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         }
         // 增加账户的金额记录
         // modify by lipf, 2026年5月20日11:31:59 审核通过后,才需要 生成收入明细日志
-        List<SysUserAccountChangeLog>builderIncomeLog = this.builderIncomeLog(feeOrders.getOrderNo(),feeOrders,userAccount,distributor1,distributor2,distributor3);
+
         HttpResult result2 = orgClient.addUserAccountIncomeLog(builderIncomeLog);
         AssertionUtils.isFail(result2.getCode() != 200,"账户记录添加失败,审核失败");
     }
@@ -711,39 +748,58 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
      * @param orderNo      订单号
      * @param feeOrders    费用
      * @param userAccount  分账用户
-     * @param distributor1 1级分销人员
-     * @param distributor2 2级分销人员
-     * @param distributor3 3级分销人员
-     * @return
+     * @param distributor1UserId 1级分销人员
+     * @param distributor2UserId 2级分销人员
+     * @param distributor3UserId 3级分销人员
      */
     private List<SysUserAccountChangeLog> builderIncomeLog(String orderNo,
                                                            InsFeeOrders feeOrders,
                                                            SysUserAccount userAccount,
-                                                           SysUserAccount distributor1,
-                                                           SysUserAccount distributor2,
-                                                           SysUserAccount distributor3){
+                                                           String distributor1UserId,
+                                                           String distributor2UserId,
+                                                           String distributor3UserId){
         log.info("生成收入明细日志:feeOrders=[{}],userAccount=[{}],distributor1=[{}],distributor2=[{}],distributor3=[{}]",
-                JSONUtil.toJsonStr(feeOrders), JSONUtil.toJsonStr(userAccount), JSONUtil.toJsonStr(distributor1), JSONUtil.toJsonStr(distributor2), JSONUtil.toJsonStr(distributor3));
+                JSONUtil.toJsonStr(feeOrders), JSONUtil.toJsonStr(userAccount), distributor1UserId, distributor2UserId, distributor3UserId);
         List<SysUserAccountChangeLog> incomeLogs = new ArrayList<>();
         // 1级分销费
         if (feeOrders.getFirstDistributorId() != null && feeOrders.getFirstDistributionFee().compareTo(BigDecimal.ZERO) > 0) {
             SysUserAccountChangeLog distributor1IncomeLog = new SysUserAccountChangeLog();
             distributor1IncomeLog.setRelatedOrderId(orderNo);
-            distributor1IncomeLog.setUserId(distributor1.getUserId());
+            distributor1IncomeLog.setUserId(distributor1UserId);
             distributor1IncomeLog.setAmount(feeOrders.getFirstDistributionFee());
-            distributor1IncomeLog.setAmountBefore(userAccount.getSumAmount());
-            //distributor1IncomeLog.setUserName(); TODO
+            HttpResult<SysUserAccount> result = orgClient.accountGet(distributor1UserId);
+            if(result.getCode() == 200 && result.getData() != null){
+                distributor1IncomeLog.setAmountBefore(result.getData().getSumAmountUnpaid());
+            }
+            distributor1IncomeLog.setOperType(2);
+            distributor1IncomeLog.setRemark("订单提成");
+            distributor1IncomeLog.setIsDelete(0);
+            HttpResult<SysUser> sysUserHttpResult = sysUserClient.querySysUserByUserId(distributor1UserId);
+            if(sysUserHttpResult.isSuccess() && sysUserHttpResult.getData() != null ){
+                distributor1IncomeLog.setUserName(sysUserHttpResult.getData().getUsername());
+            }
             incomeLogs.add(distributor1IncomeLog);
+
         }
 
         // 2级分销费
         if (feeOrders.getSecondDistributorId() != null && feeOrders.getSecondDistributionFee().compareTo(BigDecimal.ZERO) > 0) {
             SysUserAccountChangeLog distributor2IncomeLog = new SysUserAccountChangeLog();
             distributor2IncomeLog.setRelatedOrderId(orderNo);
-            distributor2IncomeLog.setUserId(distributor2.getUserId());
+            distributor2IncomeLog.setUserId(distributor2UserId);
             distributor2IncomeLog.setAmount(feeOrders.getFirstDistributionFee());
-            distributor2IncomeLog.setAmountBefore(userAccount.getSumAmount());
-            //distributor2IncomeLog.setUserName(); TODO
+            HttpResult<SysUserAccount> result = orgClient.accountGet(distributor2UserId);
+            if(result.getCode() == 200 && result.getData() != null){
+                distributor2IncomeLog.setAmountBefore(result.getData().getSumAmountUnpaid());
+            }
+
+            distributor2IncomeLog.setOperType(2);
+            distributor2IncomeLog.setRemark("订单提成");
+            distributor2IncomeLog.setIsDelete(0);
+            HttpResult<SysUser> sysUserHttpResult = sysUserClient.querySysUserByUserId(distributor2UserId);
+            if(sysUserHttpResult.isSuccess() && sysUserHttpResult.getData() != null ){
+                distributor2IncomeLog.setUserName(sysUserHttpResult.getData().getUsername());
+            }
             incomeLogs.add(distributor2IncomeLog);
         }
 
@@ -751,10 +807,19 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         if (feeOrders.getThirdDistributorId() != null && feeOrders.getThirdDistributionFee().compareTo(BigDecimal.ZERO) > 0) {
             SysUserAccountChangeLog distributor3IncomeLog = new SysUserAccountChangeLog();
             distributor3IncomeLog.setRelatedOrderId(orderNo);
-            distributor3IncomeLog.setUserId(distributor3.getUserId());
+            distributor3IncomeLog.setUserId(distributor3UserId);
             distributor3IncomeLog.setAmount(feeOrders.getFirstDistributionFee());
-            distributor3IncomeLog.setAmountBefore(userAccount.getSumAmount());
-            //distributor3IncomeLog.setUserName(); TODO
+            HttpResult<SysUserAccount> result = orgClient.accountGet(distributor3UserId);
+            if(result.getCode() == 200 && result.getData() != null){
+                distributor3IncomeLog.setAmountBefore(result.getData().getSumAmountUnpaid());
+            }
+            distributor3IncomeLog.setOperType(2);
+            distributor3IncomeLog.setRemark("订单提成");
+            distributor3IncomeLog.setIsDelete(0);
+            HttpResult<SysUser> sysUserHttpResult = sysUserClient.querySysUserByUserId(distributor3UserId);
+            if(sysUserHttpResult.isSuccess() && sysUserHttpResult.getData() != null ){
+                distributor3IncomeLog.setUserName(sysUserHttpResult.getData().getUsername());
+            }
             incomeLogs.add(distributor3IncomeLog);
         }
         return incomeLogs;

+ 16 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/SysUserJzgInfoController.java

@@ -9,8 +9,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+import java.util.Map;
+
 
 @RestController
 public class SysUserJzgInfoController {
@@ -34,4 +39,15 @@ public class SysUserJzgInfoController {
         SysUserJzgInfo jzgInfo = sysUserJzgInfoService.getUserByUserId(userId);
         return  HttpResult.ok(jzgInfo);
     }
+
+    /**
+     * 查询sys_user_jzg_info 表的id和userId的对应关系
+     *
+     * @author lipf
+     * @date 2026/6/30 14:15
+     */
+    @PostMapping("/api/v1/organization/queryJzgInfoId2UserId")
+    public HttpResult<Map<String,String>> queryJzgInfoId2UserId(@RequestBody List<String> jzgInfoTids){
+        return HttpResult.ok(sysUserJzgInfoService.queryJzgInfoId2UserId(jzgInfoTids));
+    }
 }

+ 15 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java

@@ -337,4 +337,19 @@ public class UserController extends BaseController {
         return sysUserService.getPartUserInfoByMobile(mobile);
     }
 
+
+    /**
+     * 根据userId查询用户信息SysUser
+     *
+     * @author lipf
+     * @date 2026/6/30 11:27
+     */
+    @Operation(summary = "根据userId查询用户信息SysUser", description = "根据userId查询用户信息SysUser")
+    @GetMapping(value = "/querySysUserByUserId")
+    public HttpResult<SysUser> querySysUserByUserId(@RequestParam String userId){
+        SysUser sysUser = sysUserService.querySysUserByUserId(userId);
+        return HttpResult.ok(sysUser);
+    }
+
+
 }

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoService.java

@@ -7,6 +7,7 @@ import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.PartnerRecommenderVo;
 
 import java.util.List;
+import java.util.Map;
 
 public interface SysUserJzgInfoService extends IService<SysUserJzgInfo> {
 
@@ -61,4 +62,12 @@ public interface SysUserJzgInfoService extends IService<SysUserJzgInfo> {
      * @date 2026/4/24 15:29
      */
     void logicDeleteJzgInfo(Long userId);
+
+    /**
+     * 查询sys_user_jzg_info 表的id和userId的对应关系
+     *
+     * @author lipf
+     * @date 2026/6/30 14:15
+     */
+    Map<String, String> queryJzgInfoId2UserId(List<String> jzgInfoTids);
 }

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

@@ -286,4 +286,12 @@ public interface SysUserService extends IService<SysUser> {
     SysUserJzgInfo selectByUserIdInfo(String userId);
 
     SysUserJzgInfo getPartUserInfoByMobile(String mobile);
+
+    /**
+     * 根据userId查询用户信息 SysUser
+     *
+     * @author lipf
+     * @date 2026/6/30 11:27
+     */
+    SysUser querySysUserByUserId(String userId);
 }

+ 29 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,7 +12,10 @@ import com.jzg.organization.service.SysUserJzgInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author quchen
@@ -102,4 +106,29 @@ public class SysUserJzgInfoServiceImpl extends ServiceImpl<SysUserJzgInfoMapper,
     public void logicDeleteJzgInfo(Long userId) {
         sysUserJzgInfoMapper.updateUserByUserId(String.valueOf(userId));
     }
+
+    /**
+     * 查询sys_user_jzg_info 表的id和userId的对应关系
+     *
+     * @param jzgInfoTids sys_user_jzg_info 表的序号集
+     * @author lipf
+     * @date 2026/6/30 14:15
+     */
+    @Override
+    public Map<String, String> queryJzgInfoId2UserId(List<String> jzgInfoTids) {
+        if(CollUtil.isEmpty(jzgInfoTids)){
+            return Collections.emptyMap();
+        }
+
+        Map<String,String> res = new HashMap<>();
+        for (String jzgInfoTid : jzgInfoTids) {
+            SysUserJzgInfo sysUserJzgInfo = baseMapper.selectById(jzgInfoTid);
+            if(sysUserJzgInfo == null){
+                continue;
+            }
+            res.put(jzgInfoTid,sysUserJzgInfo.getUserId());
+
+        }
+        return res;
+    }
 }

+ 11 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -1539,6 +1539,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return sysUserJzgInfoMapper.getPartUserInfoByMobile(mobile);
     }
 
+    /**
+     * 根据userId查询用户信息 SysUser
+     *
+     * @param userId sys_user 表的序号
+     * @author lipf
+     * @date 2026/6/30 11:27
+     */
+    @Override
+    public SysUser querySysUserByUserId(String userId) {
+        return baseMapper.selectById(userId);
+    }
 
     public void addPartner(SysUserVo sysUserVo){
         String referrerId = sysUserVo.getReferrerId();