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

update:修改积分添加或者扣除方法

ct 2 napja
szülő
commit
0d6a11e835
32 módosított fájl, 1064 hozzáadás és 803 törlés
  1. 61 37
      fs-admin/src/main/java/com/fs/his/controller/FsExpressCommonController.java
  2. 2 2
      fs-admin/src/main/java/com/fs/his/controller/FsUserController.java
  3. 2 1
      fs-admin/src/main/java/com/fs/his/controller/FsUserIntegralLogsController.java
  4. 4 0
      fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java
  5. 27 18
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseRewardRoundServiceImpl.java
  6. 20 14
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseOrderServiceImpl.java
  7. 1 1
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java
  8. 125 89
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  9. 2 0
      fs-service/src/main/java/com/fs/his/config/IntegralConfig.java
  10. 2 1
      fs-service/src/main/java/com/fs/his/enums/FsUserIntegralLogTypeEnum.java
  11. 3 2
      fs-service/src/main/java/com/fs/his/param/FsUserAddIntegralTemplateParam.java
  12. 1 1
      fs-service/src/main/java/com/fs/his/service/IFsIntegralCartService.java
  13. 1 1
      fs-service/src/main/java/com/fs/his/service/IFsUserActiveLogService.java
  14. 1 1
      fs-service/src/main/java/com/fs/his/service/IFsUserIntegralLogsService.java
  15. 2 2
      fs-service/src/main/java/com/fs/his/service/IFsUserService.java
  16. 1 1
      fs-service/src/main/java/com/fs/his/service/impl/FsArticleServiceImpl.java
  17. 1 1
      fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderServiceImpl.java
  18. 106 106
      fs-service/src/main/java/com/fs/his/service/impl/FsIntegralCartServiceImpl.java
  19. 76 52
      fs-service/src/main/java/com/fs/his/service/impl/FsIntegralOrderServiceImpl.java
  20. 55 55
      fs-service/src/main/java/com/fs/his/service/impl/FsUserActiveLogServiceImpl.java
  21. 351 258
      fs-service/src/main/java/com/fs/his/service/impl/FsUserIntegralLogsServiceImpl.java
  22. 2 2
      fs-service/src/main/java/com/fs/his/service/impl/FsUserInvitedServiceImpl.java
  23. 21 15
      fs-service/src/main/java/com/fs/his/service/impl/FsUserNewTaskServiceImpl.java
  24. 105 91
      fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java
  25. 32 11
      fs-service/src/main/java/com/fs/his/service/impl/FsUserSignServiceImpl.java
  26. 2 2
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  27. 28 17
      fs-service/src/main/java/com/fs/live/service/impl/LiveCompletionPointsRecordServiceImpl.java
  28. 19 11
      fs-service/src/main/java/com/fs/qw/service/impl/LuckyBagServiceImpl.java
  29. 8 8
      fs-user-app/src/main/java/com/fs/app/controller/FsIntegralCartController.java
  30. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/IntegralController.java
  31. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/PatientController.java
  32. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/UserAddressController.java

+ 61 - 37
fs-admin/src/main/java/com/fs/his/controller/FsExpressCommonController.java

@@ -9,8 +9,11 @@ import com.fs.his.domain.FsUserIntegralLogs;
 import com.fs.his.domain.Tlintegral;
 import com.fs.his.dto.ExpressNotifyDTO;
 import com.fs.his.dto.ExpressResultDTO;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.FsUserIntegralLogsMapper;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.service.IFsStoreOrderService;
+import com.fs.his.service.IFsUserIntegralLogsService;
 import com.fs.his.service.IFsUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -33,7 +36,8 @@ public class FsExpressCommonController extends BaseController {
 	@Autowired
 	IFsUserService userService;
 	@Autowired
-	private FsUserIntegralLogsMapper integralLogsMapper;
+//	private FsUserIntegralLogsMapper integralLogsMapper;
+	private IFsUserIntegralLogsService integralLogsService;
 	protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 	@ApiOperation("查询运单信息")
 	@PostMapping(path = "/expressNotify" )
@@ -56,53 +60,73 @@ public class FsExpressCommonController extends BaseController {
 			user=userService.selectFsUserByPhone(tl.getPhoneNum());
 		}
 		if(user!=null){
+
+			FsUserAddIntegralTemplateParam integralTemplateParam=new FsUserAddIntegralTemplateParam();
+			integralTemplateParam.setUserId(user.getUserId());
+			integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_8);
 			if (user.getIntegralStatus()==0){
-				FsUser userMap=new FsUser();
-				userMap.setUserId(user.getUserId());
-				Long integral = user.getIntegral();
-				userMap.setIntegral(integral+tl.getTotalPoints());
-				userMap.setUpdateTime(new DateTime());
-				userMap.setIntegralStatus(1);
-				userService.updateFsUser(userMap);
-				FsUserIntegralLogs logs = new FsUserIntegralLogs();
-				logs.setIntegral(tl.getTotalPoints());
-				logs.setUserId(userMap.getUserId());
-				logs.setBalance(userMap.getIntegral());
-				logs.setLogType(8);
-				logs.setCreateTime(new Date());
-				integralLogsMapper.insertFsUserIntegralLogs(logs);
-			}else {
-				FsUser userMap=new FsUser();
-				userMap.setUserId(user.getUserId());
-				Long integral = user.getIntegral();
-				userMap.setIntegral(integral+tl.getIncrPoints());
-				userMap.setUpdateTime(new DateTime());
-				userService.updateFsUser(userMap);
-				FsUserIntegralLogs logs = new FsUserIntegralLogs();
-				logs.setIntegral(tl.getIncrPoints());
-				logs.setUserId(userMap.getUserId());
-				logs.setBalance(userMap.getIntegral());
-				logs.setLogType(8);
-				logs.setCreateTime(new Date());
-				integralLogsMapper.insertFsUserIntegralLogs(logs);
+				integralTemplateParam.setPoints(tl.getTotalPoints());
+			} else {
+				integralTemplateParam.setPoints(tl.getIncrPoints());
 			}
 
+			integralLogsService.addIntegralTemplate(integralTemplateParam);
+
+
+//			if (user.getIntegralStatus()==0){
+//				FsUser userMap=new FsUser();
+//				userMap.setUserId(user.getUserId());
+//				Long integral = user.getIntegral();
+//				userMap.setIntegral(integral+tl.getTotalPoints());
+//				userMap.setUpdateTime(new DateTime());
+//				userMap.setIntegralStatus(1);
+//				userService.updateFsUser(userMap);
+//				FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//				logs.setIntegral(tl.getTotalPoints());
+//				logs.setUserId(userMap.getUserId());
+//				logs.setBalance(userMap.getIntegral());
+//				logs.setLogType(8);
+//				logs.setCreateTime(new Date());
+//				integralLogsMapper.insertFsUserIntegralLogs(logs);
+//			}else {
+//				FsUser userMap=new FsUser();
+//				userMap.setUserId(user.getUserId());
+//				Long integral = user.getIntegral();
+//				userMap.setIntegral(integral+tl.getIncrPoints());
+//				userMap.setUpdateTime(new DateTime());
+//				userService.updateFsUser(userMap);
+//				FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//				logs.setIntegral(tl.getIncrPoints());
+//				logs.setUserId(userMap.getUserId());
+//				logs.setBalance(userMap.getIntegral());
+//				logs.setLogType(8);
+//				logs.setCreateTime(new Date());
+//				integralLogsMapper.insertFsUserIntegralLogs(logs);
+//			}
 		} else{
 			FsUser newUser=new FsUser();
 			newUser.setPhone(tl.getPhoneNum());
 			newUser.setNickName("微信用户"+tl.getPhoneNum().substring(tl.getPhoneNum().length()-4));
 			newUser.setStatus(1);
 			newUser.setIntegralStatus(1);
-			newUser.setIntegral(tl.getTotalPoints());
+//			newUser.setIntegral(tl.getTotalPoints());
+			newUser.setIntegral(0L);
 			newUser.setCreateTime(new Date());
 			userService.insertFsUser(newUser);
-			FsUserIntegralLogs logs = new FsUserIntegralLogs();
-			logs.setIntegral(tl.getTotalPoints());
-			logs.setUserId(newUser.getUserId());
-			logs.setBalance(newUser.getIntegral());
-			logs.setLogType(8);
-			logs.setCreateTime(new Date());
-			integralLogsMapper.insertFsUserIntegralLogs(logs);
+//			FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//			logs.setIntegral(tl.getTotalPoints());
+//			logs.setUserId(newUser.getUserId());
+//			logs.setBalance(newUser.getIntegral());
+//			logs.setLogType(8);
+//			logs.setCreateTime(new Date());
+//			integralLogsMapper.insertFsUserIntegralLogs(logs);
+
+
+			FsUserAddIntegralTemplateParam integralTemplateParam=new FsUserAddIntegralTemplateParam();
+			integralTemplateParam.setUserId(user.getUserId());
+			integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_8);
+			integralTemplateParam.setPoints(tl.getTotalPoints());
+			integralLogsService.addIntegralTemplate(integralTemplateParam);
 		}
 		return R.ok();
 	}

+ 2 - 2
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -400,9 +400,9 @@ public class FsUserController extends BaseController
     public R addPoints(@RequestBody @Validated FsUserAddPointsParam param) {
         FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
         integralTemplateParam.setUserId(param.getUserId());
-        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_23.getValue());
+        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_23);
         integralTemplateParam.setBusinessId(SecurityUtils.getUserId().toString());
-        integralTemplateParam.setPoints(param.getPoint());
+        integralTemplateParam.setPoints(Long.valueOf(param.getPoint()));
         integralTemplateParam.setRemark(param.getRemark());
         return userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
     }

+ 2 - 1
fs-admin/src/main/java/com/fs/his/controller/FsUserIntegralLogsController.java

@@ -85,7 +85,8 @@ public class FsUserIntegralLogsController extends BaseController
     @PostMapping
     public AjaxResult add(@RequestBody FsUserIntegralLogs fsUserIntegralLogs)
     {
-        return toAjax(fsUserIntegralLogsService.insertFsUserIntegralLogs(fsUserIntegralLogs));
+//        return toAjax(fsUserIntegralLogsService.insertFsUserIntegralLogs(fsUserIntegralLogs));
+        return toAjax(1);
     }
 
     /**

+ 4 - 0
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -908,6 +908,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         if (ObjectUtil.isNotEmpty(logVo.getActualQwId())){
             sopLogs.setQwUserKey(logVo.getActualQwId());
         }
+        log.info("sopLogs生成,ExternalId:{}",externalId);
         return sopLogs;
     }
 
@@ -942,6 +943,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
             //直播间发送类型
             case 20:
                 handleLiveMessage(sopLogs, content,companyUserId,companyId,isGroupChat,qwUserId,groupChat,externalId,logVo,liveId);
+                break;
             default:
                 log.error("未知的消息类型 {},跳过处理。", type);
                 break;
@@ -1276,6 +1278,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
             switch (setting.getContentType()) {
                 //文字和短链一起
                 case "1":
+                    break;
                 case "3":
 //                    if ("1".equals(setting.getIsBindUrl())) {
 //                        String link;
@@ -1560,6 +1563,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 //            e.setLinkImageUrl(null);
         });
         sopLogs.setContentJson(JSON.toJSONString(clonedContent));
+        log.info("sopLogs加入队列,ExternalId:{}",externalId);
         enqueueQwSopLogs(sopLogs);
     }
 

+ 27 - 18
fs-service/src/main/java/com/fs/course/service/impl/FsCourseRewardRoundServiceImpl.java

@@ -17,7 +17,9 @@ import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserIntegralLogs;
 import com.fs.his.domain.FsUserWx;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.param.WxSendRedPacketParam;
 import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.service.IFsUserIntegralLogsService;
@@ -421,24 +423,31 @@ public class FsCourseRewardRoundServiceImpl extends ServiceImpl<FsCourseRewardRo
                 //积分奖励
             case 2:
                 //增加积分
-                FsUser userMap=new FsUser();
-                userMap.setUserId(user.getUserId());
-                userMap.setIntegral(user.getIntegral()+integral);
-                // 增加可提现积分
-                userMap.setWithdrawIntegral(user.getWithdrawIntegral() + integral);
-                fsUserMapper.updateFsUser(userMap);
-                FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-                integralLogs.setIntegral(integral.longValue());
-                integralLogs.setUserId(user.getUserId());
-                integralLogs.setBalance(userMap.getIntegral());
-                integralLogs.setLogType(22);
-                integralLogs.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
-                integralLogs.setCreateTime(new Date());
-                integralLogs.setNickName(user.getNickName());
-                integralLogs.setPhone(user.getPhone());
-                //integralLogs.setId(integralLogsService.getFsUserIntegralLogsInsertId());
-//                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
-                iFsUserIntegralLogsService.insertFsUserIntegralLogs(integralLogs);
+//                FsUser userMap=new FsUser();
+//                userMap.setUserId(user.getUserId());
+//                userMap.setIntegral(user.getIntegral()+integral);
+//                // 增加可提现积分
+//                userMap.setWithdrawIntegral(user.getWithdrawIntegral() + integral);
+//                fsUserMapper.updateFsUser(userMap);
+//                FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//                integralLogs.setIntegral(integral.longValue());
+//                integralLogs.setUserId(user.getUserId());
+//                integralLogs.setBalance(userMap.getIntegral());
+//                integralLogs.setLogType(22);
+//                integralLogs.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
+//                integralLogs.setCreateTime(new Date());
+//                integralLogs.setNickName(user.getNickName());
+//                integralLogs.setPhone(user.getPhone());
+//                //integralLogs.setId(integralLogsService.getFsUserIntegralLogsInsertId());
+////                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+//                iFsUserIntegralLogsService.insertFsUserIntegralLogs(integralLogs);
+
+                FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+                integralParam.setUserId(user.getUserId());
+                integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_16);
+                integralParam.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
+                integralParam.setPoints(integral.longValue());
+                iFsUserIntegralLogsService.addIntegralTemplate(integralParam);
 
                 return R.ok("奖励发放成功");
             default:

+ 20 - 14
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseOrderServiceImpl.java

@@ -345,18 +345,24 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
                     studyLog.setCreateTime(new Date());
                     fsUserCourseStudyLogMapper.insertFsUserCourseStudyLog(studyLog);
                 }
-                FsUser userMap=new FsUser();
-                userMap.setUserId(user.getUserId());
-                userMap.setIntegral(user.getIntegral()-course.getIntegral());
-                fsUserMapper.updateFsUser(userMap);
-                FsUserIntegralLogs logs = new FsUserIntegralLogs();
-                logs.setIntegral(-course.getIntegral());
-                logs.setUserId(order.getUserId());
-                logs.setBalance(userMap.getIntegral());
-                logs.setLogType(9);
-                logs.setBusinessId(order.getOrderId().toString());
-                logs.setCreateTime(new Date());
-                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+//                FsUser userMap=new FsUser();
+//                userMap.setUserId(user.getUserId());
+//                userMap.setIntegral(user.getIntegral()-course.getIntegral());
+//                fsUserMapper.updateFsUser(userMap);
+//                FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//                logs.setIntegral(-course.getIntegral());
+//                logs.setUserId(order.getUserId());
+//                logs.setBalance(userMap.getIntegral());
+//                logs.setLogType(9);
+//                logs.setBusinessId(order.getOrderId().toString());
+//                logs.setCreateTime(new Date());
+//                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+                FsUserAddIntegralTemplateParam addIntegralTemplateParam = new FsUserAddIntegralTemplateParam();
+                addIntegralTemplateParam.setUserId(param.getUserId());
+                addIntegralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_9);
+                addIntegralTemplateParam.setPoints(-course.getIntegral());
+                addIntegralTemplateParam.setBusinessId(order.getOrderId().toString());
+                userIntegralLogsService.addIntegralTemplate(addIntegralTemplateParam);
                 return R.ok("兑换成功").put("order",order);
             } else {
                 return R.error("订单创建失败");
@@ -753,9 +759,9 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
             // 付费课程订阅
             FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
             integralParam.setUserId(order.getUserId());
-            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_24.getValue());
+            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_24);
             integralParam.setBusinessId(order.getOrderId().toString());
-            integralParam.setPoints(order.getPayMoney().intValue());
+            integralParam.setPoints(order.getPayMoney().longValue());
             userIntegralLogsService.addIntegralTemplate(integralParam);
 
             return R.ok();

+ 1 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java

@@ -398,7 +398,7 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
 
             FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
             integralTemplateParam.setUserId(param.getUserId());
-            integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_10.getValue());
+            integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_10);
             integralTemplateParam.setBusinessId(video.getVideoId().toString());
             return userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
 

+ 125 - 89
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -58,7 +58,9 @@ import com.fs.course.vo.newfs.*;
 import com.fs.his.config.AppConfig;
 import com.fs.his.config.IntegralConfig;
 import com.fs.his.domain.*;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.*;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.param.WxSendRedPacketParam;
 import com.fs.his.service.*;
 import com.fs.his.utils.ConfigUtil;
@@ -2463,50 +2465,62 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
      */
     private R sendIntegralReward(FsCourseSendRewardUParam param, FsUser user, FsCourseWatchLog log, CourseConfig config) {
         // 更新用户积分
-        FsUser userMap = new FsUser();
-        userMap.setUserId(user.getUserId());
-        userMap.setIntegral(user.getIntegral() + config.getAnswerIntegral());
-        userMap.setWithdrawIntegral(user.getWithdrawIntegral() + config.getAnswerIntegral());
-        fsUserMapper.updateFsUser(userMap);
+//        FsUser userMap = new FsUser();
+//        userMap.setUserId(user.getUserId());
+//        userMap.setIntegral(user.getIntegral() + config.getAnswerIntegral());
+//        userMap.setWithdrawIntegral(user.getWithdrawIntegral() + config.getAnswerIntegral());
+//        fsUserMapper.updateFsUser(userMap);
 
         // 记录积分日志
-        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
         long integralValue = config.getAnswerIntegral().longValue();
-        integralLogs.setIntegral(integralValue);
-        integralLogs.setUserId(user.getUserId());
-        integralLogs.setBalance(userMap.getIntegral());
-        integralLogs.setLogType(17);
-        integralLogs.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
-        integralLogs.setCreateTime(new Date());
-        fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+//        integralLogs.setIntegral(integralValue);
+//        integralLogs.setUserId(user.getUserId());
+//        integralLogs.setBalance(userMap.getIntegral());
+//        integralLogs.setLogType(17);
+//        integralLogs.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
+//        integralLogs.setCreateTime(new Date());
+//        fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
 
-        //更新看课记录的奖励类型
-        log.setRewardType(config.getRewardType());
-        courseWatchLogMapper.updateFsCourseWatchLog(log);
-        logger.info("发放奖励====================》看课记录,{}", log);
+        FsUserAddIntegralTemplateParam addIntegralTemplateParam = new FsUserAddIntegralTemplateParam();
+        addIntegralTemplateParam.setUserId(user.getUserId());
+        addIntegralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_17);
+        addIntegralTemplateParam.setPoints(integralValue);
+        R r = iFsUserIntegralLogsService.addIntegralTemplate(addIntegralTemplateParam);
+        if (r != null && "200".equals(r.get("code").toString())) {
+            /// /todo 待校验
+            if (r.get("logId") !=null){
+                String logId = r.get("logId").toString();
+                //更新看课记录的奖励类型
+                log.setRewardType(config.getRewardType());
+                courseWatchLogMapper.updateFsCourseWatchLog(log);
+                logger.info("发放奖励====================》看课记录,{}", log);
 
-        // 红德堂不要积分转红包
-        if (CloudHostUtils.hasCloudHostName("弘德堂")) {
-            return R.ok("奖励发放成功").put("rewardType", config.getRewardType());
-        }
+                // 红德堂不要积分转红包
+                if (CloudHostUtils.hasCloudHostName("弘德堂")) {
+                    return R.ok("奖励发放成功").put("rewardType", config.getRewardType());
+                }
 
-        //转换红包
-        FsCourseRedPacketLog redPacketLog = new FsCourseRedPacketLog();
-        redPacketLog.setCourseId(param.getCourseId());
-        redPacketLog.setOutBatchNo(integralLogs.getId().toString());
-        redPacketLog.setCompanyId(param.getCompanyId());
-        redPacketLog.setUserId(param.getUserId());
-        redPacketLog.setVideoId(param.getVideoId());
-        redPacketLog.setStatus(1);
-        redPacketLog.setQwUserId(param.getQwUserId() != null ? param.getQwUserId() : null);
-        redPacketLog.setCompanyUserId(param.getCompanyUserId());
-        redPacketLog.setCreateTime(new Date());
-        redPacketLog.setAmount(BigDecimal.valueOf(config.getAnswerIntegral()).divide(BigDecimal.valueOf(1000)));
-        redPacketLog.setRemark("点播答题领取积分转");
-        redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
-        redPacketLog.setPeriodId(param.getPeriodId());
-        redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
-        return R.ok("积分奖励发放成功").put("rewardType", config.getRewardType()).put("integralValue",integralValue);
+                //转换红包
+                FsCourseRedPacketLog redPacketLog = new FsCourseRedPacketLog();
+                redPacketLog.setCourseId(param.getCourseId());
+                redPacketLog.setOutBatchNo(logId);
+                redPacketLog.setCompanyId(param.getCompanyId());
+                redPacketLog.setUserId(param.getUserId());
+                redPacketLog.setVideoId(param.getVideoId());
+                redPacketLog.setStatus(1);
+                redPacketLog.setQwUserId(param.getQwUserId() != null ? param.getQwUserId() : null);
+                redPacketLog.setCompanyUserId(param.getCompanyUserId());
+                redPacketLog.setCreateTime(new Date());
+                redPacketLog.setAmount(BigDecimal.valueOf(config.getAnswerIntegral()).divide(BigDecimal.valueOf(1000)));
+                redPacketLog.setRemark("点播答题领取积分转");
+                redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
+                redPacketLog.setPeriodId(param.getPeriodId());
+                redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
+                return R.ok("积分奖励发放成功").put("rewardType", config.getRewardType()).put("integralValue",integralValue);
+            }
+        }
+        return R.error();
     }
 
     @Override
@@ -3933,43 +3947,58 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
             appAnswerIntegral = config.getAnswerIntegral();
         }
         userMap.setIntegral(user.getIntegral() + (appAnswerIntegral == null ? 0 : appAnswerIntegral));
-        fsUserMapper.updateFsUser(userMap);
+//        fsUserMapper.updateFsUser(userMap);
         CompletableFuture.runAsync(() -> {
-            FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-            integralLogs.setIntegral(config.getAppAnswerIntegral().longValue());
-            integralLogs.setUserId(user.getUserId());
-            integralLogs.setBalance(userMap.getIntegral());
-            integralLogs.setLogType(17);
-            integralLogs.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
-            integralLogs.setCreateTime(new Date());
-//            integralLogs.setNickName(user.getNickName());
-//            integralLogs.setPhone(user.getPhone());
-            //integralLogs.setId(integralLogsService.getFsUserIntegralLogsInsertId());
-//        fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
-//            iFsUserIntegralLogsService.insertFsUserIntegralLogsMySql(integralLogs);
-            iFsUserIntegralLogsService.insertFsUserIntegralLogs(integralLogs);
-            //asyncAddIntegralLogs.saveLogAsync(integralLogs);
+//            FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//            integralLogs.setIntegral(config.getAppAnswerIntegral().longValue());
+//            integralLogs.setUserId(user.getUserId());
+//            integralLogs.setBalance(userMap.getIntegral());
+//            integralLogs.setLogType(17);
+//            integralLogs.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
+//            integralLogs.setCreateTime(new Date());
+////            integralLogs.setNickName(user.getNickName());
+////            integralLogs.setPhone(user.getPhone());
+//            //integralLogs.setId(integralLogsService.getFsUserIntegralLogsInsertId());
+////        fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+////            iFsUserIntegralLogsService.insertFsUserIntegralLogsMySql(integralLogs);
+//            iFsUserIntegralLogsService.insertFsUserIntegralLogs(integralLogs);
+//            //asyncAddIntegralLogs.saveLogAsync(integralLogs);
+
+
+            FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+            integralParam.setUserId(user.getUserId());
+            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_17);
+            integralParam.setBusinessId(StringUtils.isNotEmpty(log.getLogId().toString()) ? log.getLogId().toString() : null);
+            integralParam.setPoints(config.getAppAnswerIntegral()==null?0:Long.valueOf(config.getAppAnswerIntegral()));
+            R r = iFsUserIntegralLogsService.addIntegralTemplate(integralParam);
+            if (r != null && "200".equals(r.get("code").toString())) {
+                if (r.get("logId") != null) {
+                    String logId = r.get("logId").toString();
+                    // 更新观看记录的奖励类型
+                    log.setRewardType(2);
+                    courseWatchLogMapper.updateFsCourseWatchLog(log);
 
-            // 更新观看记录的奖励类型
-            log.setRewardType(2);
-            courseWatchLogMapper.updateFsCourseWatchLog(log);
+
+                    //转换红包
+                    FsCourseRedPacketLog redPacketLog = new FsCourseRedPacketLog();
+                    redPacketLog.setCourseId(param.getCourseId());
+                    redPacketLog.setOutBatchNo(logId);
+                    redPacketLog.setCompanyId(param.getCompanyId());
+                    redPacketLog.setUserId(param.getUserId());
+                    redPacketLog.setVideoId(param.getVideoId());
+                    redPacketLog.setStatus(1);
+                    redPacketLog.setQwUserId(param.getQwUserId() != null ? param.getQwUserId() : null);
+                    redPacketLog.setCompanyUserId(param.getCompanyUserId());
+                    redPacketLog.setCreateTime(new Date());
+                    redPacketLog.setAmount(BigDecimal.valueOf(config.getAppAnswerIntegral()).divide(BigDecimal.valueOf(1000)));
+                    redPacketLog.setRemark("点播答题领取积分转");
+                    redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
+                    redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
+                }
+
+            }
 
 
-            //转换红包
-            FsCourseRedPacketLog redPacketLog = new FsCourseRedPacketLog();
-            redPacketLog.setCourseId(param.getCourseId());
-            redPacketLog.setOutBatchNo(integralLogs.getId().toString());
-            redPacketLog.setCompanyId(param.getCompanyId());
-            redPacketLog.setUserId(param.getUserId());
-            redPacketLog.setVideoId(param.getVideoId());
-            redPacketLog.setStatus(1);
-            redPacketLog.setQwUserId(param.getQwUserId() != null ? param.getQwUserId() : null);
-            redPacketLog.setCompanyUserId(param.getCompanyUserId());
-            redPacketLog.setCreateTime(new Date());
-            redPacketLog.setAmount(BigDecimal.valueOf(config.getAppAnswerIntegral()).divide(BigDecimal.valueOf(1000)));
-            redPacketLog.setRemark("点播答题领取积分转");
-            redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
-            redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
         });
         return R.ok("奖励发放成功");
     }
@@ -5088,24 +5117,31 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
         Long signId = fsUserSignMapper.selectTodaySignId(fsUser.getUserId());
 
         // 添加记录
-        FsUserIntegralLogs logs = new FsUserIntegralLogs();
-        logs.setIntegral(points.longValue());
-        logs.setUserId(fsUser.getUserId());
-        logs.setBalance(NumberUtil.add(fsUser.getIntegral(),points).longValue());
-        logs.setLogType(1);
-        logs.setBusinessId(signId != null ? signId.toString() : null);
-        logs.setCreateTime(new Date());
-        logs.setNickName(fsUser.getNickName());
-        logs.setPhone(fsUser.getPhone());
-        iFsUserIntegralLogsService.insertFsUserIntegralLogs(logs);
-
-        //用户积分增加
-        FsUser userMap =new  FsUser();
-        userMap.setIntegral(fsUser.getIntegral()+points.longValue());
-        userMap.setUserId(fsUser.getUserId());
-        fsUserMapper.updateFsUser(userMap);
-
-        return R.ok("奖励发放成功");
+//        FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//        logs.setIntegral(points.longValue());
+//        logs.setUserId(fsUser.getUserId());
+//        logs.setBalance(NumberUtil.add(fsUser.getIntegral(),points).longValue());
+//        logs.setLogType(1);
+//        logs.setBusinessId(signId != null ? signId.toString() : null);
+//        logs.setCreateTime(new Date());
+//        logs.setNickName(fsUser.getNickName());
+//        logs.setPhone(fsUser.getPhone());
+//        iFsUserIntegralLogsService.insertFsUserIntegralLogs(logs);
+//
+//        //用户积分增加
+//        FsUser userMap =new  FsUser();
+//        userMap.setIntegral(fsUser.getIntegral()+points.longValue());
+//        userMap.setUserId(fsUser.getUserId());
+//        fsUserMapper.updateFsUser(userMap);
+
+        FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+        integralParam.setUserId(fsUser.getUserId());
+        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_1);
+        integralParam.setBusinessId(signId != null ? signId.toString() : null);
+        integralParam.setPoints(points.longValue());
+        return iFsUserIntegralLogsService.addIntegralTemplate(integralParam);
+
+//        return R.ok("奖励发放成功");
     }
 
     /**

+ 2 - 0
fs-service/src/main/java/com/fs/his/config/IntegralConfig.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.util.List;
 
 @Data
 public class IntegralConfig implements Serializable {
@@ -31,6 +32,7 @@ public class IntegralConfig implements Serializable {
     private Integer integralPlayGame; // 首次下载app获取积分
     private Integer integralArticle; // 观看文章(图文)一篇
     private Integer integralArticleTime; // 观看文章(图文)一篇  多少秒算已看完
+    private List<Integer> integralTypes; // 允许兑换佣金积分类型
 
     private Long defaultGrandGift; // 签到大礼品配置
     private BigDecimal integralUserRatio;// 广告联盟 用户分润比例

+ 2 - 1
fs-service/src/main/java/com/fs/his/enums/FsUserIntegralLogTypeEnum.java

@@ -32,7 +32,7 @@ public enum FsUserIntegralLogTypeEnum {
     TYPE_22(22,"首次完成积分商城下单"),
     TYPE_23(23,"管理员添加"),
     TYPE_24(24, "付费课程订阅"),
-    TYPE_25(25, "app取消积分订单"),
+    TYPE_25(25, "取消积分订单,返还积分"),
 //    TYPE_26(26, "直播红包积分"),
     TYPE_27(27, "直播完课积分"),
     TYPE_26(26, "直播红包积分"),
@@ -43,6 +43,7 @@ public enum FsUserIntegralLogTypeEnum {
     TYPE_31(31,"广告积分"),
     TYPE_32(32,"积分兑换佣金"),
     TYPE_33(33,"福袋积分"),
+    TYPE_34(34,"随访获取积分"),
     ;
 
 

+ 3 - 2
fs-service/src/main/java/com/fs/his/param/FsUserAddIntegralTemplateParam.java

@@ -1,6 +1,7 @@
 package com.fs.his.param;
 
 
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import lombok.Data;
 
 
@@ -8,11 +9,11 @@ import lombok.Data;
 public class FsUserAddIntegralTemplateParam {
     private Long userId;
 
-    private Integer logType; //类型1浏览商品 2刷视频 3邀请奖励 4被邀请奖励
+    private FsUserIntegralLogTypeEnum logType; //类型1浏览商品 2刷视频 3邀请奖励 4被邀请奖励
 
     private String businessId;
 
-    private Integer points;
+    private Long points;
 
     private String remark;
 }

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/IFsIntegralCartService.java

@@ -62,5 +62,5 @@ public interface IFsIntegralCartService extends IService<FsIntegralCart> {
 
     Boolean addGoodsIntoCart(AddGoodsIntoCartParam param, Long userId);
 
-    R createOrderFromCart(CreateOrderFromCartParm param, Long aLong);
+//    R createOrderFromCart(CreateOrderFromCartParm param, Long aLong);
 }

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/IFsUserActiveLogService.java

@@ -62,7 +62,7 @@ public interface IFsUserActiveLogService extends IService<FsUserActiveLog>{
      */
     int deleteFsUserActiveLogById(Long id);
 
-    Long userActiveLogSign(FsUser fsUser);
+//    Long userActiveLogSign(FsUser fsUser);
 
     R getUserActiveLog(FsUser fsUser);
 

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/IFsUserIntegralLogsService.java

@@ -38,7 +38,7 @@ public interface IFsUserIntegralLogsService
      * @param fsUserIntegralLogs 积分记录
      * @return 结果
      */
-    public int insertFsUserIntegralLogs(FsUserIntegralLogs fsUserIntegralLogs);
+//    public int insertFsUserIntegralLogs(FsUserIntegralLogs fsUserIntegralLogs);
 
     /**
      * 修改积分记录

+ 2 - 2
fs-service/src/main/java/com/fs/his/service/IFsUserService.java

@@ -120,9 +120,9 @@ public interface IFsUserService
 
     void addUserIntegral(BigDecimal payMoney,Long userId,Long orderId ,Integer orderType);
     void followAddIntegral(Long userId,Long orderId);
-    void subUserIntegral(Long userId,Long orderId ,Integer orderType);
+//    void subUserIntegral(Long userId,Long orderId ,Integer orderType);
 
-    public void subIntegral(Long userId);
+//    public void subIntegral(Long userId);
 
 
     public FsUserFollowDoctorVO getUserFollowDoctorAndOrderId(Long userId);

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsArticleServiceImpl.java

@@ -140,7 +140,7 @@ public class FsArticleServiceImpl implements IFsArticleService
         }
         FsUserAddIntegralTemplateParam param = new FsUserAddIntegralTemplateParam();
         param.setUserId(userId);
-        param.setLogType(FsUserIntegralLogTypeEnum.TYPE_30.getValue());
+        param.setLogType(FsUserIntegralLogTypeEnum.TYPE_30);
         param.setBusinessId(articleId.toString());
         try {
             R r = userIntegralLogsService.addIntegralTemplate(param);

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderServiceImpl.java

@@ -1392,7 +1392,7 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
         // 首次完成专家咨询得积分
         FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
         integralParam.setUserId(order.getUserId());
-        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_21.getValue());
+        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_21);
         integralParam.setBusinessId(order.getOrderSn());
         userIntegralLogsService.addIntegralTemplate(integralParam);
 

+ 106 - 106
fs-service/src/main/java/com/fs/his/service/impl/FsIntegralCartServiceImpl.java

@@ -230,110 +230,110 @@ public class FsIntegralCartServiceImpl extends ServiceImpl<FsIntegralCartMapper,
         }
     }
 
-    /**
-     * 从购物车生成订单,兑换按钮(走的以前逻辑,没有重新设计)
-     *
-     * @param param
-     * @param userId
-     * @return
-     */
-    @Override
-    public R createOrderFromCart(CreateOrderFromCartParm param, Long userId) {
-        RedissonClient redissonClient = SpringUtils.getBean(RedissonClient.class);
-        String lockKey = "fsIntegralCartOrderCreate:" + userId;
-        RLock lock = redissonClient.getLock(lockKey);
-        try {
-            // 尝试获取锁,最多等待3秒,持有锁时间最多30秒
-            boolean isLocked = lock.tryLock(3, 10, TimeUnit.SECONDS);
-            if (!isLocked) {
-                return R.error("系统繁忙,请稍后再试");
-            }
-            FsUser user = userMapper.selectFsUserByUserId(userId);
-            FsUserAddress address = fsUserAddressMapper.selectFsUserAddressByAddressId(param.getAddressId());
-            List<FsIntegralGoodsVo> fsIntegralGoods = fsIntegralGoodsMapper.selectAllByGoodsIds(new HashSet<>(param.getGoodsId()));
-            List<FsIntegralCart> existingCart = baseMapper.selectList(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).in(FsIntegralCart::getGoodsId, param.getGoodsId()));
-            Map<Long, Integer> collect = existingCart.stream().collect(Collectors.groupingBy(FsIntegralCart::getGoodsId, Collectors.summingInt(FsIntegralCart::getCartNum)));
-            StringBuilder quantity = new StringBuilder();
-            for (FsIntegralGoodsVo fsIntegralGood : fsIntegralGoods) {
-                Integer integer = collect.get(fsIntegralGood.getGoodsId());
-                if (fsIntegralGood.getStock() < integer) {
-                    throw new ServiceException(String.format("%d库存不足,兑换失败", fsIntegralGood.getGoodsName()));
-                }
-                if (fsIntegralGood.getStatus() != 1) {
-                    this.remove(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).eq(FsIntegralCart::getGoodsId, fsIntegralGood.getGoodsId()));
-                    log.info("清除下架商品,userId:{}, goodsId:{}", userId, fsIntegralGood.getGoodsId());
-                    throw new ServiceException(String.format("商品[名称:%d]已下架,兑换失败", fsIntegralGood.getGoodsName()));
-                }
-                fsIntegralGood.setIntegralByNum(integer * fsIntegralGood.getIntegral());
-                fsIntegralGood.setQuantity(integer);
-                if (quantity.length() > 0) {
-                    quantity.append(",");
-                }
-                quantity.append(ObjectUtils.isNotEmpty(integer) ? integer : "0");
-            }
-            // 商品总的积分
-            Long goodsIntegral = fsIntegralGoods.stream().filter(n -> ObjectUtils.isNotEmpty(n.getIntegralByNum())).mapToLong(FsIntegralGoodsVo::getIntegralByNum).sum();
-            if (user.getIntegral() < goodsIntegral) {
-                throw new ServiceException("用户积分不足,兑换失败");
-            }
-            String barCode = fsIntegralGoods.stream().map(FsIntegralGoodsVo::getBarCode).collect(Collectors.joining(","));
-            String Integral = fsIntegralGoods.stream().map(m -> m.getIntegral().toString()).collect(Collectors.joining(","));
-            String orderSn = OrderCodeUtils.getOrderSn();
-            if (StringUtils.isEmpty(orderSn)) {
-                throw new ServiceException("订单生成失败,请重试");
-            }
-            FsIntegralOrder order = new FsIntegralOrder();
-            order.setOrderCode(orderSn);
-            order.setUserId(user.getUserId());
-            order.setStatus(1);
-            order.setBarCodeCart(barCode);
-            order.setIntegral(goodsIntegral.toString());
-            order.setIntegralByCart(Integral);
-            order.setItemCartJson(ObjectUtils.isNotEmpty(fsIntegralGoods) ? JSONUtil.toJsonStr(fsIntegralGoods) : null);
-            order.setUserName(address.getRealName());
-            order.setUserAddress(address.getProvince() + address.getCity() + address.getDistrict() + address.getDetail());
-            order.setUserPhone(address.getPhone());
-            order.setCreateTime(new Date());
-            order.setQuantityCart(quantity.toString());
-            if (fsIntegralOrderMapper.insertFsIntegralOrder(order) > 0) {
-                //写入日志
-                FsUser userMap = new FsUser();
-                userMap.setUserId(user.getUserId());
-                // 可消费积分
-                long consumer = user.getIntegral() - user.getWithdrawIntegral();
-                if (consumer < goodsIntegral) {
-                    // 扣除完可消费积分后,剩余的积分
-                    long extra = goodsIntegral - consumer;
-                    // 可提现积分扣除 剩余积分
-                    Long withdrawIntegral = user.getWithdrawIntegral() - extra;
-                    userMap.setIntegral(withdrawIntegral);
-                    userMap.setWithdrawIntegral(withdrawIntegral);
-                } else {
-                    userMap.setIntegral(user.getIntegral() - goodsIntegral);
-                }
-                userMapper.updateFsUser(userMap);
-                FsUserIntegralLogs logs = new FsUserIntegralLogs();
-                logs.setIntegral(-goodsIntegral);
-                logs.setUserId(order.getUserId());
-                logs.setBalance(userMap.getIntegral());
-                logs.setLogType(5);
-                logs.setBusinessId(order.getOrderId().toString());
-                logs.setCreateTime(new Date());
-                logs.setNickName(user.getNickName());
-                logs.setPhone(user.getPhone());
-                integralLogsService.insertFsUserIntegralLogs(logs);
-                //清空购物车对应商品
-                this.remove(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).in(FsIntegralCart::getGoodsId, param.getGoodsId()));
-                return R.ok("兑换成功").put("order", order);
-            } else {
-                return R.error("订单创建失败");
-            }
-        } catch (Exception e) {
-            return R.error(e.getMessage());
-        } finally {
-            if (lock.isHeldByCurrentThread()) {
-                lock.unlock();
-            }
-        }
-    }
+//    /**
+//     * 从购物车生成订单,兑换按钮(走的以前逻辑,没有重新设计)
+//     *
+//     * @param param
+//     * @param userId
+//     * @return
+//     */
+//    @Override
+//    public R createOrderFromCart(CreateOrderFromCartParm param, Long userId) {
+//        RedissonClient redissonClient = SpringUtils.getBean(RedissonClient.class);
+//        String lockKey = "fsIntegralCartOrderCreate:" + userId;
+//        RLock lock = redissonClient.getLock(lockKey);
+//        try {
+//            // 尝试获取锁,最多等待3秒,持有锁时间最多30秒
+//            boolean isLocked = lock.tryLock(3, 10, TimeUnit.SECONDS);
+//            if (!isLocked) {
+//                return R.error("系统繁忙,请稍后再试");
+//            }
+//            FsUser user = userMapper.selectFsUserByUserId(userId);
+//            FsUserAddress address = fsUserAddressMapper.selectFsUserAddressByAddressId(param.getAddressId());
+//            List<FsIntegralGoodsVo> fsIntegralGoods = fsIntegralGoodsMapper.selectAllByGoodsIds(new HashSet<>(param.getGoodsId()));
+//            List<FsIntegralCart> existingCart = baseMapper.selectList(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).in(FsIntegralCart::getGoodsId, param.getGoodsId()));
+//            Map<Long, Integer> collect = existingCart.stream().collect(Collectors.groupingBy(FsIntegralCart::getGoodsId, Collectors.summingInt(FsIntegralCart::getCartNum)));
+//            StringBuilder quantity = new StringBuilder();
+//            for (FsIntegralGoodsVo fsIntegralGood : fsIntegralGoods) {
+//                Integer integer = collect.get(fsIntegralGood.getGoodsId());
+//                if (fsIntegralGood.getStock() < integer) {
+//                    throw new ServiceException(String.format("%d库存不足,兑换失败", fsIntegralGood.getGoodsName()));
+//                }
+//                if (fsIntegralGood.getStatus() != 1) {
+//                    this.remove(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).eq(FsIntegralCart::getGoodsId, fsIntegralGood.getGoodsId()));
+//                    log.info("清除下架商品,userId:{}, goodsId:{}", userId, fsIntegralGood.getGoodsId());
+//                    throw new ServiceException(String.format("商品[名称:%d]已下架,兑换失败", fsIntegralGood.getGoodsName()));
+//                }
+//                fsIntegralGood.setIntegralByNum(integer * fsIntegralGood.getIntegral());
+//                fsIntegralGood.setQuantity(integer);
+//                if (quantity.length() > 0) {
+//                    quantity.append(",");
+//                }
+//                quantity.append(ObjectUtils.isNotEmpty(integer) ? integer : "0");
+//            }
+//            // 商品总的积分
+//            Long goodsIntegral = fsIntegralGoods.stream().filter(n -> ObjectUtils.isNotEmpty(n.getIntegralByNum())).mapToLong(FsIntegralGoodsVo::getIntegralByNum).sum();
+//            if (user.getIntegral() < goodsIntegral) {
+//                throw new ServiceException("用户积分不足,兑换失败");
+//            }
+//            String barCode = fsIntegralGoods.stream().map(FsIntegralGoodsVo::getBarCode).collect(Collectors.joining(","));
+//            String Integral = fsIntegralGoods.stream().map(m -> m.getIntegral().toString()).collect(Collectors.joining(","));
+//            String orderSn = OrderCodeUtils.getOrderSn();
+//            if (StringUtils.isEmpty(orderSn)) {
+//                throw new ServiceException("订单生成失败,请重试");
+//            }
+//            FsIntegralOrder order = new FsIntegralOrder();
+//            order.setOrderCode(orderSn);
+//            order.setUserId(user.getUserId());
+//            order.setStatus(1);
+//            order.setBarCodeCart(barCode);
+//            order.setIntegral(goodsIntegral.toString());
+//            order.setIntegralByCart(Integral);
+//            order.setItemCartJson(ObjectUtils.isNotEmpty(fsIntegralGoods) ? JSONUtil.toJsonStr(fsIntegralGoods) : null);
+//            order.setUserName(address.getRealName());
+//            order.setUserAddress(address.getProvince() + address.getCity() + address.getDistrict() + address.getDetail());
+//            order.setUserPhone(address.getPhone());
+//            order.setCreateTime(new Date());
+//            order.setQuantityCart(quantity.toString());
+//            if (fsIntegralOrderMapper.insertFsIntegralOrder(order) > 0) {
+//                //写入日志
+//                FsUser userMap = new FsUser();
+//                userMap.setUserId(user.getUserId());
+//                // 可消费积分
+//                long consumer = user.getIntegral() - user.getWithdrawIntegral();
+//                if (consumer < goodsIntegral) {
+//                    // 扣除完可消费积分后,剩余的积分
+//                    long extra = goodsIntegral - consumer;
+//                    // 可提现积分扣除 剩余积分
+//                    Long withdrawIntegral = user.getWithdrawIntegral() - extra;
+//                    userMap.setIntegral(withdrawIntegral);
+//                    userMap.setWithdrawIntegral(withdrawIntegral);
+//                } else {
+//                    userMap.setIntegral(user.getIntegral() - goodsIntegral);
+//                }
+//                userMapper.updateFsUser(userMap);
+//                FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//                logs.setIntegral(-goodsIntegral);
+//                logs.setUserId(order.getUserId());
+//                logs.setBalance(userMap.getIntegral());
+//                logs.setLogType(5);
+//                logs.setBusinessId(order.getOrderId().toString());
+//                logs.setCreateTime(new Date());
+//                logs.setNickName(user.getNickName());
+//                logs.setPhone(user.getPhone());
+//                integralLogsService.insertFsUserIntegralLogs(logs);
+//                //清空购物车对应商品
+//                this.remove(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).in(FsIntegralCart::getGoodsId, param.getGoodsId()));
+//                return R.ok("兑换成功").put("order", order);
+//            } else {
+//                return R.error("订单创建失败");
+//            }
+//        } catch (Exception e) {
+//            return R.error(e.getMessage());
+//        } finally {
+//            if (lock.isHeldByCurrentThread()) {
+//                lock.unlock();
+//            }
+//        }
+//    }
 }

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

@@ -400,18 +400,24 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
                 }
                 
                 //写入日志
-                FsUser userMap=new FsUser();
-                userMap.setUserId(user.getUserId());
-                userMap.setIntegral(remainingIntegral);
-                fsUserMapper.updateFsUser(userMap);
-                FsUserIntegralLogs logs = new FsUserIntegralLogs();
-                logs.setIntegral(-totalIntegral);
-                logs.setUserId(order.getUserId());
-                logs.setBalance(remainingIntegral);
-                logs.setLogType(5);
-                logs.setBusinessId(order.getOrderId().toString());
-                logs.setCreateTime(new Date());
-                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+//                FsUser userMap=new FsUser();
+//                userMap.setUserId(user.getUserId());
+//                userMap.setIntegral(remainingIntegral);
+//                fsUserMapper.updateFsUser(userMap);
+//                FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//                logs.setIntegral(-totalIntegral);
+//                logs.setUserId(order.getUserId());
+//                logs.setBalance(remainingIntegral);
+//                logs.setLogType(5);
+//                logs.setBusinessId(order.getOrderId().toString());
+//                logs.setCreateTime(new Date());
+//                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+                FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+                integralParam.setUserId(order.getUserId());
+                integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_5);
+                integralParam.setPoints(-totalIntegral);
+                integralParam.setBusinessId(order.getOrderId().toString());
+                userIntegralLogsService.addIntegralTemplate(integralParam);
             }
 
             // 积分支付
@@ -419,7 +425,7 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
                 // 首次完成积分商城下单
                 FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
                 integralParam.setUserId(order.getUserId());
-                integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_22.getValue());
+                integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_22);
                 integralParam.setBusinessId(order.getOrderId().toString());
                 userIntegralLogsService.addIntegralTemplate(integralParam);
 
@@ -620,18 +626,24 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
         // 还原积分(只有当订单消耗了积分时才退还)
         if (StringUtils.isNotEmpty(order.getIntegral()) && Long.parseLong(order.getIntegral()) > 0) {
             FsUser user=fsUserMapper.selectFsUserByUserId(order.getUserId());
-            FsUser userMap=new FsUser();
-            userMap.setUserId(user.getUserId());
-            userMap.setIntegral(user.getIntegral() + Long.parseLong(order.getIntegral()));
-            fsUserMapper.updateFsUser(userMap);
-            FsUserIntegralLogs logs = new FsUserIntegralLogs();
-            logs.setIntegral(Long.parseLong(order.getIntegral()));
-            logs.setUserId(order.getUserId());
-            logs.setBalance(userMap.getIntegral());
-            logs.setLogType(5);
-            logs.setBusinessId(order.getOrderId().toString());
-            logs.setCreateTime(new Date());
-            fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+//            FsUser userMap=new FsUser();
+//            userMap.setUserId(user.getUserId());
+//            userMap.setIntegral(user.getIntegral() + Long.parseLong(order.getIntegral()));
+//            fsUserMapper.updateFsUser(userMap);
+//            FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//            logs.setIntegral(Long.parseLong(order.getIntegral()));
+//            logs.setUserId(order.getUserId());
+//            logs.setBalance(userMap.getIntegral());
+//            logs.setLogType(5);
+//            logs.setBusinessId(order.getOrderId().toString());
+//            logs.setCreateTime(new Date());
+//            fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+            FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+            integralParam.setUserId(user.getUserId());
+            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_5);
+            integralParam.setPoints(Long.parseLong(order.getIntegral()));
+            integralParam.setBusinessId(order.getOrderId().toString());
+            userIntegralLogsService.addIntegralTemplate(integralParam);
         }
 
         return R.ok();
@@ -723,7 +735,7 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
         // 首次完成积分商城下单
         FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
         integralParam.setUserId(order.getUserId());
-        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_22.getValue());
+        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_22);
         integralParam.setBusinessId(order.getOrderId().toString());
         userIntegralLogsService.addIntegralTemplate(integralParam);
 
@@ -812,20 +824,26 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
         //修改订单状态
         i = fsIntegralOrderMapper.cancelOrder(fsIntegralOrder.getOrderId());
         if (i>0){
-            //原路退回积分
+//            //原路退回积分
             FsUser fsUser = fsUserMapper.selectFsUserByUserId(fsIntegralOrder.getUserId());
-            fsUser.setIntegral(fsUser.getIntegral()+Long.parseLong(fsIntegralOrder.getIntegral()));
-            i = fsUserMapper.updateFsUser(fsUser);
-            //新增积分记录
-            FsUserIntegralLogs fsUserIntegralLogs = new FsUserIntegralLogs();
-            fsUserIntegralLogs.setBalance(fsUser.getIntegral());
-            fsUserIntegralLogs.setBusinessId(fsIntegralOrder.getOrderId().toString());
-            fsUserIntegralLogs.setUserId(fsIntegralOrder.getUserId());
-            fsUserIntegralLogs.setLogType(20);
-            fsUserIntegralLogs.setIntegral(Long.parseLong(fsIntegralOrder.getIntegral()));
-            fsUserIntegralLogs.setBusinessType(2);
-            fsUserIntegralLogs.setStatus(0);
-            i = fsUserIntegralLogsMapper.insertFsUserIntegralLogs(fsUserIntegralLogs);
+//            fsUser.setIntegral(fsUser.getIntegral()+Long.parseLong(fsIntegralOrder.getIntegral()));
+//            i = fsUserMapper.updateFsUser(fsUser);
+//            //新增积分记录
+//            FsUserIntegralLogs fsUserIntegralLogs = new FsUserIntegralLogs();
+//            fsUserIntegralLogs.setBalance(fsUser.getIntegral());
+//            fsUserIntegralLogs.setBusinessId(fsIntegralOrder.getOrderId().toString());
+//            fsUserIntegralLogs.setUserId(fsIntegralOrder.getUserId());
+//            fsUserIntegralLogs.setLogType(20);
+//            fsUserIntegralLogs.setIntegral(Long.parseLong(fsIntegralOrder.getIntegral()));
+//            fsUserIntegralLogs.setBusinessType(2);
+//            fsUserIntegralLogs.setStatus(0);
+//            i = fsUserIntegralLogsMapper.insertFsUserIntegralLogs(fsUserIntegralLogs);
+            FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+            integralParam.setUserId(fsUser.getUserId());
+            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_25);
+            integralParam.setBusinessId(fsIntegralOrder.getOrderId().toString());
+            integralParam.setPoints(Long.parseLong(fsIntegralOrder.getIntegral()));
+            userIntegralLogsService.addIntegralTemplate(integralParam);
         }
         return i;
     }
@@ -848,20 +866,26 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
         //修改订单状态
         i = fsIntegralOrderMapper.cancelOrder(fsIntegralOrder.getOrderId());
         if (i>0){
-            //原路退回积分
+//            //原路退回积分
             FsUser fsUser = fsUserMapper.selectFsUserByUserId(fsIntegralOrder.getUserId());
-            fsUser.setIntegral(fsUser.getIntegral()+Long.parseLong(fsIntegralOrder.getIntegral()));
-            i = fsUserMapper.updateFsUser(fsUser);
-            //新增积分记录
-            FsUserIntegralLogs fsUserIntegralLogs = new FsUserIntegralLogs();
-            fsUserIntegralLogs.setBalance(fsUser.getIntegral());
-            fsUserIntegralLogs.setBusinessId(fsIntegralOrder.getOrderId().toString());
-            fsUserIntegralLogs.setUserId(fsIntegralOrder.getUserId());
-            fsUserIntegralLogs.setLogType(20);
-            fsUserIntegralLogs.setIntegral(Long.parseLong(fsIntegralOrder.getIntegral()));
-            fsUserIntegralLogs.setBusinessType(2);
-            fsUserIntegralLogs.setStatus(0);
-            i = fsUserIntegralLogsMapper.insertFsUserIntegralLogs(fsUserIntegralLogs);
+//            fsUser.setIntegral(fsUser.getIntegral()+Long.parseLong(fsIntegralOrder.getIntegral()));
+//            i = fsUserMapper.updateFsUser(fsUser);
+//            //新增积分记录
+//            FsUserIntegralLogs fsUserIntegralLogs = new FsUserIntegralLogs();
+//            fsUserIntegralLogs.setBalance(fsUser.getIntegral());
+//            fsUserIntegralLogs.setBusinessId(fsIntegralOrder.getOrderId().toString());
+//            fsUserIntegralLogs.setUserId(fsIntegralOrder.getUserId());
+//            fsUserIntegralLogs.setLogType(20);
+//            fsUserIntegralLogs.setIntegral(Long.parseLong(fsIntegralOrder.getIntegral()));
+//            fsUserIntegralLogs.setBusinessType(2);
+//            fsUserIntegralLogs.setStatus(0);
+//            i = fsUserIntegralLogsMapper.insertFsUserIntegralLogs(fsUserIntegralLogs);
+            FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+            integralParam.setUserId(fsUser.getUserId());
+            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_25);
+            integralParam.setBusinessId(fsIntegralOrder.getOrderId().toString());
+            integralParam.setPoints(Long.parseLong(fsIntegralOrder.getIntegral()));
+            userIntegralLogsService.addIntegralTemplate(integralParam);
         }
         return i;
     }

+ 55 - 55
fs-service/src/main/java/com/fs/his/service/impl/FsUserActiveLogServiceImpl.java

@@ -122,61 +122,61 @@ public class FsUserActiveLogServiceImpl extends ServiceImpl<FsUserActiveLogMappe
         return baseMapper.deleteFsUserActiveLogById(id);
     }
 
-    @Transactional
-    @Override
-    public Long userActiveLogSign(FsUser fsUser) {
-        //获取活动配置
-        SysConfig sysConfig= configService.selectConfigByConfigKey("active.config");
-        ActiveConfigDTO activeConfigDTO = JSONUtil.toBean(sysConfig.getConfigValue(), ActiveConfigDTO.class);
-        if ("0".equals(activeConfigDTO.getIsOpen())){
-            throw new CustomException("活动未开启");
-        }
-        // 判断今天是否在活动期间
-        LocalDate today = LocalDate.now();
-        if (today.isBefore(activeConfigDTO.getActiveStartTime())
-                || today.isAfter(activeConfigDTO.getActiveEndTime())) {
-            throw new CustomException("当前不在活动期间");
-        }
-        //查询用户消费额是否满足活动要求
-        BigDecimal totalPay = storeOrderService.selectPayPriceAll(fsUser.getUserId());
-        if (totalPay == null || totalPay.compareTo(activeConfigDTO.getMoneyTerm()) < 0) {
-            throw new CustomException("总消费金额未达到参与活动条件");
-        }
-        FsUserActiveLog userActiveLog = userActiveLogMapper.selectTodayIsSign(fsUser.getUserId());
-        if (userActiveLog!=null){
-            throw new CustomException("您今天已经领取过了");
-        }
-        //写入积分记录和活动记录表
-        FsUserActiveLog fsUserActiveLog = new FsUserActiveLog();
-        fsUserActiveLog.setActiveName(activeConfigDTO.getActiveName());
-        fsUserActiveLog.setTitle("活动奖励");
-        fsUserActiveLog.setNumber(activeConfigDTO.getActiveReward());
-        fsUserActiveLog.setBalance(fsUser.getIntegral());
-        fsUserActiveLog.setUserId(fsUser.getUserId());
-        fsUserActiveLog.setCreateTime(new Date());
-        baseMapper.insertFsUserActiveLog(fsUserActiveLog);
-        FsUserIntegralLogs logs = new FsUserIntegralLogs();
-        logs.setIntegral(activeConfigDTO.getActiveReward());
-        //logs.setBusinessType(fsUserActiveLog);
-        logs.setUserId(fsUser.getUserId());
-        logs.setBalance(fsUser.getIntegral());
-        logs.setLogType(25);
-        logs.setBusinessId(fsUserActiveLog.getId().toString());
-        logs.setCreateTime(new Date());
-        logs.setNickName(fsUser.getNickName());
-        logs.setPhone(fsUser.getPhone());
-        userIntegralLogsService.insertFsUserIntegralLogs(logs);
-        //用户积分增加
-        FsUser userMap =new  FsUser();
-        userMap.setIntegral(fsUser.getIntegral()+activeConfigDTO.getActiveReward());
-        userMap.setUserId(fsUser.getUserId());
-        //userMap.setSignNum(userSignNum);
-        Integer res =userMapper.updateFsUser(userMap);
-        if(res==0) {
-            throw new CustomException("签到失败");
-        }
-        return activeConfigDTO.getActiveReward();
-    }
+//    @Transactional
+//    @Override
+//    public Long userActiveLogSign(FsUser fsUser) {
+//        //获取活动配置
+//        SysConfig sysConfig= configService.selectConfigByConfigKey("active.config");
+//        ActiveConfigDTO activeConfigDTO = JSONUtil.toBean(sysConfig.getConfigValue(), ActiveConfigDTO.class);
+//        if ("0".equals(activeConfigDTO.getIsOpen())){
+//            throw new CustomException("活动未开启");
+//        }
+//        // 判断今天是否在活动期间
+//        LocalDate today = LocalDate.now();
+//        if (today.isBefore(activeConfigDTO.getActiveStartTime())
+//                || today.isAfter(activeConfigDTO.getActiveEndTime())) {
+//            throw new CustomException("当前不在活动期间");
+//        }
+//        //查询用户消费额是否满足活动要求
+//        BigDecimal totalPay = storeOrderService.selectPayPriceAll(fsUser.getUserId());
+//        if (totalPay == null || totalPay.compareTo(activeConfigDTO.getMoneyTerm()) < 0) {
+//            throw new CustomException("总消费金额未达到参与活动条件");
+//        }
+//        FsUserActiveLog userActiveLog = userActiveLogMapper.selectTodayIsSign(fsUser.getUserId());
+//        if (userActiveLog!=null){
+//            throw new CustomException("您今天已经领取过了");
+//        }
+//        //写入积分记录和活动记录表
+//        FsUserActiveLog fsUserActiveLog = new FsUserActiveLog();
+//        fsUserActiveLog.setActiveName(activeConfigDTO.getActiveName());
+//        fsUserActiveLog.setTitle("活动奖励");
+//        fsUserActiveLog.setNumber(activeConfigDTO.getActiveReward());
+//        fsUserActiveLog.setBalance(fsUser.getIntegral());
+//        fsUserActiveLog.setUserId(fsUser.getUserId());
+//        fsUserActiveLog.setCreateTime(new Date());
+//        baseMapper.insertFsUserActiveLog(fsUserActiveLog);
+//        FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//        logs.setIntegral(activeConfigDTO.getActiveReward());
+//        //logs.setBusinessType(fsUserActiveLog);
+//        logs.setUserId(fsUser.getUserId());
+//        logs.setBalance(fsUser.getIntegral());
+//        logs.setLogType(25);
+//        logs.setBusinessId(fsUserActiveLog.getId().toString());
+//        logs.setCreateTime(new Date());
+//        logs.setNickName(fsUser.getNickName());
+//        logs.setPhone(fsUser.getPhone());
+//        userIntegralLogsService.insertFsUserIntegralLogs(logs);
+//        //用户积分增加
+//        FsUser userMap =new  FsUser();
+//        userMap.setIntegral(fsUser.getIntegral()+activeConfigDTO.getActiveReward());
+//        userMap.setUserId(fsUser.getUserId());
+//        //userMap.setSignNum(userSignNum);
+//        Integer res =userMapper.updateFsUser(userMap);
+//        if(res==0) {
+//            throw new CustomException("签到失败");
+//        }
+//        return activeConfigDTO.getActiveReward();
+//    }
 
     @Override
     public R getUserActiveLog(FsUser fsUser) {

+ 351 - 258
fs-service/src/main/java/com/fs/his/service/impl/FsUserIntegralLogsServiceImpl.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.his.config.IntegralConfig;
 import com.fs.his.domain.AdProfitDetail;
 import com.fs.his.domain.FsUser;
@@ -78,18 +79,18 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
         return fsUserIntegralLogsMapper.selectFsUserIntegralLogsList(fsUserIntegralLogs);
     }
 
-    /**
-     * 新增积分记录
-     *
-     * @param fsUserIntegralLogs 积分记录
-     * @return 结果
-     */
-    @Override
-    public int insertFsUserIntegralLogs(FsUserIntegralLogs fsUserIntegralLogs)
-    {
-        fsUserIntegralLogs.setCreateTime(DateUtils.getNowDate());
-        return fsUserIntegralLogsMapper.insertFsUserIntegralLogs(fsUserIntegralLogs);
-    }
+//    /**
+//     * 新增积分记录
+//     *
+//     * @param fsUserIntegralLogs 积分记录
+//     * @return 结果
+//     */
+//    @Override
+//    public int insertFsUserIntegralLogs(FsUserIntegralLogs fsUserIntegralLogs)
+//    {
+//        fsUserIntegralLogs.setCreateTime(DateUtils.getNowDate());
+//        return fsUserIntegralLogsMapper.insertFsUserIntegralLogs(fsUserIntegralLogs);
+//    }
 
     /**
      * 修改积分记录
@@ -148,22 +149,28 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
                 for (FsUserIntegralLogs fsUserIntegralLogs : log) {
                     Long integral = fsUser.getIntegral();
                     Long integralLog = fsUserIntegralLogs.getIntegral();
-                    Long balance = integral - integralLog;
-                    if (balance<0){
-                        balance=0L;
-                    }
-                    fsUser.setIntegral(balance);
-                    fsUserMapper.updateFsUser(fsUser);
-                    fsUserIntegralLogs.setStatus(1);
-                    fsUserIntegralLogsMapper.updateFsUserIntegralLogs(fsUserIntegralLogs);
-                    FsUserIntegralLogs logs = new FsUserIntegralLogs();
-                    logs.setIntegral(0-integralLog);
-                    logs.setUserId(id);
-                    logs.setBalance(balance);
-                    logs.setLogType(7);
-                    logs.setStatus(1);
-                    logs.setCreateTime(new Date());
-                    fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+//                    Long balance = integral - integralLog;
+//                    if (balance<0){
+//                        balance=0L;
+//                    }
+//                    fsUser.setIntegral(balance);
+//                    fsUserMapper.updateFsUser(fsUser);
+//                    fsUserIntegralLogs.setStatus(1);
+//                    fsUserIntegralLogsMapper.updateFsUserIntegralLogs(fsUserIntegralLogs);
+//                    FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//                    logs.setIntegral(0-integralLog);
+//                    logs.setUserId(id);
+//                    logs.setBalance(balance);
+//                    logs.setLogType(7);
+//                    logs.setStatus(1);
+//                    logs.setCreateTime(new Date());
+//                    fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+
+                    FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+                    integralParam.setUserId(fsUser.getUserId());
+                    integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_7);
+                    integralParam.setPoints(-integralLog);
+                    addIntegralTemplate(integralParam);
                 }
 
 
@@ -179,18 +186,24 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
         if (user!=null){
             FsUserIntegralLogs integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsAddUserAddress(userId);
             if (integralLogs==null){
-                FsUser userMap=new FsUser();
-                userMap.setUserId(user.getUserId());
-                userMap.setIntegral(user.getIntegral()+1000L);
-                fsUserMapper.updateFsUser(userMap);
-                integralLogs = new FsUserIntegralLogs();
-                integralLogs.setIntegral(1000L);
-                integralLogs.setUserId(userId);
-                integralLogs.setBalance(userMap.getIntegral());
-                integralLogs.setLogType(12);
-                integralLogs.setBusinessId(addressId.toString());
-                integralLogs.setCreateTime(new Date());
-                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+//                FsUser userMap=new FsUser();
+//                userMap.setUserId(user.getUserId());
+//                userMap.setIntegral(user.getIntegral()+1000L);
+//                fsUserMapper.updateFsUser(userMap);
+//                integralLogs = new FsUserIntegralLogs();
+//                integralLogs.setIntegral(1000L);
+//                integralLogs.setUserId(userId);
+//                integralLogs.setBalance(userMap.getIntegral());
+//                integralLogs.setLogType(12);
+//                integralLogs.setBusinessId(addressId.toString());
+//                integralLogs.setCreateTime(new Date());
+//                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+                FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+                integralParam.setUserId(user.getUserId());
+                integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_12);
+                integralParam.setBusinessId(addressId.toString());
+//                integralParam.setPoints(); //读取配置
+                addIntegralTemplate(integralParam);
             }
         }
     }
@@ -198,109 +211,114 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
     @Override
     @Transactional
     public R addIntegral(FsUserAddIntegralParam param) {
-        FsUser user = fsUserMapper.selectFsUserByUserId(param.getUserId());
-        if (user!=null){
-            String json =configService.selectConfigByKey("his.integral");
-            IntegralConfig config= JSONUtil.toBean(json,IntegralConfig.class);
-            System.out.println("Types: " + Arrays.toString(config.getIntegralTypeByOneDay()));
-            System.out.println("User ID: " + param.getUserId());
-            Integer todayTotalIntegral= fsUserIntegralLogsMapper.selectTodayTotalIntegral(config.getIntegralTypeByOneDay(),param.getUserId());
-            if (todayTotalIntegral==null){
-                todayTotalIntegral=0;
-            }
-            if (todayTotalIntegral>=config.getIntegralByOneDay()){
-                return R.error("当天积分已达限额");
-            }
-            switch (param.getType()){
-                case 1:
-                    return addProductIntegral(config.getIntegralProduct(),user.getUserId(),user.getIntegral());
-                case 2:
-                    return addVideoIntegral(config.getIntegralFirstVideo(),config.getIntegralFinishVideo(),user.getUserId(),user.getIntegral());
-                case 3:
-                    return addGameIntegral(param.getIntegral(),user.getUserId(),user.getIntegral());
-                case 5:
-                    return addAdvIntegral(param,user);
-            }
-        }
-        return R.error("用户信息不存在");
-    }
-
-    /**
-     * 添加广告积分
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public R addAdvIntegral(FsUserAddIntegralParam param, FsUser user) {
-        try {
-            // 查询用户详细分润
-            AdProfitDetail adProfitDetail = adProfitDetailMapper.selectOne(new LambdaQueryWrapper<AdProfitDetail>()
-                    .eq(AdProfitDetail::getUserId, param.getUserId())
-                    .eq(AdProfitDetail::getAdTaskId, param.getExtra()));
-            if (BeanUtil.isEmpty(adProfitDetail)) {
-                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,无法添加");
-            }
-
-            // 更新用户积分
-            FsUser fsUser = new FsUser();
-            fsUser.setUserId(param.getUserId());
-            long newIntegral = Objects.nonNull(user.getIntegral())
-                    ? user.getIntegral() + customerPoints.longValue()
-                    : customerPoints.longValue();
-            long newWithdrawIntegral = Objects.nonNull(user.getWithdrawIntegral())
-                    ? user.getWithdrawIntegral() + customerPoints.longValue()
-                    : customerPoints.longValue();
-            fsUser.setIntegral(newIntegral);
-            fsUser.setWithdrawIntegral(newWithdrawIntegral);
-            fsUser.setUpdateTime(new Date());
-            fsUserMapper.updateFsUser(fsUser);
-
-            // 添加积分记录
-            FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-            integralLogs.setLogType(FsUserIntegralLogTypeEnum.TYPE_31.getValue());
-            integralLogs.setUserId(param.getUserId());
-            integralLogs.setIntegral(customerPoints.longValue());
-            integralLogs.setBalance(newIntegral); // 用计算后的新积分作为余额,避免重复计算
-            integralLogs.setCreateTime(new Date());
-            integralLogs.setNickName(user.getNickName());
-            integralLogs.setPhone(user.getPhone());
-//            fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
-            insertFsUserIntegralLogs(integralLogs);
-            return R.ok("广告任务完成,获得" + customerPoints + "芳华币").put("integral", customerPoints);
-
-        } catch (Exception e) {
-            log.error("用户[{}]芳华币添加失败,参数:{}", param.getUserId(), JSON.toJSONString(param), e);
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return R.error("获取芳华币失败,请稍后重试");
+        FsUserIntegralLogTypeEnum integralLogTypeEnum= null;
+        Long points = null;
+        Long userId = param.getUserId();
+        if (userId!=null){
+            return R.error("缺少用户参数");
         }
-    }
-
-    public R addGameIntegral(Long integral,Long userId,Long userIntegral) {
-        FsUser userMap=new FsUser();
-        userMap.setUserId(userId);
-        userMap.setIntegral(userIntegral+integral);
-        fsUserMapper.updateFsUser(userMap);
-        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-        integralLogs.setIntegral(integral);
-        integralLogs.setUserId(userId);
-        integralLogs.setBalance(userMap.getIntegral());
-        integralLogs.setLogType(FsUserIntegralLogTypeEnum.TYPE_29.getValue());
-        integralLogs.setCreateTime(new Date());
-        if (fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs)>0){
-            return R.ok("玩游戏获得"+integral+"积分");
+        FsUserAddIntegralTemplateParam addIntegralTemplateParam = new FsUserAddIntegralTemplateParam();
+        switch (param.getType()){
+            case 1:
+                integralLogTypeEnum = FsUserIntegralLogTypeEnum.TYPE_13;
+                break;
+            case 2:
+                integralLogTypeEnum = FsUserIntegralLogTypeEnum.TYPE_14;
+                break;
+            case 3:
+                points = param.getIntegral();
+                integralLogTypeEnum = FsUserIntegralLogTypeEnum.TYPE_29;
+                break;
+            case 5:
+                addIntegralTemplateParam.setBusinessId(param.getExtra());
+                integralLogTypeEnum = FsUserIntegralLogTypeEnum.TYPE_31;
+            default:
+                return R.error();
         }
-        return R.error("获取积分失败");
+        addIntegralTemplateParam.setUserId(param.getUserId());
+        addIntegralTemplateParam.setLogType(integralLogTypeEnum);
+        addIntegralTemplateParam.setPoints(points);
+        addIntegralTemplateParam.setRemark(integralLogTypeEnum.getDesc());
+        return addIntegralTemplate(addIntegralTemplateParam);
     }
 
+//    /**
+//     * 添加广告积分
+//     */
+//    @Transactional(rollbackFor = Exception.class)
+//    public R addAdvIntegral(FsUserAddIntegralParam param, FsUser user) {
+//        try {
+//            // 查询用户详细分润
+//            AdProfitDetail adProfitDetail = adProfitDetailMapper.selectOne(new LambdaQueryWrapper<AdProfitDetail>()
+//                    .eq(AdProfitDetail::getUserId, param.getUserId())
+//                    .eq(AdProfitDetail::getAdTaskId, param.getExtra()));
+//            if (BeanUtil.isEmpty(adProfitDetail)) {
+//                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,无法添加");
+//            }
+//
+//            // 更新用户积分
+//            FsUser fsUser = new FsUser();
+//            fsUser.setUserId(param.getUserId());
+//            long newIntegral = Objects.nonNull(user.getIntegral())
+//                    ? user.getIntegral() + customerPoints.longValue()
+//                    : customerPoints.longValue();
+//            long newWithdrawIntegral = Objects.nonNull(user.getWithdrawIntegral())
+//                    ? user.getWithdrawIntegral() + customerPoints.longValue()
+//                    : customerPoints.longValue();
+//            fsUser.setIntegral(newIntegral);
+//            fsUser.setWithdrawIntegral(newWithdrawIntegral);
+//            fsUser.setUpdateTime(new Date());
+//            fsUserMapper.updateFsUser(fsUser);
+//
+//            // 添加积分记录
+//            FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//            integralLogs.setLogType(FsUserIntegralLogTypeEnum.TYPE_31.getValue());
+//            integralLogs.setUserId(param.getUserId());
+//            integralLogs.setIntegral(customerPoints.longValue());
+//            integralLogs.setBalance(newIntegral); // 用计算后的新积分作为余额,避免重复计算
+//            integralLogs.setCreateTime(new Date());
+//            integralLogs.setNickName(user.getNickName());
+//            integralLogs.setPhone(user.getPhone());
+////            fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+//            insertFsUserIntegralLogs(integralLogs);
+//            return R.ok("广告任务完成,获得" + customerPoints + "芳华币").put("integral", customerPoints);
+//
+//        } catch (Exception e) {
+//            log.error("用户[{}]芳华币添加失败,参数:{}", param.getUserId(), JSON.toJSONString(param), e);
+//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//            return R.error("获取芳华币失败,请稍后重试");
+//        }
+//    }
+
+//    public R addGameIntegral(Long integral,Long userId,Long userIntegral) {
+//        FsUser userMap=new FsUser();
+//        userMap.setUserId(userId);
+//        userMap.setIntegral(userIntegral+integral);
+//        fsUserMapper.updateFsUser(userMap);
+//        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//        integralLogs.setIntegral(integral);
+//        integralLogs.setUserId(userId);
+//        integralLogs.setBalance(userMap.getIntegral());
+//        integralLogs.setLogType(FsUserIntegralLogTypeEnum.TYPE_29.getValue());
+//        integralLogs.setCreateTime(new Date());
+//        if (fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs)>0){
+//            return R.ok("玩游戏获得"+integral+"积分");
+//        }
+//        return R.error("获取积分失败");
+//    }
+
     /**
-     * 更新积分通用
+     * 更新积分通用 新增积分提现配置
      * @param param
      * @return
      */
@@ -309,15 +327,21 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
     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(param.getLogType())){
+                if (Arrays.asList(integralTypeByOneDay).contains(logType)){
                     Integer todayTotalIntegral= fsUserIntegralLogsMapper.selectTodayTotalIntegral(integralTypeByOneDay,param.getUserId());
                     if (todayTotalIntegral==null){
                         todayTotalIntegral=0;
@@ -327,221 +351,290 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
                     }
                 }
             }
-//            if (Arrays.asList(integralTypeByOneDay).contains(param.getLogType())){
-//                Integer todayTotalIntegral= fsUserIntegralLogsMapper.selectTodayTotalIntegral(integralTypeByOneDay,param.getUserId());
-//                if (todayTotalIntegral==null){
-//                    todayTotalIntegral=0;
-//                }
-//                if (todayTotalIntegral>=config.getIntegralByOneDay()){
-//                    return R.error("当天积分已达限额");
-//                }
-//            }
-            Integer integralNum = null;
-            FsUserIntegralLogTypeEnum logsType = null;
+            Long integralNum = null;
             List<FsUserIntegralLogs> integralLogs;
-            switch (param.getLogType()){
-//                case 1: //签到
-//                    integralNum = config.getIntegralInvite();
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_1;
-//                    break;
+            switch (logType){
+                case 1: //签到
+                    integralNum = param.getPoints();
+                    break;
                 case 2: //消费获得积分
                     integralNum = param.getPoints();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_2;
                     break;
                 case 3: //分享获得积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), LocalDate.now());
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, LocalDate.now());
                     if (integralLogs.size() >= 5){
                         return R.error("今日看课积分已达上限");
                     }
-                    integralNum = config.getIntegralShare();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_3;
+                    integralNum = config.getIntegralShare() == null?0:Long.valueOf(config.getIntegralShare());
                     break;
 //                case 4: //退款扣除积分
 //                    integralNum = config.getIntegralInvite();
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_4;
 //                    break;
-//                case 5: // 购买积分商品
-//                    integralNum = config.getIntegralInvite();
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_5;
-//                    break;
+                case 5: // 购买积分商品
+                    integralNum = param.getPoints();
+                    break;
 //                case 6: // 平台取消售后
 //                    integralNum = config.getIntegralInvite();
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_6;
 //                    break;
-//                case 7: //积分过期
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_7;
-//                    break;
-//                case 8: //螳螂同步积分
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_8;
-//                    break;
-//                case 9: //购买课程小节扣除
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_9;
-//                    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(),param.getLogType(), LocalDate.now());
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, LocalDate.now());
                     if (integralLogs.size() >= 3){
                         return R.error("今日看课积分已达上限");
                     }
-                    integralNum = config.getIntegralCourse();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_10;
+                    integralNum = config.getIntegralCourse() == null?0:Long.valueOf(config.getIntegralCourse());
                     break;
                 case 11: //新用户完善就诊人获得积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
                     if (!integralLogs.isEmpty()){
                         return R.error("已领取过该积分");
                     }
-                    integralNum = config.getIntegralAddPatient();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_11;
+                    integralNum = config.getIntegralAddPatient() == null?0:Long.valueOf(config.getIntegralAddPatient());
                     break;
                 case 12: //新用户填写收货地址获取积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
                     if (!integralLogs.isEmpty()){
                         return R.error("已领取过该积分");
                     }
-                    integralNum = config.getIntegralAddUserAddress();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_12;
+                    if (config.getIntegralAddUserAddress() == null) {
+                        return R.ok("未配置积分");
+                    }
+                    integralNum = Long.valueOf(config.getIntegralAddUserAddress());
                     break;
                 case 13: //浏览商品获得积分
-                    integralNum = config.getIntegralProduct();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_13;
+                    integralNum = config.getIntegralProduct() == null?0:Long.valueOf(config.getIntegralProduct());
                     break;
                 case 14: //浏览视频获得积分
-                    return addVideoIntegral(config.getIntegralFirstVideo(),config.getIntegralFinishVideo(),user.getUserId(),user.getIntegral());
-//                case 15: //首次下单疗法获得积分
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_15;
-//                    break;
+                    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: //点播答题获得积分
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_17;
-//                    break;
+                case 17: //点播答题获得积分
+                    integralNum = param.getPoints();
+                    break;
                 case 18: //邀请新用户获取积分
-                    integralNum = config.getIntegralInvite();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_18;
+                    if (config.getIntegralInvite() == null) {
+                        return R.ok("未配置积分");
+                    }
+                    integralNum = Long.valueOf(config.getIntegralInvite());
                     break;
                 case 19: //填写邀请码获取积分
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
                     if (!integralLogs.isEmpty()){
                         return R.error("已领取过该积分");
                     }
-                    integralNum = config.getIntegralInvited();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_19;
+                    if (config.getIntegralInvited() == null) {
+                        return R.ok("未配置积分");
+                    }
+                    integralNum = Long.valueOf(config.getIntegralInvited());
                     break;
                 case 20: //完成手机号绑定注册
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
                     if (!integralLogs.isEmpty()){
                         return R.error("已领取过该积分");
                     }
-                    integralNum = config.getIntegralRegister();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_20;
+                    if (config.getIntegralRegister() == null) {
+                        return R.ok("未配置积分");
+                    }
+                    integralNum = Long.valueOf(config.getIntegralRegister());
                     break;
                 case 21: //完成专家咨询
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
                     if (!integralLogs.isEmpty()){
                         return R.error("已领取过该积分");
                     }
-                    integralNum = config.getIntegralFinishConsultation();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_21;
+                    if (config.getIntegralFinishConsultation() == null) {
+                        return R.ok("未配置积分");
+                    }
+                    integralNum =  Long.valueOf(config.getIntegralFinishConsultation());
                     break;
                 case 22: //完成首次积分商城下单
-                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(), logType, null);
                     if (!integralLogs.isEmpty()){
                         return R.error("已领取过该积分");
                     }
-                    integralNum = config.getIntegralFirstOrderPoint();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_22;
+                    if (config.getIntegralFirstOrderPoint() == null) {
+                        return R.ok("未配置积分");
+                    }
+                    integralNum = Long.valueOf(config.getIntegralFirstOrderPoint());
                     break;
                 case 23: //管理员添加
                     integralNum = param.getPoints();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_23;
                     break;
                 case 24: //付费课程订阅
+                    if (config.getIntegralSubscriptCourse() == null) {
+                        return R.ok("未配置积分");
+                    }
                     integralNum = param.getPoints() * config.getIntegralSubscriptCourse();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_24;
+                    break;
+                case 25: //app取消积分订单
+                    integralNum = param.getPoints();
+                    break;
+                case 27: //直播完课积分
+                    integralNum = param.getPoints();
+                    break;
+                case 29: //游戏积分
+                    integralNum = param.getPoints();
                     break;
                 case 30: //阅读文章获取积分
-                    integralNum = config.getIntegralArticle();
-                    logsType = FsUserIntegralLogTypeEnum.TYPE_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 && logsType!=null){
-                R r = updateAddIntegral(integralNum, user.getUserId(), user.getIntegral(), logsType, param.getBusinessId(), param.getRemark());
-                log.info("用户id为{},{}", user.getUserId(),r.get("msg").toString());
-                return R.ok();
+            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("用户信息不存在");
     }
 
 
     /**
-     * @param integralNum
-     * @param userId
-     * @param userIntegral
+     * @param integralNum 修改积分
+     * @param fsUser 用户原信息
      * @return
      */
-    public R updateAddIntegral(Integer integralNum, Long userId, Long userIntegral, FsUserIntegralLogTypeEnum logsType, String businessId, String remark) {
+    @Transactional(rollbackFor = Exception.class)
+    public R updateAddIntegral(Long integralNum, FsUser fsUser, FsUserIntegralLogTypeEnum logsType,
+                               String businessId, String remark,List<Integer> integralTypes) {
+        Long userId = fsUser.getUserId();
+        Long userIntegral =  fsUser.getIntegral();
+        Integer value = logsType.getValue();
         FsUser userMap=new FsUser();
         userMap.setUserId(userId);
         userMap.setIntegral(userIntegral+integralNum);
-        fsUserMapper.updateFsUser(userMap);
-        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-        integralLogs.setIntegral(integralNum.longValue());
-        integralLogs.setUserId(userId);
-        integralLogs.setBalance(userMap.getIntegral());
-        integralLogs.setLogType(logsType.getValue());
-        integralLogs.setCreateTime(new Date());
-        integralLogs.setBusinessId(businessId);
-        integralLogs.setRemark(remark);
-        if (fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs)>0){
-            return R.ok(logsType.getDesc()+":"+integralNum+"积分");
+        // 增加可提现积分
+        System.out.println("可提现类型integralTypes: " + JSON.toJSONString(integralTypes) + "用户:" + userId + " 获取积分类型:" + value);
+        if (integralNum > 0){
+            if (integralTypes!=null && !integralTypes.isEmpty()) {
+                if (integralTypes.contains(value)){
+                    userMap.setWithdrawIntegral(fsUser.getWithdrawIntegral()==null?integralNum:(fsUser.getWithdrawIntegral()+integralNum));
+                }
+            }
+        } else {
+            //积分兑换佣金
+            if (Objects.equals(value, FsUserIntegralLogTypeEnum.TYPE_32.getValue())){
+                userMap.setWithdrawIntegral(fsUser.getWithdrawIntegral()==null?integralNum:(fsUser.getWithdrawIntegral()+integralNum));
+            }
         }
-        return R.error("获取积分失败");
-    }
 
-    private R addVideoIntegral(Integer integralFirstVideo,Integer integralFinishVideo,Long userId,Long userIntegral) {
-        Integer videoIntegralCount = fsUserIntegralLogsMapper.selectTodayVideoIntegralCount(userId);
-        Integer addIntegral = integralFirstVideo-videoIntegralCount;
-        if (addIntegral<=integralFinishVideo){
-            addIntegral=integralFinishVideo;
-        }
-        FsUser userMap=new FsUser();
-        userMap.setUserId(userId);
-        userMap.setIntegral(userIntegral+addIntegral);
         fsUserMapper.updateFsUser(userMap);
         FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-        integralLogs.setIntegral(addIntegral.longValue());
+        integralLogs.setIntegral(integralNum.longValue());
         integralLogs.setUserId(userId);
         integralLogs.setBalance(userMap.getIntegral());
-        integralLogs.setLogType(14);
+        integralLogs.setLogType(value);
         integralLogs.setCreateTime(new Date());
+        integralLogs.setBusinessId(businessId);
+        integralLogs.setRemark(StringUtils.isNotBlank(remark) ? remark : logsType.getDesc());
         if (fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs)>0){
-            return R.ok("观看视频获得"+addIntegral+"积分");
+            return R.ok(logsType.getDesc()+":"+integralNum+"积分").put("logId",integralLogs.getId());
         }
         return R.error("获取积分失败");
     }
 
-    public R addProductIntegral(Integer integralProduct,Long userId,Long userIntegral) {
-        FsUser userMap=new FsUser();
-        userMap.setUserId(userId);
-        userMap.setIntegral(userIntegral+integralProduct);
-        fsUserMapper.updateFsUser(userMap);
-        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-        integralLogs.setIntegral(integralProduct.longValue());
-        integralLogs.setUserId(userId);
-        integralLogs.setBalance(userMap.getIntegral());
-        integralLogs.setLogType(13);
-        integralLogs.setCreateTime(new Date());
-        if (fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs)>0){
-            return R.ok("浏览商品获得"+integralProduct+"积分");
-        }
-        return R.error("获取积分失败");
-    }
+//    private R addVideoIntegral(Integer integralFirstVideo,Integer integralFinishVideo,Long userId,Long userIntegral) {
+//        Integer videoIntegralCount = fsUserIntegralLogsMapper.selectTodayVideoIntegralCount(userId);
+//        Integer addIntegral = integralFirstVideo-videoIntegralCount;
+//        if (addIntegral<=integralFinishVideo){
+//            addIntegral=integralFinishVideo;
+//        }
+//        FsUser userMap=new FsUser();
+//        userMap.setUserId(userId);
+//        userMap.setIntegral(userIntegral+addIntegral);
+//        fsUserMapper.updateFsUser(userMap);
+//        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//        integralLogs.setIntegral(addIntegral.longValue());
+//        integralLogs.setUserId(userId);
+//        integralLogs.setBalance(userMap.getIntegral());
+//        integralLogs.setLogType(14);
+//        integralLogs.setCreateTime(new Date());
+//        if (fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs)>0){
+//            return R.ok("观看视频获得"+addIntegral+"积分");
+//        }
+//        return R.error("获取积分失败");
+//    }
+
+//    public R addProductIntegral(Integer integralProduct,Long userId,Long userIntegral) {
+//        FsUser userMap=new FsUser();
+//        userMap.setUserId(userId);
+//        userMap.setIntegral(userIntegral+integralProduct);
+//        fsUserMapper.updateFsUser(userMap);
+//        FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//        integralLogs.setIntegral(integralProduct.longValue());
+//        integralLogs.setUserId(userId);
+//        integralLogs.setBalance(userMap.getIntegral());
+//        integralLogs.setLogType(13);
+//        integralLogs.setCreateTime(new Date());
+//        if (fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs)>0){
+//            return R.ok("浏览商品获得"+integralProduct+"积分");
+//        }
+//        return R.error("获取积分失败");
+//    }
 
     @Override
     public R subIntegral() {

+ 2 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsUserInvitedServiceImpl.java

@@ -185,14 +185,14 @@ public class FsUserInvitedServiceImpl extends ServiceImpl<FsUserInvitedMapper, F
         //2.添加奖励
         //2.1被邀请人获得2000芳华币
         FsUserAddIntegralTemplateParam invitedParam = new FsUserAddIntegralTemplateParam();
-        invitedParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_19.getValue());
+        invitedParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_19);
         invitedParam.setUserId(invitedUserId);
         invitedParam.setBusinessId(userId.toString());
         R invitedR = integralLogsService.addIntegralTemplate(invitedParam);
         //2.2邀请人A获得1000芳华币
         FsUserAddIntegralTemplateParam param = new FsUserAddIntegralTemplateParam();
         param.setUserId(userId);
-        param.setLogType(FsUserIntegralLogTypeEnum.TYPE_18.getValue());
+        param.setLogType(FsUserIntegralLogTypeEnum.TYPE_18);
         param.setBusinessId(invitedUserId.toString());
         R r = integralLogsService.addIntegralTemplate(param);
 //        return AjaxResult.success(invitedR.get("msg").toString() + r.get("msg").toString());

+ 21 - 15
fs-service/src/main/java/com/fs/his/service/impl/FsUserNewTaskServiceImpl.java

@@ -138,7 +138,7 @@ public class FsUserNewTaskServiceImpl implements IFsUserNewTaskService
             // 完成手机号绑定注册
             FsUserAddIntegralTemplateParam param = new FsUserAddIntegralTemplateParam();
             param.setUserId(userId);
-            param.setLogType(FsUserIntegralLogTypeEnum.TYPE_20.getValue());
+            param.setLogType(FsUserIntegralLogTypeEnum.TYPE_20);
             param.setBusinessId(userId.toString());
             integralLogsService.addIntegralTemplate(param);
 
@@ -200,20 +200,26 @@ public class FsUserNewTaskServiceImpl implements IFsUserNewTaskService
             if (daysDifference <= 7) {
                 newTask.setTaskThree(1);
                 fsUserNewTaskMapper.updateFsUserNewTask(newTask);
-                String json =configService.selectConfigByKey("his.integral");
-                IntegralConfig config= JSONUtil.toBean(json,IntegralConfig.class);
-                FsUser userMap=new FsUser();
-                userMap.setUserId(userId);
-                userMap.setIntegral(integral+config.getIntegralNewTask());
-                fsUserMapper.updateFsUser(userMap);
-                FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
-                integralLogs.setIntegral(config.getIntegralNewTask().longValue());
-                integralLogs.setUserId(userId);
-                integralLogs.setBalance(userMap.getIntegral());
-                integralLogs.setLogType(15);
-                integralLogs.setBusinessId(orderId.toString());
-                integralLogs.setCreateTime(new Date());
-                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+//                String json =configService.selectConfigByKey("his.integral");
+//                IntegralConfig config= JSONUtil.toBean(json,IntegralConfig.class);
+//                FsUser userMap=new FsUser();
+//                userMap.setUserId(userId);
+//                userMap.setIntegral(integral+config.getIntegralNewTask());
+//                fsUserMapper.updateFsUser(userMap);
+//                FsUserIntegralLogs integralLogs = new FsUserIntegralLogs();
+//                integralLogs.setIntegral(config.getIntegralNewTask().longValue());
+//                integralLogs.setUserId(userId);
+//                integralLogs.setBalance(userMap.getIntegral());
+//                integralLogs.setLogType(15);
+//                integralLogs.setBusinessId(orderId.toString());
+//                integralLogs.setCreateTime(new Date());
+//                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+                FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+                integralParam.setUserId(userId);
+                integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_15);
+                integralParam.setBusinessId(orderId.toString());
+//                integralParam.setPoints();//配置获取积分
+                integralLogsService.addIntegralTemplate(integralParam);
             }
         }
     }

+ 105 - 91
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -394,9 +394,9 @@ public class FsUserServiceImpl implements IFsUserService {
 
         FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
         integralTemplateParam.setUserId(userId);
-        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_2.getValue());
+        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_2);
         integralTemplateParam.setBusinessId(orderId.toString());
-        integralTemplateParam.setPoints(points);
+        integralTemplateParam.setPoints(Long.valueOf(String.valueOf(points)));
         userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
     }
 
@@ -437,43 +437,49 @@ public class FsUserServiceImpl implements IFsUserService {
                 return;
             }
             Long integral = config.getIntegralFollow() + 0L;
-            FsUser u = new FsUser();
-            u.setUserId(userId);
-            u.setIntegral(fsUser.getIntegral() + integral);
-            fsUserMapper.updateFsUser(u);
-            logger.info("用户{}获取积分{}", fsUser.getUserId(), integral);
-            //写入日志
-            FsUserIntegralLogs logs = new FsUserIntegralLogs();
-            logs.setIntegral(integral.longValue());
-            logs.setBusinessType(4);
-            logs.setUserId(userId);
-            logs.setBalance(u.getIntegral());
-            logs.setLogType(6);
-            logs.setBusinessId(orderId.toString());
-            logs.setCreateTime(new Date());
-            integralLogsMapper.insertFsUserIntegralLogs(logs);
-
-        }
-    }
-
-    @Transactional
-    public void subIntegral(Long userId) {
-        FsUser fsUser = fsUserMapper.selectFsUserByUserId(userId);
-        if (fsUser != null && fsUser.getIntegral() != 0) {
-            Long integral = fsUser.getIntegral();
-            fsUser.setIntegral(0L);
-            fsUserMapper.updateFsUser(fsUser);
-            logger.info("用户{}扣除积分{}", fsUser.getUserId(), 0 - integral);
-            FsUserIntegralLogs logs = new FsUserIntegralLogs();
-            logs.setIntegral(0 - integral);
-            logs.setUserId(userId);
-            logs.setBalance(0L);
-            logs.setLogType(7);
-            logs.setCreateTime(new Date());
-            integralLogsMapper.insertFsUserIntegralLogs(logs);
-        }
-
-    }
+//            FsUser u = new FsUser();
+//            u.setUserId(userId);
+//            u.setIntegral(fsUser.getIntegral() + integral);
+//            fsUserMapper.updateFsUser(u);
+//            logger.info("用户{}获取积分{}", fsUser.getUserId(), integral);
+//            //写入日志
+//            FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//            logs.setIntegral(integral.longValue());
+//            logs.setBusinessType(4);
+//            logs.setUserId(userId);
+//            logs.setBalance(u.getIntegral());
+//            logs.setLogType(6);
+//            logs.setBusinessId(orderId.toString());
+//            logs.setCreateTime(new Date());
+//            integralLogsMapper.insertFsUserIntegralLogs(logs);
+            FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+            integralParam.setUserId(userId);
+            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_34);
+            integralParam.setBusinessId(orderId.toString());
+//            integralParam.setPoints(integral); //默认获取配置
+            userIntegralLogsService.addIntegralTemplate(integralParam);
+
+        }
+    }
+
+//    @Transactional
+//    public void subIntegral(Long userId) {
+//        FsUser fsUser = fsUserMapper.selectFsUserByUserId(userId);
+//        if (fsUser != null && fsUser.getIntegral() != 0) {
+//            Long integral = fsUser.getIntegral();
+//            fsUser.setIntegral(0L);
+//            fsUserMapper.updateFsUser(fsUser);
+//            logger.info("用户{}扣除积分{}", fsUser.getUserId(), 0 - integral);
+//            FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//            logs.setIntegral(0 - integral);
+//            logs.setUserId(userId);
+//            logs.setBalance(0L);
+//            logs.setLogType(7);
+//            logs.setCreateTime(new Date());
+//            integralLogsMapper.insertFsUserIntegralLogs(logs);
+//        }
+//
+//    }
 
     @Override
     public FsUserFollowDoctorVO getUserFollowDoctorAndOrderId(Long userId) {
@@ -491,37 +497,37 @@ public class FsUserServiceImpl implements IFsUserService {
     }
 
 
-    @Override
-    @Transactional
-    public void subUserIntegral(Long userId, Long orderId, Integer orderType) {
-        FsUser fsUser = fsUserMapper.selectFsUserByUserId(userId);
-        if (fsUser != null) {
-            FsUserIntegralLogs maps = new FsUserIntegralLogs();
-            maps.setLogType(2);
-            maps.setBusinessType(orderType);
-            maps.setBusinessId(orderId.toString());
-            List<FsUserIntegralLogs> logsList = integralLogsMapper.selectFsUserIntegralLogsList(maps);
-            if (logsList.size() > 0) {
-                for (FsUserIntegralLogs userLogs : logsList) {
-                    fsUser.setIntegral(fsUser.getIntegral() - userLogs.getIntegral());
-                    fsUserMapper.updateFsUser(fsUser);
-                    logger.info("用户{}扣除积分{}", fsUser.getUserId(), userLogs.getIntegral());
-                    //写入日志
-                    FsUserIntegralLogs logs = new FsUserIntegralLogs();
-                    logs.setIntegral(-logsList.get(0).getIntegral());
-                    logs.setUserId(userId);
-                    logs.setBalance(fsUser.getIntegral());
-                    logs.setBusinessType(orderType);
-                    logs.setLogType(4);
-                    logs.setBusinessId(orderId.toString());
-                    logs.setCreateTime(new Date());
-                    integralLogsMapper.insertFsUserIntegralLogs(logs);
-                }
-            }
-
-        }
-
-    }
+//    @Override
+//    @Transactional
+//    public void subUserIntegral(Long userId, Long orderId, Integer orderType) {
+//        FsUser fsUser = fsUserMapper.selectFsUserByUserId(userId);
+//        if (fsUser != null) {
+//            FsUserIntegralLogs maps = new FsUserIntegralLogs();
+//            maps.setLogType(2);
+//            maps.setBusinessType(orderType);
+//            maps.setBusinessId(orderId.toString());
+//            List<FsUserIntegralLogs> logsList = integralLogsMapper.selectFsUserIntegralLogsList(maps);
+//            if (logsList.size() > 0) {
+//                for (FsUserIntegralLogs userLogs : logsList) {
+//                    fsUser.setIntegral(fsUser.getIntegral() - userLogs.getIntegral());
+//                    fsUserMapper.updateFsUser(fsUser);
+//                    logger.info("用户{}扣除积分{}", fsUser.getUserId(), userLogs.getIntegral());
+//                    //写入日志
+//                    FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//                    logs.setIntegral(-logsList.get(0).getIntegral());
+//                    logs.setUserId(userId);
+//                    logs.setBalance(fsUser.getIntegral());
+//                    logs.setBusinessType(orderType);
+//                    logs.setLogType(4);
+//                    logs.setBusinessId(orderId.toString());
+//                    logs.setCreateTime(new Date());
+//                    integralLogsMapper.insertFsUserIntegralLogs(logs);
+//                }
+//            }
+//
+//        }
+//
+//    }
 
     @Override
     public FsUser selectFsUserByUnionid(String unionid) {
@@ -1820,7 +1826,7 @@ public class FsUserServiceImpl implements IFsUserService {
      * 用户钱包 积分兑换佣金
      */
     @Override
-    //@Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public R integralExchange(Long userId) {
         // 查询用户钱包明细
         FsUser fsUser = fsUserMapper.selectFsUserByUserId(userId);
@@ -1836,14 +1842,14 @@ public class FsUserServiceImpl implements IFsUserService {
         // 积分转金额  1元=1000积分   库里存储的是单位是分:÷10
         BigDecimal commission = new BigDecimal(withdrawIntegral ).divide(BigDecimal.valueOf(10),2,RoundingMode.DOWN);
         // 更新用户积分 佣金
-        FsUser user = new FsUser();
-        user.setUserId(userId);
-        user.setIntegral(fsUser.getIntegral() - withdrawIntegral);
-        user.setWithdrawIntegral(0L);
-        user.setTotalCommission(fsUser.getTotalCommission().add(commission));
-        user.setUpdateTime(new Date());
-        user.setMayWithdraw(fsUser.getMayWithdraw().add(commission));
-        fsUserMapper.updateFsUser(user);
+//        FsUser user = new FsUser();
+//        user.setUserId(userId);
+//        user.setIntegral(fsUser.getIntegral() - withdrawIntegral);
+//        user.setWithdrawIntegral(0L);
+//        user.setTotalCommission(fsUser.getTotalCommission().add(commission));
+//        user.setUpdateTime(new Date());
+//        user.setMayWithdraw(fsUser.getMayWithdraw().add(commission));
+//        fsUserMapper.updateFsUser(user);
         FsIntegralExchange fsIntegralExchange = new FsIntegralExchange();
         fsIntegralExchange.setUserId(userId);
         fsIntegralExchange.setNickName(fsUser.getNickName());
@@ -1851,19 +1857,27 @@ public class FsUserServiceImpl implements IFsUserService {
         fsIntegralExchange.setCreateTime(new Date());
         fsIntegralExchange.setIntegral(-withdrawIntegral);
         fsIntegralExchangeService.insertFsIntegralExchange(fsIntegralExchange);
-        //添加积分记录
-        FsUserIntegralLogs logs = new FsUserIntegralLogs();
-        logs.setUserId(userId);
+//        //添加积分记录
+//        FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//        logs.setUserId(userId);
+//        if(fsIntegralExchange.getId() != null){
+//            logs.setBusinessId(fsIntegralExchange.getId().toString());
+//        }
+//        logs.setLogType(FsUserIntegralLogTypeEnum.TYPE_32.getValue());
+//        logs.setIntegral(-withdrawIntegral);
+//        logs.setBalance(fsUser.getIntegral() - withdrawIntegral);
+//        logs.setCreateTime(new Date());
+//        logs.setNickName(StringUtils.isNotEmpty(fsUser.getNickName()) ? fsUser.getNickName() : null);
+//        logs.setPhone(fsUser.getPhone());
+//        fsUserIntegralLogsService.insertFsUserIntegralLogs(logs);
+        FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+        integralParam.setUserId(userId);
+        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_32);
         if(fsIntegralExchange.getId() != null){
-            logs.setBusinessId(fsIntegralExchange.getId().toString());
-        }
-        logs.setLogType(FsUserIntegralLogTypeEnum.TYPE_32.getValue());
-        logs.setIntegral(-withdrawIntegral);
-        logs.setBalance(fsUser.getIntegral() - withdrawIntegral);
-        logs.setCreateTime(new Date());
-        logs.setNickName(StringUtils.isNotEmpty(fsUser.getNickName()) ? fsUser.getNickName() : null);
-        logs.setPhone(fsUser.getPhone());
-        fsUserIntegralLogsService.insertFsUserIntegralLogs(logs);
+            integralParam.setBusinessId(fsIntegralExchange.getId().toString());
+        }
+        integralParam.setPoints(-withdrawIntegral); //默认获取配置
+        userIntegralLogsService.addIntegralTemplate(integralParam);
         return R.ok("兑换成功");
     }
 

+ 32 - 11
fs-service/src/main/java/com/fs/his/service/impl/FsUserSignServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
+import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
@@ -11,10 +12,13 @@ import com.fs.his.config.StoreSignConfig;
 import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserIntegralLogs;
 import com.fs.his.domain.FsUserSign;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.FsUserIntegralLogsMapper;
 import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.mapper.FsUserSignMapper;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.param.FsUserSignQueryParam;
+import com.fs.his.service.IFsUserIntegralLogsService;
 import com.fs.his.service.IFsUserSignService;
 import com.fs.system.service.ISysConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,7 +43,7 @@ public class FsUserSignServiceImpl implements IFsUserSignService
     @Autowired
     private FsUserMapper userMapper;
     @Autowired
-    private FsUserIntegralLogsMapper integralLogsMapper;
+    private IFsUserIntegralLogsService integralLogsService;
     @Autowired
     private ISysConfigService configService;
 
@@ -159,18 +163,35 @@ public class FsUserSignServiceImpl implements IFsUserSignService
         userSign.setBalance(user.getIntegral().longValue());
         fsUserSignMapper.insertFsUserSign(userSign);
 
-        FsUserIntegralLogs logs = new FsUserIntegralLogs();
-        logs.setIntegral(signNumber);
-        logs.setUserId(user.getUserId());
-        logs.setBalance(NumberUtil.add(user.getIntegral(),signNumber).longValue());
-        logs.setLogType(1);
-        logs.setBusinessId(userSign.getId().toString());
-        logs.setCreateTime(new Date());
-        integralLogsMapper.insertFsUserIntegralLogs(logs);
+//        FsUserIntegralLogs logs = new FsUserIntegralLogs();
+//        logs.setIntegral(signNumber);
+//        logs.setUserId(user.getUserId());
+//        logs.setBalance(NumberUtil.add(user.getIntegral(),signNumber).longValue());
+//        logs.setLogType(1);
+//        logs.setBusinessId(userSign.getId().toString());
+//        logs.setCreateTime(new Date());
+//        integralLogsMapper.insertFsUserIntegralLogs(logs);
+        FsUserAddIntegralTemplateParam addIntegralTemplateParam = new FsUserAddIntegralTemplateParam();
+        addIntegralTemplateParam.setUserId(user.getUserId());
+        addIntegralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_1);
+        addIntegralTemplateParam.setBusinessId(userSign.getId().toString());
+        addIntegralTemplateParam.setPoints(Long.valueOf((signNumber.intValue()+"")));
+        addIntegralTemplateParam.setRemark(FsUserIntegralLogTypeEnum.TYPE_1.getDesc());
+        R addRes = integralLogsService.addIntegralTemplate(addIntegralTemplateParam);
 
-        //用户积分增加
+//        //用户积分增加
+//        FsUser userMap =new  FsUser();
+//        userMap.setIntegral(user.getIntegral()+signNumber);
+//        userMap.setUserId(user.getUserId());
+//        userMap.setSignNum(userSignNum);
+//        Integer res =userMapper.updateFsUser(userMap);
+//        if(res==0) {
+//            throw new CustomException("签到失败");
+//        }
+        if (addRes == null || !"200".equals(addRes.get("code").toString())) {
+            throw new CustomException("签到失败");
+        }
         FsUser userMap =new  FsUser();
-        userMap.setIntegral(user.getIntegral()+signNumber);
         userMap.setUserId(user.getUserId());
         userMap.setSignNum(userSignNum);
         Integer res =userMapper.updateFsUser(userMap);

+ 2 - 2
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -1959,9 +1959,9 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                             //赠送积分
                             FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
                             integralTemplateParam.setUserId(order.getUserId());
-                            integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_2.getValue()); //消费获取积分
+                            integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_2); //消费获取积分
                             integralTemplateParam.setBusinessId(order.getId().toString());
-                            integralTemplateParam.setPoints(fsStoreProductPackage.getIntegral());
+                            integralTemplateParam.setPoints(fsStoreProductPackage.getIntegral() == null?0:Long.valueOf(fsStoreProductPackage.getIntegral()));
                             userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
                         }
 

+ 28 - 17
fs-service/src/main/java/com/fs/live/service/impl/LiveCompletionPointsRecordServiceImpl.java

@@ -5,8 +5,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.fs.common.exception.base.BaseException;
 import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserIntegralLogs;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.FsUserIntegralLogsMapper;
 import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
+import com.fs.his.service.IFsUserIntegralLogsService;
 import com.fs.live.domain.Live;
 import com.fs.live.domain.LiveCompletionPointsRecord;
 import com.fs.live.mapper.LiveCompletionPointsRecordMapper;
@@ -43,7 +46,8 @@ public class LiveCompletionPointsRecordServiceImpl implements ILiveCompletionPoi
     private FsUserMapper fsUserMapper;
 
     @Autowired
-    private FsUserIntegralLogsMapper fsUserIntegralLogsMapper;
+//    private FsUserIntegralLogsMapper fsUserIntegralLogsMapper;
+    private IFsUserIntegralLogsService  fsUserIntegralLogsService;
 
     @Autowired
     private ILiveWatchUserService liveWatchUserService;
@@ -212,22 +216,29 @@ public class LiveCompletionPointsRecordServiceImpl implements ILiveCompletionPoi
         Long currentIntegral = user.getIntegral() != null ? user.getIntegral() : 0L;
         Long newIntegral = currentIntegral + record.getPointsAwarded();
 
-        FsUser updateUser = new FsUser();
-        updateUser.setUserId(userId);
-        updateUser.setIntegral(newIntegral);
-        fsUserMapper.updateFsUser(updateUser);
-
-        // 5. 记录积分变动日志
-        FsUserIntegralLogs integralLog = new FsUserIntegralLogs();
-        integralLog.setUserId(userId);
-        integralLog.setIntegral(Long.valueOf(record.getPointsAwarded()));
-        integralLog.setBalance(newIntegral);
-        integralLog.setLogType(5); // 5-直播完课积分
-        integralLog.setBusinessId("live_completion_" + recordId); // 业务ID:直播完课记录ID
-        integralLog.setBusinessType(5); // 5-直播完课
-        integralLog.setStatus(1);
-        integralLog.setCreateTime(new Date());
-        fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLog);
+//        FsUser updateUser = new FsUser();
+//        updateUser.setUserId(userId);
+//        updateUser.setIntegral(newIntegral);
+//        fsUserMapper.updateFsUser(updateUser);
+//
+//        // 5. 记录积分变动日志
+//        FsUserIntegralLogs integralLog = new FsUserIntegralLogs();
+//        integralLog.setUserId(userId);
+//        integralLog.setIntegral(Long.valueOf(record.getPointsAwarded()));
+//        integralLog.setBalance(newIntegral);
+//        integralLog.setLogType(5); // 5-直播完课积分
+//        integralLog.setBusinessId("live_completion_" + recordId); // 业务ID:直播完课记录ID
+//        integralLog.setBusinessType(5); // 5-直播完课
+//        integralLog.setStatus(1);
+//        integralLog.setCreateTime(new Date());
+//        fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLog);
+
+        FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+        integralParam.setUserId(userId);
+        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_27);
+        integralParam.setBusinessId("live_completion_" + recordId);
+        integralParam.setPoints(Long.valueOf(record.getPointsAwarded()));
+        fsUserIntegralLogsService.addIntegralTemplate(integralParam);
 
         // 6. 更新完课记录状态
         LiveCompletionPointsRecord updateRecord = new LiveCompletionPointsRecord();

+ 19 - 11
fs-service/src/main/java/com/fs/qw/service/impl/LuckyBagServiceImpl.java

@@ -15,6 +15,7 @@ import com.fs.his.domain.FsUserIntegralLogs;
 import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.param.FsReceiveLuckyBagParam;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.service.impl.FsUserIntegralLogsServiceImpl;
 import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.domain.QwGroupChat;
@@ -134,22 +135,29 @@ public class LuckyBagServiceImpl implements ILuckyBagService
         // 登记日志 有ClickHouse 不支持回滚
         Long balance = user.getIntegral()+coinAmount;
 
-        FsUserIntegralLogs fsUserIntegralLogs = new FsUserIntegralLogs();
-        fsUserIntegralLogs.setUserId(userId);
-        fsUserIntegralLogs.setLogType(FsUserIntegralLogTypeEnum.TYPE_33.getValue()); // 福袋获取获得芳华币
-        fsUserIntegralLogs.setIntegral(coinAmount);
-        fsUserIntegralLogs.setPhone(user.getPhone());
-        fsUserIntegralLogs.setBalance(balance);
-        fsUserIntegralLogs.setCreateTime(new Date());
-        fsUserIntegralLogs.setNickName(user.getNickName());
-        //写入积分日志
-        fsUserIntegralLogsService.insertFsUserIntegralLogs(fsUserIntegralLogs);
+//        FsUserIntegralLogs fsUserIntegralLogs = new FsUserIntegralLogs();
+//        fsUserIntegralLogs.setUserId(userId);
+//        fsUserIntegralLogs.setLogType(FsUserIntegralLogTypeEnum.TYPE_33.getValue()); // 福袋获取获得芳华币
+//        fsUserIntegralLogs.setIntegral(coinAmount);
+//        fsUserIntegralLogs.setPhone(user.getPhone());
+//        fsUserIntegralLogs.setBalance(balance);
+//        fsUserIntegralLogs.setCreateTime(new Date());
+//        fsUserIntegralLogs.setNickName(user.getNickName());
+//        //写入积分日志
+//        fsUserIntegralLogsService.insertFsUserIntegralLogs(fsUserIntegralLogs);
+
+        FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+        integralParam.setUserId(userId);
+        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_33);
+        integralParam.setBusinessId(luckyBag.getId().toString());
+        integralParam.setPoints(coinAmount);
+        fsUserIntegralLogsService.addIntegralTemplate(integralParam);
 
         //给用户增加积分
         FsUser updateUser = new FsUser();
         updateUser.setUserId(userId);
         updateUser.setIntegral(balance);
-        userMapper.updateFsUser(updateUser);
+//        userMapper.updateFsUser(updateUser);
 
         // 更新状态
         LuckyBagCollectRecord recordUpdate = new LuckyBagCollectRecord();

+ 8 - 8
fs-user-app/src/main/java/com/fs/app/controller/FsIntegralCartController.java

@@ -87,12 +87,12 @@ public class FsIntegralCartController extends AppBaseController {
     }
 
 
-    @Login
-    @RepeatSubmit
-    @ApiOperation("从购物车生成订单(兑换按钮)")
-    @PostMapping("/createOrderFromCart")
-    public R createOrderFromCart(@RequestBody CreateOrderFromCartParm param) {
-        Long aLong = Long.valueOf(getUserId());
-        return fsIntegralCartService.createOrderFromCart(param, aLong);
-    }
+//    @Login
+//    @RepeatSubmit
+//    @ApiOperation("从购物车生成订单(兑换按钮)")
+//    @PostMapping("/createOrderFromCart")
+//    public R createOrderFromCart(@RequestBody CreateOrderFromCartParm param) {
+//        Long aLong = Long.valueOf(getUserId());
+//        return fsIntegralCartService.createOrderFromCart(param, aLong);
+//    }
 }

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/IntegralController.java

@@ -255,7 +255,7 @@ public class IntegralController extends  AppBaseController {
     @PostMapping("/shareHealth")
     public R shareHealth(@RequestBody FsUserAddIntegralTemplateParam fsUserAddIntegralTemplateParam){
         fsUserAddIntegralTemplateParam.setUserId(Long.parseLong(getUserId()));
-        fsUserAddIntegralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_3.getValue());
+        fsUserAddIntegralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_3);
         return userIntegralLogsService.addIntegralTemplate(fsUserAddIntegralTemplateParam);
     }
 

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/PatientController.java

@@ -175,7 +175,7 @@ public class PatientController extends  AppBaseController {
         // 填写就诊人信息
         FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
         integralTemplateParam.setUserId(Long.parseLong(getUserId()));
-        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_11.getValue());
+        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_11);
         integralTemplateParam.setBusinessId(patient.getPatientId().toString());
         userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
 

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/UserAddressController.java

@@ -104,7 +104,7 @@ public class UserAddressController extends  AppBaseController {
         // 填写就诊人信息
         FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
         integralTemplateParam.setUserId(Long.parseLong(getUserId()));
-        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_12.getValue());
+        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_12);
         integralTemplateParam.setBusinessId(userAddress.getAddressId().toString());
         fsUserIntegralLogsService.addIntegralTemplate(integralTemplateParam);