Преглед изворни кода

update app发送失败原因记录和积分获取及积分订单创建用户限制

ct пре 2 дана
родитељ
комит
482e1c7dd4

+ 63 - 8
fs-ipad-task/src/main/java/com/fs/app/task/SendAppMsg.java

@@ -58,6 +58,16 @@ public class SendAppMsg {
     private final Map<Long, TaskContext> qwMap = new ConcurrentHashMap<>();
 
     private static final long TASK_TIMEOUT_MS = 3 * 60 * 1000L;
+    private static final int APP_SEND_REMARK_MAX_LENGTH = 500;
+    private static final Map<String, String> APP_CONTENT_TYPE_LABELS;
+
+    static {
+        Map<String, String> labels = new LinkedHashMap<>();
+        labels.put("9", "课程");
+        labels.put("15", "文本");
+        labels.put("16", "语音");
+        APP_CONTENT_TYPE_LABELS = Collections.unmodifiableMap(labels);
+    }
 
     private static class TaskContext {
         final long startTime;
@@ -276,6 +286,10 @@ public class SendAppMsg {
 
                 redisCache.setCacheObject(key, System.currentTimeMillis(), 3, TimeUnit.HOURS);
 
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                String executeTime = sdf.format(new Date());
+                String outerException = null;
+
                 // 推送 APP
                 if (!setting.getSetting().isEmpty()) {
                     try {
@@ -323,21 +337,26 @@ public class SendAppMsg {
 
                     } catch (Exception e) {
                         log.error("推送APP失败", e);
+                        outerException = e.getMessage();
+                        courseSendStatus = false;
+                        txtSendStatus = false;
+                        mp3SendStatus = false;
                     }
                 }
 //                qwSopLogs.setSend(true);
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 QwSopLogs updateQwSop = new QwSopLogs();
-                if (courseSendStatus&&txtSendStatus&&mp3SendStatus){
-                    updateQwSop.setAppSendRemark("APP全部发送成功");
+                String statusSummary;
+                if (courseSendStatus && txtSendStatus && mp3SendStatus) {
+                    statusSummary = "APP全部发送成功";
                     updateQwSop.setAppSendStatus(1);
-                }else if(!courseSendStatus&&!txtSendStatus&&!mp3SendStatus){
-                    updateQwSop.setAppSendRemark("APP全部发送失败");
+                } else if (!courseSendStatus && !txtSendStatus && !mp3SendStatus) {
+                    statusSummary = "APP全部发送失败";
                     updateQwSop.setAppSendStatus(2);
-                }else {
-                    updateQwSop.setAppSendRemark("APP部分发送失败");
+                } else {
+                    statusSummary = "APP部分发送失败";
                     updateQwSop.setAppSendStatus(2);
                 }
+                updateQwSop.setAppSendRemark(buildAppSendRemark(executeTime, statusSummary, allContent, outerException));
                 Set<String> contentTypes = allContent.stream()
                         .map(QwSopCourseFinishTempSetting.Setting::getContentType)
                         .collect(Collectors.toSet());
@@ -352,7 +371,7 @@ public class SendAppMsg {
                     }
                 }
                 updateQwSop.setId(qwSopLogs.getId());
-                updateQwSop.setRealSendTime(sdf.format(new Date()));
+                updateQwSop.setRealSendTime(executeTime);
                 updateQwSop.setContentJson(JSON.toJSONString(setting));
 //                long end2 = System.currentTimeMillis();
                 int i = qwSopLogsService.updateQwSopLogsSendType(updateQwSop);
@@ -380,4 +399,40 @@ public class SendAppMsg {
         long end3 = System.currentTimeMillis();
         log.info("SendAppMsg-销售执行完成:{}, 耗时:{}", user.getQwUserName(), end3 - start3);
     }
+
+    /**
+     * 构建 APP 发送备注:执行时间 | 发送结果 | 失败明细
+     */
+    private String buildAppSendRemark(String executeTime, String statusSummary,
+                                      List<QwSopCourseFinishTempSetting.Setting> allContent,
+                                      String outerException) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(executeTime).append(" | ").append(statusSummary);
+
+        List<String> failureDetails = new ArrayList<>();
+        if (StringUtils.hasText(outerException)) {
+            failureDetails.add("系统异常:" + outerException);
+        }
+        for (Map.Entry<String, String> entry : APP_CONTENT_TYPE_LABELS.entrySet()) {
+            List<String> remarks = allContent.stream()
+                    .filter(e -> entry.getKey().equals(e.getContentType()))
+                    .filter(e -> !Integer.valueOf(1).equals(e.getSendStatus()))
+                    .map(QwSopCourseFinishTempSetting.Setting::getSendRemarks)
+                    .filter(StringUtils::hasText)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (!remarks.isEmpty()) {
+                failureDetails.add(entry.getValue() + ":" + String.join(",", remarks));
+            }
+        }
+        if (!failureDetails.isEmpty()) {
+            sb.append(" | ").append(String.join("; ", failureDetails));
+        }
+
+        String remark = sb.toString();
+        if (remark.length() > APP_SEND_REMARK_MAX_LENGTH) {
+            return remark.substring(0, APP_SEND_REMARK_MAX_LENGTH - 3) + "...";
+        }
+        return remark;
+    }
 }

+ 7 - 7
fs-service/src/main/java/com/fs/his/service/impl/FsIntegralOrderServiceImpl.java

@@ -293,11 +293,12 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
     public R createOrder(FsIntegralOrderCreateParam param) {
 
         FsUser user=fsUserMapper.selectFsUserByUserId(param.getUserId());
+        if (user == null || user.getStatus() != 1){
+            return R.error("用户信息错误!!!");
+        }
         FsUserAddress address=fsUserAddressMapper.selectFsUserAddressByAddressId(param.getAddressId());
         FsIntegralGoods integralGoods=fsIntegralGoodsMapper.selectFsIntegralGoodsByGoodsId(param.getGoodsId());
-        if (Objects.isNull(user)) {
-            return R.error("用户不存在");
-        }
+
         if (Objects.isNull(address)) {
             return R.error("地址不存在");
         }
@@ -455,11 +456,10 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
     @Override
     public R createCartOrder(FsIntegralCartOrderCreateParam param) {
         FsUser user=fsUserMapper.selectFsUserByUserId(param.getUserId());
-        FsUserAddress address=fsUserAddressMapper.selectFsUserAddressByAddressId(param.getAddressId());
-
-        if (Objects.isNull(user)) {
-            throw new CustomException("用户不存在");
+        if (user == null || user.getStatus() != 1){
+            return R.error("用户信息错误!!!");
         }
+        FsUserAddress address=fsUserAddressMapper.selectFsUserAddressByAddressId(param.getAddressId());
         if (Objects.isNull(address)) {
             throw new CustomException("地址不存在");
         }

+ 210 - 209
fs-service/src/main/java/com/fs/his/service/impl/FsUserIntegralLogsServiceImpl.java

@@ -329,228 +329,229 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
     @Transactional
     public R addIntegralTemplate(FsUserAddIntegralTemplateParam param) {
         FsUser user = fsUserMapper.selectFsUserByUserId(param.getUserId());
-        if (user!=null){
-            Long userId = user.getUserId();
-            String json =configService.selectConfigByKey("his.integral");
-            IntegralConfig config= JSONUtil.toBean(json,IntegralConfig.class);
-            Integer[] integralTypeByOneDay = config.getIntegralTypeByOneDay();
-            List<Integer> integralTypes = config.getIntegralTypes();
-            System.out.println("Types: " + Arrays.toString(integralTypeByOneDay));
-            System.out.println("User ID: " + param.getUserId());
-            FsUserIntegralLogTypeEnum logTypeEnum = param.getLogType();
-            if (logTypeEnum == null){
-                return R.error();
-            }
-            Integer logType = logTypeEnum.getValue();
-            //判断是否在限额类型内
-            if (integralTypeByOneDay != null) {
-                if (Arrays.asList(integralTypeByOneDay).contains(logType)){
-                    Integer todayTotalIntegral= fsUserIntegralLogsMapper.selectTodayTotalIntegral(integralTypeByOneDay,param.getUserId());
-                    if (todayTotalIntegral==null){
-                        todayTotalIntegral=0;
-                    }
-                    if (todayTotalIntegral>=config.getIntegralByOneDay()){
-                        return R.error("当天积分已达限额");
-                    }
+        if (user==null || user.getStatus()!=1){
+            return R.error("用户信息错误");
+        }
+        Long userId = user.getUserId();
+        String json =configService.selectConfigByKey("his.integral");
+        IntegralConfig config= JSONUtil.toBean(json,IntegralConfig.class);
+        Integer[] integralTypeByOneDay = config.getIntegralTypeByOneDay();
+        List<Integer> integralTypes = config.getIntegralTypes();
+        System.out.println("Types: " + Arrays.toString(integralTypeByOneDay));
+        System.out.println("User ID: " + param.getUserId());
+        FsUserIntegralLogTypeEnum logTypeEnum = param.getLogType();
+        if (logTypeEnum == null){
+            return R.error();
+        }
+        Integer logType = logTypeEnum.getValue();
+        //判断是否在限额类型内
+        if (integralTypeByOneDay != null) {
+            if (Arrays.asList(integralTypeByOneDay).contains(logType)){
+                Integer todayTotalIntegral= fsUserIntegralLogsMapper.selectTodayTotalIntegral(integralTypeByOneDay,param.getUserId());
+                if (todayTotalIntegral==null){
+                    todayTotalIntegral=0;
+                }
+                if (todayTotalIntegral>=config.getIntegralByOneDay()){
+                    return R.error("当天积分已达限额");
                 }
             }
-            Long integralNum = null;
-            List<FsUserIntegralLogs> integralLogs;
-            switch (logType){
-                case 1: //签到
-                    integralNum = param.getPoints();
-                    break;
-                case 2: //消费获得积分
-                    integralNum = param.getPoints();
-                    break;
-                case 3: //分享获得积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, LocalDate.now());
-                    if (integralLogs.size() >= 5){
-                        return R.error("今日看课积分已达上限");
-                    }
-                    integralNum = config.getIntegralShare() == null?0:Long.valueOf(config.getIntegralShare());
-                    break;
+        }
+        Long integralNum = null;
+        List<FsUserIntegralLogs> integralLogs;
+        switch (logType){
+            case 1: //签到
+                integralNum = param.getPoints();
+                break;
+            case 2: //消费获得积分
+                integralNum = param.getPoints();
+                break;
+            case 3: //分享获得积分
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, LocalDate.now());
+                if (integralLogs.size() >= 5){
+                    return R.error("今日看课积分已达上限");
+                }
+                integralNum = config.getIntegralShare() == null?0:Long.valueOf(config.getIntegralShare());
+                break;
 //                case 4: //退款扣除积分
 //                    integralNum = config.getIntegralInvite();
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_4;
 //                    break;
-                case 5: // 购买积分商品
-                    integralNum = param.getPoints();
-                    break;
+            case 5: // 购买积分商品
+                integralNum = param.getPoints();
+                break;
 //                case 6: // 平台取消售后
 //                    integralNum = config.getIntegralInvite();
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_6;
 //                    break;
-                case 7: //积分过期
-                    integralNum = param.getPoints();
-                    break;
-                case 8: //螳螂同步积分
-                    integralNum = param.getPoints();
-                    break;
-                case 9: //购买课程小节扣除
-                    integralNum = param.getPoints();
-                    break;
-                case 10: //观看课程获取积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, LocalDate.now());
-                    if (integralLogs.size() >= 3){
-                        return R.error("今日看课积分已达上限");
-                    }
-                    integralNum = config.getIntegralCourse() == null?0:Long.valueOf(config.getIntegralCourse());
-                    break;
-                case 11: //新用户完善就诊人获得积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
-                    if (!integralLogs.isEmpty()){
-                        return R.error("已领取过该积分");
-                    }
-                    integralNum = config.getIntegralAddPatient() == null?0:Long.valueOf(config.getIntegralAddPatient());
-                    break;
-                case 12: //新用户填写收货地址获取积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
-                    if (!integralLogs.isEmpty()){
-                        return R.error("已领取过该积分");
-                    }
-                    if (config.getIntegralAddUserAddress() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = Long.valueOf(config.getIntegralAddUserAddress());
-                    break;
-                case 13: //浏览商品获得积分
-                    integralNum = config.getIntegralProduct() == null?0:Long.valueOf(config.getIntegralProduct());
-                    break;
-                case 14: //浏览视频获得积分
-                    Integer integralFirstVideo = config.getIntegralFirstVideo();
-                    Integer integralFinishVideo = config.getIntegralFinishVideo();
-                    Integer videoIntegralCount = fsUserIntegralLogsMapper.selectTodayVideoIntegralCount(userId);
-                    int addIntegral = integralFirstVideo-videoIntegralCount;
-                    if (addIntegral<=integralFinishVideo){
-                        addIntegral=integralFinishVideo;
-                    }
-                    integralNum = Long.valueOf(addIntegral+ "");
-                    break;
-                case 15: //首次下单疗法获得积分
-                    Integer integralNewTask = config.getIntegralNewTask();
-                    if(integralNewTask==null){
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = Long.valueOf(config.getIntegralNewTask());
-                    break;
+            case 7: //积分过期
+                integralNum = param.getPoints();
+                break;
+            case 8: //螳螂同步积分
+                integralNum = param.getPoints();
+                break;
+            case 9: //购买课程小节扣除
+                integralNum = param.getPoints();
+                break;
+            case 10: //观看课程获取积分
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, LocalDate.now());
+                if (integralLogs.size() >= 3){
+                    return R.error("今日看课积分已达上限");
+                }
+                integralNum = config.getIntegralCourse() == null?0:Long.valueOf(config.getIntegralCourse());
+                break;
+            case 11: //新用户完善就诊人获得积分
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
+                if (!integralLogs.isEmpty()){
+                    return R.error("已领取过该积分");
+                }
+                integralNum = config.getIntegralAddPatient() == null?0:Long.valueOf(config.getIntegralAddPatient());
+                break;
+            case 12: //新用户填写收货地址获取积分
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
+                if (!integralLogs.isEmpty()){
+                    return R.error("已领取过该积分");
+                }
+                if (config.getIntegralAddUserAddress() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum = Long.valueOf(config.getIntegralAddUserAddress());
+                break;
+            case 13: //浏览商品获得积分
+                integralNum = config.getIntegralProduct() == null?0:Long.valueOf(config.getIntegralProduct());
+                break;
+            case 14: //浏览视频获得积分
+                Integer integralFirstVideo = config.getIntegralFirstVideo();
+                Integer integralFinishVideo = config.getIntegralFinishVideo();
+                Integer videoIntegralCount = fsUserIntegralLogsMapper.selectTodayVideoIntegralCount(userId);
+                int addIntegral = integralFirstVideo-videoIntegralCount;
+                if (addIntegral<=integralFinishVideo){
+                    addIntegral=integralFinishVideo;
+                }
+                integralNum = Long.valueOf(addIntegral+ "");
+                break;
+            case 15: //首次下单疗法获得积分
+                Integer integralNewTask = config.getIntegralNewTask();
+                if(integralNewTask==null){
+                    return R.ok("未配置积分");
+                }
+                integralNum = Long.valueOf(config.getIntegralNewTask());
+                break;
 //                case 16: //点播看课获得积分
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_16;
 //                    break;
-                case 17: //点播答题获得积分
-                    integralNum = param.getPoints();
-                    break;
-                case 18: //邀请新用户获取积分
-                    if (config.getIntegralInvite() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = Long.valueOf(config.getIntegralInvite());
-                    break;
-                case 19: //填写邀请码获取积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
-                    if (!integralLogs.isEmpty()){
-                        return R.error("已领取过该积分");
-                    }
-                    if (config.getIntegralInvited() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = Long.valueOf(config.getIntegralInvited());
-                    break;
-                case 20: //完成手机号绑定注册
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
-                    if (!integralLogs.isEmpty()){
-                        return R.error("已领取过该积分");
-                    }
-                    if (config.getIntegralRegister() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = Long.valueOf(config.getIntegralRegister());
-                    break;
-                case 21: //完成专家咨询
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
-                    if (!integralLogs.isEmpty()){
-                        return R.error("已领取过该积分");
-                    }
-                    if (config.getIntegralFinishConsultation() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum =  Long.valueOf(config.getIntegralFinishConsultation());
-                    break;
-                case 22: //完成首次积分商城下单
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
-                    if (!integralLogs.isEmpty()){
-                        return R.error("已领取过该积分");
-                    }
-                    if (config.getIntegralFirstOrderPoint() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = Long.valueOf(config.getIntegralFirstOrderPoint());
-                    break;
-                case 23: //管理员添加
-                    integralNum = param.getPoints();
-                    break;
-                case 24: //付费课程订阅
-                    if (config.getIntegralSubscriptCourse() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = param.getPoints() * config.getIntegralSubscriptCourse();
-                    break;
-                case 25: //app取消积分订单
-                    integralNum = param.getPoints();
-                    break;
-                case 27: //直播完课积分
-                    integralNum = param.getPoints();
-                    break;
-                case 29: //游戏积分
-                    integralNum = param.getPoints();
-                    break;
-                case 30: //阅读文章获取积分
-                    if (config.getIntegralArticle() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum =  Long.valueOf(config.getIntegralArticle());
-                    param.setRemark(DateUtils.getTime() + FsUserIntegralLogTypeEnum.TYPE_30.getDesc() + " " +integralNum);
-                    break;
-
-                case 31:
-                    // 查询用户详细分润
-                    AdProfitDetail adProfitDetail = adProfitDetailMapper.selectOne(new LambdaQueryWrapper<AdProfitDetail>()
-                            .eq(AdProfitDetail::getUserId, param.getUserId())
-                            .eq(AdProfitDetail::getAdTaskId, param.getBusinessId()));
-                    if (BeanUtil.isEmpty(adProfitDetail) || adProfitDetail.getUserMoney() == null) {
-                        return R.error("用户没有分润信息");
-                    }
-
-                    // 客户分润转积分  1元=1000积分   库里存储的是单位是分: * 10
-                    BigDecimal customerPoints = adProfitDetail.getUserMoney()
-                            .multiply(new BigDecimal("10"))
-                            .setScale(0, BigDecimal.ROUND_DOWN);
-
-                    if (customerPoints.compareTo(BigDecimal.ZERO) <= 0) {
-                        return R.error("积分币为0,无法添加");
-                    }
-                    integralNum = customerPoints.longValue();
-                    break;
-                case 32: //积分兑换佣金
-                    integralNum = param.getPoints();
-                    break;
-                case 33: //福袋积分
-                    integralNum = param.getPoints();
-                    break;
-                case 34: //随访获取积分
-                    if (config.getIntegralFollow() == null) {
-                        return R.ok("未配置积分");
-                    }
-                    integralNum = Long.valueOf(config.getIntegralFollow());
-                    break;
-                default:
-                    return R.error("积分类型错误,联系管理员");
-            }
-            if (integralNum != null){
-                R r = updateAddIntegral(integralNum, user, logTypeEnum, param.getBusinessId(), param.getRemark(),integralTypes);
-                log.info("用户id为{},{}", userId,r.get("msg").toString());
-                return r;
-            }
+            case 17: //点播答题获得积分
+                integralNum = param.getPoints();
+                break;
+            case 18: //邀请新用户获取积分
+                if (config.getIntegralInvite() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum = Long.valueOf(config.getIntegralInvite());
+                break;
+            case 19: //填写邀请码获取积分
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
+                if (!integralLogs.isEmpty()){
+                    return R.error("已领取过该积分");
+                }
+                if (config.getIntegralInvited() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum = Long.valueOf(config.getIntegralInvited());
+                break;
+            case 20: //完成手机号绑定注册
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
+                if (!integralLogs.isEmpty()){
+                    return R.error("已领取过该积分");
+                }
+                if (config.getIntegralRegister() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum = Long.valueOf(config.getIntegralRegister());
+                break;
+            case 21: //完成专家咨询
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
+                if (!integralLogs.isEmpty()){
+                    return R.error("已领取过该积分");
+                }
+                if (config.getIntegralFinishConsultation() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum =  Long.valueOf(config.getIntegralFinishConsultation());
+                break;
+            case 22: //完成首次积分商城下单
+                integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
+                if (!integralLogs.isEmpty()){
+                    return R.error("已领取过该积分");
+                }
+                if (config.getIntegralFirstOrderPoint() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum = Long.valueOf(config.getIntegralFirstOrderPoint());
+                break;
+            case 23: //管理员添加
+                integralNum = param.getPoints();
+                break;
+            case 24: //付费课程订阅
+                if (config.getIntegralSubscriptCourse() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum = param.getPoints() * config.getIntegralSubscriptCourse();
+                break;
+            case 25: //app取消积分订单
+                integralNum = param.getPoints();
+                break;
+            case 27: //直播完课积分
+                integralNum = param.getPoints();
+                break;
+            case 29: //游戏积分
+                integralNum = param.getPoints();
+                break;
+            case 30: //阅读文章获取积分
+                if (config.getIntegralArticle() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum =  Long.valueOf(config.getIntegralArticle());
+                param.setRemark(DateUtils.getTime() + FsUserIntegralLogTypeEnum.TYPE_30.getDesc() + " " +integralNum);
+                break;
+
+            case 31:
+                // 查询用户详细分润
+                AdProfitDetail adProfitDetail = adProfitDetailMapper.selectOne(new LambdaQueryWrapper<AdProfitDetail>()
+                        .eq(AdProfitDetail::getUserId, param.getUserId())
+                        .eq(AdProfitDetail::getAdTaskId, param.getBusinessId()));
+                if (BeanUtil.isEmpty(adProfitDetail) || adProfitDetail.getUserMoney() == null) {
+                    return R.error("用户没有分润信息");
+                }
+
+                // 客户分润转积分  1元=1000积分   库里存储的是单位是分: * 10
+                BigDecimal customerPoints = adProfitDetail.getUserMoney()
+                        .multiply(new BigDecimal("10"))
+                        .setScale(0, BigDecimal.ROUND_DOWN);
+
+                if (customerPoints.compareTo(BigDecimal.ZERO) <= 0) {
+                    return R.error("积分币为0,无法添加");
+                }
+                integralNum = customerPoints.longValue();
+                break;
+            case 32: //积分兑换佣金
+                integralNum = param.getPoints();
+                break;
+            case 33: //福袋积分
+                integralNum = param.getPoints();
+                break;
+            case 34: //随访获取积分
+                if (config.getIntegralFollow() == null) {
+                    return R.ok("未配置积分");
+                }
+                integralNum = Long.valueOf(config.getIntegralFollow());
+                break;
+            default:
+                return R.error("积分类型错误,联系管理员");
+        }
+        if (integralNum != null){
+            R r = updateAddIntegral(integralNum, user, logTypeEnum, param.getBusinessId(), param.getRemark(),integralTypes);
+            log.info("用户id为{},{}", userId,r.get("msg").toString());
+            return r;
         }
         return R.error("用户信息不存在");
     }