This commit is contained in:
huangdeliang 2021-05-26 18:11:12 +08:00
parent 2e6df9e862
commit 57dd7c3043
8 changed files with 363 additions and 73 deletions

View File

@ -2,11 +2,15 @@ package com.stdiet.web.controller.custom;
import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.controller.BaseController;
import com.stdiet.common.core.domain.AjaxResult; import com.stdiet.common.core.domain.AjaxResult;
import com.stdiet.common.core.page.TableDataInfo;
import com.stdiet.common.utils.StringUtils;
import com.stdiet.custom.domain.SysServicesQuestion; import com.stdiet.custom.domain.SysServicesQuestion;
import com.stdiet.custom.service.ISysServicesQuestionService; import com.stdiet.custom.service.ISysServicesQuestionService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController @RestController
@RequestMapping("/services/question") @RequestMapping("/services/question")
public class SysServiceQuestionController extends BaseController { public class SysServiceQuestionController extends BaseController {
@ -14,18 +18,38 @@ public class SysServiceQuestionController extends BaseController {
@Autowired @Autowired
private ISysServicesQuestionService sysServicesQuestionService; private ISysServicesQuestionService sysServicesQuestionService;
@PostMapping("/list") @GetMapping("/list")
public AjaxResult list(@RequestBody SysServicesQuestion sysServicesQuestion) { public TableDataInfo list(SysServicesQuestion sysServicesQuestion) {
return AjaxResult.success(sysServicesQuestionService.selectSysServicesQuestionByUserIdAndRole(sysServicesQuestion)); startPage();
return getDataTable(sysServicesQuestionService.selectSysServicesQuestionByUserIdAndRole(sysServicesQuestion));
} }
@PutMapping("/updateStatus") // @PutMapping("/update/status")
public AjaxResult status(@RequestBody SysServicesQuestion sysServicesQuestion) { // public AjaxResult status(@RequestBody SysServicesQuestion sysServicesQuestion) {
return toAjax(sysServicesQuestionService.updateSysServicesQuestionStatus(sysServicesQuestion)); // return toAjax(sysServicesQuestionService.updateSysServicesQuestionStatus(sysServicesQuestion));
} // }
@PostMapping("/reply") @PostMapping("/reply")
public AjaxResult reply(@RequestBody SysServicesQuestion servicesQuestion) { public AjaxResult reply(@RequestBody SysServicesQuestion servicesQuestion) {
return toAjax(sysServicesQuestionService.inserSysServicesQuestionReply(servicesQuestion)); int row = sysServicesQuestionService.inserSysServicesQuestionReply(servicesQuestion);
if (row > 0) {
// 更新customer未读id不能有值
servicesQuestion.setRead(0);
sysServicesQuestionService.updateSysServicesQuestionStatus(servicesQuestion);
}
return toAjax(row);
}
@GetMapping("/detail")
public AjaxResult detail(@RequestParam String queId, @RequestParam Long id) {
List<SysServicesQuestion> questions = sysServicesQuestionService.selectSysServicesQuestionSessionByQueId(queId);
if (StringUtils.isNotNull(questions)) {
// 更新问题对应角色的状态
SysServicesQuestion servicesQuestion = new SysServicesQuestion();
servicesQuestion.setRead(1);
servicesQuestion.setId(id);
sysServicesQuestionService.updateSysServicesQuestionStatus(servicesQuestion);
}
return AjaxResult.success(questions);
} }
} }

View File

@ -593,7 +593,7 @@ public class WechatAppletController extends BaseController {
} }
@GetMapping("/services/list") @GetMapping("/services/list")
public AjaxResult fetchServiceQuestion(@RequestParam String customerId, @RequestParam Integer pageNum, @RequestParam Integer pageSize) { public TableDataInfo fetchServiceQuestion(@RequestParam String customerId, @RequestParam Integer pageNum, @RequestParam Integer pageSize) {
startPage(); startPage();
Long cusId = StringUtils.isNotEmpty(customerId) ? Long.parseLong(AesUtils.decrypt(customerId)) : 0L; Long cusId = StringUtils.isNotEmpty(customerId) ? Long.parseLong(AesUtils.decrypt(customerId)) : 0L;
@ -602,11 +602,12 @@ public class WechatAppletController extends BaseController {
servicesQuestion.setRole("customer"); servicesQuestion.setRole("customer");
servicesQuestion.setUserId(cusId); servicesQuestion.setUserId(cusId);
return AjaxResult.success(iSysServicesQuestionService.selectSysServicesQuestionByUserIdAndRole(servicesQuestion)); return getDataTable(iSysServicesQuestionService.selectSysServicesQuestionByUserIdAndRole(servicesQuestion));
} }
/** /**
* 客户添加问题 * 客户添加问题
*
* @param servicesQuestion * @param servicesQuestion
* @param customerId * @param customerId
* @return * @return
@ -614,42 +615,69 @@ public class WechatAppletController extends BaseController {
@PostMapping("/services/post") @PostMapping("/services/post")
public AjaxResult postServiceQuestion(@RequestBody SysServicesQuestion servicesQuestion, @RequestParam String customerId) { public AjaxResult postServiceQuestion(@RequestBody SysServicesQuestion servicesQuestion, @RequestParam String customerId) {
Long cusId = StringUtils.isNotEmpty(customerId) ? Long.parseLong(AesUtils.decrypt(customerId)) : 0L; Long cusId = StringUtils.isNotEmpty(customerId) ? Long.parseLong(AesUtils.decrypt(customerId)) : 0L;
if(cusId == 0L) { if (cusId == 0L) {
return toAjax(0); return toAjax(0);
} }
servicesQuestion.setCusId(cusId); servicesQuestion.setCusId(cusId);
return toAjax(iSysServicesQuestionService.insertSysServicesQuestion(servicesQuestion));
}
@GetMapping("/services/reply") return AjaxResult.success(iSysServicesQuestionService.insertSysServicesQuestion(servicesQuestion));
public AjaxResult serviceQuestionReply(@RequestParam String queId) {
return AjaxResult.success(iSysServicesQuestionService.selectSysServicesQuestionSessionByQueId(queId));
} }
/** /**
* 设置已读 * 回答问题
* @param id *
* @param servicesQuestion
* @param customerId
* @return * @return
*/ */
@GetMapping("/services/post/update")
public AjaxResult updateServiceQuestion(@RequestParam Long id) {
SysServicesQuestion servicesQuestion = new SysServicesQuestion();
servicesQuestion.setRead(1);
servicesQuestion.setId(id);
return toAjax(iSysServicesQuestionService.updateSysServicesQuestionStatus(servicesQuestion));
}
@PostMapping("/services/post/reply") @PostMapping("/services/post/reply")
public AjaxResult replyServiceQuestion(@RequestBody SysServicesQuestion servicesQuestion, @RequestParam String customerId) { public AjaxResult replyServiceQuestion(@RequestBody SysServicesQuestion servicesQuestion, @RequestParam String customerId) {
Long cusId = StringUtils.isNotEmpty(customerId) ? Long.parseLong(AesUtils.decrypt(customerId)) : 0L; Long cusId = StringUtils.isNotEmpty(customerId) ? Long.parseLong(AesUtils.decrypt(customerId)) : 0L;
if (cusId == 0L) {
return toAjax(0);
}
servicesQuestion.setRole("customer"); servicesQuestion.setRole("customer");
servicesQuestion.setUserId(cusId); servicesQuestion.setUserId(cusId);
return toAjax(iSysServicesQuestionService.inserSysServicesQuestionReply(servicesQuestion)); int row = iSysServicesQuestionService.inserSysServicesQuestionReply(servicesQuestion);
if (row > 0) {
// 更新三个觉得未读id不能有值
servicesQuestion.setRead(0);
iSysServicesQuestionService.updateSysServicesQuestionStatus(servicesQuestion);
}
return toAjax(row);
} }
/**
* 获取问题详情
*
* @param id
* @return
*/
@GetMapping("/services/detail")
public AjaxResult serviceQuestionDetail(@RequestParam String queId, @RequestParam Long id) {
List<SysServicesQuestion> questions = iSysServicesQuestionService.selectSysServicesQuestionSessionByQueId(queId);
if (StringUtils.isNotNull(questions)) {
SysServicesQuestion status = new SysServicesQuestion();
status.setId(id);
status.setRead(1);
iSysServicesQuestionService.updateSysServicesQuestionStatus(status);
}
return AjaxResult.success(questions);
}
// @GetMapping("/services/post/update")
// public AjaxResult updateServiceQuestion(@RequestParam Long id) {
// SysServicesQuestion servicesQuestion = new SysServicesQuestion();
// servicesQuestion.setRead(1);
// servicesQuestion.setId(id);
//
// return toAjax(iSysServicesQuestionService.updateSysServicesQuestionStatus(servicesQuestion));
// }
} }

View File

@ -1,12 +1,5 @@
package com.stdiet.common.core.controller; package com.stdiet.common.core.controller;
import java.beans.PropertyEditorSupport;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.stdiet.common.constant.HttpStatus; import com.stdiet.common.constant.HttpStatus;
@ -17,28 +10,33 @@ import com.stdiet.common.core.page.TableSupport;
import com.stdiet.common.utils.DateUtils; import com.stdiet.common.utils.DateUtils;
import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.StringUtils;
import com.stdiet.common.utils.sql.SqlUtil; import com.stdiet.common.utils.sql.SqlUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import java.beans.PropertyEditorSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/** /**
* web层通用数据处理 * web层通用数据处理
* *
* @author stdiet * @author stdiet
*/ */
public class BaseController public class BaseController {
{
protected final Logger logger = LoggerFactory.getLogger(BaseController.class); protected final Logger logger = LoggerFactory.getLogger(BaseController.class);
/** /**
* 将前台传递过来的日期格式的字符串自动转化为Date类型 * 将前台传递过来的日期格式的字符串自动转化为Date类型
*/ */
@InitBinder @InitBinder
public void initBinder(WebDataBinder binder) public void initBinder(WebDataBinder binder) {
{
// Date 类型转换 // Date 类型转换
binder.registerCustomEditor(Date.class, new PropertyEditorSupport() binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
{
@Override @Override
public void setAsText(String text) public void setAsText(String text) {
{
setValue(DateUtils.parseDate(text)); setValue(DateUtils.parseDate(text));
} }
}); });
@ -47,13 +45,11 @@ public class BaseController
/** /**
* 设置请求分页数据 * 设置请求分页数据
*/ */
protected void startPage() protected void startPage() {
{
PageDomain pageDomain = TableSupport.buildPageRequest(); PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum(); Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize(); Integer pageSize = pageDomain.getPageSize();
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
{
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
PageHelper.startPage(pageNum, pageSize, orderBy); PageHelper.startPage(pageNum, pageSize, orderBy);
} }
@ -62,33 +58,37 @@ public class BaseController
/** /**
* 响应请求分页数据 * 响应请求分页数据
*/ */
@SuppressWarnings({ "rawtypes", "unchecked" }) @SuppressWarnings({"rawtypes", "unchecked"})
protected TableDataInfo getDataTable(List<?> list) protected TableDataInfo getDataTable(List<?> list) {
{
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
long total = new PageInfo(list).getTotal();
TableDataInfo rspData = new TableDataInfo(); TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS); rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功"); rspData.setMsg("查询成功");
rspData.setRows(list); rspData.setRows(total > pageSize * (pageNum - 1) ? list : new ArrayList<>());
rspData.setTotal(new PageInfo(list).getTotal()); rspData.setTotal(total);
return rspData; return rspData;
} }
/** /**
* 响应返回结果 * 响应返回结果
* *
* @param rows 影响行数 * @param rows 影响行数
* @return 操作结果 * @return 操作结果
*/ */
protected AjaxResult toAjax(int rows) protected AjaxResult toAjax(int rows) {
{
return rows > 0 ? AjaxResult.success() : AjaxResult.error(); return rows > 0 ? AjaxResult.success() : AjaxResult.error();
} }
/** /**
* 页面跳转 * 页面跳转
*/ */
public String redirect(String url) public String redirect(String url) {
{
return StringUtils.format("redirect:{}", url); return StringUtils.format("redirect:{}", url);
} }
} }

View File

@ -0,0 +1,73 @@
package com.stdiet.custom.domain;
import com.alibaba.fastjson.JSONArray;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class SysServicesTopic {
/**
*
*/
Long id;
/**
* 问题id
*/
String topicId;
/**
* 问题类型
*/
Integer topicType;
/**
* 角色
*/
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 name;
}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,156 @@
<?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="role" property="role"/>
<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>
<resultMap id="SysServicesQuestionSessionResult" type="SysServicesQuestion">
<result column="id" property="id"/>
<result column="type" property="type"/>
<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="{userId=user_id,role=role}" select="selectUserInfo"/>
</resultMap>
<!-- 根据userId和角色查询问题列表-->
<select id="selectSysServicesTopicByUserIdAndRole" parameterType="SysServicesTopic"
resultMap="SysServicesQuestionResult">
SELECT * FROM (
SELECT * FROM sys_services_topic_status WHERE role = #{role} AND uid = #{uid}
) AS status
LEFT JOIN sys_services_question USING(topic_id)
<choose>
<when test="role == 'customer'">
LEFT JOIN (
SELECT name, id AS uid FROM sys_customer WHERE id = #{uid}
) AS customer USING(uid)
</when>
<otherwise>
LEFT JOIN (
SELECT name, user_id AS uid, nick_name AS name FROM sys_user WHERE user_id = #{uid}
) AS user USING(uid)
</otherwise>
</choose>
ORDER BY `read` ASC, update_time DESC
</select>
<select id="selectSysServicesQuestionSessionByQueId" resultMap="SysServicesQuestionSessionResult"
parameterType="String">
select que_id, cus_id as user_id, 'customer' as role, content, img, create_time from sys_services_question where que_id = #{queId}
union select que_id, user_id, role, content, img, create_time from sys_services_question_session where que_id = #{queId}
order by create_time asc
</select>
<select id="selectUserInfo" parameterType="java.util.Map" resultType="String">
<choose>
<when test="_parameter.get('role') == 'customer'">
select name from sys_customer where id = #{userId}
</when>
<otherwise>
select nick_name from sys_user where user_id = #{userId}
</otherwise>
</choose>
</select>
<!-- 插入问题-->
<insert id="insertSysServicesQuestion" parameterType="SysServicesQuestion" useGeneratedKeys="true"
keyProperty="queId" keyColumn="que_id">
insert into sys_services_question
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="queId != null">que_id,</if>
<if test="cusId != null">cus_id,</if>
<if test="content != null">content,</if>
<if test="type != null">type,</if>
<if test="createTime != null">create_time,</if>
<if test="img != null">img,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="queId != null">#{queId},</if>
<if test="cusId != null">#{cusId},</if>
<if test="content != null">#{content},</if>
<if test="type != null">#{type},</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="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}, #{status.read}, now(), now())
</foreach>
</insert>
<!-- 根据状态id更新 role=customer 客户回复这时更新另外三个角色未读role != customer更新客户未读-->
<update id="updateSysServicesQuestionStatus" parameterType="SysServicesQuestion">
update sys_services_question_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>
que_id = #{queId}
</otherwise>
</choose>
</where>
</update>
<!-- 插入问题回复-->
<insert id="inserSysServicesQuestionReply" parameterType="SysServicesQuestion">
insert into sys_services_question_session
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="queId != null">que_id,</if>
<if test="userId != null">user_id,</if>
<if test="content != null">content,</if>
<if test="read != null">`read`,</if>
<if test="role != null">role,</if>
<if test="img != null">img,</if>
<if test="queId != null">create_time,</if>
<if test="queId != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="queId != null">#{queId},</if>
<if test="userId != null">#{userId},</if>
<if test="content != null">#{content},</if>
<if test="read != null">#{read},</if>
<if test="role != null">#{role},</if>
<if test="img != null">
#{img, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler},
</if>
<if test="queId != null">now(),</if>
<if test="queId != null">now(),</if>
</trim>
</insert>
</mapper>