From 07e15beb6dc9ec6d40a27a50be83edaa92cdb198 Mon Sep 17 00:00:00 2001
From: huangdeliang <huangdeliang@skieer.com>
Date: Wed, 14 Jul 2021 18:06:36 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F-=E6=95=99=E5=AD=A6?=
 =?UTF-8?q?=E8=A7=86=E9=A2=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../custom/VideoWebInterfaceController.java   |   2 +
 .../custom/WechatAppletController.java        | 119 +++++++++++++-----
 .../core/domain/entity/SysDictData.java       |   4 +
 .../dto/response/VideoClassifyResponse.java   |  11 +-
 .../impl/SysNutritionalVideoServiceImpl.java  |   4 +
 .../mapper/custom/SysVideoCommentMapper.xml   |  31 ++---
 6 files changed, 123 insertions(+), 48 deletions(-)

diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java
index 0684885f0..c568bd93f 100644
--- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java
+++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java
@@ -13,6 +13,7 @@ import com.stdiet.custom.domain.SysOrder;
 import com.stdiet.custom.domain.SysVideoClassify;
 import com.stdiet.custom.dto.response.NutritionalVideoResponse;
 import com.stdiet.custom.dto.response.VideoClassifyResponse;
+import com.stdiet.custom.dto.response.VideoClassifyTwoResponse;
 import com.stdiet.custom.service.ISysNutritionalVideoService;
 import com.stdiet.custom.service.ISysOrderService;
 import com.stdiet.custom.service.ISysVideoClassifyService;
@@ -71,6 +72,7 @@ public class VideoWebInterfaceController extends BaseController {
         //客户类型 0未付费客户-playLevel根据上传的标记  1已付费客户-playLevel全为0
         sysVideoClassify.setUserType(payed);
         List<VideoClassifyResponse> list = sysVideoClassifyService.getAllClassifyAndVideo(sysVideoClassify);
+
         return getDataTable(list);
     }
 
diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java
index 178c563c3..2df724fa0 100644
--- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java
+++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java
@@ -15,10 +15,7 @@ import com.stdiet.common.utils.file.MimeTypeUtils;
 import com.stdiet.common.utils.oss.AliyunOSSUtils;
 import com.stdiet.common.utils.sign.AesUtils;
 import com.stdiet.custom.domain.*;
-import com.stdiet.custom.dto.response.CustomerCaseResponse;
-import com.stdiet.custom.dto.response.MessageNoticeResponse;
-import com.stdiet.custom.dto.response.NutritionQuestionResponse;
-import com.stdiet.custom.dto.response.NutritionalVideoResponse;
+import com.stdiet.custom.dto.response.*;
 import com.stdiet.custom.page.WxLogInfo;
 import com.stdiet.custom.service.*;
 import com.stdiet.system.service.ISysDictTypeService;
@@ -43,6 +40,8 @@ public class WechatAppletController extends BaseController {
     @Autowired
     ISysRecipesService iSysRecipesService;
     @Autowired
+    ISysNutritionalVideoService iSysNutritionalVideoService;
+    @Autowired
     private ISysCustomerCaseService sysCustomerCaseService;
     @Autowired
     private ISysWxUserLogService sysWxUserLogService;
@@ -79,9 +78,9 @@ public class WechatAppletController extends BaseController {
      * 查询微信小程序中展示的客户案例
      */
     @GetMapping("/caseList")
-    public TableDataInfo caseList(SysCustomerCase sysCustomerCase, @RequestParam(value = "pageSize",required = false,defaultValue = "10")int pageSize,
-                                  @RequestParam(value="randomFlag",required = false,defaultValue = "false") boolean randomFlag) {
-        if(randomFlag){
+    public TableDataInfo caseList(SysCustomerCase sysCustomerCase, @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,
+                                  @RequestParam(value = "randomFlag", required = false, defaultValue = "false") boolean randomFlag) {
+        if (randomFlag) {
             List<CustomerCaseResponse> reponseList = sysCustomerCaseService.getWxCustomerCaseByRandom(pageSize);
             //处理ID加密
             dealIdEnc(reponseList);
@@ -91,7 +90,7 @@ public class WechatAppletController extends BaseController {
             rspData.setRows(reponseList);
             rspData.setTotal(pageSize);
             return rspData;
-        }else{
+        } else {
             startPage();
             sysCustomerCase.setKeywordArray(StringUtils.isNotEmpty(sysCustomerCase.getKeyword()) ? sysCustomerCase.getKeyword().split(",") : null);
             List<CustomerCaseResponse> list = sysCustomerCaseService.getWxCustomerCaseList(sysCustomerCase);
@@ -307,7 +306,7 @@ public class WechatAppletController extends BaseController {
      * @return
      */
     private void dealIdEnc(List<CustomerCaseResponse> list) {
-        if(list != null){
+        if (list != null) {
             for (CustomerCaseResponse cus : list) {
                 cus.setId(AesUtils.encrypt(cus.getId() + "", null));
             }
@@ -349,22 +348,23 @@ public class WechatAppletController extends BaseController {
      */
     /**
      * 获取小程序展示的营养小知识列表
+     *
      * @param sysNutritionQuestion 查询参数对象
-     * @param pageNum 分页当前页码
-     * @param pageSize 分页每页数量
-     * @param randomFlag 随机标识  true 随机获取指定pageSize数量的营养小知识,不支持分页、模糊查询  false 则正常查询
+     * @param pageNum              分页当前页码
+     * @param pageSize             分页每页数量
+     * @param randomFlag           随机标识  true 随机获取指定pageSize数量的营养小知识,不支持分页、模糊查询  false 则正常查询
      * @return
      */
     @GetMapping(value = "/getNutritionQuestionList")
     public AjaxResult getNutritionQuestionList(SysNutritionQuestion sysNutritionQuestion, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
-                                               @RequestParam(value="randomFlag",required = false,defaultValue = "false") boolean randomFlag) {
+                                               @RequestParam(value = "randomFlag", required = false, defaultValue = "false") boolean randomFlag) {
         sysNutritionQuestion.setShowFlag(1);
-        if(randomFlag){
+        if (randomFlag) {
             //随机获取指定条数
             sysNutritionQuestion.setKey(null);
             List<NutritionQuestionResponse> list = sysNutritionQuestionService.getNutritionQuestionByRandom(sysNutritionQuestion, pageSize);
             return AjaxResult.success(list);
-        }else{
+        } else {
             Map<String, Object> result = sysNutritionQuestionService.getNutritionQuestionListByKey(sysNutritionQuestion, pageNum, pageSize);
             return AjaxResult.success(result);
         }
@@ -421,7 +421,7 @@ public class WechatAppletController extends BaseController {
                 sysNutritionalVideo.setUserType(1);
             }
         }
-        if(sysNutritionalVideo.getCateId() != null && sysNutritionalVideo.getCateId().longValue() == 0){
+        if (sysNutritionalVideo.getCateId() != null && sysNutritionalVideo.getCateId().longValue() == 0) {
             sysNutritionalVideo.setCateId(null);
         }
         startPage();
@@ -435,7 +435,6 @@ public class WechatAppletController extends BaseController {
      */
     @GetMapping(value = "/getVideoDetailById")
     public AjaxResult getVideoDetailById(@RequestParam(value = "videoId") String videoId) {
-        AjaxResult result = AjaxResult.success();
         NutritionalVideoResponse nutritionalVideoResponse = new NutritionalVideoResponse();
         try {
             SysNutritionalVideo sysNutritionalVideo = sysNutritionalVideoService.selectSysNutritionalVideByVideoId(videoId);
@@ -458,8 +457,7 @@ public class WechatAppletController extends BaseController {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        result.put("videoDetail", nutritionalVideoResponse);
-        return result;
+        return AjaxResult.success(nutritionalVideoResponse);
     }
 
     /**
@@ -742,33 +740,34 @@ public class WechatAppletController extends BaseController {
 
     /**
      * 获取视频分类
+     *
      * @param openid
      * @return
      */
     @GetMapping("/getVideoClassify")
-    public AjaxResult getVideoClassify(@RequestParam("openid")String openid) {
+    public AjaxResult getVideoClassify(@RequestParam("openid") String openid) {
         SysVideoClassify param = new SysVideoClassify();
         param.setParentId(0L);
         List<SysVideoClassify> list = sysVideoClassifyService.getAllClassify(param);
-        List<List<Map<String,Object>>> result = new ArrayList<>();
+        List<List<Map<String, Object>>> result = new ArrayList<>();
         int groupCount = 3;
         SysVideoClassify all = new SysVideoClassify();
         all.setId(0L);
         all.setCateName("全部内容");
         list.add(0, all);
-        if(list != null && list.size() > 0){
+        if (list != null && list.size() > 0) {
             //分成三组
-            int groupNum = list.size()/groupCount + (list.size() % groupCount > 0 ? 1 : 0);
+            int groupNum = list.size() / groupCount + (list.size() % groupCount > 0 ? 1 : 0);
             for (int i = 0; i < groupNum; i++) {
-                List<Map<String,Object>> groupList = new ArrayList<>();
-                for (int j = i * groupCount; j < (i+1)*groupCount; j++) {
-                    if(j < list.size()){
-                        Map<String,Object> videoClassifyMap = new HashMap<>();
+                List<Map<String, Object>> groupList = new ArrayList<>();
+                for (int j = i * groupCount; j < (i + 1) * groupCount; j++) {
+                    if (j < list.size()) {
+                        Map<String, Object> videoClassifyMap = new HashMap<>();
                         SysVideoClassify sysVideoClassify = list.get(j);
                         videoClassifyMap.put("cateName", sysVideoClassify.getCateName());
                         videoClassifyMap.put("cateId", sysVideoClassify.getId());
                         groupList.add(videoClassifyMap);
-                    }else{
+                    } else {
                         break;
                     }
                 }
@@ -777,6 +776,70 @@ public class WechatAppletController extends BaseController {
         }
         return AjaxResult.success(result);
     }
+
+    @GetMapping("/studyVideoClassify")
+    public AjaxResult fetchStudyVideoClassify(@RequestParam String openid) {
+        int payed = 0;
+        SysWxUserInfo userInfo = sysWxUserInfoService.selectSysWxUserInfoById(openid);
+        if (StringUtils.isNotNull(userInfo)) {
+            List<SysOrder> orders = sysOrderService.getAllOrderByCusId(userInfo.getCusId());
+            if (StringUtils.isNotEmpty(orders)) {
+                payed = 1;
+            }
+        }
+
+        SysVideoClassify sysVideoClassify = new SysVideoClassify();
+        //父级分类ID 0表示主分类
+        sysVideoClassify.setParentId(4l);
+        //客户类型 0未付费客户-playLevel根据上传的标记  1已付费客户-playLevel全为0
+        sysVideoClassify.setUserType(payed);
+        List<VideoClassifyResponse> list = sysVideoClassifyService.getAllClassifyAndVideo(sysVideoClassify);
+
+        String imgUrl = "https://stdiet.oss-cn-shenzhen.aliyuncs.com/videoCover/2021-07-12/";
+        if (StringUtils.isNotNull(list)) {
+            for (VideoClassifyResponse res : list) {
+                List<VideoClassifyResponse> classifies = res.getChildrenClassify();
+                if (StringUtils.isEmpty(classifies)) {
+                    res.setImgUrl(AliyunOSSUtils.generatePresignedUrl(imgUrl + res.getId() + ".png"));
+                } else {
+                    for (VideoClassifyResponse twoRes : classifies) {
+                        twoRes.setImgUrl(AliyunOSSUtils.generatePresignedUrl(imgUrl + twoRes.getId() + ".png"));
+                    }
+                }
+            }
+        }
+
+        return AjaxResult.success(list);
+    }
+
+    @GetMapping("/studyVideoComments")
+    public AjaxResult fetchStudyVideoComments(@RequestParam String openid, @RequestParam String topicId) {
+        SysVideoComment videoComment = new SysVideoComment();
+        videoComment.setTopicId(topicId);
+        List<SysVideoComment> comments = iSysNutritionalVideoService.selectVideoCommentByTopicId(videoComment, openid);
+        return AjaxResult.success(comments);
+    }
+
+    @PostMapping("/video/post/comment")
+    public AjaxResult videoPostComment(@RequestBody SysVideoComment videoComment, @RequestParam String openid) {
+        SysVideoComment comment = iSysNutritionalVideoService.insertVideoComment(videoComment);
+        if (StringUtils.isNull(comment)) {
+            return AjaxResult.error();
+        }
+
+        return AjaxResult.success(comment);
+    }
+
+    @PostMapping(value = "/video/post/reply")
+    public AjaxResult videoPostReply(@RequestBody SysVideoComment videoComment, @RequestParam String openid) {
+        SysVideoComment reply = iSysNutritionalVideoService.insertVideoCommentReply(videoComment);
+
+        if (StringUtils.isNull(reply)) {
+            return AjaxResult.error();
+        }
+
+        return AjaxResult.success(reply);
+    }
 }
 
 
diff --git a/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java b/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java
index 87fdda38f..4291edb72 100644
--- a/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java
+++ b/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java
@@ -2,6 +2,9 @@ package com.stdiet.common.core.domain.entity;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.stdiet.common.annotation.Excel;
@@ -16,6 +19,7 @@ import java.util.List;
  * 
  * @author stdiet
  */
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class SysDictData extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java
index 8ed1199ad..ff3f99b3d 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java
@@ -1,14 +1,11 @@
 package com.stdiet.custom.dto.response;
 
 import lombok.Data;
-import java.io.Serializable;
+
 import java.util.List;
-import java.util.Map;
 
 @Data
-public class VideoClassifyResponse implements Serializable {
-
-    private static final long serialVersionUID = 1L;
+public class VideoClassifyResponse {
 
     //目录分类ID
     private Long id;
@@ -19,8 +16,10 @@ public class VideoClassifyResponse implements Serializable {
     //用户类型 0 普通用户 1付费客户
     private Integer userType;
 
+    private String imgUrl;
+
     //子分类
-    private List<VideoClassifyTwoResponse> childrenClassify;
+    private List<VideoClassifyResponse> childrenClassify;
 
     //子视频
     private List<VideoResponse> childrenVideo;
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java
index a1b571a04..0979ba70e 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java
@@ -299,9 +299,11 @@ public class SysNutritionalVideoServiceImpl implements ISysNutritionalVideoServi
             }
             if (comment.getFromRole().equals("phone")) {
                 comment.setFromUid(StringUtils.hiddenPhoneNumber(comment.getFromUid()));
+                comment.setFromName(StringUtils.hiddenPhoneNumber(comment.getFromName()));
             }
             if (comment.getToRole().equals("phone")) {
                 comment.setToUid(StringUtils.hiddenPhoneNumber(comment.getToUid()));
+                comment.setToName(StringUtils.hiddenPhoneNumber(comment.getToName()));
             }
             List<SysVideoComment> replys = comment.getReplys();
             for (SysVideoComment reply : replys) {
@@ -312,9 +314,11 @@ public class SysNutritionalVideoServiceImpl implements ISysNutritionalVideoServi
                 }
                 if (reply.getFromRole().equals("phone")) {
                     reply.setFromUid(StringUtils.hiddenPhoneNumber(reply.getFromUid()));
+                    reply.setFromName(StringUtils.hiddenPhoneNumber(reply.getFromName()));
                 }
                 if (reply.getToRole().equals("phone")) {
                     reply.setToUid(StringUtils.hiddenPhoneNumber(reply.getToUid()));
+                    reply.setToName(StringUtils.hiddenPhoneNumber(reply.getToName()));
                 }
             }
         }
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysVideoCommentMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysVideoCommentMapper.xml
index c837bf606..eb0eac022 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysVideoCommentMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysVideoCommentMapper.xml
@@ -14,9 +14,10 @@
         <result column="to_role" property="toRole"/>
         <!--        <result column="img" property="img" typeHandler="com.stdiet.custom.typehandler.ArrayJsonHandler"/>-->
         <result column="create_time" property="createTime"/>
-        <!--        <association property="fromName" column="{uid=from_uid,role=from_role}" select="selectUserInfo"/>-->
-        <!--        <association property="fromAvatar" column="{uid=from_uid,role=from_role}" select="selectUserAvatar"/>-->
-        <!--        <association property="toName" column="{uid=to_uid,role=to_role}" select="selectUserInfo"/>-->
+        <association property="fromName" column="{uid=from_uid,role=from_role}" select="selectUserInfo"/>
+        <association property="fromAvatar" column="{uid=from_uid,role=from_role}" select="selectUserAvatar"/>
+        <association property="toName" column="{uid=to_uid,role=to_role}" select="selectUserInfo"/>
+        <association property="toAvatar" column="{uid=to_uid,role=to_role}" select="selectUserAvatar"/>
         <association property="replys" column="id"
                      select="selectVideoCommentReplyByCommentId"/>
     </resultMap>
@@ -33,30 +34,33 @@
         <result column="reply_id" property="replyId"/>
         <!--        <result column="img" property="img" typeHandler="com.stdiet.custom.typehandler.ArrayJsonHandler"/>-->
         <result column="create_time" property="createTime"/>
-        <!--        <association property="fromName" column="{uid=from_uid,role=from_role}" select="selectUserInfo"/>-->
-        <!--        <association property="fromAvatar" column="{uid=from_uid,role=from_role}" select="selectUserAvatar"/>-->
-        <!--        <association property="toName" column="{uid=to_uid,role=to_role}" select="selectUserInfo"/>-->
-        <!--        <association property="toAvatar" column="{uid=to_uid,role=to_role}" select="selectUserAvatar"/>-->
+        <association property="fromName" column="{uid=from_uid,role=from_role}" select="selectUserInfo"/>
+        <association property="fromAvatar" column="{uid=from_uid,role=from_role}" select="selectUserAvatar"/>
+        <association property="toName" column="{uid=to_uid,role=to_role}" select="selectUserInfo"/>
+        <association property="toAvatar" column="{uid=to_uid,role=to_role}" select="selectUserAvatar"/>
     </resultMap>
 
     <select id="selectVideoCommentByTopicId" resultMap="SysVideoCommentResult">
         select * from sys_nutritional_video_comment where topic_id = #{topicId}  and del_flag = 0
-        order by create_time asc
+        order by create_time desc
     </select>
 
     <select id="selectVideoCommentReplyByCommentId" resultMap="SysVideoCommentReplyResult">
         select * from sys_nutritional_video_reply where comment_id = #{id} and del_flag = 0
-        order by create_time asc
+        order by create_time desc
     </select>
 
     <!--    查询人名-->
     <select id="selectUserInfo" parameterType="java.util.Map" resultType="String">
         <choose>
             <when test="_parameter.get('role') == 'customer'">
-                select name from sys_customer where id = #{uid}
+                select nick_name from sys_wx_user_info where openid = #{uid}
+            </when>
+            <when test="_parameter.get('uid') == null">
+                select "" as nick_name
             </when>
             <otherwise>
-                select nick_name from sys_user where user_id = #{uid}
+                select #{uid} as nick_name
             </otherwise>
         </choose>
     </select>
@@ -65,11 +69,10 @@
     <select id="selectUserAvatar" parameterType="java.util.Map" resultType="String">
         <choose>
             <when test="_parameter.get('role') == 'customer'">
-                select avatar_url from sys_wx_user_info where cus_id = #{uid}
+                select avatar_url from sys_wx_user_info where openid = #{uid}
             </when>
             <otherwise>
-                select IF(avatar != '', CONCAT("https://api.stdiet.top/prod-api", avatar), '') as avatar from sys_user
-                where user_id = #{uid}
+                select "" as avatar_url
             </otherwise>
         </choose>
     </select>