소스 검색

1. APP首页课程推荐医生 2. APP首页推荐医生文章 3. 课程关联医生 4. 医生文章关联课程 5. 查询用户可兑换积分商品 6. APP首页课程描述

wjj 4 주 전
부모
커밋
7de3ce9a4e
28개의 변경된 파일220개의 추가작업 그리고 6개의 파일을 삭제
  1. 8 0
      fs-admin/src/main/java/com/fs/course/controller/FsUserCourseController.java
  2. 7 0
      fs-admin/src/main/java/com/fs/his/controller/FsDoctorController.java
  3. 5 0
      fs-service/src/main/java/com/fs/course/domain/FsUserCourse.java
  4. 2 1
      fs-service/src/main/java/com/fs/course/mapper/FsCourseSopAppLinkMapper.java
  5. 5 0
      fs-service/src/main/java/com/fs/course/mapper/FsUserCourseMapper.java
  6. 4 0
      fs-service/src/main/java/com/fs/course/service/IFsUserCourseService.java
  7. 18 0
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java
  8. 2 0
      fs-service/src/main/java/com/fs/course/vo/FsSopMyCourseLinkVO.java
  9. 20 0
      fs-service/src/main/java/com/fs/doctor/param/FsCourseRecommendDoctorParam.java
  10. 2 0
      fs-service/src/main/java/com/fs/his/domain/FsDoctor.java
  11. 7 0
      fs-service/src/main/java/com/fs/his/domain/FsDoctorArticle.java
  12. 18 0
      fs-service/src/main/java/com/fs/his/mapper/FsDoctorArticleMapper.java
  13. 23 0
      fs-service/src/main/java/com/fs/his/mapper/FsDoctorMapper.java
  14. 3 0
      fs-service/src/main/java/com/fs/his/mapper/FsIntegralGoodsMapper.java
  15. 4 0
      fs-service/src/main/java/com/fs/his/param/FsIntegralGoodsListUParam.java
  16. 4 0
      fs-service/src/main/java/com/fs/his/service/IFsDoctorArticleService.java
  17. 4 0
      fs-service/src/main/java/com/fs/his/service/IFsDoctorService.java
  18. 7 0
      fs-service/src/main/java/com/fs/his/service/impl/FsDoctorArticleServiceImpl.java
  19. 12 0
      fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java
  20. 8 0
      fs-service/src/main/java/com/fs/his/vo/FsCourseRecommendDoctorVO.java
  21. 3 0
      fs-service/src/main/java/com/fs/his/vo/FsDoctorArticleVO.java
  22. 2 0
      fs-service/src/main/java/com/fs/his/vo/FsDoctorVO.java
  23. 5 1
      fs-service/src/main/resources/mapper/course/FsUserCourseMapper.xml
  24. 5 1
      fs-service/src/main/resources/mapper/his/FsDoctorArticleMapper.xml
  25. 5 1
      fs-service/src/main/resources/mapper/his/FsDoctorMapper.xml
  26. 11 2
      fs-user-app/src/main/java/com/fs/app/controller/CourseController.java
  27. 10 0
      fs-user-app/src/main/java/com/fs/app/controller/DoctorArticleController.java
  28. 16 0
      fs-user-app/src/main/java/com/fs/app/controller/DoctorController.java

+ 8 - 0
fs-admin/src/main/java/com/fs/course/controller/FsUserCourseController.java

@@ -340,4 +340,12 @@ public class FsUserCourseController extends BaseController
         return R.ok();
     }
 
+
+    @GetMapping("/courseList")
+    public TableDataInfo courseList()
+    {
+        List<FsUserCourse> courseList = fsUserCourseService.selectAllFsUserCourseListOptions();
+        return getDataTable(courseList);
+    }
+
 }

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

@@ -269,4 +269,11 @@ public class FsDoctorController extends BaseController
         return toAjax(fsDoctorService.updateFsDoctor(doc));
     }
 
+    @GetMapping("/options")
+    public TableDataInfo options()
+    {
+        List<OptionsVO> optionsVOS = fsDoctorService.selectDoctorOptionsType1();
+        return getDataTable(optionsVOS);
+    }
+
 }

+ 5 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCourse.java

@@ -157,4 +157,9 @@ public class FsUserCourse extends BaseEntity
      */
     private String configJson;
 
+    /**
+     * 课程关联的医生id
+     */
+    private String doctorIds;
+
 }

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

@@ -100,7 +100,8 @@ public interface FsCourseSopAppLinkMapper extends BaseMapper<FsCourseSopAppLink>
             "\tal.course_url,\n" +
             "\tal.video_title AS title,\n" +
             "\tal.app_real_Link, \n" +
-            "\tal.is_read \n" +
+            "\tal.is_read, \n" +
+            "\tal.course_id \n" +
             "FROM\n" +
             "\t`fs_course_sop_app_link` al\n" +
             "\tLEFT JOIN qw_external_contact ec ON al.qw_external_id = ec.id \n" +

+ 5 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseMapper.java

@@ -11,6 +11,7 @@ import com.fs.course.param.FsUserCourseParam;
 import com.fs.course.param.newfs.FsUserCourseListParam;
 import com.fs.course.vo.*;
 import com.fs.course.vo.newfs.FsUserCourseListVO;
+import com.fs.his.domain.FsDoctorArticle;
 import com.fs.his.vo.OptionsVO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -310,4 +311,8 @@ public interface FsUserCourseMapper
      */
     @Update("update fs_user_course set config_json = #{configJson} where course_id = #{id}")
     void editConfig(@Param("id") Long id, @Param("configJson") String configJson);
+
+
+    @Select("SELECT course_name,course_id,is_private FROM fs_user_course WHERE is_del = 0 AND is_show = 1 ORDER BY is_private DESC ")
+    List<FsUserCourse> selectAllFsUserCourseListOptions();
 }

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

@@ -11,6 +11,7 @@ import com.fs.course.param.*;
 import com.fs.course.param.newfs.FsUserCourseListParam;
 import com.fs.course.vo.*;
 import com.fs.course.vo.newfs.FsUserCourseListVO;
+import com.fs.his.domain.FsDoctorArticle;
 import com.fs.his.vo.OptionsVO;
 
 import javax.validation.constraints.NotNull;
@@ -137,4 +138,7 @@ public interface IFsUserCourseService
      * 修改课堂配置
      */
     void editConfig(Long id, String configJson);
+
+
+    List<FsUserCourse> selectAllFsUserCourseListOptions();
 }

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

@@ -30,6 +30,7 @@ import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.course.vo.*;
 import com.fs.course.vo.newfs.FsUserCourseListVO;
 import com.fs.his.config.IntegralConfig;
+import com.fs.his.domain.FsDoctorArticle;
 import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserIntegralLogs;
 import com.fs.his.enums.FsUserIntegralLogTypeEnum;
@@ -761,6 +762,23 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
         fsUserCourseMapper.editConfig(id, configJson);
     }
 
+    @Override
+    public List<FsUserCourse> selectAllFsUserCourseListOptions() {
+        List<FsUserCourse> courseList = fsUserCourseMapper.selectAllFsUserCourseListOptions();
+        if (courseList != null && !courseList.isEmpty()) {
+            for (FsUserCourse fsUserCourse : courseList) {
+                String last;
+                if (fsUserCourse.getIsPrivate() == 1) {
+                    last = "(私有)";
+                } else {
+                    last = "(公开)";
+                }
+                fsUserCourse.setCourseName(fsUserCourse.getCourseName() + last);
+            }
+        }
+        return courseList;
+    }
+
 
     private Graphics2D initializeGraphics(BufferedImage combined) {
         Graphics2D graphics = combined.createGraphics();

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

@@ -41,4 +41,6 @@ public class FsSopMyCourseLinkVO {
 
     private Integer isRead;
 
+    private Long courseId;
+
 }

+ 20 - 0
fs-service/src/main/java/com/fs/doctor/param/FsCourseRecommendDoctorParam.java

@@ -0,0 +1,20 @@
+package com.fs.doctor.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FsCourseRecommendDoctorParam {
+
+    @ApiModelProperty(value = "页码,默认为1")
+    private Integer pageNum =1;
+    @ApiModelProperty(value = "页大小,默认为10")
+    private Integer pageSize = 10;
+
+    //课程id
+    private Long courseId;
+
+    private String doctorIds;
+
+    private String keyword;
+}

+ 2 - 0
fs-service/src/main/java/com/fs/his/domain/FsDoctor.java

@@ -212,4 +212,6 @@ public class FsDoctor extends BaseEntity
     private String storeIds;
 
     private Long gptRoleId;
+
+    private String videoUrl;
 }

+ 7 - 0
fs-service/src/main/java/com/fs/his/domain/FsDoctorArticle.java

@@ -2,6 +2,8 @@ package com.fs.his.domain;
 
 import com.fs.common.annotation.Excel;
 import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -13,6 +15,8 @@ import javax.validation.constraints.NotNull;
  * @author fs
  * @date 2023-06-05
  */
+@EqualsAndHashCode(callSuper = true)
+@Data
 public class FsDoctorArticle extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -52,6 +56,9 @@ public class FsDoctorArticle extends BaseEntity
 
     private String videoUrl;
 
+    //课程id
+    private Long courseId;
+
     public String getVideoUrl() {
         return videoUrl;
     }

+ 18 - 0
fs-service/src/main/java/com/fs/his/mapper/FsDoctorArticleMapper.java

@@ -1,6 +1,8 @@
 package com.fs.his.mapper;
 
 import java.util.List;
+
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.domain.FsDoctorArticle;
 import com.fs.his.param.FsDoctorArticleListDParam;
 import com.fs.his.param.FsDoctorArticleListUParam;
@@ -122,4 +124,20 @@ public interface FsDoctorArticleMapper
     List<FsDoctorArticleListDVO> selectFsDoctorArticleListDVO(@Param("maps") FsDoctorArticleListDParam param);
     @Select("select * from fs_doctor_article WHERE title=#{typeName} limit 1")
     FsDoctorArticle selectFsDoctorArticleByArticleByNameBodyUrl(String typeName);
+
+    @Select({"<script> " +
+            "\tSELECT CASE \n" +
+            "\tWHEN FIND_IN_SET(course_id,#{param.courseId}) THEN\n" +
+            "\t\t1\n" +
+            "\tELSE\n" +
+            "\t\t0\n" +
+            "  END as findSort,a.article_id,a.image_url,a.title,a.views,a.doctor_id,d.doctor_name,d.avatar,d.position \n" +
+            "  FROM fs_doctor_article a left join fs_doctor d on d.doctor_id = a.doctor_id  " +
+            "WHERE a.`status` = 1 " +
+            "<if test = 'param.keyword != null     '> " +
+            "and da.title like CONCAT('%',#{param.keyword},'%')" +
+            " ORDER BY findSort DESC " +
+            "</if>"+
+            "</script>"})
+    List<FsDoctorArticleListUVO> getCourseRecommendDoctorArticleList(@Param("param") FsCourseRecommendDoctorParam param);
 }

+ 23 - 0
fs-service/src/main/java/com/fs/his/mapper/FsDoctorMapper.java

@@ -3,6 +3,7 @@ package com.fs.his.mapper;
 import java.util.List;
 
 import com.fs.common.core.domain.R;
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.param.FsDoctorListUParam;
 import com.fs.his.param.FsDoctorParam;
@@ -217,4 +218,26 @@ public interface FsDoctorMapper
 
     @Select("select doctor_id dictValue,doctor_name dictLabel from fs_doctor where doctor_type=1 and  is_audit=1 and status = 1")
     List<OptionsVO> selectDoctorOptionsType1();
+
+    @Select({"<script>" +
+            " SELECT CASE\n" +
+            "\t\n" +
+            "\tWHEN FIND_IN_SET(doctor_id,#{param.doctorIds}) > 0\n" +
+            "\tTHEN 1\n" +
+            "\tELSE 0\n" +
+            "\tEND as findSort,d.doctor_id,d.doctor_name,d.avatar,d.position,d.work_status,d.ping_star,d.order_number,d.speciality,d.price_json,h.hospital_name,h.hospital_level,de.dept_name \n" +
+            "\t\n" +
+            "\tFROM fs_doctor d " +
+            " left join fs_hospital h on h.hospital_id=d.hospital_id   " +
+            " left join fs_department de on de.dept_id=d.dept_id   " +
+            "WHERE d.doctor_type = 1  AND d.is_audit = 1 AND d.`status` = 1 AND d.is_show = 1  " +
+            "<if test = 'param.keyword != null     '> " +
+            "and d.doctor_name like CONCAT('%',#{param.keyword},'%')" +
+            "</if>"+
+            " ORDER BY findSort DESC " +
+            "</script>"})
+    List<FsDoctorListUVO> selectCourseRecommendDoctorList(@Param("param") FsCourseRecommendDoctorParam param);
+
+//    @Select("SELECT d.* FROM fs_doctor d WHERE doctor_type = 1  AND is_audit = 1 AND `status` = 1 ")
+//    List<FsDoctor> selectNoCourseRecommendDoctorList();
 }

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

@@ -81,6 +81,9 @@ public interface FsIntegralGoodsMapper
             "<if test = 'maps.goodsType != null and maps.goodsType != 0     '> " +
             "and g.goods_type = #{maps.goodsType}  " +
             "</if>" +
+            "<if test = 'maps.isBuy != null and maps.isBuy != 0     '> " +
+            "and g.integral &lt;= #{maps.integral}  " +
+            "</if>" +
             " order by g.goods_id desc "+
             "</script>"})
     List<FsIntegralGoodsListUVO> selectFsIntegralGoodsListUVO(@Param("maps")FsIntegralGoodsListUParam param);

+ 4 - 0
fs-service/src/main/java/com/fs/his/param/FsIntegralGoodsListUParam.java

@@ -28,4 +28,8 @@ public class FsIntegralGoodsListUParam  implements Serializable {
      * 商品状态(1:上架 2:下架)
      */
     private Integer status;
+
+    private Integer isBuy;
+
+    private Long integral;
 }

+ 4 - 0
fs-service/src/main/java/com/fs/his/service/IFsDoctorArticleService.java

@@ -1,6 +1,8 @@
 package com.fs.his.service;
 
 import java.util.List;
+
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.domain.FsDoctorArticle;
 import com.fs.his.param.FsDoctorArticleListDParam;
 import com.fs.his.param.FsDoctorArticleListUParam;
@@ -71,4 +73,6 @@ public interface IFsDoctorArticleService
     FsDoctorArticleUVO selectFsDoctorArticleUVOByArticleId(Long articleId);
 
     List<FsDoctorArticleListDVO> selectFsDoctorArticleListDVO(FsDoctorArticleListDParam param);
+
+    List<FsDoctorArticleListUVO> getCourseRecommendDoctorArticleList(FsCourseRecommendDoctorParam param);
 }

+ 4 - 0
fs-service/src/main/java/com/fs/his/service/IFsDoctorService.java

@@ -1,5 +1,6 @@
 package com.fs.his.service;
 
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.param.FsDoctorListUParam;
 import com.fs.his.param.FsDoctorParam;
@@ -7,6 +8,7 @@ import com.fs.his.param.FsUpdateFollowParam;
 import com.fs.his.vo.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 医生管理Service接口
@@ -111,4 +113,6 @@ public interface IFsDoctorService
     List<FsDoctorVO> selectDocVOByNameAndPhone(FsDoctorParam param);
 
     List<OptionsVO> selectDoctorOptionsType1();
+
+    List<FsDoctorListUVO> getCourseRecommendDoctorList(FsCourseRecommendDoctorParam param);
 }

+ 7 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsDoctorArticleServiceImpl.java

@@ -1,7 +1,9 @@
 package com.fs.his.service.impl;
 
+import java.util.Collections;
 import java.util.List;
 import com.fs.common.utils.DateUtils;
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.param.FsDoctorArticleListDParam;
 import com.fs.his.param.FsDoctorArticleListUParam;
 import com.fs.his.vo.*;
@@ -122,4 +124,9 @@ public class FsDoctorArticleServiceImpl implements IFsDoctorArticleService
     public List<FsDoctorArticleListDVO> selectFsDoctorArticleListDVO(FsDoctorArticleListDParam param) {
         return fsDoctorArticleMapper.selectFsDoctorArticleListDVO(param);
     }
+
+    @Override
+    public List<FsDoctorArticleListUVO> getCourseRecommendDoctorArticleList(FsCourseRecommendDoctorParam param) {
+        return fsDoctorArticleMapper.getCourseRecommendDoctorArticleList(param);
+    }
 }

+ 12 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java

@@ -8,6 +8,9 @@ import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.SecurityUtils;
 import com.fs.common.utils.sign.Md5Utils;
+import com.fs.course.domain.FsUserCourse;
+import com.fs.course.service.IFsUserCourseService;
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.*;
 import com.fs.his.mapper.FsDoctorMapper;
@@ -36,6 +39,7 @@ import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import com.google.zxing.WriterException;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -78,6 +82,9 @@ public class FsDoctorServiceImpl implements IFsDoctorService
     @Autowired
     private OpenIMService openIMService;
 
+    @Autowired
+    private IFsUserCourseService userCourseService;
+
     /**
      * 查询医生管理
      *
@@ -519,6 +526,11 @@ public class FsDoctorServiceImpl implements IFsDoctorService
         return fsDoctorMapper.selectDoctorOptionsType1();
     }
 
+    @Override
+    public List<FsDoctorListUVO> getCourseRecommendDoctorList(FsCourseRecommendDoctorParam param) {
+        return fsDoctorMapper.selectCourseRecommendDoctorList(param);
+    }
+
     public static BufferedImage convertCircular(BufferedImage bi1) throws IOException {
         // 透明底的图片
         BufferedImage bi2 = new BufferedImage(bi1.getWidth(), bi1.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);

+ 8 - 0
fs-service/src/main/java/com/fs/his/vo/FsCourseRecommendDoctorVO.java

@@ -0,0 +1,8 @@
+package com.fs.his.vo;
+
+import lombok.Data;
+
+@Data
+public class FsCourseRecommendDoctorVO {
+
+}

+ 3 - 0
fs-service/src/main/java/com/fs/his/vo/FsDoctorArticleVO.java

@@ -53,4 +53,7 @@ public class FsDoctorArticleVO implements Serializable {
 
     private String videoUrl;
 
+    //课程id
+    private Long courseId;
+
 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/vo/FsDoctorVO.java

@@ -210,4 +210,6 @@ public class FsDoctorVO implements Serializable {
     private Long gptRoleId;
 
     private String groupCode;
+
+    private String videoUrl;
 }

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

@@ -44,10 +44,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="secondImg"    column="second_img"    />
         <result property="companyIds"    column="company_ids"    />
         <result property="configJson"    column="config_json"    />
+        <result property="doctorIds"    column="doctor_ids"    />
     </resultMap>
 
     <sql id="selectFsUserCourseVo">
-        select course_id,is_private,company_ids,is_next,talent_id,second_img,is_del, cate_id,sub_cate_id, course_name, title, img_url, sort, create_time, update_time, status, is_vip, is_hot, is_show, views, duration, description, hot_ranking, integral, price, sell_price, project, tags, likes, favorite_num, shares, is_auto_play, is_fast, is_best, is_tui, hot_num, is_integral, course_type, config_json from fs_user_course
+        select course_id,is_private,company_ids,is_next,talent_id,second_img,is_del, cate_id,sub_cate_id, course_name, title, img_url, sort, create_time, update_time, status, is_vip, is_hot, is_show, views, duration, description, hot_ranking, integral, price, sell_price, project, tags, likes, favorite_num, shares, is_auto_play, is_fast, is_best, is_tui, hot_num, is_integral, course_type, config_json, doctor_ids from fs_user_course
     </sql>
 
     <select id="selectFsUserCourseList" parameterType="FsUserCourse" resultMap="FsUserCourseResult">
@@ -195,6 +196,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="secondImg != null">second_img,</if>
             <if test="companyIds != null">company_ids,</if>
             <if test="userId != null">user_id,</if>
+            <if test="doctorIds != null">doctor_ids,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="cateId != null">#{cateId},</if>
@@ -235,6 +237,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="secondImg != null">#{secondImg},</if>
             <if test="companyIds != null">#{companyIds},</if>
             <if test="userId != null">#{userId},</if>
+            <if test="doctorIds != null">#{doctorIds},</if>
          </trim>
     </insert>
 
@@ -278,6 +281,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isPrivate != null">is_private = #{isPrivate},</if>
             <if test="secondImg != null">second_img = #{secondImg},</if>
             <if test="companyIds != null">company_ids = #{companyIds},</if>
+            <if test="doctorIds != null">doctor_ids = #{doctorIds},</if>
         </trim>
         where course_id = #{courseId}
     </update>

+ 5 - 1
fs-service/src/main/resources/mapper/his/FsDoctorArticleMapper.xml

@@ -16,10 +16,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createTime"    column="create_time"    />
         <result property="updateTime"    column="update_time"    />
         <result property="videoUrl"    column="video_url"    />
+        <result property="courseId"    column="course_id"    />
     </resultMap>
 
     <sql id="selectFsDoctorArticleVo">
-        select article_id, doctor_id, image_url, cate_id, title, content, views, status, create_time, update_time,video_url from fs_doctor_article
+        select article_id, doctor_id, image_url, cate_id, title, content, views, status, create_time, update_time,video_url, course_id from fs_doctor_article
     </sql>
 
     <select id="selectFsDoctorArticleList" parameterType="FsDoctorArticle" resultMap="FsDoctorArticleResult">
@@ -53,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="videoUrl  != null">video_url,</if>
+            <if test="courseId  != null">course_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="doctorId != null">#{doctorId},</if>
@@ -65,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="videoUrl != null">#{videoUrl},</if>
+            <if test="courseId != null">#{courseId},</if>
          </trim>
     </insert>
 
@@ -81,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="videoUrl != null">video_url = #{videoUrl},</if>
+            <if test="courseId != null">course_id = #{courseId},</if>
         </trim>
         where article_id = #{articleId}
     </update>

+ 5 - 1
fs-service/src/main/resources/mapper/his/FsDoctorMapper.xml

@@ -63,10 +63,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="storeIds"    column="store_ids"    />
         <result property="gptRoleId"    column="gpt_role_id"    />
         <result property="groupCode"    column="group_code"    />
+        <result property="videoUrl"    column="video_url"    />
     </resultMap>
 
     <sql id="selectFsDoctorVo">
-        select doctor_id,is_agreement_prescribe_doctor,is_follow,is_show,audit_type,store_ids,gpt_role_id, package_ids,sort,doctor_card_url,prescribe_doctor_id,is_prescribe_doctor,doctor_name,is_accept,is_self, introduction, speciality, certificate_code, certificate_images, practise_code, practise_images, avatar, user_id, hospital_id, dept_id, balance, position, tags, create_time, update_time, status, remark, ping_star, order_number, speed, mobile, doctor_type, sex, bitthday, id_card, id_card_front_url, id_card_back_url, city_ids, province, city, district, is_tui, is_expert, work_status, is_audit, audit_time, price_json, account, password,sign_url,jpush_id,extract_json,group_code from fs_doctor
+        select doctor_id,is_agreement_prescribe_doctor,is_follow,is_show,audit_type,store_ids,gpt_role_id, package_ids,sort,doctor_card_url,prescribe_doctor_id,is_prescribe_doctor,doctor_name,is_accept,is_self, introduction, speciality, certificate_code, certificate_images, practise_code, practise_images, avatar, user_id, hospital_id, dept_id, balance, position, tags, create_time, update_time, status, remark, ping_star, order_number, speed, mobile, doctor_type, sex, bitthday, id_card, id_card_front_url, id_card_back_url, city_ids, province, city, district, is_tui, is_expert, work_status, is_audit, audit_time, price_json, account, password,sign_url,jpush_id,extract_json,group_code,video_url from fs_doctor
     </sql>
 
     <select id="selectFsDoctorList" parameterType="FsDoctor" resultMap="FsDoctorResult">
@@ -195,6 +196,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="storeIds != null">store_ids,</if>
             <if test="gptRoleId != null">gpt_role_id,</if>
             <if test="groupCode != null">group_code,</if>
+            <if test="videoUrl != null">video_url,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="doctorName != null">#{doctorName},</if>
@@ -254,6 +256,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="storeIds != null">#{storeIds},</if>
             <if test="gptRoleId != null">#{gptRoleId},</if>
             <if test="groupCode != null">#{groupCode},</if>
+            <if test="videoUrl != null">#{videoUrl},</if>
          </trim>
     </insert>
 
@@ -317,6 +320,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="storeIds != null">store_ids = #{storeIds},</if>
             <if test="gptRoleId != null">gpt_role_id = #{gptRoleId},</if>
             <if test="groupCode != null">group_code = #{groupCode},</if>
+            <if test="videoUrl != null">video_url = #{videoUrl},</if>
         </trim>
         where doctor_id = #{doctorId}
     </update>

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

@@ -170,14 +170,23 @@ public class CourseController extends  AppBaseController{
         long userId = Long.parseLong(getUserId());
         logger.info("获取今日课程用户id:{}",userId);
         int isPrivate = 1;//私有课程
+        Long courseId;
         //获取今日课程
         FsSopMyCourseLinkVO vo = courseSopAppLinkService.getTodaySopCourseStudy(userId);
         if(vo==null){
             isPrivate = 2;//公开课
             FsUserCourseListUVO courseListUVO = courseService.selectFsUserCourseUVO();
-            return R.ok().put("data",courseListUVO).put("isPrivate",isPrivate);
+            courseId = courseListUVO.getCourseId();
+            FsUserCourse userCourse = courseService.selectFsUserCourseByCourseId(courseId);
+            return R.ok().put("data",courseListUVO).put("isPrivate",isPrivate)
+                    .put("doctorIds",userCourse.getDoctorIds())
+                    .put("description",userCourse.getDescription());
         }
-        return R.ok().put("data",vo).put("isPrivate",isPrivate);
+        courseId = vo.getCourseId();
+        FsUserCourse userCourse = courseService.selectFsUserCourseByCourseId(courseId);
+        return R.ok().put("data",vo).put("isPrivate",isPrivate)
+                .put("doctorIds",userCourse.getDoctorIds())
+                .put("description",userCourse.getDescription());
     }
 
     @Login

+ 10 - 0
fs-user-app/src/main/java/com/fs/app/controller/DoctorArticleController.java

@@ -4,6 +4,7 @@ package com.fs.app.controller;
 import com.fs.app.annotation.Login;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.ServletUtils;
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.domain.*;
 import com.fs.his.param.*;
 import com.fs.his.service.*;
@@ -68,4 +69,13 @@ public class DoctorArticleController extends  AppBaseController {
         return R.ok().put("data",article);
     }
 
+    @ApiOperation("获取今日课程推荐医生文章列表")
+    @GetMapping("/getCourseRecommendDoctorArticleList")
+    public R getCourseRecommendDoctorArticleList(FsCourseRecommendDoctorParam param){
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        List<FsDoctorArticleListUVO> list = articleService.getCourseRecommendDoctorArticleList(param);
+        PageInfo<FsDoctorArticleListUVO> listPageInfo=new PageInfo<>(list);
+        return R.ok().put("data",listPageInfo);
+    }
+
 }

+ 16 - 0
fs-user-app/src/main/java/com/fs/app/controller/DoctorController.java

@@ -4,6 +4,8 @@ package com.fs.app.controller;
 import com.fs.app.annotation.Login;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.ServletUtils;
+import com.fs.course.vo.FsSopMyCourseLinkVO;
+import com.fs.doctor.param.FsCourseRecommendDoctorParam;
 import com.fs.his.domain.FsDepartment;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.domain.FsHospital;
@@ -149,4 +151,18 @@ public class DoctorController extends  AppBaseController {
     public R getOptionsVO(){
         return R.ok().put("data",doctorService.selectAllDocVoList());
     }
+
+
+    @Login
+    @ApiOperation("获取今日课程推荐医生列表")
+    @GetMapping("/getCourseRecommendDoctorList")
+    public R getCourseRecommendDoctorList(FsCourseRecommendDoctorParam param){
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        if (param.getDoctorIds()== null || param.getDoctorIds().isEmpty()) {
+            param.setDoctorIds("-1");
+        }
+        List<FsDoctorListUVO> list = doctorService.getCourseRecommendDoctorList(param);
+        PageInfo<FsDoctorListUVO> listPageInfo=new PageInfo<>(list);
+        return R.ok().put("data",listPageInfo);
+    }
 }