From 1797172a0abfb1f1c407d2f3e0db2fbc3683a02f Mon Sep 17 00:00:00 2001 From: huangzj <826100833@qq.com> Date: Thu, 25 May 2023 15:30:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/pojo/param/CsFeedbackAddParm.java | 53 ++++++++ .../pojo/param/CsFeedbackChatAddParm.java | 34 +++++ .../pojo/param/CsFeedbackChatCheckParm.java | 32 +++++ .../pojo/param/CsFeedbackQueryParm.java | 49 +++++++ .../njcn/system/pojo/po/CsFeedbackChatPO.java | 43 +++++++ .../com/njcn/system/pojo/po/CsFeedbackPO.java | 60 +++++++++ .../njcn/system}/pojo/po/CsFilePathPO.java | 2 +- .../system/pojo/vo/CsFeedbackDetailVO.java | 74 +++++++++++ .../com/njcn/system/pojo/vo/CsFeedbackVO.java | 68 ++++++++++ cs-system/cs-system-boot/pom.xml | 9 +- .../feedback/FeedBackChatController.java | 66 ++++++++++ .../feedback/FeedBackController.java | 74 +++++++++++ .../system/mapper/CsFeedbackChatMapper.java | 16 +++ .../njcn/system/mapper/CsFeedbackMapper.java | 16 +++ .../njcn/system}/mapper/CsFilePathMapper.java | 4 +- .../mapper/mapping/CsFeedbackChatMapper.xml | 19 +++ .../mapper/mapping/CsFeedbackMapper.xml | 23 ++++ .../mapper/mapping/CsFilePathMapper.xml | 4 +- .../system/service/CsFeedbackChatService.java | 29 +++++ .../system/service/CsFeedbackService.java | 47 +++++++ .../system}/service/CsFilePathService.java | 7 +- .../impl/CsFeedbackChatServiceImpl.java | 52 ++++++++ .../service/impl/CsFeedbackServiceImpl.java | 120 ++++++++++++++++++ .../service/impl/CsFilePathServiceImpl.java | 11 +- 24 files changed, 896 insertions(+), 16 deletions(-) create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackAddParm.java create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatAddParm.java create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatCheckParm.java create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackQueryParm.java create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackChatPO.java create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackPO.java rename {cs-device/cs-device-api/src/main/java/com/njcn/csdevice => cs-system/cs-system-api/src/main/java/com/njcn/system}/pojo/po/CsFilePathPO.java (95%) create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackDetailVO.java create mode 100644 cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackVO.java create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackChatController.java create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackController.java create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackChatMapper.java create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackMapper.java rename {cs-device/cs-device-boot/src/main/java/com/njcn/csdevice => cs-system/cs-system-boot/src/main/java/com/njcn/system}/mapper/CsFilePathMapper.java (78%) create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackChatMapper.xml create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackMapper.xml rename {cs-device/cs-device-boot/src/main/java/com/njcn/csdevice => cs-system/cs-system-boot/src/main/java/com/njcn/system}/mapper/mapping/CsFilePathMapper.xml (78%) create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackChatService.java create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackService.java rename {cs-device/cs-device-boot/src/main/java/com/njcn/csdevice => cs-system/cs-system-boot/src/main/java/com/njcn/system}/service/CsFilePathService.java (77%) create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackChatServiceImpl.java create mode 100644 cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackServiceImpl.java rename {cs-device/cs-device-boot/src/main/java/com/njcn/csdevice => cs-system/cs-system-boot/src/main/java/com/njcn/system}/service/impl/CsFilePathServiceImpl.java (60%) diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackAddParm.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackAddParm.java new file mode 100644 index 0000000..f3c25b7 --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackAddParm.java @@ -0,0 +1,53 @@ +package com.njcn.system.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.constraints.NotBlank; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + + +@Data +public class CsFeedbackAddParm { + + + /** + * 标题 + */ + @ApiModelProperty(value = "标题") + @NotBlank(message="标题不能为空!") + private String title; + + /** + * 描述 + */ + @ApiModelProperty(value = "描述") + private String description; + + /** + * 用户id + */ + @ApiModelProperty(value = "用户id") + @NotBlank(message="用户id不能为空!") + private String userId; + + /** + * 问题类型(字典数据) + */ + @ApiModelProperty(value = "问题类型") + @NotBlank(message="问题类型不能为空!") + private String type; + + @ApiModelProperty(value = "拓扑图文件") + private MultipartFile[] files; +} \ No newline at end of file diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatAddParm.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatAddParm.java new file mode 100644 index 0000000..80c8e70 --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatAddParm.java @@ -0,0 +1,34 @@ +package com.njcn.system.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 15:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class CsFeedbackChatAddParm { + @ApiModelProperty(value = "反馈id") + @NotNull(message="反馈id不能为空!") + private String id; + + @ApiModelProperty(value = "用户id") + @NotNull(message="用户id不能为空!") + private String userId; + /** + * 消息内容 + */ + @ApiModelProperty(value = "消息内容") + @NotNull(message="消息内容不能为空!") + private String chatContent; + + +} \ No newline at end of file diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatCheckParm.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatCheckParm.java new file mode 100644 index 0000000..f27080a --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackChatCheckParm.java @@ -0,0 +1,32 @@ +package com.njcn.system.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 15:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class CsFeedbackChatCheckParm { + + + + @ApiModelProperty(value = "反馈") + @NotNull(message="反馈不能为空!") + private String id; + + @ApiModelProperty(value = "用户id") + @NotNull(message="用户id不能为空!") + private String userId; + + + +} \ No newline at end of file diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackQueryParm.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackQueryParm.java new file mode 100644 index 0000000..e5b8de3 --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/param/CsFeedbackQueryParm.java @@ -0,0 +1,49 @@ +package com.njcn.system.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + + +@Data +public class CsFeedbackQueryParm { + + @NotNull(message="当前页不能为空!") + @Min(value = 1, message = "当前页不能为0") + @ApiModelProperty(value = "当前页",name = "currentPage",dataType ="Integer",required = true) + private Integer currentPage; + /**显示条数*/ + @NotNull(message="显示条数不能为空!") + @ApiModelProperty(value = "显示条数",name = "pageSize",dataType ="Integer",required = true) + private Integer pageSize; + /** + * 用户id + */ + @ApiModelProperty(value = "用户id") + @NotNull(message="用户id不能为空!") + private String userId; + + /** + * 问题类型(字典数据) + */ + @ApiModelProperty(value = "问题类型") + private String type; + + /** + * 问题状态(字典数据) + */ + @ApiModelProperty(value = "问题状态") + private String status; +} \ No newline at end of file diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackChatPO.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackChatPO.java new file mode 100644 index 0000000..4e5a0b4 --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackChatPO.java @@ -0,0 +1,43 @@ +package com.njcn.system.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import lombok.Data; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 15:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "cs_feedback_chat") +public class CsFeedbackChatPO extends BaseEntity { + @TableId(value = "id", type = IdType.INPUT) + private String id; + + @TableField(value = "user_id") + private String userId; + /** + * 消息内容 + */ + @TableField(value = "chat_content") + private String chatContent; + /** + * 消息状态消息状态(0-未读,1-已读) + */ + @TableField(value = "chat_status") + private String chatStatus; + + /** + * 状态(0:删除 1:正常) + */ + @TableField(value = "status") + private String status; +} \ No newline at end of file diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackPO.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackPO.java new file mode 100644 index 0000000..6391476 --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFeedbackPO.java @@ -0,0 +1,60 @@ +package com.njcn.system.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import lombok.Data; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +/** + * 信息反馈表 + */ +@Data +@TableName(value = "cs_feedback") +public class CsFeedbackPO extends BaseEntity { + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + /** + * 标题 + */ + @TableField(value = "title") + private String title; + + /** + * 描述 + */ + @TableField(value = "description") + private String description; + + /** + * 用户id + */ + @TableField(value = "user_id") + private String userId; + + /** + * 问题类型(字典数据) + */ + @TableField(value = "type") + private String type; + + /** + * 问题状态(字典数据) + */ + @TableField(value = "status") + private String status; +} \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsFilePathPO.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFilePathPO.java similarity index 95% rename from cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsFilePathPO.java rename to cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFilePathPO.java index 2dbce06..2f1e8b6 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsFilePathPO.java +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/po/CsFilePathPO.java @@ -1,4 +1,4 @@ -package com.njcn.csdevice.pojo.po; +package com.njcn.system.pojo.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackDetailVO.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackDetailVO.java new file mode 100644 index 0000000..2ee9d83 --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackDetailVO.java @@ -0,0 +1,74 @@ +package com.njcn.system.pojo.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.njcn.system.pojo.po.CsFeedbackChatPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + + +@Data +public class CsFeedbackDetailVO { + /** + * id + */ + @ApiModelProperty(value = "id") + private String id; + + /** + * 标题 + */ + @ApiModelProperty(value = "标题") + private String title; + + /** + * 描述 + */ + @ApiModelProperty(value = "描述") + private String description; + + /** + * 用户id + */ + @ApiModelProperty(value = "用户id") + private String userId; + + /** + * 问题类型(字典数据) + */ + @ApiModelProperty(value = "问题类型") + private String type; + + /** + * 问题状态(字典数据) + */ + @ApiModelProperty(value = "问题状态") + private String status; + + + + + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime createTime; + + private List imageUrls; + + private List csFeedbackChatPOList; + + + +} \ No newline at end of file diff --git a/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackVO.java b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackVO.java new file mode 100644 index 0000000..b1105db --- /dev/null +++ b/cs-system/cs-system-api/src/main/java/com/njcn/system/pojo/vo/CsFeedbackVO.java @@ -0,0 +1,68 @@ +package com.njcn.system.pojo.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + + +@Data +public class CsFeedbackVO { + /** + * id + */ + @ApiModelProperty(value = "id") + private String id; + + /** + * 标题 + */ + @ApiModelProperty(value = "标题") + private String title; + + /** + * 描述 + */ + @ApiModelProperty(value = "描述") + private String description; + + /** + * 用户id + */ + @ApiModelProperty(value = "用户id") + private String userId; + + /** + * 问题类型(字典数据) + */ + @ApiModelProperty(value = "问题类型") + private String type; + + /** + * 问题状态(字典数据) + */ + @ApiModelProperty(value = "问题状态") + private String status; + + + @ApiModelProperty(value = "未读消息条数") + private int chatCount; + + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime createTime; + + +} \ No newline at end of file diff --git a/cs-system/cs-system-boot/pom.xml b/cs-system/cs-system-boot/pom.xml index b30e0f5..e7e6ff8 100644 --- a/cs-system/cs-system-boot/pom.xml +++ b/cs-system/cs-system-boot/pom.xml @@ -46,10 +46,13 @@ common-db ${project.version} + + - com.github.jeffreyning - mybatisplus-plus - ${mybatis-plus.jeffreyning.version} + com.njcn + common-oss + 1.0.0 + compile diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackChatController.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackChatController.java new file mode 100644 index 0000000..764b5e8 --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackChatController.java @@ -0,0 +1,66 @@ +package com.njcn.system.controller.feedback; + + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.system.pojo.param.CsFeedbackChatAddParm; +import com.njcn.system.pojo.param.CsFeedbackChatCheckParm; +import com.njcn.system.service.CsFeedbackChatService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/3/27 10:54【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@RestController +@RequestMapping("/feedbackChat") +@Api(tags = "问题反馈聊天") +@AllArgsConstructor +public class FeedBackChatController extends BaseController { + + + private final CsFeedbackChatService csFeedbackChatService; + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/AddFeedbackChat") + @ApiOperation("新增反馈聊天") + @ApiImplicitParam(name = "csFeedbackAddParm", value = "新增反馈聊天参数", required = true) + public HttpResult AddFeedbackChat(@RequestBody @Validated CsFeedbackChatAddParm csFeedbackAddParm){ + String methodDescribe = getMethodDescribe("AddFeedbackChat"); + + Boolean flag = csFeedbackChatService.AddFeedbackChat(csFeedbackAddParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/updateChatStatus") + @ApiOperation("更新反馈聊天状态") + @ApiImplicitParam(name = "CsFeedbackChatCheckParm", value = "新增反馈聊天参数", required = true) + public HttpResult updateChatStatus(@RequestBody@Validated CsFeedbackChatCheckParm CsFeedbackChatCheckParm){ + String methodDescribe = getMethodDescribe("updateChatStatus"); + + Boolean flag = csFeedbackChatService.updateChatStatus(CsFeedbackChatCheckParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + + } + +} diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackController.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackController.java new file mode 100644 index 0000000..682a88a --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/controller/feedback/FeedBackController.java @@ -0,0 +1,74 @@ +package com.njcn.system.controller.feedback; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.system.pojo.param.CsFeedbackAddParm; +import com.njcn.system.pojo.param.CsFeedbackQueryParm; +import com.njcn.system.pojo.vo.CsFeedbackDetailVO; +import com.njcn.system.pojo.vo.CsFeedbackVO; +import com.njcn.system.service.CsFeedbackService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/3/27 10:54【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@RestController +@RequestMapping("/feedback") +@Api(tags = "问题反馈") +@AllArgsConstructor +public class FeedBackController extends BaseController { + + + private final CsFeedbackService csFeedbackService; + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/addFeedBack") + @ApiOperation("新增反馈") + public HttpResult addFeedBack(@Validated CsFeedbackAddParm csFeedbackAddParm){ + String methodDescribe = getMethodDescribe("addFeedBack"); + + Boolean flag = csFeedbackService.addFeedBack(csFeedbackAddParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryFeedBackPage") + @ApiOperation("查询反馈列表") + @ApiImplicitParam(name = "csFeedbackQueryParm", value = "新增反馈聊天参数", required = true) + public HttpResult> queryFeedBackPage(@Validated @RequestBody CsFeedbackQueryParm csFeedbackQueryParm){ + String methodDescribe = getMethodDescribe("queryFeedBackPage"); + + IPage csFeedbackVOIPage = csFeedbackService.queryFeedBackPage(csFeedbackQueryParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, csFeedbackVOIPage, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryFeedBackDetail") + @ApiOperation("查询反馈详情") + public HttpResult queryFeedBackDetail(@RequestParam("id")String id){ + String methodDescribe = getMethodDescribe("queryFeedBackDetail"); + + CsFeedbackDetailVO csFeedbackDetailVO = csFeedbackService.queryFeedBackDetail(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, csFeedbackDetailVO, methodDescribe); + } + +} diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackChatMapper.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackChatMapper.java new file mode 100644 index 0000000..547b6bf --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackChatMapper.java @@ -0,0 +1,16 @@ +package com.njcn.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.system.pojo.po.CsFeedbackChatPO; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 15:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsFeedbackChatMapper extends BaseMapper { +} \ No newline at end of file diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackMapper.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackMapper.java new file mode 100644 index 0000000..8b2d077 --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFeedbackMapper.java @@ -0,0 +1,16 @@ +package com.njcn.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.system.pojo.po.CsFeedbackPO; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsFeedbackMapper extends BaseMapper { +} \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsFilePathMapper.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFilePathMapper.java similarity index 78% rename from cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsFilePathMapper.java rename to cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFilePathMapper.java index a514544..b19be3b 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsFilePathMapper.java +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/CsFilePathMapper.java @@ -1,7 +1,7 @@ -package com.njcn.csdevice.mapper; +package com.njcn.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.njcn.csdevice.pojo.po.CsFilePathPO; +import com.njcn.system.pojo.po.CsFilePathPO; /** * diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackChatMapper.xml b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackChatMapper.xml new file mode 100644 index 0000000..9d42b96 --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackChatMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + id, user_id, chat_content, create_by, create_time, update_by, update_time + + \ No newline at end of file diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackMapper.xml b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackMapper.xml new file mode 100644 index 0000000..c9adab1 --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFeedbackMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + id, title, `describe`, user_id, create_by, create_time, update_by, update_time, `type`, + `status` + + \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsFilePathMapper.xml b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFilePathMapper.xml similarity index 78% rename from cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsFilePathMapper.xml rename to cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFilePathMapper.xml index 90e94d6..7bb1f0f 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsFilePathMapper.xml +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/mapper/mapping/CsFilePathMapper.xml @@ -1,7 +1,7 @@ - - + + diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackChatService.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackChatService.java new file mode 100644 index 0000000..0b8a9c4 --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackChatService.java @@ -0,0 +1,29 @@ +package com.njcn.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.system.pojo.param.CsFeedbackChatAddParm; +import com.njcn.system.pojo.param.CsFeedbackChatCheckParm; +import com.njcn.system.pojo.po.CsFeedbackChatPO; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 15:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsFeedbackChatService extends IService{ + + /** + * @Description: AddFeedbackChat + * @Param: [csFeedbackAddParm] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/4/6 + */ + Boolean AddFeedbackChat(CsFeedbackChatAddParm csFeedbackAddParm); + + Boolean updateChatStatus(CsFeedbackChatCheckParm csFeedbackChatCheckParm); + } diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackService.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackService.java new file mode 100644 index 0000000..978b2b8 --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFeedbackService.java @@ -0,0 +1,47 @@ +package com.njcn.system.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.system.pojo.param.CsFeedbackAddParm; +import com.njcn.system.pojo.param.CsFeedbackQueryParm; +import com.njcn.system.pojo.po.CsFeedbackPO; +import com.njcn.system.pojo.vo.CsFeedbackDetailVO; +import com.njcn.system.pojo.vo.CsFeedbackVO; + + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsFeedbackService extends IService{ + + /** + * @Description: 新增反馈 + * @Param: [csFeedbackAddParm] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/4/6 + */ + Boolean addFeedBack(CsFeedbackAddParm csFeedbackAddParm); + /** + * @Description: queryFeedBackPage + * @Param: [csFeedbackQueryParm] + * @return: com.baomidou.mybatisplus.core.metadata.IPage + * @Author: clam + * @Date: 2023/4/6 + */ + IPage queryFeedBackPage(CsFeedbackQueryParm csFeedbackQueryParm); + /** + * @Description: queryFeedBackDetail + * @Param: [id] + * @return: com.njcn.algorithm.pojo.vo.CsFeedbackDetailVO + * @Author: clam + * @Date: 2023/4/7 + */ + CsFeedbackDetailVO queryFeedBackDetail(String id); +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsFilePathService.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFilePathService.java similarity index 77% rename from cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsFilePathService.java rename to cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFilePathService.java index 4aef71d..7fac207 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsFilePathService.java +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/CsFilePathService.java @@ -1,8 +1,9 @@ -package com.njcn.csdevice.service; +package com.njcn.system.service; -import com.njcn.csdevice.pojo.po.CsFilePathPO; import com.baomidou.mybatisplus.extension.service.IService; - /** +import com.njcn.system.pojo.po.CsFilePathPO; + +/** * * Description: * 接口文档访问地址:http://serverIP:port/swagger-ui.html diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackChatServiceImpl.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackChatServiceImpl.java new file mode 100644 index 0000000..1b2fb2b --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackChatServiceImpl.java @@ -0,0 +1,52 @@ +package com.njcn.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.njcn.system.mapper.CsFeedbackChatMapper; +import com.njcn.system.pojo.param.CsFeedbackChatAddParm; +import com.njcn.system.pojo.param.CsFeedbackChatCheckParm; +import com.njcn.system.pojo.po.CsFeedbackChatPO; +import com.njcn.system.service.CsFeedbackChatService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 15:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +public class CsFeedbackChatServiceImpl extends ServiceImpl implements CsFeedbackChatService { + + @Override + @Transactional(rollbackFor = {Exception.class}) + public Boolean AddFeedbackChat(CsFeedbackChatAddParm csFeedbackAddParm) { + CsFeedbackChatPO csFeedbackChatPO = new CsFeedbackChatPO (); + BeanUtils.copyProperties (csFeedbackAddParm, csFeedbackChatPO); + csFeedbackChatPO.setChatStatus ("0"); + csFeedbackChatPO.setStatus ("1"); + boolean save = this.save (csFeedbackChatPO); + return save; + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public Boolean updateChatStatus(CsFeedbackChatCheckParm csFeedbackChatCheckParm) { + UpdateWrapper updateWrapper = new UpdateWrapper<> (); + + + updateWrapper.clear (); + updateWrapper.eq ("id",csFeedbackChatCheckParm.getId ()). + ne ("user_id",csFeedbackChatCheckParm.getUserId ()). + set ("chat_status","1"). + eq ("status", "1"); + boolean update = this.update (updateWrapper); + return update; + } +} diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackServiceImpl.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackServiceImpl.java new file mode 100644 index 0000000..6ce6c4c --- /dev/null +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFeedbackServiceImpl.java @@ -0,0 +1,120 @@ +package com.njcn.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.utils.FileStorageUtil; +import com.njcn.system.mapper.CsFeedbackMapper; +import com.njcn.system.pojo.param.CsFeedbackAddParm; +import com.njcn.system.pojo.param.CsFeedbackQueryParm; +import com.njcn.system.pojo.po.CsFeedbackChatPO; +import com.njcn.system.pojo.po.CsFeedbackPO; +import com.njcn.system.pojo.po.CsFilePathPO; +import com.njcn.system.pojo.vo.CsFeedbackDetailVO; +import com.njcn.system.pojo.vo.CsFeedbackVO; +import com.njcn.system.service.CsFeedbackChatService; +import com.njcn.system.service.CsFeedbackService; +import com.njcn.system.service.CsFilePathService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/6 11:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class CsFeedbackServiceImpl extends ServiceImpl implements CsFeedbackService { + + private final FileStorageUtil fileStorageUtil; + private final CsFilePathService csFilePathService; + private final CsFeedbackChatService csFeedbackChatService; + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean addFeedBack(CsFeedbackAddParm csFeedbackAddParm) { + CsFeedbackPO csFeedbackPO = new CsFeedbackPO (); + BeanUtils.copyProperties (csFeedbackAddParm, csFeedbackPO); + csFeedbackPO.setStatus ("1"); + boolean save = this.save (csFeedbackPO); + boolean flag= true; + if(!Objects.isNull (csFeedbackAddParm.getFiles ( ))){ + List csFilePathPOS= new ArrayList<> (); + for (int i = 0; i < csFeedbackAddParm.getFiles ( ).length; i++) { + + CsFilePathPO csFilePathPO = new CsFilePathPO( ); + csFilePathPO.setId (csFeedbackPO.getId ()); + String filePath = fileStorageUtil.uploadMultipart (csFeedbackAddParm.getFiles ( )[i], OssPath.FEEDBACK); + csFilePathPO.setFileName (csFeedbackAddParm.getFiles ( )[i].getOriginalFilename ( )); + csFilePathPO.setFilePath (filePath); + csFilePathPO.setStatus ("1"); + csFilePathPOS.add (csFilePathPO); + } + flag = csFilePathService.saveBatch (csFilePathPOS); + } + + + return save&&flag; + } + + @Override + public IPage queryFeedBackPage(CsFeedbackQueryParm csFeedbackQueryParm) { + Page page = new Page<> (csFeedbackQueryParm.getCurrentPage ( ), csFeedbackQueryParm.getPageSize ( )); + Page returnpage = new Page<> (csFeedbackQueryParm.getCurrentPage ( ), csFeedbackQueryParm.getPageSize ( )); + + QueryWrapper queryWrapper = new QueryWrapper<> (); + queryWrapper.eq ("user_id",csFeedbackQueryParm.getUserId ()). + eq (StringUtils.isNotBlank (csFeedbackQueryParm.getType ()),"type",csFeedbackQueryParm.getType ()). + eq (StringUtils.isNotBlank (csFeedbackQueryParm.getStatus ()),"status",csFeedbackQueryParm.getStatus ()); + Page csFeedbackPOPage = this.getBaseMapper ( ).selectPage (page, queryWrapper); + QueryWrapper csFeedbackChatPOQueryWrapper = new QueryWrapper<> (); + List collect = csFeedbackPOPage.getRecords ( ).stream ( ).map (temp -> { + CsFeedbackVO csFeedbackVO = new CsFeedbackVO ( ); + BeanUtils.copyProperties (temp, csFeedbackVO); + csFeedbackChatPOQueryWrapper.clear (); + csFeedbackChatPOQueryWrapper.eq ("id",temp.getId ()). + ne ("user_id",temp.getUserId ()). + eq ("chat_status","0"). + eq ("status", "1"); + int count = csFeedbackChatService.count (csFeedbackChatPOQueryWrapper ); + csFeedbackVO.setChatCount (count); + return csFeedbackVO; + }).collect (Collectors.toList ( )); + returnpage.setRecords (collect); + return returnpage; + } + + @Override + public CsFeedbackDetailVO queryFeedBackDetail(String id) { + CsFeedbackDetailVO csFeedbackDetailVO = new CsFeedbackDetailVO(); + CsFeedbackPO byId = this.getById (id); + BeanUtils.copyProperties (byId, csFeedbackDetailVO); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq ("id", id).eq ("status", "1"); + List list = csFilePathService.list (queryWrapper); + List collect = list.stream ( ).map (temp->{ + return fileStorageUtil.getFileUrl (temp.getFilePath ()); + }).collect (Collectors.toList ( )); + csFeedbackDetailVO.setImageUrls (collect); + QueryWrapper csFeedbackChatPOQueryWrapper = new QueryWrapper(); + csFeedbackChatPOQueryWrapper.eq ("id", id).eq ("status", "1").orderByAsc ("create_time"); + List list1 = csFeedbackChatService.list (csFeedbackChatPOQueryWrapper); + csFeedbackDetailVO.setCsFeedbackChatPOList (list1); + return csFeedbackDetailVO; + } +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsFilePathServiceImpl.java b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFilePathServiceImpl.java similarity index 60% rename from cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsFilePathServiceImpl.java rename to cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFilePathServiceImpl.java index a22123b..7589bcc 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsFilePathServiceImpl.java +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/system/service/impl/CsFilePathServiceImpl.java @@ -1,9 +1,10 @@ -package com.njcn.csdevice.service.impl; +package com.njcn.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.njcn.csdevice.mapper.CsFilePathMapper; -import com.njcn.csdevice.pojo.po.CsFilePathPO; -import com.njcn.csdevice.service.CsFilePathService; + +import com.njcn.system.mapper.CsFilePathMapper; +import com.njcn.system.pojo.po.CsFilePathPO; +import com.njcn.system.service.CsFilePathService; import org.springframework.stereotype.Service; /** * @@ -15,6 +16,6 @@ import org.springframework.stereotype.Service; * @version V1.0.0 */ @Service -public class CsFilePathServiceImpl extends ServiceImpl implements CsFilePathService{ +public class CsFilePathServiceImpl extends ServiceImpl implements CsFilePathService { }