Преглед изворни кода

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_his_scrm_java

caoliqin пре 2 недеља
родитељ
комит
44140c36f0
32 измењених фајлова са 313 додато и 21 уклоњено
  1. 37 4
      fs-admin/src/main/java/com/fs/company/controller/CompanyConfigController.java
  2. 38 0
      fs-admin/src/main/java/com/fs/course/controller/FsUserCourseCommentController.java
  3. 7 0
      fs-admin/src/main/java/com/fs/his/controller/FsIntegralGoodsController.java
  4. 12 0
      fs-admin/src/main/java/com/fs/web/controller/system/SysConfigController.java
  5. 1 0
      fs-company/src/main/java/com/fs/company/controller/common/CommonController.java
  6. 37 0
      fs-company/src/main/java/com/fs/company/controller/company/SysConfigController.java
  7. 3 0
      fs-service/src/main/java/com/fs/course/domain/FsUserCourseComment.java
  8. 14 5
      fs-service/src/main/java/com/fs/course/mapper/FsUserCourseCommentMapper.java
  9. 1 1
      fs-service/src/main/java/com/fs/course/mapper/FsUserCourseVideoMapper.java
  10. 6 0
      fs-service/src/main/java/com/fs/course/param/FsUserCourseCommentParam.java
  11. 7 1
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseCommentServiceImpl.java
  12. 4 1
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  13. 3 3
      fs-service/src/main/java/com/fs/course/vo/FsCourseWatchLogListVO.java
  14. 3 0
      fs-service/src/main/java/com/fs/course/vo/FsUserCourseCommentListUVO.java
  15. 4 0
      fs-service/src/main/java/com/fs/course/vo/FsUserCourseCommentListVO.java
  16. 12 0
      fs-service/src/main/java/com/fs/his/mapper/FsIntegralGoodsMapper.java
  17. 22 0
      fs-service/src/main/java/com/fs/his/param/FsIntegralGoodsParam.java
  18. 9 0
      fs-service/src/main/java/com/fs/his/service/IFsIntegralGoodsService.java
  19. 22 0
      fs-service/src/main/java/com/fs/his/service/impl/FsIntegralGoodsServiceImpl.java
  20. 4 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsStoreProductScrm.java
  21. 1 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderItemScrmMapper.java
  22. 27 1
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java
  23. 4 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderExportVO.java
  24. 3 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportVO.java
  25. 3 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportZMVO.java
  26. 3 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreProductListQueryVO.java
  27. 1 0
      fs-service/src/main/resources/application-config-dev-jnlzjk.yml
  28. 2 2
      fs-service/src/main/resources/application-config-druid-jnlzjk.yml
  29. 5 1
      fs-service/src/main/resources/mapper/course/FsUserCourseCommentMapper.xml
  30. 1 0
      fs-service/src/main/resources/mapper/his/FsIntegralCountMapper.xml
  31. 13 0
      fs-service/src/main/resources/mapper/his/FsIntegralGoodsMapper.xml
  32. 4 1
      fs-user-app/src/main/java/com/fs/app/controller/course/CourseQwController.java

+ 37 - 4
fs-admin/src/main/java/com/fs/company/controller/CompanyConfigController.java

@@ -3,14 +3,17 @@ package com.fs.company.controller;
 
 
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.model.LoginUser;
+import com.fs.common.utils.ServletUtils;
+import com.fs.company.domain.CompanyConfig;
 import com.fs.company.service.ICompanyConfigService;
 import com.fs.company.service.ICompanyConfigService;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.service.ISysConfigService;
 import com.fs.system.service.ISysConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 
 /**
 /**
  * 系统配置
  * 系统配置
@@ -44,5 +47,35 @@ public class CompanyConfigController extends BaseController
     }
     }
 
 
 
 
+    /**
+    * 修改的是 销售端的配置
+    */
+    @PostMapping(value = "/editCompanyConfig")
+    public R edit(@Validated @RequestBody CompanyConfig companyConfig)
+    {
+        companyConfigService.updateCompanyConfig(companyConfig);
+        return R.ok("操作成功");
+    }
+
+
+    /**
+     * 根据参数键名查询参数值
+     */
+    @GetMapping(value = "/getCompanyConfigKey/{configKey}/{companyId}")
+    public R getConfigKey(@PathVariable String configKey,@PathVariable Long companyId)
+    {
+        CompanyConfig config=companyConfigService.selectCompanyConfigByKey(companyId,configKey);
+        if(config==null){
+            config=new CompanyConfig();
+            config.setCompanyId(companyId);
+            config.setConfigKey(configKey);
+            config.setConfigType("N");
+            companyConfigService.insertCompanyConfig(config);
+
+        }
+        return R.ok().put("data",config);
+
+    }
+
 
 
 }
 }

+ 38 - 0
fs-admin/src/main/java/com/fs/course/controller/FsUserCourseCommentController.java

@@ -270,6 +270,44 @@ public class FsUserCourseCommentController extends BaseController
         }
         }
     }
     }
 
 
+    /**
+     * 修改用户留言可见范围(0-自己可见,1-全部人可见)
+     */
+    @PreAuthorize("@ss.hasPermi('course:userCourseComment:edit')")
+    @Log(title = "用户留言可见范围", businessType = BusinessType.UPDATE)
+    @PutMapping("/updateVisibleAll")
+    public AjaxResult updateVisibleAll(@RequestBody FsUserCourseComment param) {
+        if (param.getCommentId() == null || param.getVisibleAll() == null) {
+            return AjaxResult.error("参数不完整");
+        }
+        if (param.getVisibleAll() != 0 && param.getVisibleAll() != 1) {
+            return AjaxResult.error("可见范围参数无效");
+        }
+        FsUserCourseComment update = new FsUserCourseComment();
+        update.setCommentId(param.getCommentId());
+        update.setVisibleAll(param.getVisibleAll());
+        return toAjax(fsUserCourseCommentService.updateFsUserCourseComment(update));
+    }
+
+    /**
+     * 查询指定课程小节下的用户留言(排除精选留言 type=3,支持分页)
+     */
+    @PreAuthorize("@ss.hasPermi('course:userCourseComment:list')")
+    @GetMapping("/sectionUserComments")
+    public TableDataInfo sectionUserComments(
+            @RequestParam Long courseId,
+            @RequestParam Long videoId,
+            @RequestParam(value = "nickName", required = false) String nickName) {
+        startPage();
+        FsUserCourseCommentParam param = new FsUserCourseCommentParam();
+        param.setCourseId(courseId);
+        param.setVideoId(videoId);
+        param.setNickName(nickName);
+        param.setExcludeFeatured(true);
+        List<FsUserCourseCommentListVO> list = fsUserCourseCommentService.selectFsUserCourseCommentListVO(param);
+        return getDataTable(list);
+    }
+
     /**
     /**
      * 查询精选留言历史列表(type=3)
      * 查询精选留言历史列表(type=3)
      */
      */

+ 7 - 0
fs-admin/src/main/java/com/fs/his/controller/FsIntegralGoodsController.java

@@ -8,6 +8,7 @@ import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.his.domain.FsIntegralGoods;
 import com.fs.his.domain.FsIntegralGoods;
+import com.fs.his.param.FsIntegralGoodsParam;
 import com.fs.his.service.IFsIntegralGoodsService;
 import com.fs.his.service.IFsIntegralGoodsService;
 import com.fs.his.utils.RedisCacheUtil;
 import com.fs.his.utils.RedisCacheUtil;
 import com.fs.his.vo.FsIntegralGoodsChooseVO;
 import com.fs.his.vo.FsIntegralGoodsChooseVO;
@@ -148,4 +149,10 @@ public class FsIntegralGoodsController extends BaseController
         List<FsIntegralGoodsChooseVO> list = fsIntegralGoodsService.getChooseIntegralGoodsListByMap(params);
         List<FsIntegralGoodsChooseVO> list = fsIntegralGoodsService.getChooseIntegralGoodsListByMap(params);
         return R.ok().put("data", new PageInfo<>(list));
         return R.ok().put("data", new PageInfo<>(list));
     }
     }
+
+    @PostMapping("/batchUpdateIntegralGoods")
+    public R batchUpdateIntegralGoods(@RequestBody FsIntegralGoodsParam integralGoodsParam) {
+        fsIntegralGoodsService.batchUpdateIntegralGoods(integralGoodsParam);
+        return R.ok();
+    }
 }
 }

+ 12 - 0
fs-admin/src/main/java/com/fs/web/controller/system/SysConfigController.java

@@ -3,9 +3,11 @@ package com.fs.web.controller.system;
 import java.util.List;
 import java.util.List;
 
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.SecurityUtils;
 import com.fs.common.utils.SecurityUtils;
+import com.fs.course.config.CourseConfig;
 import com.fs.sop.service.impl.QwSopServiceImpl;
 import com.fs.sop.service.impl.QwSopServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -136,6 +138,16 @@ public class SysConfigController extends BaseController {
         return AjaxResult.success(config);
         return AjaxResult.success(config);
     }
     }
 
 
+    /**
+    * 获取奖励类型配置
+    */
+    @GetMapping(value = "/getCourseConfigByRewardType")
+    public R getCourseConfigByRewardType() {
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+        return R.ok().put("rewardType",config.getRewardType());
+    }
+
     @PostMapping(value = "/updateConfigByKey")
     @PostMapping(value = "/updateConfigByKey")
     @Log(title = "更改参数", businessType = BusinessType.UPDATE)
     @Log(title = "更改参数", businessType = BusinessType.UPDATE)
     @RepeatSubmit
     @RepeatSubmit

+ 1 - 0
fs-company/src/main/java/com/fs/company/controller/common/CommonController.java

@@ -16,6 +16,7 @@ import com.fs.common.utils.file.FileUtils;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.utils.AudioUtils;
 import com.fs.company.utils.AudioUtils;
 import com.fs.company.vo.WangUploadVO;
 import com.fs.company.vo.WangUploadVO;
+import com.fs.course.config.CourseConfig;
 import com.fs.course.service.ITencentCloudCosService;
 import com.fs.course.service.ITencentCloudCosService;
 import com.fs.framework.config.ServerConfig;
 import com.fs.framework.config.ServerConfig;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.security.LoginUser;

+ 37 - 0
fs-company/src/main/java/com/fs/company/controller/company/SysConfigController.java

@@ -0,0 +1,37 @@
+package com.fs.company.controller.company;
+
+import cn.hutool.json.JSONUtil;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.R;
+import com.fs.common.core.redis.RedisCache;
+import com.fs.course.config.CourseConfig;
+import com.fs.system.service.ISysConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 参数配置 信息操作处理
+ */
+@RestController
+@RequestMapping("/system/config")
+public class SysConfigController extends BaseController {
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    public RedisCache redisCache;
+
+
+    /**
+    * 获取奖励类型配置
+    */
+    @GetMapping(value = "/getCourseConfigByRewardType")
+    public R getCourseConfigByRewardType() {
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+        return R.ok().put("rewardType",config.getRewardType());
+    }
+
+
+}

+ 3 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCourseComment.java

@@ -61,4 +61,7 @@ public class FsUserCourseComment extends BaseEntity
     /** 视频ID */
     /** 视频ID */
     private Long videoId;
     private Long videoId;
 
 
+    /** 是否全部人可见:0-自己可见,1-全部人可见 */
+    private Integer visibleAll;
+
 }
 }

+ 14 - 5
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseCommentMapper.java

@@ -70,17 +70,20 @@ public interface FsUserCourseCommentMapper
     public int deleteFsUserCourseCommentByCommentIds(Long[] commentIds);
     public int deleteFsUserCourseCommentByCommentIds(Long[] commentIds);
 
 
     @Select({"<script> " +
     @Select({"<script> " +
-            "select c.*,u.nick_name,u.phone,u.avatar from fs_user_course_comment c LEFT JOIN fs_user u ON c.user_id=u.user_id"+
+            "select c.*,u.nick_name as nickNameOriginal,u.phone,u.avatar from fs_user_course_comment c LEFT JOIN fs_user u ON c.user_id=u.user_id"+
             "<where>  \n" +
             "<where>  \n" +
             "            <if test=\"userId != null \"> and c.user_id = #{userId}</if>\n" +
             "            <if test=\"userId != null \"> and c.user_id = #{userId}</if>\n" +
             "            <if test=\"courseId != null \"> and c.course_id = #{courseId}</if>\n" +
             "            <if test=\"courseId != null \"> and c.course_id = #{courseId}</if>\n" +
+            "            <if test=\"videoId != null \"> and c.video_id = #{videoId}</if>\n" +
             "            <if test=\"type != null \"> and c.type = #{type}</if>\n" +
             "            <if test=\"type != null \"> and c.type = #{type}</if>\n" +
+            "            <if test=\"excludeFeatured != null and excludeFeatured == true\"> and (c.type is null or c.type != 3) and (c.is_del = 0 or c.is_del is null)</if>\n" +
             "            <if test=\"parentId != null \"> and c.parent_id = #{parentId}</if>\n" +
             "            <if test=\"parentId != null \"> and c.parent_id = #{parentId}</if>\n" +
             "            <if test=\"content != null  and content != ''\"> and c.content = #{content}</if>\n" +
             "            <if test=\"content != null  and content != ''\"> and c.content = #{content}</if>\n" +
             "            <if test=\"replyCount != null \"> and c.reply_count = #{replyCount}</if>\n" +
             "            <if test=\"replyCount != null \"> and c.reply_count = #{replyCount}</if>\n" +
+            "            <if test=\"nickName != null and nickName != ''\"> and (u.nick_name like concat('%', #{nickName}, '%') or c.nick_name like concat('%', #{nickName}, '%'))</if>\n" +
             "            <if test=\"phone != null \"> and u.phone = #{phone}</if>\n" +
             "            <if test=\"phone != null \"> and u.phone = #{phone}</if>\n" +
             "        </where>" +
             "        </where>" +
-            "order by comment_id desc"+
+            "order by c.comment_id desc"+
             "</script>"})
             "</script>"})
     List<FsUserCourseCommentListVO> selectFsUserCourseCommentListVO(FsUserCourseCommentParam fsUserCourseComment);
     List<FsUserCourseCommentListVO> selectFsUserCourseCommentListVO(FsUserCourseCommentParam fsUserCourseComment);
     @Select("select c.*,u.nick_name,u.phone from fs_user_course_comment c LEFT JOIN fs_user u ON c.user_id=u.user_id where comment_id=#{commentId}")
     @Select("select c.*,u.nick_name,u.phone from fs_user_course_comment c LEFT JOIN fs_user u ON c.user_id=u.user_id where comment_id=#{commentId}")
@@ -92,16 +95,22 @@ public interface FsUserCourseCommentMapper
             "LEFT JOIN fs_user u ON c.user_id=u.user_id " +
             "LEFT JOIN fs_user u ON c.user_id=u.user_id " +
             "LEFT  JOIN fs_user tu ON tu.user_id =c.to_user_id " +
             "LEFT  JOIN fs_user tu ON tu.user_id =c.to_user_id " +
             "LEFT JOIN fs_user_course_comment_like l ON c.comment_id=l.comment_id and #{userId}=l.user_id "+
             "LEFT JOIN fs_user_course_comment_like l ON c.comment_id=l.comment_id and #{userId}=l.user_id "+
-            "where c.is_del = 0 and  c.type = 1  \n" +
+            "where c.is_del = 0 and c.type = 1 \n" +
             "<if test=\"courseId != null \"> and c.course_id = #{courseId}</if>\n" +
             "<if test=\"courseId != null \"> and c.course_id = #{courseId}</if>\n" +
             "<if test=\"videoId != null \"> and c.video_id = #{videoId}</if>\n" +
             "<if test=\"videoId != null \"> and c.video_id = #{videoId}</if>\n" +
+            "<if test=\"userId != null\"> and (c.visible_all = 1 or c.user_id = #{userId})</if>\n" +
+            "<if test=\"userId == null\"> and c.visible_all = 1</if>\n" +
             "<if test=\"sortType != null and sortType == 1\"> order by c.likes desc </if>" +
             "<if test=\"sortType != null and sortType == 1\"> order by c.likes desc </if>" +
             "<if test=\"sortType != null and sortType == 2\"> order by c.comment_id desc </if>" +
             "<if test=\"sortType != null and sortType == 2\"> order by c.comment_id desc </if>" +
             "</script>"})
             "</script>"})
     List<FsUserCourseCommentListUVO> selectFsUserCourseCommentListUVO(FsUserCourseCommentUParam param);
     List<FsUserCourseCommentListUVO> selectFsUserCourseCommentListUVO(FsUserCourseCommentUParam param);
     @Select({"<script> " +
     @Select({"<script> " +
-            "select c.*,u.nick_name as nickNameOriginal,u.avatar,tu.nick_name to_nick_name from fs_user_course_comment c LEFT JOIN fs_user u ON c.user_id=u.user_id LEFT  JOIN fs_user tu ON tu.user_id =c.to_user_id " +
-            "where c.user_id=#{userId} " +
+            "select c.*,u.nick_name as nickNameOriginal,u.avatar,tu.nick_name to_nick_name from fs_user_course_comment c " +
+            "LEFT JOIN fs_user u ON c.user_id=u.user_id " +
+            "LEFT JOIN fs_user tu ON tu.user_id =c.to_user_id " +
+            "where (c.is_del = 0 or c.is_del is null) " +
+            "and (c.type is null or c.type != 3) " +
+            "and (c.user_id = #{userId} or c.visible_all = 1) " +
             "<if test='courseId != null'> and c.course_id = #{courseId}</if>" +
             "<if test='courseId != null'> and c.course_id = #{courseId}</if>" +
             "<if test='videoId != null'> and c.video_id = #{videoId}</if>" +
             "<if test='videoId != null'> and c.video_id = #{videoId}</if>" +
             " order by c.create_time desc" +
             " order by c.create_time desc" +

+ 1 - 1
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseVideoMapper.java

@@ -169,7 +169,7 @@ public interface FsUserCourseVideoMapper extends BaseMapper<FsUserCourseVideo> {
             "LEFT JOIN fs_user_course_video_red_package p on p.video_id= v.video_id and p.company_id =#{maps.companyId} and p.data_type = 1 " +
             "LEFT JOIN fs_user_course_video_red_package p on p.video_id= v.video_id and p.company_id =#{maps.companyId} and p.data_type = 1 " +
             "where v.is_del = 0 and  v.course_id = #{maps.courseId}   " +
             "where v.is_del = 0 and  v.course_id = #{maps.courseId}   " +
             "<if test = ' maps.title!=null and maps.title != \"\" '> " +
             "<if test = ' maps.title!=null and maps.title != \"\" '> " +
-            "and v.title = #{maps.title} " +
+            "and v.title like concat('%', #{maps.title}, '%')  " +
             "</if>" +
             "</if>" +
             " order by v.course_sort  " +
             " order by v.course_sort  " +
             "</script>"})
             "</script>"})

+ 6 - 0
fs-service/src/main/java/com/fs/course/param/FsUserCourseCommentParam.java

@@ -43,4 +43,10 @@ public class FsUserCourseCommentParam {
     private Date createTime;
     private Date createTime;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
     private Date updateTime;
+
+    /** 视频小节 id */
+    private Long videoId;
+
+    /** 为 true 时排除精选留言(type=3) */
+    private Boolean excludeFeatured;
 }
 }

+ 7 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseCommentServiceImpl.java

@@ -104,7 +104,13 @@ public class FsUserCourseCommentServiceImpl implements IFsUserCourseCommentServi
 
 
     @Override
     @Override
     public List<FsUserCourseCommentListVO> selectFsUserCourseCommentListVO(FsUserCourseCommentParam fsUserCourseComment) {
     public List<FsUserCourseCommentListVO> selectFsUserCourseCommentListVO(FsUserCourseCommentParam fsUserCourseComment) {
-        return fsUserCourseCommentMapper.selectFsUserCourseCommentListVO(fsUserCourseComment);
+        List<FsUserCourseCommentListVO> list = fsUserCourseCommentMapper.selectFsUserCourseCommentListVO(fsUserCourseComment);
+        list.forEach(comment -> {
+            if (StringUtils.isEmpty(comment.getNickName())) {
+                comment.setNickName(comment.getNickNameOriginal());
+            }
+        });
+        return list;
     }
     }
 
 
     @Override
     @Override

+ 4 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -4738,7 +4738,10 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
                     fsStoreProductScrm.setOffShelfTime(offShelfTime);
                     fsStoreProductScrm.setOffShelfTime(offShelfTime);
                     fsStoreProductScrm.setCardPopupTime(cardPopupTime);
                     fsStoreProductScrm.setCardPopupTime(cardPopupTime);
                     fsStoreProductScrm.setCardCloseTime(cardCloseTime);
                     fsStoreProductScrm.setCardCloseTime(cardCloseTime);
-
+                    if (originalNode != null && originalNode.has("hotSaleTags") && !originalNode.path("hotSaleTags").isNull()) {
+                        String hotSaleTags = originalNode.path("hotSaleTags").asText();
+                        fsStoreProductScrm.setHotSaleTags(StringUtils.isNotBlank(hotSaleTags) ? hotSaleTags : null);
+                    }
 
 
                     fsPackageListVOS.add(fsStoreProductScrm);
                     fsPackageListVOS.add(fsStoreProductScrm);
                 }
                 }

+ 3 - 3
fs-service/src/main/java/com/fs/course/vo/FsCourseWatchLogListVO.java

@@ -23,7 +23,7 @@ public class FsCourseWatchLogListVO extends BaseEntity
     private Long logId;
     private Long logId;
 
 
     /** 会员id */
     /** 会员id */
-//    @Excel(name = "会员id")
+    @Excel(name = "用户ID")
     private Long userId;
     private Long userId;
 
 
     /** 小程序昵称 */
     /** 小程序昵称 */
@@ -96,8 +96,8 @@ public class FsCourseWatchLogListVO extends BaseEntity
     @JsonFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date campPeriodTime;
     private Date campPeriodTime;
 
 
-    /** 所属团队 */
-//    @Excel(name = "所属团队")
+    /** 所属公司 */
+    @Excel(name = "所属公司")
     private String companyName;
     private String companyName;
 
 
     /** 所属团队编号 */
     /** 所属团队编号 */

+ 3 - 0
fs-service/src/main/java/com/fs/course/vo/FsUserCourseCommentListUVO.java

@@ -49,4 +49,7 @@ public class FsUserCourseCommentListUVO {
     private List<FsUserCourseCommentReplyListUVO> replyList;
     private List<FsUserCourseCommentReplyListUVO> replyList;
     //是否点赞 1是 0否
     //是否点赞 1是 0否
     private Integer isLike;
     private Integer isLike;
+
+    /** 是否全部人可见:0-自己可见,1-全部人可见 */
+    private Integer visibleAll;
 }
 }

+ 4 - 0
fs-service/src/main/java/com/fs/course/vo/FsUserCourseCommentListVO.java

@@ -18,6 +18,7 @@ public class FsUserCourseCommentListVO {
     @Excel(name = "课堂id")
     @Excel(name = "课堂id")
     private Long courseId;
     private Long courseId;
     private String nickName;
     private String nickName;
+    private String nickNameOriginal;
     private String phone;
     private String phone;
     private String avatar;
     private String avatar;
 
 
@@ -44,4 +45,7 @@ public class FsUserCourseCommentListVO {
     private Date createTime;
     private Date createTime;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
     private Date updateTime;
+
+    /** 是否全部人可见:0-自己可见,1-全部人可见 */
+    private Integer visibleAll;
 }
 }

+ 12 - 0
fs-service/src/main/java/com/fs/his/mapper/FsIntegralGoodsMapper.java

@@ -121,4 +121,16 @@ public interface FsIntegralGoodsMapper
     List<FsGoodsVO> getFsGoodsVOListByIds(@Param("goodsIds") List<Long> goodsIds);
     List<FsGoodsVO> getFsGoodsVOListByIds(@Param("goodsIds") List<Long> goodsIds);
 
 
     List<FsIntegralGoodsVo> selectAllByGoodsIds(@Param("goodsIds") Set<Long> goodsIds);
     List<FsIntegralGoodsVo> selectAllByGoodsIds(@Param("goodsIds") Set<Long> goodsIds);
+
+    /**
+     * 批量更新积分商品信息
+     *
+     * @param goodsIds 商品ID数组
+     * @param integral 所需积分
+     * @param cash 支付金额
+     * @return 结果
+     */
+    int batchUpdateIntegralGoods(@Param("goodsIds") Long[] goodsIds,
+                                 @Param("integral") Long integral,
+                                 @Param("cash") java.math.BigDecimal cash);
 }
 }

+ 22 - 0
fs-service/src/main/java/com/fs/his/param/FsIntegralGoodsParam.java

@@ -0,0 +1,22 @@
+package com.fs.his.param;
+
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class FsIntegralGoodsParam {
+
+     /**
+     * 商品id
+     */
+     private Long[] goodsIds;
+
+     /** 所需积分 */
+     private Long integral;
+
+     /** 支付金额 */
+     private BigDecimal cash;
+
+}

+ 9 - 0
fs-service/src/main/java/com/fs/his/service/IFsIntegralGoodsService.java

@@ -3,6 +3,7 @@ package com.fs.his.service;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.R;
 import com.fs.his.domain.FsIntegralGoods;
 import com.fs.his.domain.FsIntegralGoods;
 import com.fs.his.param.FsIntegralGoodsListUParam;
 import com.fs.his.param.FsIntegralGoodsListUParam;
+import com.fs.his.param.FsIntegralGoodsParam;
 import com.fs.his.vo.FsIntegralGoodsChooseVO;
 import com.fs.his.vo.FsIntegralGoodsChooseVO;
 import com.fs.his.vo.FsIntegralGoodsListUVO;
 import com.fs.his.vo.FsIntegralGoodsListUVO;
 import com.fs.his.vo.FsIntegralGoodsListVO;
 import com.fs.his.vo.FsIntegralGoodsListVO;
@@ -78,4 +79,12 @@ public interface IFsIntegralGoodsService
      * 获取选择积分商品列表
      * 获取选择积分商品列表
      */
      */
     List<FsIntegralGoodsChooseVO> getChooseIntegralGoodsListByMap(Map<String, Object> params);
     List<FsIntegralGoodsChooseVO> getChooseIntegralGoodsListByMap(Map<String, Object> params);
+
+    /**
+     * 批量更新积分商品信息
+     *
+     * @param param 批量更新参数
+     */
+    void batchUpdateIntegralGoods(FsIntegralGoodsParam param);
+
 }
 }

+ 22 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsIntegralGoodsServiceImpl.java

@@ -282,4 +282,26 @@ public class FsIntegralGoodsServiceImpl implements IFsIntegralGoodsService
     public List<FsIntegralGoodsChooseVO> getChooseIntegralGoodsListByMap(Map<String, Object> params) {
     public List<FsIntegralGoodsChooseVO> getChooseIntegralGoodsListByMap(Map<String, Object> params) {
         return fsIntegralGoodsMapper.getChooseIntegralGoodsListByMap(params);
         return fsIntegralGoodsMapper.getChooseIntegralGoodsListByMap(params);
     }
     }
+
+    /**
+     * 批量更新积分商品信息
+     *
+     * @param param 批量更新参数
+     */
+    @Override
+    public void batchUpdateIntegralGoods(com.fs.his.param.FsIntegralGoodsParam param) {
+        if (param.getGoodsIds() == null || param.getGoodsIds().length == 0) {
+            throw new ServiceException("请选择要更新的商品");
+        }
+
+        int result = fsIntegralGoodsMapper.batchUpdateIntegralGoods(
+                param.getGoodsIds(),
+                param.getIntegral(),
+                param.getCash()
+        );
+
+        if (result <= 0) {
+            throw new ServiceException("批量更新失败");
+        }
+    }
 }
 }

+ 4 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreProductScrm.java

@@ -379,6 +379,10 @@ public class FsStoreProductScrm extends BaseEntity
     @TableField(exist = false)
     @TableField(exist = false)
     private String offShelfTime;
     private String offShelfTime;
 
 
+    /** 热卖标签(逗号分隔,最多3个,可为空) */
+    @TableField(exist = false)
+    private String hotSaleTags;
+
     /** 过滤商品id */
     /** 过滤商品id */
     private Long[] excludeProductIds;
     private Long[] excludeProductIds;
 
 

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderItemScrmMapper.java

@@ -76,7 +76,7 @@ public interface FsStoreOrderItemScrmMapper
     List<FsStoreOrderItemVO> selectFsStoreOrderItemListAndProductByOrderId(Long id);
     List<FsStoreOrderItemVO> selectFsStoreOrderItemListAndProductByOrderId(Long id);
 
 
     @Select({"<script> " +
     @Select({"<script> " +
-            "select i.*,o.user_id,psps.cost,o.pay_postage,o.total_num,o.status,fspcs.cate_name, o.real_name,o.user_phone,o.user_address,o.create_time,o.pay_time,o.delivery_sn,o.delivery_name,o.delivery_id, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber,o.upload_time ,CASE WHEN o.certificates IS NULL OR o.certificates = '' THEN 0 ELSE 1 END AS is_upload,p.title as package_name,cts.name as scheduleName,sp_latest.pay_money, sp_latest.bank_transaction_id as bankTransactionId, o.delivery_send_time," +
+            "select i.*,o.user_id,u.nickname,psps.cost,o.pay_postage,o.total_num,o.status,fspcs.cate_name, o.real_name,o.user_phone,o.user_address,o.create_time,o.pay_time,o.delivery_sn,o.delivery_name,o.delivery_id, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber,o.upload_time ,CASE WHEN o.certificates IS NULL OR o.certificates = '' THEN 0 ELSE 1 END AS is_upload,p.title as package_name,cts.name as scheduleName,sp_latest.pay_money, sp_latest.bank_transaction_id as bankTransactionId, o.delivery_send_time," +
             " o.order_code, o.pay_price, o.pay_money, o.deduction_price,o.pay_delivery, o.order_type,psps.price " +
             " o.order_code, o.pay_price, o.pay_money, o.deduction_price,o.pay_delivery, o.order_type,psps.price " +
             ", CASE o.is_audit WHEN 1 THEN '是' ELSE '否' END AS isAudit " +
             ", CASE o.is_audit WHEN 1 THEN '是' ELSE '否' END AS isAudit " +
             ", sas.audit_remark as auditRemark, sas.reason_level1_text as reasonValue1, sas.reason_level2_text as reasonValue2 " +
             ", sas.audit_remark as auditRemark, sas.reason_level1_text as reasonValue1, sas.reason_level2_text as reasonValue2 " +

+ 27 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java

@@ -1280,7 +1280,33 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
 
 
     @Override
     @Override
     public List<FsStoreProductListQueryVO> selectFsStoreProductGoodListQuery(BaseQueryParam param) {
     public List<FsStoreProductListQueryVO> selectFsStoreProductGoodListQuery(BaseQueryParam param) {
-        return fsStoreProductMapper.selectFsStoreProductGoodListQuery(medicalMallConfig, param);
+        List<FsStoreProductListQueryVO> list = fsStoreProductMapper.selectFsStoreProductGoodListQuery(medicalMallConfig, param);
+        if (list == null || list.isEmpty()) {
+            return list;
+        }
+        try {
+            List<Long> productIds = list.stream()
+                    .map(FsStoreProductListQueryVO::getProductId)
+                    .filter(Objects::nonNull)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (productIds.isEmpty()) {
+                return list;
+            }
+            List<FsStoreProductTagNameVO> tagNames = fsStoreProductTagRelationScrmMapper.selectProductTagNamesByProductIds(productIds);
+            Map<Long, List<String>> tagMap = new LinkedHashMap<>();
+            for (FsStoreProductTagNameVO tn : tagNames) {
+                tagMap.computeIfAbsent(tn.getProductId(), k -> new ArrayList<>()).add(tn.getTagName());
+            }
+            for (FsStoreProductListQueryVO vo : list) {
+                if (vo.getProductId() != null) {
+                    vo.setTagList(tagMap.getOrDefault(vo.getProductId(), new ArrayList<>()));
+                }
+            }
+        } catch (Exception e) {
+            log.error("批量查询商品标签失败", e);
+        }
+        return list;
     }
     }
 
 
     @Override
     @Override

+ 4 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderExportVO.java

@@ -27,6 +27,10 @@ public class FsStoreOrderExportVO implements Serializable
     private String orderCode;
     private String orderCode;
     @Excel(name = "会员ID")
     @Excel(name = "会员ID")
     private Long userId;
     private Long userId;
+
+    @Excel(name = "用户昵称")
+    private String nickname;
+
     /** 额外订单号 */
     /** 额外订单号 */
     @Excel(name = "管易云订单号")
     @Excel(name = "管易云订单号")
     private String extendOrderId;
     private String extendOrderId;

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportVO.java

@@ -27,6 +27,9 @@ public class FsStoreOrderItemExportVO implements Serializable
     @Excel(name = "会员ID")
     @Excel(name = "会员ID")
     private Long userId;
     private Long userId;
 
 
+    @Excel(name = "用户昵称")
+    private String nickname;
+
     @Excel(name = "产品名称")
     @Excel(name = "产品名称")
     private String productName;
     private String productName;
 
 

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportZMVO.java

@@ -29,6 +29,9 @@ public class FsStoreOrderItemExportZMVO implements Serializable {
     @Excel(name = "会员ID")
     @Excel(name = "会员ID")
     private Long userId;
     private Long userId;
 
 
+    @Excel(name = "用户昵称")
+    private String nickname;
+
     @Excel(name = "产品名称")
     @Excel(name = "产品名称")
     private String productName;
     private String productName;
 
 

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreProductListQueryVO.java

@@ -80,4 +80,7 @@ public class FsStoreProductListQueryVO implements Serializable
     /** 活动结束时间 */
     /** 活动结束时间 */
     private java.util.Date activityEndTime;
     private java.util.Date activityEndTime;
 
 
+    /** 产品标签名称列表 */
+    private List<String> tagList = new ArrayList<>();
+
 }
 }

+ 1 - 0
fs-service/src/main/resources/application-config-dev-jnlzjk.yml

@@ -96,6 +96,7 @@ ipad:
   ipadUrl: http://ipadjnlzjk.ylrztop.com
   ipadUrl: http://ipadjnlzjk.ylrztop.com
   aiApi: http://49.232.181.28:3000/
   aiApi: http://49.232.181.28:3000/
   voiceApi:
   voiceApi:
+  wxIpadUrl:
   commonApi:
   commonApi:
 wx_miniapp_temp:
 wx_miniapp_temp:
   pay_order_temp_id:
   pay_order_temp_id:

+ 2 - 2
fs-service/src/main/resources/application-config-druid-jnlzjk.yml

@@ -57,8 +57,8 @@ watch:
   password3: v9xsKuqn_$d2y
   password3: v9xsKuqn_$d2y
 
 
 fs :
 fs :
-  commonApi: http://10.206.0.12:7771
-  h5CommonApi: http://10.206.0.12:7771
+  commonApi: http://10.206.0.8:7771
+  h5CommonApi: http://10.206.0.8:7771
   jwt:
   jwt:
     # 加密秘钥
     # 加密秘钥
     secret: 3e6d9c0b4a7f1e2d5c4e0d3c6b9a2f5e
     secret: 3e6d9c0b4a7f1e2d5c4e0d3c6b9a2f5e

+ 5 - 1
fs-service/src/main/resources/mapper/course/FsUserCourseCommentMapper.xml

@@ -19,10 +19,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="isDel"    column="is_del"    />
         <result property="isDel"    column="is_del"    />
         <result property="nickName"    column="nick_name"    />
         <result property="nickName"    column="nick_name"    />
         <result property="videoId"    column="video_id"    />
         <result property="videoId"    column="video_id"    />
+        <result property="visibleAll"    column="visible_all"    />
     </resultMap>
     </resultMap>
 
 
     <sql id="selectFsUserCourseCommentVo">
     <sql id="selectFsUserCourseCommentVo">
-        select comment_id,to_user_id, user_id,is_del, course_id, type, parent_id, content, reply_count, create_time, update_time, likes, nick_name, video_id from fs_user_course_comment
+        select comment_id,to_user_id, user_id,is_del, course_id, type, parent_id, content, reply_count, create_time, update_time, likes, nick_name, video_id, visible_all from fs_user_course_comment
     </sql>
     </sql>
 
 
     <select id="selectFsUserCourseCommentList" parameterType="FsUserCourseComment" resultMap="FsUserCourseCommentResult">
     <select id="selectFsUserCourseCommentList" parameterType="FsUserCourseComment" resultMap="FsUserCourseCommentResult">
@@ -61,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isDel != null">is_del,</if>
             <if test="isDel != null">is_del,</if>
             <if test="nickName != null">nick_name,</if>
             <if test="nickName != null">nick_name,</if>
             <if test="videoId != null">video_id,</if>
             <if test="videoId != null">video_id,</if>
+            <if test="visibleAll != null">visible_all,</if>
          </trim>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null">#{userId},</if>
             <if test="userId != null">#{userId},</if>
@@ -76,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isDel != null">#{isDel},</if>
             <if test="isDel != null">#{isDel},</if>
             <if test="nickName != null">#{nickName},</if>
             <if test="nickName != null">#{nickName},</if>
             <if test="videoId != null">#{videoId},</if>
             <if test="videoId != null">#{videoId},</if>
+            <if test="visibleAll != null">#{visibleAll},</if>
          </trim>
          </trim>
     </insert>
     </insert>
 
 
@@ -95,6 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isDel != null">is_del = #{isDel},</if>
             <if test="isDel != null">is_del = #{isDel},</if>
             <if test="nickName != null">nick_name = #{nickName},</if>
             <if test="nickName != null">nick_name = #{nickName},</if>
             <if test="videoId != null">video_id = #{videoId},</if>
             <if test="videoId != null">video_id = #{videoId},</if>
+            <if test="visibleAll != null">visible_all = #{visibleAll},</if>
         </trim>
         </trim>
         where comment_id = #{commentId}
         where comment_id = #{commentId}
     </update>
     </update>

+ 1 - 0
fs-service/src/main/resources/mapper/his/FsIntegralCountMapper.xml

@@ -27,6 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="beginDate != null  and beginDate != ''"> and consumption_date >= #{beginDate}</if>
             <if test="beginDate != null  and beginDate != ''"> and consumption_date >= #{beginDate}</if>
             <if test="endDate != null  and endDate != ''"> and consumption_date &lt;= #{endDate}</if>
             <if test="endDate != null  and endDate != ''"> and consumption_date &lt;= #{endDate}</if>
         </where>
         </where>
+        order by create_time desc
     </select>
     </select>
 
 
     <select id="selectFsIntegralCountById" parameterType="Long" resultMap="FsIntegralCountResult">
     <select id="selectFsIntegralCountById" parameterType="Long" resultMap="FsIntegralCountResult">

+ 13 - 0
fs-service/src/main/resources/mapper/his/FsIntegralGoodsMapper.xml

@@ -181,4 +181,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{goodsIds}
             #{goodsIds}
         </foreach>
         </foreach>
     </select>
     </select>
+
+    <update id="batchUpdateIntegralGoods">
+        update fs_integral_goods
+        <set>
+            <if test="integral != null">integral = #{integral},</if>
+            <if test="cash != null">cash = #{cash},</if>
+        </set>
+        where goods_id in
+        <foreach item="goodsId" collection="goodsIds" open="(" separator="," close=")">
+            #{goodsId}
+        </foreach>
+    </update>
+
 </mapper>
 </mapper>

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

@@ -594,7 +594,10 @@ public class CourseQwController extends AppBaseController {
                     fsStoreProductScrm.setOffShelfTime(offShelfTime);
                     fsStoreProductScrm.setOffShelfTime(offShelfTime);
                     fsStoreProductScrm.setCardPopupTime(cardPopupTime);
                     fsStoreProductScrm.setCardPopupTime(cardPopupTime);
                     fsStoreProductScrm.setCardCloseTime(cardCloseTime);
                     fsStoreProductScrm.setCardCloseTime(cardCloseTime);
-
+                    if (originalNode != null && originalNode.has("hotSaleTags") && !originalNode.path("hotSaleTags").isNull()) {
+                        String hotSaleTags = originalNode.path("hotSaleTags").asText();
+                        fsStoreProductScrm.setHotSaleTags(org.apache.commons.lang3.StringUtils.isNotBlank(hotSaleTags) ? hotSaleTags : null);
+                    }
 
 
                     fsPackageListVOS.add(fsStoreProductScrm);
                     fsPackageListVOS.add(fsStoreProductScrm);
                 }
                 }