From 8d8dc776422e453a403bea16e3693b9b58488589 Mon Sep 17 00:00:00 2001
From: xiezhijun <15270898033@163.com>
Date: Wed, 14 Apr 2021 17:25:40 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=89=93=E5=8D=A1?=
 =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../custom/SysWxUserLogController.java        |  9 ++
 .../custom/WechatAppletController.java        | 29 ++++++
 .../stdiet/custom/domain/SysWxUserLog.java    | 19 ++++
 .../com/stdiet/custom/page/WxLogInfo.java     | 96 +++++++++++++++++++
 .../mapper/custom/SysWxUserLogMapper.xml      | 77 +++++++++------
 stdiet-ui/src/api/custom/wxUserLog.js         | 12 +++
 .../PunchLog/PunchLogDetail/index.vue         | 12 +--
 7 files changed, 221 insertions(+), 33 deletions(-)

diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java
index a69ddc3c6..43bedabd5 100644
--- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java
+++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java
@@ -200,4 +200,13 @@ public class SysWxUserLogController extends BaseController {
         List<SysWxUserLog> list = sysWxUserLogService.getWxUserLogListByCustomerId(sysWxUserLog);
         return AjaxResult.success(list);
     }
+
+    /**
+     * 点评客户打卡内容
+     */
+    @PreAuthorize("@ss.hasPermi('custom:wxUserLog:query')")
+    @PostMapping("/commentPunchContent")
+    public AjaxResult commentPunchContent(@RequestBody SysWxUserLog sysWxUserLog) {
+        return toAjax(sysWxUserLogService.updateSysWxUserLog(sysWxUserLog));
+    }
 }
\ No newline at end of file
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 e8832cffd..1ad7c421b 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
@@ -131,6 +131,35 @@ public class WechatAppletController extends BaseController {
                     isPunch = true;
                 }
             }
+
+            for (WxLogInfo wxLogInfo : list) {
+                Map<String, List<String>> imageUrlMap = new HashMap<>();
+
+                List<String> breakfastImagesUrlList = StringUtils.isNotEmpty(wxLogInfo.getBreakfastImages()) ? Arrays.asList(wxLogInfo.getBreakfastImages().split("\\|")) : new ArrayList<>();
+                imageUrlMap.put("breakfastImages", breakfastImagesUrlList);
+
+                List<String> lunchImagesUrlList = StringUtils.isNotEmpty(sysWxUserLog.getLunchImages()) ? Arrays.asList(sysWxUserLog.getLunchImages().split("\\|")) : new ArrayList<>();
+                imageUrlMap.put("lunchImages", lunchImagesUrlList);
+
+                List<String> dinnerImagesUrlList = StringUtils.isNotEmpty(sysWxUserLog.getDinnerImages()) ? Arrays.asList(sysWxUserLog.getDinnerImages().split("\\|")) : new ArrayList<>();
+                imageUrlMap.put("dinnerImages", dinnerImagesUrlList);
+
+                List<String> extraMealImagesUrlList = StringUtils.isNotEmpty(sysWxUserLog.getExtraMealImages()) ? Arrays.asList(sysWxUserLog.getExtraMealImages().split("\\|")) : new ArrayList<>();
+                imageUrlMap.put("extraMealImages", extraMealImagesUrlList);
+
+                List<String> bodyImagesUrlList = StringUtils.isNotEmpty(sysWxUserLog.getBodyImages()) ? Arrays.asList(sysWxUserLog.getBodyImages().split("\\|")) : new ArrayList<>();
+                imageUrlMap.put("bodyImages", bodyImagesUrlList );
+
+                //生成预览链接
+                Map<String,List<String>> downUrlList = AliyunOSSUtils.generatePresignedUrl(imageUrlMap);
+
+                wxLogInfo.setBreakfastImagesUrl(downUrlList.get("breakfastImages"));
+                wxLogInfo.setLunchImagesUrl(downUrlList.get("lunchImages"));
+                wxLogInfo.setDinnerImagesUrl(downUrlList.get("dinnerImages"));
+                wxLogInfo.setExtraMealImagesUrl(downUrlList.get("extraMealImages"));
+                wxLogInfo.setBodyImagesUrl(downUrlList.get("bodyImages"));
+            }
+
             Collections.reverse(list);
             TableDataInfo tableDataInfo = getDataTable(list);
             result.put("isPunch", isPunch);
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserLog.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserLog.java
index 91fcae3ff..67486e488 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserLog.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserLog.java
@@ -123,6 +123,25 @@ public class SysWxUserLog extends BaseEntity
     @Excel(name = "体型对比照")
     private String bodyImages;
 
+    /** 服务建议 */
+    @Excel(name = "服务建议")
+    private String suggest;
+
+    /** 目标体重 */
+    @Excel(name = "目标体重")
+    private BigDecimal targetWeight;
+
+    /** 执行评分,五分制 */
+    @Excel(name = "执行评分,五分制")
+    private BigDecimal executionScore;
+
+    /** 点评 */
+    @Excel(name = "点评")
+    private String comment;
+
+    /** 删除标识 0未删除 1已删除 */
+    private Long delFlag;
+
     //售后营养师ID
     private Long afterNutritionistId;
 
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/page/WxLogInfo.java b/stdiet-custom/src/main/java/com/stdiet/custom/page/WxLogInfo.java
index efc7f37c1..cedbd6192 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/page/WxLogInfo.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/page/WxLogInfo.java
@@ -1,10 +1,12 @@
 package com.stdiet.custom.page;
 
+import com.stdiet.common.annotation.Excel;
 import com.stdiet.common.utils.DateUtils;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 public class WxLogInfo implements Serializable {
     private static final long serialVersionUID = 1L;
@@ -51,6 +53,28 @@ public class WxLogInfo implements Serializable {
     /** 体型对比照 */
     private String bodyImages;
 
+    /** 服务建议 */
+    private String suggest;
+
+    /** 目标体重 */
+    private BigDecimal targetWeight;
+
+    /** 执行评分,五分制 */
+    private BigDecimal executionScore;
+
+    /** 点评 */
+    private String comment;
+
+    private List<String> breakfastImagesUrl;
+
+    private List<String> lunchImagesUrl;
+
+    private List<String> dinnerImagesUrl;
+
+    private List<String> extraMealImagesUrl;
+
+    private List<String> bodyImagesUrl;
+
     public String getDate() {
         return date;
     }
@@ -187,6 +211,78 @@ public class WxLogInfo implements Serializable {
         this.bodyImages = bodyImages;
     }
 
+    public String getSuggest() {
+        return suggest;
+    }
+
+    public void setSuggest(String suggest) {
+        this.suggest = suggest;
+    }
+
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    public BigDecimal getExecutionScore() {
+        return executionScore;
+    }
+
+    public void setExecutionScore(BigDecimal executionScore) {
+        this.executionScore = executionScore;
+    }
+
+    public String getComment() {
+        return comment;
+    }
+
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
+
+    public List<String> getBreakfastImagesUrl() {
+        return breakfastImagesUrl;
+    }
+
+    public void setBreakfastImagesUrl(List<String> breakfastImagesUrl) {
+        this.breakfastImagesUrl = breakfastImagesUrl;
+    }
+
+    public List<String> getLunchImagesUrl() {
+        return lunchImagesUrl;
+    }
+
+    public void setLunchImagesUrl(List<String> lunchImagesUrl) {
+        this.lunchImagesUrl = lunchImagesUrl;
+    }
+
+    public List<String> getDinnerImagesUrl() {
+        return dinnerImagesUrl;
+    }
+
+    public void setDinnerImagesUrl(List<String> dinnerImagesUrl) {
+        this.dinnerImagesUrl = dinnerImagesUrl;
+    }
+
+    public List<String> getExtraMealImagesUrl() {
+        return extraMealImagesUrl;
+    }
+
+    public void setExtraMealImagesUrl(List<String> extraMealImagesUrl) {
+        this.extraMealImagesUrl = extraMealImagesUrl;
+    }
+
+    public List<String> getBodyImagesUrl() {
+        return bodyImagesUrl;
+    }
+
+    public void setBodyImagesUrl(List<String> bodyImagesUrl) {
+        this.bodyImagesUrl = bodyImagesUrl;
+    }
+
     @Override
     public String toString() {
         return "WxLogInfo{" +
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml
index c6d7fc47b..15c4035c3 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml
@@ -33,6 +33,11 @@
         <result property="dinnerImages"    column="dinner_images"    />
         <result property="extraMealImages"    column="extra_meal_images"    />
         <result property="bodyImages"    column="body_images"    />
+        <result property="suggest"    column="suggest"    />
+        <result property="targetWeight"    column="target_weight"    />
+        <result property="executionScore"    column="execution_score"    />
+        <result property="comment"    column="comment"    />
+        <result property="delFlag"    column="del_flag"    />
         <!-- 非持久字段 -->
         <result property="customerName" column="customer_name"></result>
         <!-- 营养师 -->
@@ -58,29 +63,33 @@
         <result property="dinnerImages"    column="dinner_images"    />
         <result property="extraMealImages"    column="extra_meal_images"    />
         <result property="bodyImages"    column="body_images"    />
+        <result property="suggest"    column="suggest"    />
+        <result property="targetWeight"    column="target_weight"    />
+        <result property="executionScore"    column="execution_score"    />
+        <result property="comment"    column="comment"    />
     </resultMap>
 
     <sql id="selectSysWxUserLogVo">
         select id,openid, weight, appid, phone, log_time, sleep_time, wakeup_time, sport, avatar_url, diet, insomnia, defecation, water, create_by, create_time, update_by, update_time, remark,
-         emotion,sly_eat_food,constipation,breakfast_images,lunch_images,dinner_images,extra_meal_images,body_images
+         emotion,sly_eat_food,constipation,breakfast_images,lunch_images,dinner_images,extra_meal_images,body_images,suggest,execution_score,comment
          from sys_wx_user_log
     </sql>
 
     <select id="checkWxLogInfoCount" parameterType="String" resultType="Integer">
-        select count(*) from sys_wx_user_log where to_days(log_time) = to_days(now()) and openid = #{openid}
+        select count(*) from sys_wx_user_log where to_days(log_time) = to_days(now()) and openid = #{openid} and del_flag = 0
     </select>
 
     <!-- 后台查询 -->
     <select id="selectSysWxUserLogList" parameterType="SysWxUserLog" resultMap="SysWxUserLogResult">
         SELECT wxlog.id,wxinfo.appid,wxinfo.openid,wxinfo.avatar_url,wxinfo.phone,wxlog.weight,wxlog.log_time,wxlog.sleep_time, wxlog.wakeup_time,wxlog.defecation, wxlog.water, wxlog.insomnia,wxlog.sport,wxlog.diet,wxlog.remark,
         wxlog.emotion,wxlog.sly_eat_food,wxlog.constipation,wxlog.breakfast_images,wxlog.lunch_images,wxlog.dinner_images,wxlog.extra_meal_images,wxlog.body_images,
-        sc.name as customer_name, su.nick_name as nutritionist, su_atferSale.nick_name as after_nutritionist
+        wxlog.suggest,wxlog.execution_score,wxlog.comment,sc.name as customer_name, su.nick_name as nutritionist, su_atferSale.nick_name as after_nutritionist
         FROM sys_wx_user_log wxlog
         left join sys_wx_user_info wxinfo on wxinfo.openid  = wxlog.openid
         left join sys_customer sc on sc.phone = wxinfo.phone and sc.del_flag = 0
         left join sys_user su on su.user_id = sc.main_dietitian and su.del_flag = '0'
         left join sys_user su_atferSale on su_atferSale.user_id = sc.after_dietitian and su_atferSale.del_flag = '0'
-        where wxinfo.phone is not null
+        where wxlog.del_flag = 0 and wxinfo.phone is not null
         <if test="id != null">
             and wxlog.id = #{id}
         </if>
@@ -103,24 +112,22 @@
     </select>
 
     <select id="selectWxLogInfoList" parameterType="SysWxUserLog" resultMap="WxLogInfo">
-        SELECT * FROM sys_wx_user_log log
-        <where>
-            <choose>
-                <when test="phone == null or phone == ''">
-                    (SELECT phone FROM sys_wx_user_info WHERE openid = #{openid}) = log.phone
-                </when>
-                <otherwise>
-                    <if test="openid != null  and openid != ''">and openid = #{openid}</if>
-                    <if test="phone != null  and phone != ''">or phone = #{phone}</if>
-                </otherwise>
-            </choose>
-        </where>
+        SELECT * FROM sys_wx_user_log log where log.del_flag = 0
+        <choose>
+            <when test="phone == null or phone == ''">
+                (SELECT phone FROM sys_wx_user_info WHERE openid = #{openid}) = log.phone
+            </when>
+            <otherwise>
+                <if test="openid != null  and openid != ''">and openid = #{openid}</if>
+                <if test="phone != null  and phone != ''">or phone = #{phone}</if>
+            </otherwise>
+        </choose>
         order by log_time asc
     </select>
 
     <select id="selectSysWxUserLogById" parameterType="String" resultMap="SysWxUserLogResult">
         <include refid="selectSysWxUserLogVo"/>
-        where id = #{id}
+        where id = #{id} and del_flag = 0
     </select>
 
     <insert id="insertSysWxUserLog" parameterType="SysWxUserLog">
@@ -152,6 +159,11 @@
             <if test="dinnerImages != null">dinner_images,</if>
             <if test="extraMealImages != null">extra_meal_images,</if>
             <if test="bodyImages != null">body_images,</if>
+            <if test="suggest != null">suggest,</if>
+            <if test="targetWeight != null">target_weight,</if>
+            <if test="executionScore != null">execution_score,</if>
+            <if test="comment != null">comment,</if>
+            <if test="delFlag != null">del_flag,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="openid != null">#{openid},</if>
@@ -180,6 +192,11 @@
             <if test="dinnerImages != null">#{dinnerImages},</if>
             <if test="extraMealImages != null">#{extraMealImages},</if>
             <if test="bodyImages != null">#{bodyImages},</if>
+            <if test="suggest != null">suggest = #{suggest},</if>
+            <if test="targetWeight != null">target_weight = #{targetWeight},</if>
+            <if test="executionScore != null">execution_score = #{executionScore},</if>
+            <if test="comment != null">comment = #{comment},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
         </trim>
     </insert>
 
@@ -212,32 +229,38 @@
             <if test="dinnerImages != null">dinner_images = #{dinnerImages},</if>
             <if test="extraMealImages != null">extra_meal_images = #{extraMealImages},</if>
             <if test="bodyImages != null">body_images = #{bodyImages},</if>
+            <if test="suggest != null">suggest = #{suggest},</if>
+            <if test="targetWeight != null">target_weight = #{targetWeight},</if>
+            <if test="executionScore != null">execution_score = #{executionScore},</if>
+            <if test="comment != null">comment = #{comment},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
         </trim>
         where id = #{id}
     </update>
 
-    <delete id="deleteSysWxUserLogById" parameterType="Long">
-        delete from sys_wx_user_log where id = #{id}
-    </delete>
+    <update id="deleteSysWxUserLogById" parameterType="Long">
+        update sys_wx_user_log set del_flag = 1 where id = #{id}
+    </update>
 
-    <delete id="deleteSysWxUserLogByIds" parameterType="String">
-        delete from sys_wx_user_log where id in
+    <update id="deleteSysWxUserLogByIds" parameterType="String">
+        update sys_wx_user_log set del_flag = 1  where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
-    </delete>
+    </update>
 
     <!-- 根据openid和手机号查询对应打卡记录 -->
     <select id="getWxLogInfoList" parameterType="SysWxUserLog" resultMap="WxLogInfo">
         SELECT wxlog.weight,wxlog.log_time,wxlog.sleep_time, wxlog.wakeup_time,wxlog.defecation, wxlog.water, wxlog.insomnia,wxlog.sport,wxlog.diet,
         wxlog.emotion,wxlog.sly_eat_food,wxlog.constipation,wxlog.breakfast_images,wxlog.lunch_images,wxlog.dinner_images,wxlog.extra_meal_images,wxlog.body_images
+        ,wxlog.suggest,wxlog.execution_score,wxlog.comment
         FROM sys_wx_user_log wxlog left join sys_wx_user_info wxinfo on wxinfo.openid  = wxlog.openid
-        where wxinfo.openid = #{openid} or wxinfo.phone = #{phone}
+        where wxlog.del_flag = 0 and (wxinfo.openid = #{openid} or wxinfo.phone = #{phone})
         order by wxlog.log_time desc
     </select>
 
     <select id="selectSysWxUserLogByDateAndOpenId"  parameterType="SysWxUserLog" resultMap="SysWxUserLogResult">
-        select id from sys_wx_user_log where to_days(log_time) = to_days(#{logTime}) and openid = #{openid} limit 1
+        select id from sys_wx_user_log where del_flag = 0 and to_days(log_time) = to_days(#{logTime}) and openid = #{openid} limit 1
     </select>
 
     <!-- 根据手机号和openid查询打卡连续天数,只查询前两条 -->
@@ -250,7 +273,7 @@
                 (
                     SELECT log_time,CONCAT(YEAR(log_time),'-',MONTH(log_time)) AS yearMonth,DAY(log_time) AS days
                     FROM sys_wx_user_log wxlog left join sys_wx_user_info wxinfo on wxinfo.openid  = wxlog.openid
-                    where wxinfo.openid = #{openid} or wxinfo.phone = #{phone}
+                    where wxlog.del_flag = 0 and wxinfo.openid = #{openid} or wxinfo.phone = #{phone}
                 ) AS s ORDER BY s.log_time DESC
             ) ss
         ) sss GROUP BY yearMonth,day_cha LIMIT 2
@@ -261,7 +284,7 @@
         SELECT wxlog.id,wxlog.log_time,wxlog.weight FROM sys_wx_user_log wxlog
         left join sys_wx_user_info wxinfo on wxinfo.openid  = wxlog.openid
         left join sys_customer sc on sc.phone = wxinfo.phone and sc.del_flag = 0
-        where wxinfo.phone is not null and sc.id = #{customerId}
+        where wxlog.del_flag = 0 and wxinfo.phone is not null and sc.id = #{customerId}
         <if test="beginTime != null and beginTime != ''">and date_format(wxlog.log_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')</if>
         <if test="endTime != null and endTime != ''">and date_format(wxlog.log_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')</if>
         order by wxlog.log_time asc
diff --git a/stdiet-ui/src/api/custom/wxUserLog.js b/stdiet-ui/src/api/custom/wxUserLog.js
index e6a11ef64..cbaeb5abf 100644
--- a/stdiet-ui/src/api/custom/wxUserLog.js
+++ b/stdiet-ui/src/api/custom/wxUserLog.js
@@ -70,4 +70,16 @@ export function getAllPunchLogByCustomerId(query) {
   })
 }
 
+// 点评打卡
+export function commentPunchContent(data) {
+  return request({
+    url: '/custom/wxUserLog/commentPunchContent',
+    method: 'post',
+    data: data
+  })
+}
+
+
+
+
 
diff --git a/stdiet-ui/src/components/PunchLog/PunchLogDetail/index.vue b/stdiet-ui/src/components/PunchLog/PunchLogDetail/index.vue
index b51b6adaa..4d84085d7 100644
--- a/stdiet-ui/src/components/PunchLog/PunchLogDetail/index.vue
+++ b/stdiet-ui/src/components/PunchLog/PunchLogDetail/index.vue
@@ -8,15 +8,15 @@
   >
     <div style="margin-top: -20px;">
         <div
-          style="float: right;  "
-          
+          style="float: right;  margin-bottom:10px"
         >
          
-         <!--<el-button
+         <el-button 
+            v-hasPermi="['custom:wxUserLog:query']"
             type="primary"
             plain
-            >评分</el-button
-          >-->
+            >打卡点评</el-button
+          >
           
           
         </div>
@@ -84,7 +84,7 @@
 </template>
 <script>
 import {
-  getPunchLogDetail
+  getPunchLogDetail,commentPunchContent
 } from "@/api/custom/wxUserLog";
 import TableDetailMessage from "@/components/TableDetailMessage";