Browse Source

修改合赢奖的计算程序

Yangzw 8 months ago
parent
commit
daa5dbb10e

+ 6 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitlog/vo/PtProfitLogRespVO.java

@@ -70,4 +70,10 @@ public class PtProfitLogRespVO {
     @Schema(description = "直推奖超出额度")
     @ExcelProperty("直推奖超出额度")
     private Long ancestorQuotaAmount;
+
+    @Schema(description = "产生积分的用户ID,例如:下订单的用户ID")
+    private Long generateUserId;
+
+    @Schema(description = "显示这条记录是由谁产生的用户名")
+    private String username;
 }

+ 10 - 2
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/ptprofitlog/PtProfitLogMapper.java

@@ -43,12 +43,20 @@ public interface PtProfitLogMapper extends BaseMapperX<PtProfitLogDO> {
                     PLATFORM_TOTAL_ADD.getType(),
                     PLATFORM_SERVICE_FEE.getType(),
                     PLATFORM_REVENUE.getType(),
+                    SMALL_QUOTA_CRASH_SETTLE.getType(),
                     AFTER_CRASH_CALC_PT_TOTAL_QUOTA.getType(),
                     AFTER_CRASH_CALC_PT_TOTAL_GROSS_QUOTA.getType(),
                     GROSS_PROFIT_BONUS_QUOTA_PERC_EXCEED_MAXIMUM_LIMIT.getType(),
-                    GROSS_PROFIT_ANCESTOR_QUOTA_PERC_EXCEED_MAXIMUM_LIMIT.getType()
+                    GROSS_PROFIT_ANCESTOR_QUOTA_PERC_EXCEED_MAXIMUM_LIMIT.getType(),
+                    RECOMMENDED_PERSON_QUOTA.getType(),
+                    DIRECT_REFERRAL_QUOTA.getType(),
+                    SMALL_QUOTA_CRASH.getType(),
+                    ORDER_PAY_INTEGRAL.getType(),
+                    ORDER_REFUND_INTEGRAL.getType(),
+                    ORDER_CANCEL_BY_USER_REFUND_INTEGRAL.getType(),
+                    ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL.getType()
             );
-            reqVO.setUserId(null);
+//            reqVO.setUserId(null);
         }
 
         return selectPage(reqVO, new LambdaQueryWrapperX<PtProfitLogDO>()

+ 1 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java

@@ -504,7 +504,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
                     .freezeAmount(-descendantQuotaInt)
                     .afterFreezeAmount(integralDO.getFreezeQuota())
                     .maxAvailablePointsAmount(highQuotaInt)
-                    .afterMaxAvailablePointsAmount(integralDO.getHighQuota())
+                    .afterMaxAvailablePointsAmount(integralDO.getHighQuota()+ new BigDecimal(orderPercentageDO.getBaseMaxQuota()).longValue())
                     .percentTemplate(percentTemplate)
                     .generateUserId(integralDO.getUserId())
                     .build();

+ 2 - 2
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/partitioncrash/PartitionCrashServiceImpl.java

@@ -298,7 +298,7 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
                     integralDO.setAccumulatedQuota(integralDO.getAccumulatedQuota() + amount);
                     // 碰撞后的额度添加到日志中 增加日志模块
                     integralService.updateIntegral(BeanUtils.toBean(integralDO, IntegralSaveReqVO.class));
-                    Long logId = ptProfitLogService.addMessageFreeze(k.getUserId(), CaclEnum.SMALL_QUOTA_CRASH, amount,
+                    Long logId = ptProfitLogService.addMessageFreeze(integralDO.getUserId(),integralDO.getUserId(), CaclEnum.SMALL_QUOTA_CRASH, amount,
                             integralDO.getFreezeQuota(), JsonUtils.toJsonString(orderPercentageDO), ptReplenish, -amount, highQuota - amount);
 
                     //记录每日用户有合赢将的记录,后面用来结算的
@@ -328,7 +328,7 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
                     parentIntegralDo.setAccumulatedQuota(parentIntegralDo.getAccumulatedQuota() + parentAmount);
                     // 碰撞后的额度添加到日志中 增加日志模块
                     integralService.updateIntegral(BeanUtils.toBean(parentIntegralDo, IntegralSaveReqVO.class));
-                    Long logId = ptProfitLogService.addMessageFreeze(parentIntegralDo.getUserId(), CaclEnum.SMALL_QUOTA_CRASH, parentAmount,
+                    Long logId = ptProfitLogService.addMessageFreeze(parentIntegralDo.getUserId(),integralDO.getUserId(), CaclEnum.SMALL_QUOTA_CRASH, parentAmount,
                             parentIntegralDo.getFreezeQuota(), JsonUtils.toJsonString(orderPercentageDO), parentPtReplenish, -parentAmount, parentHighQuota - parentAmount);
 
                     //记录每日用户有合赢将的记录,后面用来结算的

+ 1 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogService.java

@@ -66,7 +66,7 @@ public interface PtProfitLogService {
      * @param accumulatedQuotAmount  合赢奖溢出
      */
     void addMessage(Long userId, CaclEnum caclEnum, Long amount, Long afterAmount, String jsonString,Long accumulatedQuotAmount, Long maxAvailablePointsAmount ,Long afterMaxAvailablePointsAmount);
-    Long addMessageFreeze(Long userId, CaclEnum caclEnum, Long amount, Long afterAmount, String jsonString,Long accumulatedQuotAmount, Long maxAvailablePointsAmount ,Long afterMaxAvailablePointsAmount);
+    Long addMessageFreeze(Long userId,Long ancestorId, CaclEnum caclEnum, Long amount, Long afterAmount, String jsonString,Long accumulatedQuotAmount, Long maxAvailablePointsAmount ,Long afterMaxAvailablePointsAmount);
     void addMessage(Long userId, CaclEnum caclEnum, Integer amount, Integer afterAmount);
 
     /**

+ 14 - 6
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogServiceImpl.java

@@ -2,6 +2,7 @@ package cn.newfeifan.mall.module.distri.service.ptprofitlog;
 
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
+import cn.newfeifan.mall.module.member.service.user.MemberUserService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -33,6 +34,8 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
 
     @Resource
     private PtProfitLogMapper ptProfitLogMapper;
+    @Resource
+    private MemberUserService memberUserService;
 
 
 
@@ -79,6 +82,13 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
         PageResult<PtProfitLogRespVO> result = BeanUtils.toBean(ptProfitLogMapper.selectPage(pageReqVO), PtProfitLogRespVO.class);
         for (PtProfitLogRespVO ptProfitLogRespVO : result.getList()) {
             ptProfitLogRespVO.setProfitStatusName(Objects.requireNonNull(CaclEnum.getCaclEnumByValue(ptProfitLogRespVO.getProfitStatus())).getName());
+
+            if (ptProfitLogRespVO.getProfitStatus().equals(RECOMMENDED_PERSON_QUOTA.getType()) ||
+                    ptProfitLogRespVO.getProfitStatus().equals(CaclEnum.ORDER_PAY_INTEGRAL_ANCESTER.getType()) ||
+                    ptProfitLogRespVO.getProfitStatus().equals(CaclEnum.ORDER_REFUND_INTEGRAL_ANCESTER.getType()) ||
+                    ptProfitLogRespVO.getProfitStatus().equals(SMALL_QUOTA_CRASH.getType())) {
+                ptProfitLogRespVO.setUsername(memberUserService.getUser(ptProfitLogRespVO.getGenerateUserId()).getUsername());
+            }
         }
         return result;
     }
@@ -110,7 +120,7 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
 
     }
     @Override
-    public Long addMessageFreeze(Long userId, CaclEnum caclEnum, Long amount, Long afterAmount, String percentTemplate,Long accumulatedQuotAmount, Long maxAvailablePointsAmount ,Long afterMaxAvailablePointsAmount) {
+    public Long addMessageFreeze(Long userId,Long ancestorId, CaclEnum caclEnum, Long amount, Long afterAmount, String percentTemplate,Long accumulatedQuotAmount, Long maxAvailablePointsAmount ,Long afterMaxAvailablePointsAmount) {
         PtProfitLogSaveReqVO ptProfitLog = PtProfitLogSaveReqVO.builder()
                 .afterFreezeAmount(afterAmount)
                 .freezeAmount(amount)
@@ -119,13 +129,11 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
                 .accumulatedQuotaAmount(accumulatedQuotAmount)
                 .maxAvailablePointsAmount(maxAvailablePointsAmount)
                 .afterMaxAvailablePointsAmount(afterMaxAvailablePointsAmount)
-                .generateUserId(userId)
+                .generateUserId(ancestorId)
+                .userId(userId)
                 .build();
-        if(caclEnum.getType().equals(SMALL_QUOTA_CRASH.getType())){
-            ptProfitLog.setUserId(userId);
-        }
         PtProfitLogDO bean = BeanUtils.toBean(ptProfitLog, PtProfitLogDO.class);
-                ptProfitLogMapper.insert(bean);
+        ptProfitLogMapper.insert(bean);
         return bean.getId();
         // todo 发送通知
         // todo 发短信

+ 3 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserPageReqVO.java

@@ -81,4 +81,7 @@ public class MemberUserPageReqVO extends PageParam {
 
     @Schema(description = "累计消费金额(只算人民币,单位为分)")
     private Long cumulativeSpending;
+
+    @Schema(description = "用户名")
+    private String username;
 }

+ 5 - 7
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/dataobject/user/MemberUserDO.java

@@ -20,7 +20,6 @@ import java.util.List;
 
 /**
  * 会员用户 DO
- *
  * uk_mobile 索引:基于 {@link #mobile} 字段
  *
  * @author 非繁源码
@@ -47,13 +46,11 @@ public class MemberUserDO extends TenantBaseDO {
     private String mobile;
     /**
      * 加密后的密码
-     *
      * 因为目前使用 {@link BCryptPasswordEncoder} 加密器,所以无需自己处理 salt 盐
      */
     private String password;
     /**
      * 帐号状态
-     *
      * 枚举 {@link CommonStatusEnum}
      */
     private Integer status;
@@ -92,7 +89,6 @@ public class MemberUserDO extends TenantBaseDO {
     private String name;
     /**
      * 性别
-     *
      * 枚举 {@link SexEnum}
      */
     private Integer sex;
@@ -102,7 +98,6 @@ public class MemberUserDO extends TenantBaseDO {
     private LocalDateTime birthday;
     /**
      * 所在地
-     *
      * 关联 {@link Area#getId()} 字段
      */
     private Integer areaId;
@@ -127,7 +122,6 @@ public class MemberUserDO extends TenantBaseDO {
 
     /**
      * 会员级别编号
-     *
      * 关联 {@link MemberLevelDO#getId()} 字段
      */
     private Long levelId;
@@ -137,7 +131,6 @@ public class MemberUserDO extends TenantBaseDO {
     private Integer experience;
     /**
      * 用户分组编号
-     *
      * 关联 {@link MemberGroupDO#getId()} 字段
      */
     private Long groupId;
@@ -194,4 +187,9 @@ public class MemberUserDO extends TenantBaseDO {
      */
     private Long systemUsersId;
 
+    /**
+     * 用户名
+     */
+    private String username;
+
 }

+ 1 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/mysql/user/MemberUserMapper.java

@@ -48,6 +48,7 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
                 .betweenIfPresent(MemberUserDO::getCreateTime, reqVO.getCreateTime())
                 .eqIfPresent(MemberUserDO::getLevelId, reqVO.getLevelId())
                 .eqIfPresent(MemberUserDO::getGroupId, reqVO.getGroupId())
+                .eqIfPresent(MemberUserDO::getUsername, reqVO.getUsername())
                 .eqIfPresent(MemberUserDO::getCurrentMemberWorthValue, reqVO.getCurrentMemberWorthValue())
                 .apply(StrUtil.isNotEmpty(tagIdSql), tagIdSql)
                 .orderByDesc(MemberUserDO::getId));