فهرست منبع

下载添加积分,积分展示优化

xgb 3 هفته پیش
والد
کامیت
6d094eb7d5

+ 2 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -739,4 +739,6 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
     List<FsUserCourseAppListVO> selectCourseByUserIdForStatusFinish(Long userId);
 
     List<FsUserCourseAppListVO> selectCourseByUserIdForStatusNotFinish(Long userId);
+
+    FsUserCourseAppListVO getAppCourseLearningOne(long userId);
 }

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

@@ -149,4 +149,6 @@ public interface IFsUserCourseService {
      * 获取课程选项列表
      */
     List<OptionsVO> selectCourseOptionsList();
+
+    R getAppCourseLearningOne(long userId);
 }

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

@@ -818,6 +818,24 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
     public List<OptionsVO> selectCourseOptionsList() {
         return fsUserCourseMapper.selectCourseOptionsList();
     }
+
+    @Override
+    public R getAppCourseLearningOne(long userId) {
+        //
+        FsUserCourseAppListVO item=fsCourseWatchLogMapper.getAppCourseLearningOne(userId);
+        if(item==null){
+            return R.error("查询无记录");
+        }else {
+            String redisKey = "h5wxuser:watch:duration:" + item.getUserId() + ":" + item.getVideoId() + ":" + item.getCompanyUserId();
+            String durationCurrent = redisCache.getCacheObject(redisKey);
+            if(durationCurrent != null && !durationCurrent.isEmpty()){
+                item.setDuration(Long.parseLong(durationCurrent));
+            }
+            item.setVideoDuration(getFsUserVideoDuration(item.getVideoId()));
+        }
+        return R.ok().put("data", item);
+    }
+
     @Override
     public R getAppCourseList(FsUserCourseAppListParam param) {
         // 查询看课记录

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

@@ -26,4 +26,5 @@ public class IntegralConfig implements Serializable {
     private Integer integralAddPatient;//新用户完善就诊人获得积分
     private Integer integralAddUserAddress;//新用户填写收货地址获取积分
     private Integer integralSubscriptCourse;//付费课程订阅积分比例
+    private Integer downloadAppIntegral; // 首次下载app获取积分
 }

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

@@ -8,6 +8,8 @@ import javax.validation.constraints.NotNull;
 @Data
 public class FsUserAddPointsParam {
 
+    @NotNull(message = "会员ID不能为空")
+    private Long userId;
 
     @NotNull(message = "积分不能为空")
     @Min(value = 1, message = "允许添加积分最小为1")

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

@@ -20,6 +20,7 @@ import com.fs.his.vo.FsUserIntegralLogsListUVO;
 import com.fs.his.vo.FsUserIntegralLogsListVO;
 import com.fs.his.vo.SubIntegralVO;
 import com.fs.system.service.ISysConfigService;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -370,8 +371,11 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
                     if (!integralLogs.isEmpty()){
                         return R.error("已领取过该积分");
                     }
-                    integralNum = param.getPoints();
+                    integralNum = config.getDownloadAppIntegral();
                     logsType = FsUserIntegralLogTypeEnum.TYPE_28;
+                    if(StringUtils.isBlank(param.getRemark())){
+                        param.setRemark(logsType.getDesc());
+                    }
                     break;
                 default:
                     return R.error("积分类型错误,联系管理员");

+ 10 - 0
fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -1236,6 +1236,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           and l.create_time &lt;= CONCAT(CURDATE(), ' 23:59:59')
     </select>
 
+    <select id="getAppCourseLearningOne" resultType="com.fs.course.vo.FsUserCourseAppListVO">
+        select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId  from fs_course_watch_log l
+        left join fs_user_course c on l.course_id =c.course_id
+        left join fs_user_course_video r on r.video_id=l.video_id
+        WHERE l.user_id = #{userId}
+          and l.create_time &gt;= CONCAT(CURDATE(), ' 00:00:00')
+          and l.create_time &lt;= CONCAT(CURDATE(), ' 23:59:59')
+         order by l.update_time DESC LIMIT 1
+    </select>
+
     <select id="selectCompanyBaseInfo" resultType="com.fs.course.vo.FsCourseReportVO">
         SELECT
         c.company_id AS companyId,

+ 14 - 2
fs-user-app/src/main/java/com/fs/app/controller/CourseController.java

@@ -386,8 +386,20 @@ public class CourseController extends  AppBaseController{
         return courseService.getLinkData(linkId);
     }
 
-
-
+    /**
+     * @Description: APP 用户获取课程列表
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/1/21 9:48
+     */
+    @ApiOperation("APP用户获取课程列表")
+    @Login
+    @GetMapping("/getAppCourseLearningOne")
+    public R getAppCourseLearningOne()
+    {
+        return courseService.getAppCourseLearningOne(Long.parseLong(getUserId()));
+    }
 
     @Login
     @ApiOperation("判断是否注册")

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

@@ -1,8 +1,16 @@
 package com.fs.app.controller.app;
 
+import com.fs.app.annotation.Login;
 import com.fs.app.controller.AppBaseController;
+import com.fs.common.core.domain.R;
+import com.fs.his.param.FsUserAddIntegralTemplateParam;
+import com.fs.his.service.IFsUserIntegralLogsService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -14,8 +22,26 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Api("app登录接口")
 @RestController
-@RequestMapping(value="/app/api")
+@RequestMapping(value = "/app/api")
 @Slf4j
 public class AppController extends AppBaseController {
 
+    @Autowired
+    private IFsUserIntegralLogsService userIntegralLogsService;
+
+    /**
+     * @Description: APP 获取积分  28-下载
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/2/3 11:06
+     */
+    @ApiOperation("添加积分")
+    @Login
+    @PostMapping("/addIntegral")
+    public R addIntegral(@RequestBody FsUserAddIntegralTemplateParam param) {
+        param.setUserId(Long.parseLong(getUserId()));
+        return userIntegralLogsService.addIntegralTemplate(param);
+    }
+
 }