Browse Source

feat(course): 记录用户访问的小程序appId

- 在用户访问课程时记录appId到fs_user表
- 添加addAppIdIfNotExists方法避免重复记录
- 更新FsUserCourseAddCompanyUserParam参数类支持appId字段
- 替换JSON工具类为alibaba fastjson
- 注入IFsUserService依赖用于用户信息更新
xw 4 days ago
parent
commit
255bc9f12d

+ 3 - 0
fs-service/src/main/java/com/fs/course/param/newfs/FsUserCourseAddCompanyUserParam.java

@@ -37,4 +37,7 @@ public class FsUserCourseAddCompanyUserParam implements Serializable {
     @ApiModelProperty(value = "项目ID")
     private Long projectId;
     private Integer isOpenCourse;
+    
+    @ApiModelProperty(value = "小程序appId")
+    private String appId;
 }

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

@@ -21,14 +21,16 @@ import com.fs.course.param.*;
 import com.fs.course.service.*;
 import com.fs.course.service.impl.TencentCloudCosService;
 import com.fs.course.vo.*;
+import com.fs.his.domain.FsUser;
 import com.fs.his.enums.FsUserOperationEnum;
 import com.fs.his.service.IFsIntegralGoodsService;
+import com.fs.his.service.IFsUserService;
 import com.fs.sop.domain.QwSop;
 import com.fs.sop.service.IQwSopService;
 import com.fs.system.service.ISysConfigService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.hc.openapi.tool.fastjson.JSON;
+import com.alibaba.fastjson.JSON;
 import io.jsonwebtoken.Claims;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -85,6 +87,8 @@ public class CourseQwController extends AppBaseController {
     private IQwSopService qwSopService;
     @Autowired
     private FsUserCourseVideoRedPackageMapper fsUserCourseVideoRedPackageMapper;
+    @Autowired
+    private IFsUserService userService;
     @ApiOperation("查询全部公域的课程")
     @GetMapping("/getAppletCourse")
     public R getAppletCourse()
@@ -299,6 +303,21 @@ public class CourseQwController extends AppBaseController {
         R r = null;
         Long userId = Long.parseLong(getUserId());
         param.setUserId(userId);
+        
+        // 记录appId到fs_user表
+        if (StringUtils.isNotEmpty(param.getAppId())) {
+            FsUser user = userService.selectFsUserByUserId(userId);
+            if (user != null) {
+                String updatedAppId = addAppIdIfNotExists(user.getAppId(), param.getAppId());
+                if (!updatedAppId.equals(user.getAppId())) {
+                    FsUser userUpdate = new FsUser();
+                    userUpdate.setUserId(userId);
+                    userUpdate.setAppId(updatedAppId);
+                    userService.updateFsUser(userUpdate);
+                }
+            }
+        }
+        
         if(param.getIsOpen() == null || param.getIsOpen() == 0){
             r = courseVideoService.isAddKf(param);
         }else{
@@ -467,4 +486,34 @@ public class CourseQwController extends AppBaseController {
 
     }
 
+    /**
+     * 添加appId到用户的appId列表中(如果不存在)
+     * @param currentAppIds 当前用户已有的appId列表(逗号分隔)
+     * @param newAppId 新的appId
+     * @return 更新后的appId列表
+     */
+    private String addAppIdIfNotExists(String currentAppIds, String newAppId) {
+        // 如果新appId为空,返回原值
+        if (StringUtils.isEmpty(newAppId)) {
+            return currentAppIds == null ? "" : currentAppIds;
+        }
+
+        // 如果当前appId为空,直接返回新appId
+        if (StringUtils.isEmpty(currentAppIds)) {
+            return newAppId;
+        }
+
+        // 检查是否已存在
+        String[] appIdArray = currentAppIds.split(",");
+        for (String appId : appIdArray) {
+            if (appId.trim().equals(newAppId.trim())) {
+                // 已存在,不需要添加
+                return currentAppIds;
+            }
+        }
+
+        // 不存在,追加到末尾
+        return currentAppIds + "," + newAppId;
+    }
+
 }

+ 46 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/CourseWxH5ScrmController.java

@@ -6,6 +6,7 @@ import com.fs.app.controller.AppBaseController;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
+import com.fs.common.utils.StringUtils;
 import com.fs.course.param.FsCourseQuestionAnswerUParam;
 import com.fs.course.param.FsCourseSendRewardUParam;
 import com.fs.course.param.FsUserCourseVideoFinishUParam;
@@ -16,6 +17,7 @@ import com.fs.course.service.*;
 import com.fs.course.vo.FsUserCourseVideoH5VO;
 import com.fs.course.vo.newfs.FsUserCourseVideoLinkDetailsVO;
 import com.fs.his.domain.FsUser;
+import com.fs.hisStore.domain.FsUserScrm;
 import com.fs.hisStore.service.IFsUserScrmService;
 import com.fs.system.service.ISysConfigService;
 import io.swagger.annotations.Api;
@@ -61,6 +63,21 @@ public class CourseWxH5ScrmController extends AppBaseController {
     public ResponseResult<FsUser> isAddCompanyUser(@Valid @RequestBody FsUserCourseAddCompanyUserParam param) {
         Long userId = Long.parseLong(getUserId());
         param.setUserId(userId);
+        
+        // 记录appId到fs_user表
+        if (StringUtils.isNotEmpty(param.getAppId())) {
+            FsUserScrm user = fsUserService.selectFsUserById(userId);
+            if (user != null) {
+                String updatedAppId = addAppIdIfNotExists(user.getAppId(), param.getAppId());
+                if (!updatedAppId.equals(user.getAppId())) {
+                    FsUserScrm userUpdate = new FsUserScrm();
+                    userUpdate.setUserId(userId);
+                    userUpdate.setAppId(updatedAppId);
+                    fsUserService.updateFsUser(userUpdate);
+                }
+            }
+        }
+        
         return courseVideoService.isAddCompanyUser(param);
     }
 
@@ -131,5 +148,34 @@ public class CourseWxH5ScrmController extends AppBaseController {
         logger.error("【h5看课中途报错】:{}",msg);
     }
 
+    /**
+     * 添加appId到用户的appId列表中(如果不存在)
+     * @param currentAppIds 当前用户已有的appId列表(逗号分隔)
+     * @param newAppId 新的appId
+     * @return 更新后的appId列表
+     */
+    private String addAppIdIfNotExists(String currentAppIds, String newAppId) {
+        // 如果新appId为空,返回原值
+        if (StringUtils.isEmpty(newAppId)) {
+            return currentAppIds == null ? "" : currentAppIds;
+        }
+
+        // 如果当前appId为空,直接返回新appId
+        if (StringUtils.isEmpty(currentAppIds)) {
+            return newAppId;
+        }
+
+        // 检查是否已存在
+        String[] appIdArray = currentAppIds.split(",");
+        for (String appId : appIdArray) {
+            if (appId.trim().equals(newAppId.trim())) {
+                // 已存在,不需要添加
+                return currentAppIds;
+            }
+        }
+
+        // 不存在,追加到末尾
+        return currentAppIds + "," + newAppId;
+    }
 
 }