三七 1 week ago
parent
commit
2db60de10a

+ 6 - 0
fs-service/src/main/java/com/fs/course/config/CourseConfig.java

@@ -52,6 +52,12 @@ public class CourseConfig implements Serializable {
      */
     private String userCourseAuthDomain;
 
+    /**
+     * 会员看课
+     * 炮灰看课发红包-服务号发
+     */
+    private String userCourseH5Reward;
+
     /**
      * 是否绑定
      */

+ 1 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCoursePeriodDays.java

@@ -96,6 +96,7 @@ public class FsUserCoursePeriodDays extends BaseEntityTow {
     private LocalDate maxDate;
 
     /** 项目id */
+    @TableField(exist = false)
     private Long projectId;
 
 }

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

@@ -27,7 +27,7 @@ public class FsCourseSendRewardUParam implements Serializable
     private Integer sendType;
     private Long periodId;
 
-    private String appId;
+    private String appId; //前端传来的小程序的appid
 
     private String code;
 

+ 2 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -1210,6 +1210,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         if (StringUtils.isNotEmpty(config.getMpAppId())){
             packetParam.setMpAppId(config.getMpAppId());
         }
+        //组装发红包数据
         packetParam.setAmount(amount);
         packetParam.setSource(param.getSource());
         packetParam.setRedPacketMode(config.getRedPacketMode());
@@ -1834,6 +1835,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         vo.setPlayDuration(duration);
         //判断营期的课程状态是否是进行中
         if(param.getId() != null){
+
             FsUserCoursePeriodDays days = fsUserCoursePeriodDaysMapper.selectById(param.getId());
 
             // 查询销售设置的看课时间

+ 15 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -25,6 +25,7 @@ import com.fs.company.param.FsStoreStatisticsParam;
 import com.fs.company.vo.FsStorePaymentStatisticsVO;
 import com.fs.core.config.WxPayProperties;
 import com.fs.core.utils.OrderCodeUtils;
+import com.fs.course.config.CourseConfig;
 import com.fs.course.config.RedPacketConfig;
 import com.fs.course.domain.FsCourseRedPacketLog;
 import com.fs.course.mapper.FsCourseRedPacketLogMapper;
@@ -490,12 +491,26 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
         }
         result.put("mchId",config.getMchId()+"");
         result.put("isNew",config.getIsNew());
+
+        // 获取配置信息 (这个地方返回炮灰服务号落地url,调用地方太多,无法一级一级下传,直接再拿一次)
+        String courseJson = configService.selectConfigByKey("course.config");
+        CourseConfig courseConfig = JSONUtil.toBean(courseJson, CourseConfig.class);
+        result.put("h5RewardUrl", Optional.ofNullable(courseConfig)
+                .map(CourseConfig::getUserCourseH5Reward)
+                .orElse(null));
+
         System.out.println("红包返回:"+result);
         return result;
     }
 
     // 内部方法:处理新版本的发红包逻辑
     private R sendRedPacketV3Internal(WxSendRedPacketParam param, RedPacketConfig config) {
+        //炮灰小程序,发服务号
+        if (param.getSource()==1 && param.getUser().getMpOpenId()!=null && StringUtils.isNotEmpty(param.getMpAppId())){
+            config.setAppId(param.getMpAppId());
+            param.setOpenId(param.getUser().getMpOpenId());
+        }
+
         WxPayConfig payConfig = new WxPayConfig();
         BeanUtils.copyProperties(config, payConfig);
         WxPayService wxPayService = new WxPayServiceImpl();

+ 20 - 12
fs-user-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -3,6 +3,7 @@ package com.fs.app.controller;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.core.date.DateTime;
+import com.fs.app.param.FsUserLoginByCourseMpParam;
 import com.fs.app.param.FsUserLoginByMpParam;
 import com.fs.app.utils.JwtUtils;
 import com.fs.common.core.domain.R;
@@ -101,22 +102,29 @@ public class WxH5MpController {
             WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
             WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
 
-            // 处理用户信息
-            FsUser user = processUserInfo(wxMpUser, company,companyUser,param);
 
-            // 检查用户是否已绑定其他销售
-            FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
-            if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
-                return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
-            }
+            //临时的手动和自动 融合
+            if (param.getProjectId() == null || param.getProjectId() == 0L) {
 
-//            // 处理用户与公司的关系
-//            processUserCompanyRelationship(user, param, companyUser, company);
+                // 处理用户信息
+                FsUser user = processUserInfoByCourseLoginByMp(wxMpUser);
+                // 生成token并返回结果
+                return generateLoginResult(user);
 
+            }else {
+                // 处理用户信息
+                FsUser user = processUserInfo(wxMpUser, company,companyUser,param);
+
+                // 检查用户是否已绑定其他销售
+                FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
+                if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
+                    return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
+                }
+
+                return generateLoginResult(user);
+            }
 
 
-            // 生成token并返回结果
-            return generateLoginResult(user);
         } catch (WxErrorException e) {
             this.logger.error(e.getMessage(), e);
             return R.error("授权失败," + e.getMessage());
@@ -125,7 +133,7 @@ public class WxH5MpController {
 
     @ApiOperation("炮灰小程序-公众号登录转小程序")
     @PostMapping("/courseLoginByMp")
-    public R courseLoginByMp(@Valid @RequestBody FsUserLoginByMpParam param) {
+    public R courseLoginByMp(@Valid @RequestBody FsUserLoginByCourseMpParam param) {
         log.info("=====================进入炮灰小程序-公众号授权登录, 入参: {}", param);
 
         // 参数校验

+ 30 - 0
fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByCourseMpParam.java

@@ -0,0 +1,30 @@
+package com.fs.app.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class FsUserLoginByCourseMpParam implements Serializable {
+    @NotBlank(message = "code参数缺失")
+    private String code;
+    private Long videoId;
+
+    @NotNull(message = "公司id不能为空")
+    @ApiModelProperty(value = "公司id")
+    private Long companyId;
+
+    @NotNull(message = "销售id不能为空")
+    @ApiModelProperty(value = "销售id")
+    private Long companyUserId;
+
+    private String appId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+}

+ 2 - 1
fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByMpParam.java

@@ -20,7 +20,8 @@ public class FsUserLoginByMpParam implements Serializable {
     @NotNull(message = "销售id不能为空")
     @ApiModelProperty(value = "销售id")
     private Long companyUserId;
-    @NotNull(message = "项目ID不能为空")
+
+//    @NotNull(message = "项目ID不能为空")
     @ApiModelProperty(value = "项目ID")
     private Long projectId;