Browse Source

95:红德堂APP调试 积分规则调整

Long 1 day ago
parent
commit
02f8f66ee7

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

@@ -31,8 +31,11 @@ import com.fs.course.vo.newfs.FsUserCourseListVO;
 import com.fs.his.config.IntegralConfig;
 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.his.service.IFsUserNewTaskService;
 import com.fs.his.vo.OptionsVO;
 import com.fs.qw.domain.QwCompany;
@@ -115,6 +118,8 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
 
     @Autowired
     private AsyncUploadQwCourseImageService asyncUploadQwCourseImageService;
+    @Autowired
+    private IFsUserIntegralLogsService userIntegralLogsService;
 
     private static final String realLink = "/courseH5/pages/course/learning?course=";
     public static final String shortLink = "/courseH5/pages/course/learning?s=";
@@ -301,9 +306,9 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
             return R.error("课堂不存在");
         }
 
-        if (param.getDuration()>=600){
-            fsUserNewTaskService.performTaskTwo(param.getUserId());
-        }
+//        if (param.getDuration()>=600){
+//            fsUserNewTaskService.performTaskTwo(param.getUserId());
+//        }
         FsUserCourseStudyLog log = getOrCreateStudyLog(param, course, courseVideo);
 
         FsUserCourseStudy courseStudy = fsUserCourseStudyMapper.selectFsUserCourseStudyByAddStudy(param.getUserId(), param.getCourseId());
@@ -355,27 +360,34 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
             return R.error("当天芳华币已达限额");
         }
         int rate = (int)((double)param.getDuration() / video.getDuration() * 100);
-        if (rate>=50){
+        if (rate>=90){
             FsUserIntegralLogs integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralByCourseVideo(param.getVideoId(),param.getUserId());
             if (integralLogs!=null){
                 return R.error("该用户已获取此小节积分");
             }
-            FsUser userMap = new FsUser();
-            userMap.setIntegral(user.getIntegral()+config.getIntegralCourse());
-            userMap.setUserId(user.getUserId());
-            fsUserMapper.updateFsUser(userMap);
-            integralLogs = new FsUserIntegralLogs();
-            //写入日志
-            integralLogs.setIntegral(config.getIntegralCourse().longValue());
-            integralLogs.setUserId(param.getUserId());
-            integralLogs.setBalance(userMap.getIntegral());
-            integralLogs.setLogType(10);
-            integralLogs.setBusinessId(video.getVideoId().toString());
-            integralLogs.setCreateTime(new Date());
-            fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
-            return R.ok("恭喜您获得"+config.getIntegralCourse()+"芳华币");
+
+            FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
+            integralTemplateParam.setUserId(param.getUserId());
+            integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_10.getValue());
+            integralTemplateParam.setBusinessId(video.getVideoId().toString());
+            return userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
+
+//            FsUser userMap = new FsUser();
+//            userMap.setIntegral(user.getIntegral()+config.getIntegralCourse());
+//            userMap.setUserId(user.getUserId());
+//            fsUserMapper.updateFsUser(userMap);
+//            integralLogs = new FsUserIntegralLogs();
+//            //写入日志
+//            integralLogs.setIntegral(config.getIntegralCourse().longValue());
+//            integralLogs.setUserId(param.getUserId());
+//            integralLogs.setBalance(userMap.getIntegral());
+//            integralLogs.setLogType(10);
+//            integralLogs.setBusinessId(video.getVideoId().toString());
+//            integralLogs.setCreateTime(new Date());
+//            fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
+//            return R.ok("恭喜您获得"+config.getIntegralCourse()+"芳华币");
         }
-        return R.error("观看进度不满百分之五十");
+        return R.error("观看进度不满百分之十");
     }
 
     private FsUserCourseStudyLog getOrCreateStudyLog(FsUserCourseAddStudyCourseParam param, FsUserCourse course, FsUserCourseVideo courseVideo) {

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

@@ -20,4 +20,9 @@ public class IntegralConfig implements Serializable {
     private Integer integralInvite;//邀请新用户获得积分
 
     private Integer integralInvited;//填写邀请码获得积分
+    private Integer integralRegister;//完成手机号绑定注册
+    private Integer integralFinishConsultation;//完成专家问诊
+    private Integer integralFirstOrderPoint;//首次积分商城下单
+    private Integer IntegralAddPatient;//新用户完善就诊人获得积分
+    private Integer integralAddUserAddress;//新用户填写收货地址获取积分
 }

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

@@ -26,7 +26,11 @@ public enum FsUserIntegralLogTypeEnum {
     TYPE_16(16,"点播看课获得积分"),
     TYPE_17(17,"点播答题获得积分"),
     TYPE_18(18,"邀请新用户获取积分"),
-    TYPE_19(19,"填写邀请码获取积分");
+    TYPE_19(19,"填写邀请码获取积分"),
+    TYPE_20(20,"首次完成手机号绑定注册"),
+    TYPE_21(21,"首次完成专家咨询"),
+    TYPE_22(22,"首次完成积分商城下单"),
+    ;
 
 
     private Integer value;

+ 2 - 1
fs-service/src/main/java/com/fs/his/mapper/FsUserIntegralLogsMapper.java

@@ -1,6 +1,5 @@
 package com.fs.his.mapper;
 
-import com.fs.company.vo.RedPacketMoneyVO;
 import com.fs.his.domain.FsUserIntegralLogs;
 import com.fs.his.param.FsUserIntegralLogsListUParam;
 import com.fs.his.param.FsUserIntegralLogsParam;
@@ -11,6 +10,7 @@ import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -138,4 +138,5 @@ public interface FsUserIntegralLogsMapper
     @Select("select count(1) from fs_user_integral_logs where log_type = 16 and user_id =#{userId} and business_id = #{videoId} ")
     Long selectH5VideoIntegralCount(@Param("userId") Long userId,@Param("videoId") Long videoId);
 
+    List<FsUserIntegralLogs> selectFsUserIntegralLogsByUserIdAndLogType(@Param("userId") Long userId, @Param("logType") Integer logType, @Param("date") LocalDate date);
 }

+ 4 - 0
fs-service/src/main/java/com/fs/his/param/FsUserAddIntegralTemplateParam.java

@@ -3,6 +3,8 @@ package com.fs.his.param;
 
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 @Data
 public class FsUserAddIntegralTemplateParam {
     private Long userId;
@@ -10,4 +12,6 @@ public class FsUserAddIntegralTemplateParam {
     private Integer logType; //类型1浏览商品 2刷视频 3邀请奖励 4被邀请奖励
 
     private String businessId;
+
+    private BigDecimal amount;
 }

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

@@ -73,8 +73,6 @@ public interface IFsUserIntegralLogsService
 
     void subFsUserIntegralLogsByOrder5();
 
-    void addPatientIntegral(Long userId,Long patientId);
-
     void addUserAddressIntegral(Long userId,Long addressId);
 
     R addIntegral(FsUserAddIntegralParam param);

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

@@ -105,8 +105,6 @@ public interface IFsUserService
     void followAddIntegral(Long userId,Long orderId);
     void subUserIntegral(Long userId,Long orderId ,Integer orderType);
 
-    void shareAddIntegral(Long userId);
-
     public void subIntegral(Long userId);
 
 

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

@@ -31,6 +31,7 @@ import com.fs.event.TemplateListenEnum;
 import com.fs.his.domain.*;
 import com.fs.his.dto.*;
 import com.fs.his.enums.FsInquiryOrderStatusEnum;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.*;
 import com.fs.his.param.*;
 import com.fs.his.service.*;
@@ -165,6 +166,8 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
     private IFsUserCouponService userCouponService;
     @Autowired
     private IFsCouponService couponService;
+    @Autowired
+    private IFsUserIntegralLogsService userIntegralLogsService;
 
     /**
      * 查询问诊订单
@@ -1229,6 +1232,14 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
 //        msgDTO1.setMsgBody(msgs1);
 //        imService.sendMsg(msgDTO1);
         redisTemplate.delete("DrugReport:doctorId:" + order.getDoctorId() + ":userId:" + order.getUserId());
+
+        // 首次完成专家咨询得积分
+        FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+        integralParam.setUserId(order.getUserId());
+        integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_21.getValue());
+        integralParam.setBusinessId(order.getOrderSn());
+        userIntegralLogsService.addIntegralTemplate(integralParam);
+
         //todo 将金额写入医生佣金
         return R.ok("接诊成功");
     }

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

@@ -11,11 +11,14 @@ import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.core.utils.OrderCodeUtils;
 import com.fs.his.domain.*;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.*;
 import com.fs.his.param.FsIntegralOrderCreateParam;
 import com.fs.his.param.FsIntegralOrderListUParam;
 import com.fs.his.param.FsIntegralOrderParam;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.service.IFsIntegralOrderService;
+import com.fs.his.service.IFsUserIntegralLogsService;
 import com.fs.his.vo.FsIntegralOrderListUVO;
 import com.fs.his.vo.FsIntegralOrderListVO;
 import com.fs.his.vo.FsIntegralOrderPVO;
@@ -55,6 +58,8 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
 
     @Autowired
     private QwUserMapper qwUserMapper;
+    @Autowired
+    private IFsUserIntegralLogsService userIntegralLogsService;
 
     /**
      * 查询积分商品订单
@@ -217,6 +222,14 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
             logs.setBusinessId(order.getOrderId().toString());
             logs.setCreateTime(new Date());
             fsUserIntegralLogsMapper.insertFsUserIntegralLogs(logs);
+
+            // 首次完成专家咨询得积分
+            FsUserAddIntegralTemplateParam integralParam = new FsUserAddIntegralTemplateParam();
+            integralParam.setUserId(order.getUserId());
+            integralParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_22.getValue());
+            integralParam.setBusinessId(order.getOrderId().toString());
+            userIntegralLogsService.addIntegralTemplate(integralParam);
+
             return R.ok("兑换成功").put("order",order);
         }
         else{

+ 76 - 34
fs-service/src/main/java/com/fs/his/service/impl/FsUserIntegralLogsServiceImpl.java

@@ -26,7 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.time.Duration;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
@@ -168,30 +170,6 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
         }
     }
 
-
-    @Override
-    @Transactional
-    public void addPatientIntegral(Long userId,Long patientId) {
-        FsUser user = fsUserMapper.selectFsUserIsNew(userId);
-        if (user!=null){
-            FsUserIntegralLogs integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsAddPatient(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(11);
-                integralLogs.setBusinessId(patientId.toString());
-                integralLogs.setCreateTime(new Date());
-                fsUserIntegralLogsMapper.insertFsUserIntegralLogs(integralLogs);
-            }
-        }
-    }
-
     @Override
     @Transactional
     public void addUserAddressIntegral(Long userId, Long addressId) {
@@ -269,16 +247,21 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
             }
             Integer integralNum = null;
             FsUserIntegralLogTypeEnum logsType = null;
+            List<FsUserIntegralLogs> integralLogs;
             switch (param.getLogType()){
 //                case 1: //签到
 //                    integralNum = config.getIntegralInvite();
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_1;
 //                    break;
-//                case 2: //消费获得积分
-//                    integralNum = config.getIntegralInvite();
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_2;
-//                    break;
+                case 2: //消费获得积分
+                    integralNum = param.getAmount().multiply(BigDecimal.valueOf(config.getIntegralRatio())).intValue();
+                    logsType = FsUserIntegralLogTypeEnum.TYPE_2;
+                    break;
                 case 3: //分享获得积分
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), LocalDate.now());
+                    if (integralLogs.size() >= 5){
+                        return R.error("今日看课积分已达上限");
+                    }
                     integralNum = config.getIntegralShare();
                     logsType = FsUserIntegralLogTypeEnum.TYPE_3;
                     break;
@@ -304,15 +287,29 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_9;
 //                    break;
                 case 10: //观看课程获取积分
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), LocalDate.now());
+                    if (integralLogs.size() >= 3){
+                        return R.error("今日看课积分已达上限");
+                    }
                     integralNum = config.getIntegralCourse();
                     logsType = FsUserIntegralLogTypeEnum.TYPE_10;
                     break;
-//                case 11: //新用户完善就诊人获得积分
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_11;
-//                    break;
-//                case 12: //新用户填写收货地址获取积分
-//                    logsType = FsUserIntegralLogTypeEnum.TYPE_12;
-//                    break;
+                case 11: //新用户完善就诊人获得积分
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    if (!integralLogs.isEmpty()){
+                        return R.error("已领取过该积分");
+                    }
+                    integralNum = config.getIntegralAddPatient();
+                    logsType = FsUserIntegralLogTypeEnum.TYPE_11;
+                    break;
+                case 12: //新用户填写收货地址获取积分
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    if (!integralLogs.isEmpty()){
+                        return R.error("已领取过该积分");
+                    }
+                    integralNum = config.getIntegralAddUserAddress();
+                    logsType = FsUserIntegralLogTypeEnum.TYPE_12;
+                    break;
                 case 13: //浏览商品获得积分
                     integralNum = config.getIntegralProduct();
                     logsType = FsUserIntegralLogTypeEnum.TYPE_13;
@@ -333,9 +330,37 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
                     logsType = FsUserIntegralLogTypeEnum.TYPE_18;
                     break;
                 case 19: //填写邀请码获取积分
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    if (!integralLogs.isEmpty()){
+                        return R.error("已领取过该积分");
+                    }
                     integralNum = config.getIntegralInvited();
                     logsType = FsUserIntegralLogTypeEnum.TYPE_19;
                     break;
+                case 20: //完成手机号绑定注册
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    if (!integralLogs.isEmpty()){
+                        return R.error("已领取过该积分");
+                    }
+                    integralNum = config.getIntegralRegister();
+                    logsType = FsUserIntegralLogTypeEnum.TYPE_20;
+                    break;
+                case 21: //完成专家咨询
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    if (!integralLogs.isEmpty()){
+                        return R.error("已领取过该积分");
+                    }
+                    integralNum = config.getIntegralFinishConsultation();
+                    logsType = FsUserIntegralLogTypeEnum.TYPE_21;
+                    break;
+                case 22: //完成首次积分商城下单
+                    integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(param.getUserId(),param.getLogType(), null);
+                    if (!integralLogs.isEmpty()){
+                        return R.error("已领取过该积分");
+                    }
+                    integralNum = config.getIntegralFirstOrderPoint();
+                    logsType = FsUserIntegralLogTypeEnum.TYPE_22;
+                    break;
                 default:
                     return R.error("积分类型错误,联系管理员");
             }
@@ -445,6 +470,8 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
         int taskFour = 0;
         int taskFive = 0;
         int isNewUser = 0;
+        int isFinishConsultation = 0;
+        int isFinishFirstOrderPoint = 0;
 //        long expireDays = 0;
         Date createTime = null;
         FsUser fsUser = fsUserMapper.selectFsUserIsNew(userId);
@@ -479,12 +506,27 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
         if (logs2!=null){
             taskFive = 1;
         }
+
+        // 完成专家咨询
+        List<FsUserIntegralLogs> integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(userId, FsUserIntegralLogTypeEnum.TYPE_21.getValue(), null);
+        if (!integralLogs.isEmpty()) {
+            isFinishConsultation = 1;
+        }
+
+        // 完成首次积分商城下单
+        integralLogs = fsUserIntegralLogsMapper.selectFsUserIntegralLogsByUserIdAndLogType(userId, FsUserIntegralLogTypeEnum.TYPE_22.getValue(), null);
+        if (!integralLogs.isEmpty()) {
+            isFinishFirstOrderPoint = 1;
+        }
+
         Map<String,Object> map = new HashMap<>();
         map.put("taskOne",taskOne);
         map.put("taskTwo",taskTwo);
         map.put("taskThree",taskThree);
         map.put("taskFour",taskFour);
         map.put("taskFive",taskFive);
+        map.put("isFinishConsultation", isFinishConsultation);
+        map.put("isFinishFirstOrderPoint", isFinishFirstOrderPoint);
         return R.ok().put("data",map).put("isNewUser",isNewUser).put("createTime",createTime);
     }
 }

+ 13 - 11
fs-service/src/main/java/com/fs/his/service/impl/FsUserNewTaskServiceImpl.java

@@ -10,7 +10,10 @@ import com.fs.common.utils.DateUtils;
 import com.fs.his.config.CouponConfig;
 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.service.IFsUserIntegralLogsService;
 import com.fs.system.service.ISysConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -40,6 +43,8 @@ public class FsUserNewTaskServiceImpl implements IFsUserNewTaskService
     private FsUserCouponMapper fsUserCouponMapper;
     @Autowired
     private FsUserIntegralLogsMapper fsUserIntegralLogsMapper;
+    @Autowired
+    private IFsUserIntegralLogsService integralLogsService;
     /**
      * 查询用户新手任务
      *
@@ -129,17 +134,14 @@ public class FsUserNewTaskServiceImpl implements IFsUserNewTaskService
             newTask.setCreateTime(new Date());//app首次登录或注册时间
             newTask.setTaskOne(1);//直接完成第一任务
             fsUserNewTaskMapper.insertFsUserNewTask(newTask);
-            FsUser user = new FsUser();
-            user.setUserId(userId);
-            user.setIsVip(1);
-            user.setVipStatus(1);
-            user.setVipStartDate(new Date());
-            Calendar calendar = Calendar.getInstance();
-            calendar.setTime(user.getVipStartDate());
-            calendar.add(Calendar.DATE, 10); // 添加10天
-            Date endDate = calendar.getTime();
-            user.setVipEndDate(endDate);
-            fsUserMapper.updateFsUser(user);
+
+            // 完成手机号绑定注册
+            FsUserAddIntegralTemplateParam param = new FsUserAddIntegralTemplateParam();
+            param.setUserId(userId);
+            param.setLogType(FsUserIntegralLogTypeEnum.TYPE_20.getValue());
+            param.setBusinessId(userId.toString());
+            integralLogsService.addIntegralTemplate(param);
+
             isFirstLogin = 1;
         }
         return isFirstLogin;

+ 10 - 51
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -37,8 +37,11 @@ import com.fs.course.vo.newfs.FsUserCourseVideoPageListVO;
 import com.fs.his.config.IntegralConfig;
 import com.fs.his.domain.FsUserAddress;
 import com.fs.his.domain.FsUserIntegralLogs;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.*;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.param.FsUserParam;
+import com.fs.his.service.IFsUserIntegralLogsService;
 import com.fs.his.vo.FsUserExportListVO;
 import com.fs.his.vo.FsUserFollowDoctorVO;
 import com.fs.his.vo.FsUserVO;
@@ -117,12 +120,8 @@ public class FsUserServiceImpl implements IFsUserService
 
     @Autowired
     private ICompanyTagCacheService companyTagCacheService;
-
-    @Autowired
-    private IQwExternalContactCacheService qwExternalContactCacheService;
-
     @Autowired
-    private CompanyRoleMapper companyRoleMapper;
+    private IFsUserIntegralLogsService userIntegralLogsService;
 
 
     /**
@@ -267,30 +266,12 @@ public class FsUserServiceImpl implements IFsUserService
     @Override
     @Transactional
     public void addUserIntegral(BigDecimal payMoney,Long userId,Long orderId ,Integer orderType) {
-            FsUser fsUser = fsUserMapper.selectFsUserByUserId(userId);
-            if(fsUser!=null){
-                String json =configService.selectConfigByKey("his.integral");
-                IntegralConfig config= JSONUtil.toBean(json,IntegralConfig.class);
-                Long integral = payMoney.divide(BigDecimal.valueOf(config.getIntegralRatio()),new MathContext(10, RoundingMode.HALF_UP)).longValue();
-                //实付多少获取多少积分
-                if (integral>0){
-                    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(orderType);
-                    logs.setUserId(userId);
-                    logs.setBalance(u.getIntegral());
-                    logs.setLogType(2);
-                    logs.setBusinessId(orderId.toString());
-                    logs.setCreateTime(new Date());
-                    integralLogsMapper.insertFsUserIntegralLogs(logs);
-                }
-            }
+        FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
+        integralTemplateParam.setUserId(userId);
+        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_2.getValue());
+        integralTemplateParam.setBusinessId(orderId.toString());
+        integralTemplateParam.setAmount(payMoney);
+        userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
     }
 
     @Override
@@ -394,28 +375,6 @@ public class FsUserServiceImpl implements IFsUserService
 
     }
 
-    @Override
-    public void shareAddIntegral(Long userId) {
-        FsUser fsUser = fsUserMapper.selectFsUserByUserId(userId);
-        if(fsUser!=null) {
-            String json = configService.selectConfigByKey("his.integral");
-            IntegralConfig config = JSONUtil.toBean(json, IntegralConfig.class);
-            Integer integral = config.getIntegralRatio();
-            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 + 0L);
-            logs.setUserId(userId);
-            logs.setBalance(fsUser.getIntegral());
-            logs.setLogType(3);
-            logs.setCreateTime(new Date());
-            integralLogsMapper.insertFsUserIntegralLogs(logs);
-        }
-    }
-
     @Override
     public FsUser selectFsUserByUnionid(String unionid) {
         return fsUserMapper.selectFsUserByUnionid(unionid);

+ 9 - 0
fs-service/src/main/resources/mapper/his/FsUserIntegralLogsMapper.xml

@@ -38,6 +38,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </select>
 
+    <select id="selectFsUserIntegralLogsByUserIdAndLogType" resultType="com.fs.his.domain.FsUserIntegralLogs">
+        select * from fs_user_integral_logs where log_type=#{logType} and user_id = #{userId}
+        <if test="date != null">
+            <![CDATA[
+            and create_time >= #{date} and create_time < date_add(#{date}, interval 1 day)
+            ]]>
+        </if>
+    </select>
+
     <insert id="insertFsUserIntegralLogs" parameterType="FsUserIntegralLogs" useGeneratedKeys="true" keyProperty="id">
         insert into fs_user_integral_logs
         <trim prefix="(" suffix=")" suffixOverrides=",">

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

@@ -6,6 +6,7 @@ import com.fs.common.annotation.Log;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
 import com.fs.his.domain.*;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.param.*;
 import com.fs.his.service.*;
 import com.fs.his.vo.*;
@@ -137,7 +138,14 @@ public class IntegralController extends  AppBaseController {
        return userIntegralLogsService.getNewcomerBenefits(Long.parseLong(getUserId()));
     }
 
-
+    @Login
+    @ApiOperation("分享健康知识获取积分")
+    @PostMapping("/shareHealth")
+    public R shareHealth(@RequestBody FsUserAddIntegralTemplateParam fsUserAddIntegralTemplateParam){
+        fsUserAddIntegralTemplateParam.setUserId(Long.parseLong(getUserId()));
+        fsUserAddIntegralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_3.getValue());
+        return userIntegralLogsService.addIntegralTemplate(fsUserAddIntegralTemplateParam);
+    }
 
 
 }

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

@@ -8,6 +8,8 @@ import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.his.domain.FsPatient;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.service.IFsPatientService;
 import com.fs.his.service.IFsUserIntegralLogsService;
 import io.swagger.annotations.Api;
@@ -131,7 +133,14 @@ public class PatientController extends  AppBaseController {
         patient.setIsDel(0);
         patient.setStatus(1);
         patientService.insertFsPatient(patient);
-        userIntegralLogsService.addPatientIntegral(Long.parseLong(getUserId()),patient.getPatientId());
+
+        // 填写就诊人信息
+        FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
+        integralTemplateParam.setUserId(Long.parseLong(getUserId()));
+        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_11.getValue());
+        integralTemplateParam.setBusinessId(patient.getPatientId().toString());
+        userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
+
         return R.ok("操作成功");
     }
 

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

@@ -9,6 +9,8 @@ import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
 import com.fs.his.domain.FsCity;
 import com.fs.his.domain.FsUserAddress;
+import com.fs.his.enums.FsUserIntegralLogTypeEnum;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.service.IFsCityService;
 import com.fs.his.service.IFsExpressService;
 import com.fs.his.service.IFsUserAddressService;
@@ -98,6 +100,14 @@ public class UserAddressController extends  AppBaseController {
         address.setPhone(address.getPhone().trim());
         userAddress.setUserId(Long.parseLong(getUserId()));
         addressService.insertFsUserAddress(userAddress);
+
+        // 填写就诊人信息
+        FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
+        integralTemplateParam.setUserId(Long.parseLong(getUserId()));
+        integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_12.getValue());
+        integralTemplateParam.setBusinessId(userAddress.getAddressId().toString());
+        fsUserIntegralLogsService.addIntegralTemplate(integralTemplateParam);
+
         fsUserIntegralLogsService.addUserAddressIntegral(Long.parseLong(getUserId()),userAddress.getAddressId());
         return R.ok("操作成功");
     }