Merge branch 'develop' of https://gitee.com/darlk/ShengTangManage into xzj

This commit is contained in:
xiezhijun
2021-05-27 16:40:17 +08:00
13 changed files with 707 additions and 73 deletions

View File

@ -0,0 +1,92 @@
package com.stdiet.custom.domain;
import com.alibaba.fastjson.JSONArray;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SysServicesTopic {
/**
*
*/
String id;
/**
* 问题id
*/
String topicId;
/**
* 问题类型
*/
Integer topicType;
String commentId;
String replyId;
Integer replyType;
/**
* 角色
*/
Long uid;
Long fromUid;
Long toUid;
/**
* 问题内容
*/
String content;
/**
* 图片地址
*/
JSONArray img;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
Date createTime;
/**
* 0-未读 1-已读
*/
Integer read;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
Date updateTime;
/**
* 角色
*/
String role;
String fromRole;
String toRole;
// 非持久化字段
/**
* 角色名字
*/
String fromName;
String toName;
String name;
List<SysServicesTopic> comments;
List<SysServicesTopic> replys;
}

View File

@ -0,0 +1,22 @@
package com.stdiet.custom.mapper;
import com.stdiet.custom.domain.SysServicesQuestion;
import com.stdiet.custom.domain.SysServicesTopic;
import java.util.List;
public interface SysServicesTopicMapper {
List<SysServicesTopic> selectSysServicesTopicByUserIdAndRole(SysServicesTopic topic);
int insertSysServicesTopic(SysServicesTopic topic);
int insertSysServicesTopicStatus(List<SysServicesTopic> topics);
int updateSysServicesTopicStatus(SysServicesTopic topic);
int inserSysServicesTopicComment(SysServicesTopic topic);
int inserSysServicesTopicReply(SysServicesTopic topic);
List<SysServicesTopic> selectSysServicesTopicSessionByTopicId(String topicId);
}

View File

@ -8,7 +8,7 @@ public interface ISysServicesQuestionService {
List<SysServicesQuestion> selectSysServicesQuestionByUserIdAndRole(SysServicesQuestion servicesQuestion);
int insertSysServicesQuestion(SysServicesQuestion servicesQuestion);
SysServicesQuestion insertSysServicesQuestion(SysServicesQuestion servicesQuestion);
int updateSysServicesQuestionStatus(SysServicesQuestion sysServicesQuestion);

View File

@ -0,0 +1,21 @@
package com.stdiet.custom.service;
import com.stdiet.custom.domain.SysServicesQuestion;
import com.stdiet.custom.domain.SysServicesTopic;
import java.util.List;
public interface ISysServicesTopicService {
List<SysServicesTopic> selectSysServicesTopicByUserIdAndRole(SysServicesTopic topic);
SysServicesTopic insertSysServicesTopic(SysServicesTopic topic);
int updateSysServicesTopicStatus(SysServicesTopic topic);
SysServicesTopic inserSysServicesTopicReply(SysServicesTopic topic);
SysServicesTopic inserSysServicesTopicComment(SysServicesTopic topic);
List<SysServicesTopic> selectSysServicesTopicSessionByTopicId(String topicId);
}

View File

@ -1,5 +1,6 @@
package com.stdiet.custom.service.impl;
import com.stdiet.common.utils.DateUtils;
import com.stdiet.common.utils.uuid.UUID;
import com.stdiet.custom.domain.SysCustomer;
import com.stdiet.custom.domain.SysServicesQuestion;
@ -26,9 +27,11 @@ public class SysServicesQuestionServiceImp implements ISysServicesQuestionServic
}
@Override
public int insertSysServicesQuestion(SysServicesQuestion servicesQuestion) {
public SysServicesQuestion insertSysServicesQuestion(SysServicesQuestion servicesQuestion) {
// 生成uuid
servicesQuestion.setQueId(UUID.randomUUID().toString().replaceAll("-", ""));
servicesQuestion.setRead(1);
servicesQuestion.setCreateTime(DateUtils.getNowDate());
servicesQuestionMapper.insertSysServicesQuestion(servicesQuestion);
@ -45,25 +48,31 @@ public class SysServicesQuestionServiceImp implements ISysServicesQuestionServic
SysServicesQuestion dieticianStatus = new SysServicesQuestion();
dieticianStatus.setUserId(customer.getMainDietitian());
dieticianStatus.setRole("dietician");
customerStatus.setRead(0);
dieticianStatus.setRead(0);
dieticianStatus.setQueId(servicesQuestion.getQueId());
statusList.add(dieticianStatus);
SysServicesQuestion afterSaleStatus = new SysServicesQuestion();
afterSaleStatus.setUserId(customer.getAfterDietitian());
afterSaleStatus.setRole("after_sale");
customerStatus.setRead(0);
afterSaleStatus.setRead(0);
afterSaleStatus.setQueId(servicesQuestion.getQueId());
statusList.add(afterSaleStatus);
SysServicesQuestion dieticianAssistantStatus = new SysServicesQuestion();
dieticianAssistantStatus.setUserId(customer.getAssistantDietitian());
dieticianAssistantStatus.setRole("dietician_assistant");
customerStatus.setRead(0);
dieticianAssistantStatus.setRead(0);
dieticianAssistantStatus.setQueId(servicesQuestion.getQueId());
statusList.add(dieticianAssistantStatus);
return servicesQuestionMapper.insertSysServicesQuestionStatus(statusList);
servicesQuestionMapper.insertSysServicesQuestionStatus(statusList);
servicesQuestion.setId(customerStatus.getId());
servicesQuestion.setCusId(null);
return servicesQuestion;
}

View File

@ -0,0 +1,121 @@
package com.stdiet.custom.service.impl;
import com.stdiet.common.utils.DateUtils;
import com.stdiet.common.utils.uuid.UUID;
import com.stdiet.custom.domain.SysCustomer;
import com.stdiet.custom.domain.SysServicesTopic;
import com.stdiet.custom.mapper.SysCustomerMapper;
import com.stdiet.custom.mapper.SysServicesTopicMapper;
import com.stdiet.custom.service.ISysServicesTopicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class SysServicesTopicServiceImp implements ISysServicesTopicService {
@Autowired
SysServicesTopicMapper servicesTopicMapper;
@Autowired
SysCustomerMapper sysCustomerMapper;
@Override
public List<SysServicesTopic> selectSysServicesTopicByUserIdAndRole(SysServicesTopic topic) {
return servicesTopicMapper.selectSysServicesTopicByUserIdAndRole(topic);
}
@Override
public SysServicesTopic insertSysServicesTopic(SysServicesTopic topic) {
// 生成uuid
topic.setTopicId(UUID.randomUUID().toString().replaceAll("-", ""));
topic.setRead(1);
topic.setCreateTime(DateUtils.getNowDate());
servicesTopicMapper.insertSysServicesTopic(topic);
SysCustomer customer = sysCustomerMapper.selectSysCustomerById(topic.getUid());
List<SysServicesTopic> statusList = new ArrayList<>();
SysServicesTopic customerStatus = new SysServicesTopic();
customerStatus.setUid(customer.getId());
customerStatus.setRole("customer");
customerStatus.setRead(1);
customerStatus.setTopicId(topic.getTopicId());
statusList.add(customerStatus);
SysServicesTopic dieticianStatus = new SysServicesTopic();
dieticianStatus.setUid(customer.getMainDietitian());
dieticianStatus.setRole("dietician");
dieticianStatus.setRead(0);
dieticianStatus.setTopicId(topic.getTopicId());
statusList.add(dieticianStatus);
SysServicesTopic afterSaleStatus = new SysServicesTopic();
afterSaleStatus.setUid(customer.getAfterDietitian());
afterSaleStatus.setRole("after_sale");
afterSaleStatus.setRead(0);
afterSaleStatus.setTopicId(topic.getTopicId());
statusList.add(afterSaleStatus);
SysServicesTopic dieticianAssistantStatus = new SysServicesTopic();
dieticianAssistantStatus.setUid(customer.getAssistantDietitian());
dieticianAssistantStatus.setRole("dietician_assistant");
dieticianAssistantStatus.setRead(0);
dieticianAssistantStatus.setTopicId(topic.getTopicId());
statusList.add(dieticianAssistantStatus);
servicesTopicMapper.insertSysServicesTopicStatus(statusList);
topic.setId(customerStatus.getId());
topic.setUid(null);
return topic;
}
@Override
public int updateSysServicesTopicStatus(SysServicesTopic topic) {
return servicesTopicMapper.updateSysServicesTopicStatus(topic);
}
@Override
public SysServicesTopic inserSysServicesTopicReply(SysServicesTopic topic) {
String uuid = java.util.UUID.randomUUID().toString().replace("-", "");
topic.setId(uuid);
int row = servicesTopicMapper.inserSysServicesTopicReply(topic);
if (row > 0) {
// 设置未读
SysServicesTopic status = new SysServicesTopic();
status.setRead(0);
status.setTopicId(topic.getTopicId());
status.setRole(topic.getRole());
servicesTopicMapper.updateSysServicesTopicStatus(status);
}
return topic;
}
@Override
public SysServicesTopic inserSysServicesTopicComment(SysServicesTopic topic) {
String uuid = java.util.UUID.randomUUID().toString().replace("-", "");
topic.setId(uuid);
int row = servicesTopicMapper.inserSysServicesTopicComment(topic);
if (row > 0) {
// 设置未读
SysServicesTopic status = new SysServicesTopic();
status.setRead(0);
status.setTopicId(topic.getTopicId());
status.setRole(topic.getRole());
servicesTopicMapper.updateSysServicesTopicStatus(status);
}
return topic;
}
@Override
public List<SysServicesTopic> selectSysServicesTopicSessionByTopicId(String topicId) {
return servicesTopicMapper.selectSysServicesTopicSessionByTopicId(topicId);
}
}

View File

@ -48,7 +48,7 @@
) AS user USING(user_id)
</otherwise>
</choose>
ORDER BY type ASC, update_time DESC
ORDER BY `read` ASC, update_time DESC
</select>
<select id="selectSysServicesQuestionSessionByQueId" resultMap="SysServicesQuestionSessionResult"
@ -78,7 +78,7 @@
<if test="cusId != null">cus_id,</if>
<if test="content != null">content,</if>
<if test="type != null">type,</if>
<if test="cusId != null">create_time,</if>
<if test="createTime != null">create_time,</if>
<if test="img != null">img,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
@ -86,7 +86,7 @@
<if test="cusId != null">#{cusId},</if>
<if test="content != null">#{content},</if>
<if test="type != null">#{type},</if>
<if test="cusId != null">now(),</if>
<if test="createTime != null">#{createTime},</if>
<if test="img != null">
#{img, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler},
</if>
@ -94,10 +94,11 @@
</insert>
<!-- 插入问题的四个角色1用户 2营养师 3售后 4助理-->
<insert id="insertSysServicesQuestionStatus" parameterType="java.util.List">
insert into sys_services_question_status (que_id, user_id, role, create_time, update_time) values
<insert id="insertSysServicesQuestionStatus" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"
keyColumn="id">
insert into sys_services_question_status (que_id, user_id, role, `read`, create_time, update_time) values
<foreach collection="list" item="status" index="index" separator=",">
(#{status.queId}, #{status.userId}, #{status.role}, now(), now())
(#{status.queId}, #{status.userId}, #{status.role}, #{status.read}, now(), now())
</foreach>
</insert>
@ -127,8 +128,7 @@
</update>
<!-- 插入问题回复-->
<insert id="inserSysServicesQuestionReply" parameterType="SysServicesQuestion" useGeneratedKeys="true"
keyProperty="id" keyColumn="id">
<insert id="inserSysServicesQuestionReply" parameterType="SysServicesQuestion">
insert into sys_services_question_session
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="queId != null">que_id,</if>

View File

@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stdiet.custom.mapper.SysServicesTopicMapper">
<resultMap type="SysServicesTopic" id="SysServicesTopicResult">
<result column="id" property="id"/>
<result column="topic_id" property="topicId"/>
<result column="topic_type" property="topicType"/>
<result column="content" property="content"/>
<result column="name" property="name"/>
<result column="read" property="read"/>
<result column="img" property="img" typeHandler="com.stdiet.custom.typehandler.ArrayJsonHandler"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!-- 根据userId和角色查询问题列表-->
<select id="selectSysServicesTopicByUserIdAndRole" parameterType="SysServicesTopic"
resultMap="SysServicesTopicResult">
SELECT * FROM (
SELECT * FROM sys_services_topic_status WHERE role = #{role} AND uid = #{uid}
) AS status
LEFT JOIN sys_services_topic USING(topic_id)
<choose>
<when test="role == 'customer'">
LEFT JOIN (
SELECT name, id AS uid FROM sys_customer WHERE id = #{uid}
) AS customer ON status.uid = customer.uid
</when>
<otherwise>
LEFT JOIN (
SELECT user_id AS uid, nick_name AS name FROM sys_user WHERE user_id = #{uid}
) AS user ON status.uid = user.uid
</otherwise>
</choose>
ORDER BY `read` ASC, update_time DESC
</select>
<!-- 查询主题-->
<resultMap id="SysServicesTopicSessionResult" type="SysServicesTopic">
<result column="id" property="id"/>
<result column="uid" property="uid"/>
<result column="topic_id" property="topicId"/>
<result column="topic_type" property="topicType"/>
<result column="content" property="content"/>
<result column="img" property="img" typeHandler="com.stdiet.custom.typehandler.ArrayJsonHandler"/>
<result column="create_time" property="createTime"/>
<association property="name" column="{uid=uid,role=role}" select="selectUserInfo"/>
<collection property="comments" column="topic_id" select="selectServicesTopicCommentByTopicId"/>
</resultMap>
<resultMap id="ServicesTopicCommentResult" type="SysServicesTopic">
<result column="id" property="id"/>
<result column="topic_id" property="topicId"/>
<result column="content" property="content"/>
<result column="from_uid" property="fromUid"/>
<result column="from_role" property="fromRole"/>
<result column="to_uid" property="toUid"/>
<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="toName" column="{uid=to_uid,role=to_role}" select="selectUserInfo"/>
<collection property="replys" column="id" ofType="ServicesTopicCommentReplyResult"
select="selectServicesTopicCommentReplyByCommentId"/>
</resultMap>
<resultMap id="ServicesTopicCommentReplyResult" type="SysServicesTopic">
<result column="id" property="id"/>
<result column="topic_id" property="topicId"/>
<result column="content" property="content"/>
<result column="from_uid" property="fromUid"/>
<result column="from_role" property="fromRole"/>
<result column="to_uid" property="toUid"/>
<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="toName" column="{uid=to_uid,role=to_role}" select="selectUserInfo"/>
</resultMap>
<select id="selectSysServicesTopicSessionByTopicId" resultMap="SysServicesTopicSessionResult"
parameterType="String">
select topic_id, uid, 'customer' as role, content, img, create_time from sys_services_topic where topic_id = #{topicId}
</select>
<select id="selectServicesTopicCommentByTopicId" resultMap="ServicesTopicCommentResult">
select * from sys_services_topic_comment where topic_id = #{topic_id}
</select>
<select id="selectServicesTopicCommentReplyByCommentId" resultMap="ServicesTopicCommentReplyResult">
select * from sys_services_topic_reply where reply_type = 0 and reply_id = #{id}
</select>
<select id="selectServicesTopicCommentReplyReplyByCommentId" resultMap="ServicesTopicCommentReplyResult">
select * from sys_services_topic_reply where reply_type = 1 and reply_id = #{id}
</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}
</when>
<otherwise>
select nick_name from sys_user where user_id = #{uid}
</otherwise>
</choose>
</select>
<!-- 插入问题-->
<insert id="insertSysServicesTopic" parameterType="SysServicesTopic" useGeneratedKeys="true"
keyProperty="id" keyColumn="id">
insert into sys_services_topic
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="topicId != null">topic_id,</if>
<if test="uid != null">uid,</if>
<if test="content != null">content,</if>
<if test="topicType != null">topic_type,</if>
<if test="createTime != null">create_time,</if>
<if test="img != null">img,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="topicId != null">#{topicId},</if>
<if test="uid != null">#{uid},</if>
<if test="content != null">#{content},</if>
<if test="topicType != null">#{topicType},</if>
<if test="createTime != null">#{createTime},</if>
<if test="img != null">
#{img, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler},
</if>
</trim>
</insert>
<!-- 插入问题的四个角色1用户 2营养师 3售后 4助理-->
<insert id="insertSysServicesTopicStatus" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"
keyColumn="id">
insert into sys_services_topic_status (topic_id, uid, role, `read`, create_time, update_time) values
<foreach collection="list" item="status" index="index" separator=",">
(#{status.topicId}, #{status.uid}, #{status.role}, #{status.read}, now(), now())
</foreach>
</insert>
<!-- 根据状态id更新 role=customer 客户回复这时更新另外三个角色未读role != customer更新客户未读-->
<update id="updateSysServicesTopicStatus" parameterType="SysServicesTopic">
update sys_services_topic_status
<trim prefix="SET" suffixOverrides=",">
<if test="read != null">`read` = #{read},</if>
<if test="read != null">update_time = now(),</if>
</trim>
<where>
<choose>
<when test="id != null">
id = ${id}
</when>
<otherwise>
<if test="role == 'customer'">
role != #{role} and
</if>
<if test="role != 'customer'">
role = 'customer' and
</if>
topic_id = #{topicId}
</otherwise>
</choose>
</where>
</update>
<!-- 插入问题回复-->
<insert id="inserSysServicesTopicComment" parameterType="SysServicesTopic">
insert into sys_services_topic_comment
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="topicId != null">topic_id,</if>
<if test="fromUid != null">from_uid,</if>
<if test="fromRole != null">from_role,</if>
<if test="toUid != null">to_uid,</if>
<if test="toRole != null">to_role,</if>
<if test="content != null">content,</if>
<if test="img != null">img,</if>
<if test="topicId != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="topicId != null">#{topicId},</if>
<if test="fromUid != null">#{fromUid},</if>
<if test="fromRole != null">#{fromRole},</if>
<if test="toUid != null">#{toUid},</if>
<if test="toRole != null">#{toRole},</if>
<if test="content != null">#{content},</if>
<if test="img != null">
#{img, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler},
</if>
<if test="topicId != null">now(),</if>
</trim>
</insert>
<!-- 插入问题回复-->
<insert id="inserSysServicesTopicReply" parameterType="SysServicesQuestion" useGeneratedKeys="true" keyColumn="id"
keyProperty="id">
insert into sys_services_topic_reply
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="commentId != null">comment_id,</if>
<if test="replyId != null">reply_id,</if>
<if test="replyType != null">reply_type,</if>
<if test="content != null">content,</if>
<if test="fromUid != null">from_uid,</if>
<if test="toUid != null">to_uid,</if>
<if test="img != null">img,</if>
<if test="fromRole != null">from_role,</if>
<if test="toRole != null">to_role,</if>
<if test="content != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="commentId != null">#{commentId},</if>
<if test="replyId != null">#{replyId},</if>
<if test="replyType != null">#{replyType},</if>
<if test="content != null">#{content},</if>
<if test="fromUid != null">#{fromUid},</if>
<if test="toUid != null">#{toUid},</if>
<if test="img != null">
#{img, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler},
</if>
<if test="fromRole != null">#{fromRole},</if>
<if test="toRole != null">#{toRole},</if>
<if test="content != null">now(),</if>
</trim>
</insert>
</mapper>