Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

Qchen před 2 týdny
rodič
revize
6097704f64

+ 3 - 0
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -419,6 +419,9 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
                     .filter(x -> Objects.equals(x.getSystemCode(), system))
                     .findFirst()
                     .orElse(null);
+            if(sysUserJzgInfo == null){
+                throw new SystemException("该用户信息不存在,请重新输入");
+            }
             // 租户系统才会校验这个, 后台管理系统,没有租户的概念
             if(this.isTenantLogin(system)){
                 if (sysUserJzgInfo.cannotLogin()) {

+ 20 - 0
commons/src/main/java/com/jzg/commons/entity/po/InsFeeOrdersSummary.java

@@ -0,0 +1,20 @@
+package com.jzg.commons.entity.po;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class InsFeeOrdersSummary implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -2218119163153717246L;
+
+    @Schema(description = "成交的订单总数")
+    private Long orderCount;
+
+    @Schema(description = "订单成交的总保费")
+    private BigDecimal totalPremium;
+}

+ 13 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeOrderController.java

@@ -5,6 +5,7 @@ import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
+import com.jzg.commons.entity.po.InsFeeOrdersSummary;
 import com.jzg.commons.entity.report.dto.ReportOperatingProfitDataDto;
 import com.jzg.quotation.summary.entity.dto.RightsAmountUpdateDto;
 import com.jzg.quotation.summary.service.InsFeeOrdersService;
@@ -57,6 +58,18 @@ public class InsFeeOrderController {
         return insFeeOrdersService.getInsFeeOrderListByUserId(insFeeOrdersParam);
     }
 
+    /**
+     * 针对getInsFeeOrderByUserId 方法的优化,当订单很多的时候,提升性能
+     *
+     * @author lipf
+     * @date 2026/9/1 10:25
+     */
+    @PostMapping(value = "/getInsFeeOrderSummaryByUserId")
+    InsFeeOrdersSummary getInsFeeOrderSummaryByUserId(@RequestBody InsFeeOrdersParam param){
+        return insFeeOrdersService.getInsFeeOrderSummaryByUserId(param);
+    }
+
+
     @GetMapping("/getInsFeeOrderListByTopReferrerIdAndUserId")
     @Operation(summary = "订单费用列表通过上下级分销员id查询")
     public List<InsFeeOrders> getInsFeeOrder(String userId,String topReferrerId){

+ 7 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsFeeOrdersMapper.java

@@ -3,6 +3,7 @@ package com.jzg.quotation.summary.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
+import com.jzg.commons.entity.po.InsFeeOrdersSummary;
 import com.jzg.commons.entity.report.dto.ReportOperatingProfitDataDto;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
@@ -76,6 +77,10 @@ public interface InsFeeOrdersMapper extends BaseMapper<InsFeeOrders> {
                                                                   @Param("signTimeEnd") LocalDateTime signTimeEnd,
                                                                   @Param("systemCode") String systemCode);
 
-
-
+    /**
+     *
+     * @author lipf
+     * @date 2026/9/1 10:30
+     */
+    InsFeeOrdersSummary getInsFeeOrderSummaryByUserId(@Param("insFeeOrdersParam") InsFeeOrdersParam param);
 }

+ 8 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeOrdersService.java

@@ -5,6 +5,7 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.CostCalculateRespVO;
 import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
+import com.jzg.commons.entity.po.InsFeeOrdersSummary;
 import com.jzg.commons.entity.report.dto.ReportOperatingProfitDataDto;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 
@@ -69,4 +70,11 @@ public interface InsFeeOrdersService extends IService<InsFeeOrders> {
      * @date 2026/7/25 11:22
      */
     Map<String,ReportOperatingProfitDataDto> queryOperatingProfits(Integer year, String systemCode, String sqlType);
+
+    /**
+     * 查询订单数和这些订单的汇总信息
+     * @author lipf
+     * @date 2026/9/1 10:27
+     */
+    InsFeeOrdersSummary getInsFeeOrderSummaryByUserId(InsFeeOrdersParam param);
 }

+ 20 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java

@@ -13,6 +13,7 @@ import com.jzg.commons.entity.orders.po.InsFeeAudit;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCosts;
 import com.jzg.commons.entity.po.InsFeeOrders;
+import com.jzg.commons.entity.po.InsFeeOrdersSummary;
 import com.jzg.commons.entity.po.PtlAgreement;
 import com.jzg.commons.entity.report.dto.ReportOperatingProfitDataDto;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
@@ -469,6 +470,25 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         return insFeeOrdersMapper.getInsFeeOrdersList(param);
     }
 
+
+    /**
+     * 查询订单数和这些订单的汇总信息
+     *
+     * @param param
+     * @author lipf
+     * @date 2026/9/1 10:27
+     */
+    @Override
+    public InsFeeOrdersSummary getInsFeeOrderSummaryByUserId(InsFeeOrdersParam param) {
+        log.info("查询订单数和这些订单的汇总信息: param=[{}]", JSONUtil.toJsonStr(param));
+        // 在报价哪里, userId 保存的是用户的手机号
+        String userName = baseController.getUserName();
+        param.setUserId(userName);
+        InsFeeOrdersSummary summary = insFeeOrdersMapper.getInsFeeOrderSummaryByUserId(param);
+        log.info("查询订单数和这些订单的汇总信息: param=[{}]. summary=[{}]", JSONUtil.toJsonStr(param), JSONUtil.toJsonStr(summary));
+        return summary;
+    }
+
     @Override
     public List<InsFeeOrders> getInsFeeOrderListByUserId(InsFeeOrdersParam param) {
         log.info("getInsFeeOrderListByUserId的查询条件:param=[{}]", JSONUtil.toJsonStr(param));

+ 8 - 2
tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeOrdersMapper.xml

@@ -198,6 +198,12 @@
         group by
         ym
     </select>
-
-
+    <!-- 查询订单的汇总信息 lipf 2026年9月1日10:34:17  -->
+    <select id="getInsFeeOrderSummaryByUserId" resultType="com.jzg.commons.entity.po.InsFeeOrdersSummary">
+        select
+            sum(ifo.total_premium) as totalPremium,
+            count(*) as orderCount
+        from ins_fee_orders ifo
+        where ifo.user_id = #{insFeeOrdersParam.userId} and ifo.is_delete = 0
+    </select>
 </mapper>

+ 10 - 0
tenant/organization/src/main/java/com/jzg/organization/client/summary/QuoteClient.java

@@ -3,6 +3,7 @@ package com.jzg.organization.client.summary;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
+import com.jzg.commons.entity.po.InsFeeOrdersSummary;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -23,6 +24,15 @@ public interface QuoteClient {
     @PostMapping(value = "/insFeeOrder/getInsFeeOrderByUserId")
     List<InsFeeOrders> getInsFeeOrderByUserId(@RequestBody InsFeeOrdersParam param);
 
+    /**
+     * 针对getInsFeeOrderByUserId 方法的优化,当订单很多的时候,提升性能
+     *
+     * @author lipf
+     * @date 2026/9/1 10:25
+     */
+    @PostMapping(value = "/insFeeOrder/getInsFeeOrderSummaryByUserId")
+    InsFeeOrdersSummary getInsFeeOrderSummaryByUserId(@RequestBody InsFeeOrdersParam param);
+
     @GetMapping(value = "/insFeeOrder/getInsFeeOrderListByTopReferrerIdAndUserId")
     List<InsFeeOrders> getInsFeeOrderListByTopReferrerIdAndUserId(@RequestParam("userId") String userId, @RequestParam("topReferrerId") String topReferrerId);
 

+ 12 - 7
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

@@ -172,13 +172,18 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         sysUserWalletVo.setIntegral(sysUserAccount.getIntegral());
         InsFeeOrdersParam param = new InsFeeOrdersParam();
         param.setUserId(sysUserJzgInfo.getUserId());
-        List<InsFeeOrders> insFeeOrdersList = quoteClient.getInsFeeOrderByUserId(param);
+        //List<InsFeeOrders> insFeeOrdersList = quoteClient.getInsFeeOrderByUserId(param);
+        InsFeeOrdersSummary feeSummary = quoteClient.getInsFeeOrderSummaryByUserId(param);
         BigDecimal premium = BigDecimal.ZERO;
         BigDecimal orderAmount = BigDecimal.ZERO;
-        for (InsFeeOrders insFeeOrders : insFeeOrdersList) {
-            premium = premium.add(insFeeOrders.getTotalPremium());
-            orderAmount = orderAmount.add(insFeeOrders.getTotalReceivablePremium());
+        if(feeSummary != null){
+            premium = BigDecimalUtil.add(BigDecimal.ZERO,feeSummary.getTotalPremium()) ;
+//            orderAmount = feeSummary.getOrderCount();
         }
+//        for (InsFeeOrders insFeeOrders : insFeeOrdersList) {
+//            premium = premium.add(insFeeOrders.getTotalPremium());
+//            orderAmount = orderAmount.add(insFeeOrders.getTotalReceivablePremium());
+//        }
         InsFeeOrdersParam distributionParam = new InsFeeOrdersParam();
         distributionParam.setDistributorId(sysUserJzgInfo.getId());
 //        List<InsFeeOrders> distribuitonList = quoteClient.getInsFeeOrdersList(distributionParam);
@@ -198,7 +203,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         sysUserWalletVo.setTotalIncome(sysUserAccount.getSumAmount());
         //sysUserWalletVo.setTotalIncome(orderAmount.add(distributionPremium));
         sysUserWalletVo.setSignPremium(premium);
-        sysUserWalletVo.setOrderCount(String.valueOf(insFeeOrdersList.size()));
+        sysUserWalletVo.setOrderCount(String.valueOf(feeSummary.getOrderCount()));
         List<SysUserJzgInfo> sysUserJzgInfoList = sysUserJzgInfoService.list(new LambdaQueryWrapper<SysUserJzgInfo>().eq(SysUserJzgInfo::getReferrerId, sysUserJzgInfo.getId()));
         sysUserWalletVo.setTotalInviteCount(String.valueOf(sysUserJzgInfoList.size()));
         // 获取累计收入
@@ -454,8 +459,8 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
                     if("0".equals(action.getIncomeAndExpense())){
                         // 保费收入
                         stepList.add(new ChangeLogDetail("费用审核通过",action.getCreateTime(),true, null));
-                        stepList.add(new ChangeLogDetail());
-                        stepList.add(new ChangeLogDetail());
+//                        stepList.add(new ChangeLogDetail());
+//                        stepList.add(new ChangeLogDetail());
                     }
                 }else if("2".equals(action.getStatus())){
                     stepList.add(new ChangeLogDetail("提交提现申请",action.getCreateTime(),true, null));

+ 6 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoBankCardServiceImpl.java

@@ -122,7 +122,12 @@ public class SysUserJzgInfoBankCardServiceImpl extends ServiceImpl<SysUserJzgInf
             for (int i = 0; i < size; i++) {
                 SysUserJzgInfoBankCardRecord action = sysUserJzgInfoBankCardRecordList.get(i);
                 // 只有最后一条记录按实际状态设置,前面的记录默认展示为成功
-                boolean show = i < size - 1 || action.getStatus().equals("1");
+                Boolean show = i < size - 1 ||  action.getStatus().equals("1");
+                if("添加新卡".equals(action.getDescription()) && "0".equals(sysUserJzgInfoBankCardDto.getAuditStatus())){
+                    // 待审核的时候,显示为空。 不展示对/错
+                    show = null;
+                }
+
                 changeLogDetailList.add(new ChangeLogDetail(action.getDescription(), action.getCreateTime(), show, action.getRemark(), action.getBankCardId(), action.getId()));
             }
             sysUserJzgInfoBankCardDto.setSysUserJzgInfoBankCardRecordList(changeLogDetailList);

+ 21 - 18
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -938,20 +938,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    public HttpResult addBankCard(SysUserJzgInfoBankCardVo sysUserJzgInfoBankCardVo) {
-        SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoService.getById(sysUserJzgInfoBankCardVo.getUserJzgInfoId());
+    public HttpResult addBankCard(SysUserJzgInfoBankCardVo param) {
+        log.info("添加银行卡信息:param=[{}]", JSONUtil.toJsonStr(param));
+        SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoService.getById(param.getUserJzgInfoId());
         if (sysUserJzgInfo == null) {
             throw new SystemException("该业务员不存在");
         }
-        if (sysUserJzgInfoBankCardVo.getBankCardNumber() == null) {
-            HttpResult.error("银行卡号不能为空");
+        if (param.getBankCardNumber() == null) {
+            return HttpResult.error("银行卡号不能为空");
         }
-        String fileId = IdGenerate.nextId();
-        if (sysUserJzgInfoBankCardVo.getAttachment() != null) {
+        String id = IdGenerate.nextId();
+        if (param.getAttachment() != null) {
             SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, sysUserJzgInfoBankCardVo.getAttachment()));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(sysUserJzgInfoBankCardVo.getAttachment(), sysUserJzgInfoBankCardVo.getUserJzgInfoId(), sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setId(fileId);
+                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, param.getAttachment()));
+            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(param.getAttachment(), param.getUserJzgInfoId(), sysUploadFiles.getFileName());
+            sysUserJzgInfoFile.setId(id);
             sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
             sysUserJzgInfoFile.setFileType("bankcard");
             sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
@@ -965,24 +966,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         // 提交卡号为驳回状态 重新提交
         SysUserJzgInfoBankCard rejectBankCard = sysUserJzgInfoBankCardService
                 .getOne(new LambdaQueryWrapper<SysUserJzgInfoBankCard>()
-                        .eq(SysUserJzgInfoBankCard::getBankCardNumber, sysUserJzgInfoBankCardVo.getBankCardNumber())
+                        .eq(SysUserJzgInfoBankCard::getBankCardNumber, param.getBankCardNumber())
                         .eq(SysUserJzgInfoBankCard::getUserInfoId, sysUserJzgInfo.getId())
                         .eq(SysUserJzgInfoBankCard::getSystemCode, systemCode)
                         .eq(SysUserJzgInfoBankCard::getAuditStatus, 2));
         // 重新提交需要再多加一条数据,不能修改原来那条数据的状态,原来那条数据不能动
         if (rejectBankCard != null) {
             SysUserJzgInfoBankCard sysUserJzgInfoBankCard = BeanUtil.copyProperties(rejectBankCard, SysUserJzgInfoBankCard.class);
-
             sysUserJzgInfoBankCard.setId(IdGenerate.nextId());
-            sysUserJzgInfoBankCard.setFileId(fileId);
+            sysUserJzgInfoBankCard.setFileId(id);
             sysUserJzgInfoBankCard.setAuditStatus(0);
             sysUserJzgInfoBankCard.setSystemCode(systemCode);
+            // 解决重新提交的时候,新持卡人姓名没生效的问题 add by lipf 2026年9月1日10:13:25
+            sysUserJzgInfoBankCard.setCardHolderMobile(param.getCardHolderMobile());
+            sysUserJzgInfoBankCard.setCardHolderName(param.getCardHolderName());
             // 审核时间、审核人要设置为空
             sysUserJzgInfoBankCard.setRemark(null);
             sysUserJzgInfoBankCard.setAuditBy(null);
             sysUserJzgInfoBankCard.setAuditTime(null);
             // 设置为默认卡
-            if (sysUserJzgInfoBankCardVo.isDefault()) {
+            if (param.isDefault()) {
                 sysUserJzgInfoBankCardService.lambdaUpdate()
                         .eq(SysUserJzgInfoBankCard::getUserInfoId, sysUserJzgInfo.getId())
                         .setSql("is_default = 0")
@@ -995,23 +998,23 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             // 添加重新提交记录
             SysUserJzgInfoBankCardRecord record = new SysUserJzgInfoBankCardRecord(rejectBankCard.getId(), "驳回后重新提交");
             record.setStatus("0");
-            record.setBankCardId(sysUserJzgInfoBankCardVo.getBankCardNumber());
+            record.setBankCardId(param.getBankCardNumber());
             sysUserJzgInfoBankCardRecordService.save(record);
 
             return HttpResult.ok("重新提交银行卡成功,等待审核");
         }
         SysUserJzgInfoBankCard verifyBankCard = sysUserJzgInfoBankCardService
-                .getOne(new LambdaQueryWrapper<SysUserJzgInfoBankCard>().eq(SysUserJzgInfoBankCard::getBankCardNumber, sysUserJzgInfoBankCardVo.getBankCardNumber())
+                .getOne(new LambdaQueryWrapper<SysUserJzgInfoBankCard>().eq(SysUserJzgInfoBankCard::getBankCardNumber, param.getBankCardNumber())
                         .eq(SysUserJzgInfoBankCard::getSystemCode, systemCode));
         if (verifyBankCard != null) {
             return HttpResult.error("该租户下银行卡已存在");
         }
         SysUserJzgInfoBankCard sysUserJzgInfoBankCard = new SysUserJzgInfoBankCard();
-        BeanUtils.copyProperties(sysUserJzgInfoBankCardVo, sysUserJzgInfoBankCard);
-        sysUserJzgInfoBankCard.setFileId(fileId);
+        BeanUtils.copyProperties(param, sysUserJzgInfoBankCard);
+        sysUserJzgInfoBankCard.setFileId(id);
         sysUserJzgInfoBankCard.setUserInfoId(sysUserJzgInfo.getId());
         sysUserJzgInfoBankCard.setSystemCode(systemCode);
-        if (sysUserJzgInfoBankCardVo.isDefault()) {
+        if (param.isDefault()) {
             sysUserJzgInfoBankCardService.lambdaUpdate()
                     .eq(SysUserJzgInfoBankCard::getUserInfoId, sysUserJzgInfo.getUserId())
                     .setSql("is_default = 0")