ct il y a 4 jours
Parent
commit
277619c257

+ 2 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseSendRewardUParam.java

@@ -41,4 +41,6 @@ public class FsCourseSendRewardUParam implements Serializable
     private Integer isAuto;
     private Integer rewardType; //奖励类型 1红包 2积分 3随机转盘 4保底转盘 5大礼品
 
+    private Long watchLogId;
+
 }

+ 30 - 11
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -1541,15 +1541,18 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
             if (param.getSource() != 3 && config.getMiniAppAuthType() == 2 && StringUtil.strIsNullOrEmpty(user.getMpOpenId())) {
                 return R.error(401, "授权后可继续!");
             }
-            // 根据奖励类型发放不同奖励 //todo
-            if ((param.getUserId() == 42 || param.getUserId() == 41 || param.getUserId() == 816473) && (param.getSource() == 3)){
-                return withdrawal(param);
-            }
+
             log.info("奖励类型:{}", config.getRewardType());
             switch (config.getRewardType()) {
                 // 红包奖励
                 case 1:
-                    return sendRedPacketReward(param, user, watchLog, video, config);
+                    if (param.getSource() == 3){
+                        param.setWatchLogId(watchLog.getLogId());
+                        return withdrawal(param);
+                    } else {
+                        return sendRedPacketReward(param, user, watchLog, video, config);
+                    }
+
                 // 积分奖励
                 case 2:
                     return sendIntegralReward(param, user, watchLog, config);
@@ -1667,7 +1670,7 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
             if (log.getRewardType() == 1) {
                 FsCourseRedPacketLog fsCourseRedPacketLog = redPacketLogMapper.selectUserFsCourseRedPacketLog(param.getVideoId(), param.getUserId(), param.getPeriodId());
                 if (fsCourseRedPacketLog != null && fsCourseRedPacketLog.getStatus() == 1) {
-                    return R.error("已领取该课程奖励,不可重复领取!");
+                    return R.error("已领取该课程奖励,不可重复领取!").put("data",fsCourseRedPacketLog.getResult());
                 }
                 if (fsCourseRedPacketLog != null && fsCourseRedPacketLog.getStatus() == 0) {
                     if (StringUtils.isNotEmpty(fsCourseRedPacketLog.getResult())) {
@@ -1691,7 +1694,7 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
 
         // 判断来源是否是app,如是app,则发放积分奖励
         int sourceApp = 3;
-        if (sourceApp == param.getSource() && !CloudHostUtils.hasCloudHostName("中康")) {
+        if (sourceApp == param.getSource() && !CloudHostUtils.hasCloudHostName("中康","金牛明医")) {
             return sendIntegralReward(param, user, log, config);
         }
 
@@ -1699,7 +1702,18 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
         switch (config.getRewardType()) {
             // 红包奖励
             case 1:
-                return sendRedPacketRewardFsUser(param, user, log, video, config);
+                if (sourceApp == param.getSource()){
+                    WxSendRedPacketParam packetParam = new WxSendRedPacketParam();
+                    String openId = getOpenId(param, user);
+                    if (StringUtils.isBlank(openId)) {
+                        return R.error("请重新使用微信登录");
+                    }
+                    packetParam.setOpenId(openId);
+                    BeanUtils.copyProperties(param, packetParam);
+                    return sendAppRedPacket(packetParam, log,video, config);
+                } else {
+                    return sendRedPacketRewardFsUser(param, user, log, video, config);
+                }
             // 积分奖励
             case 2:
                 return sendIntegralReward(param, user, log, config);
@@ -5166,8 +5180,13 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
         if (user == null) {
             return R.error("未识别到用户信息");
         }
-
-        FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByFsUser(param.getUserId(), param.getVideoId(), param.getCompanyUserId());
+        FsCourseWatchLog log = null;
+        if (param.getWatchLogId() != null){
+            //企微自动发课
+            log = courseWatchLogMapper.selectFsCourseWatchLogByLogId(param.getWatchLogId());
+        } else {
+            log = courseWatchLogMapper.getWatchCourseVideoByFsUser(param.getUserId(), param.getVideoId(), param.getCompanyUserId());
+        }
         if (log == null) {
             return R.error("无记录");
         }
@@ -5177,7 +5196,7 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
         }
 
         FsCourseAnswerLogs rightLog = courseAnswerLogsMapper.selectRightLogByCourseVideo(param.getVideoId(), param.getUserId(), param.getQwUserId());
-        if (rightLog == null) {
+        if (rightLog == null && !CloudHostUtils.hasCloudHostName("金牛明医")) {
             logger.error("未答题:{}", param.getUserId());
             return R.error("未答题");
         }

+ 5 - 1
fs-service/src/main/java/com/fs/his/config/AppConfig.java

@@ -20,7 +20,11 @@ public class AppConfig {
     private Integer addIntegral; //玩一局游戏加多少积分
     private Integer defaultRewardGold; //看视频获取多少金币
 
-    //积分提现商户配置
+    private Integer isOpenWithdraw;//是否开启提现按钮 0关闭 1开启
+
+    private Integer withdrawRatio;//兑换佣金比例 1元=多少积分
+    private List<Integer> integralTypes;//允许兑换积分类型
+
     private Integer isNew;//0:老商户 商家转账到零钱 1:新商户 商家转账
 
     /**

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

@@ -42,6 +42,7 @@ public enum FsUserIntegralLogTypeEnum {
     TYPE_30(30,"阅读文章获取积分"),
     TYPE_31(31,"广告积分"),
     TYPE_32(32,"积分兑换佣金"),
+    TYPE_33(33,"福袋积分"),
     ;
 
 

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

@@ -1805,7 +1805,14 @@ public class FsUserServiceImpl implements IFsUserService {
         vo.setMayWithdraw(vo.getMayWithdraw().divide(BigDecimal.valueOf(100)));
         vo.setTotalCommission(vo.getTotalCommission().divide(BigDecimal.valueOf(100)));
         vo.setWithdrawFinish(vo.getWithdrawFinish().divide(BigDecimal.valueOf(100)));
-        vo.setWithdrawCash(new BigDecimal(vo.getWithdrawIntegral()).divide(BigDecimal.valueOf(1000),2,RoundingMode.DOWN));
+        //获取积分兑换佣金配置
+        String json = configService.selectConfigByKey("app.config");
+        AppConfig config = JSONUtil.toBean(json, AppConfig.class);
+        BigDecimal withdrawRatio = BigDecimal.valueOf(1000);
+        if (config != null && config.getWithdrawRatio()!=null) {
+            withdrawRatio = BigDecimal.valueOf(config.getIsOpenWithdraw());
+        }
+        vo.setWithdrawCash(new BigDecimal(vo.getWithdrawIntegral()).divide(withdrawRatio,2,RoundingMode.DOWN));
         return R.ok().put("data", vo);
     }
 

+ 2 - 1
fs-service/src/main/java/com/fs/qw/service/impl/LuckyBagServiceImpl.java

@@ -12,6 +12,7 @@ import com.fs.course.domain.LuckyBagCollectRecord;
 import com.fs.course.param.LuckyBagActualRewardsParam;
 import com.fs.his.domain.FsUser;
 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.service.impl.FsUserIntegralLogsServiceImpl;
@@ -135,7 +136,7 @@ public class LuckyBagServiceImpl implements ILuckyBagService
 
         FsUserIntegralLogs fsUserIntegralLogs = new FsUserIntegralLogs();
         fsUserIntegralLogs.setUserId(userId);
-        fsUserIntegralLogs.setLogType(30); // 福袋获取获得芳华币
+        fsUserIntegralLogs.setLogType(FsUserIntegralLogTypeEnum.TYPE_33.getValue()); // 福袋获取获得芳华币
         fsUserIntegralLogs.setIntegral(coinAmount);
         fsUserIntegralLogs.setPhone(user.getPhone());
         fsUserIntegralLogs.setBalance(balance);

+ 9 - 0
fs-user-app/src/main/java/com/fs/app/controller/CommonController.java

@@ -41,6 +41,7 @@ import com.fs.event.TemplateEvent;
 import com.fs.event.TemplateListenEnum;
 import com.fs.event.WeixinTemplateService;
 import com.fs.framework.config.ServerConfig;
+import com.fs.his.config.AppConfig;
 import com.fs.his.config.AppPageConfig;
 import com.fs.his.config.FsSmsConfig;
 import com.fs.his.config.FsSysConfig;
@@ -737,4 +738,12 @@ public class CommonController {
 		AppPageConfig config = JSONUtil.toBean(json, AppPageConfig.class);
 		return R.ok().put("appPageConfig",config);
 	}
+
+	@ApiOperation("获取提现开关")
+	@GetMapping("/getAppWithdraw")
+	public R getAppWithdraw(){
+		String json = configService.selectConfigByKey("app.config");
+		AppConfig config = JSONUtil.toBean(json, AppConfig.class);
+		return R.ok().put("isOpenWithdraw",config.getIsOpenWithdraw()==null?0:config.getIsOpenWithdraw());
+	}
 }

+ 35 - 2
fs-user-app/src/main/java/com/fs/app/controller/UserController.java

@@ -15,6 +15,7 @@ import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.domain.FsUser;
 import com.fs.his.dto.FindUsersByDTO;
+import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.param.FindUserByParam;
 import com.fs.his.param.FsUserCouponUParam;
 import com.fs.his.param.FsUserEditPushParam;
@@ -57,8 +58,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static com.fs.his.utils.PhoneUtil.decryptPhoneMk;
-import static com.fs.his.utils.PhoneUtil.encryptPhone;
+import static com.fs.his.utils.PhoneUtil.*;
 
 
 @Api("个人中心")
@@ -84,6 +84,9 @@ public class UserController extends  AppBaseController {
     @Autowired
     private IQwUserService qwUserService;
 
+    @Autowired
+    private FsUserMapper userMapper;
+
 
     @Autowired
     private IFsUserService fsUserService;
@@ -391,4 +394,34 @@ public class UserController extends  AppBaseController {
         map.put("qwUser",qwUserVO);
         return R.ok().put("data",map);
     }
+
+    @GetMapping("/findUser")
+    public R findUser(@Param("keyword") String keyword) {
+        Long userId = Long.parseLong(keyword);
+        FsUser user = null;
+        user = userService.selectFsUserByUserId(userId);
+        if(user == null){
+            user = findUserByPhone(keyword);
+        }
+        if (user != null) {
+            return R.ok().put("data", user);
+        } else {
+            return R.error("用户不存在!");
+        }
+    }
+
+    private FsUser findUserByPhone(String phone) {
+        // 先根据加密手机号查询用户
+        String jiami = (encryptPhone(phone));
+        FsUser user = userMapper.selectFsUserByPhoneLimitOne(jiami);
+        if (user == null) {
+            user = userMapper.selectFsUserByPhoneLimitOne(encryptPhoneOldKey(phone));
+        }
+        // 如果没有找到用户,再根据手机号查询
+        if (user == null) {
+            user = userMapper.selectFsUserByPhoneLimitOne(phone);
+
+        }
+        return user;
+    }
 }

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

@@ -166,7 +166,7 @@ public class CourseFsUserController extends AppBaseController {
             Long userId = Long.parseLong(getUserId());
             param.setUserId(userId);
         }
-        String sourceType = request.getHeader("sourcetype");
+        String sourceType = request.getHeader("Sourcetype");
         if(StringUtils.isNotBlank(sourceType)){
             if ("APP".equals(sourceType)) {
                 param.setSource(3);

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

@@ -328,7 +328,7 @@ public class CourseQwController extends AppBaseController {
     @UserOperationLog(operationType = FsUserOperationEnum.SENDREWARD)
     public R sendReward(@RequestBody @Valid FsCourseSendRewardUParam param,HttpServletRequest request)
     {
-        String sourceType = request.getHeader("sourcetype");
+        String sourceType = request.getHeader("Sourcetype");
         if(StringUtils.isNotBlank(sourceType)){
             if ("APP".equals(sourceType)) {
                 param.setSource(3);