From 5f51a29343d6021e5d2745163c07afe1a67d35cc Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 21 Nov 2022 16:10:11 +0800
Subject: [PATCH] 20221117
---
src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java | 44 ++++++
src/main/java/cc/mrbird/febs/dapp/vo/ApiMessageListVo.java | 24 +++
src/main/resources/templates/febs/views/dapp/message-list.html | 27 +++
src/main/resources/templates/febs/views/dapp/show-message-list.html | 51 +++++++
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java | 10 +
src/main/resources/templates/febs/views/dapp/send-Back-Message.html | 90 ++++++++++++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 38 +++++
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java | 6
src/main/resources/mapper/dapp/DappMemberDao.xml | 20 ++
src/main/java/cc/mrbird/febs/dapp/dto/ApiMessageListDto.java | 18 ++
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java | 9
src/main/java/cc/mrbird/febs/dapp/entity/DappMessageEntity.java | 8 +
src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java | 28 ++++
13 files changed, 367 insertions(+), 6 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
index 4750433..41fcfcc 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -234,4 +234,14 @@
public FebsResponse addMessage(@RequestBody AddMessageDto addMessageDto) {
return dappMemberService.addMessage(addMessageDto);
}
+
+ @ApiOperation(value ="IGT客服消息-列表分页", notes = "客服消息-列表分页")
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "success", response = ApiMessageListVo.class)
+ })
+ @PostMapping(value = "/messageList")
+ public FebsResponse messageList(@RequestBody ApiMessageListDto apiMessageListDto) {
+ Map<String, Object> data = getDataTable(dappMemberService.getMessageListInPage(apiMessageListDto));
+ return new FebsResponse().success().data(data);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
index 88c1e0f..a051f94 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
@@ -294,4 +294,32 @@
Map<String, Object> data = getDataTable(dappMemberService.getTeamInfo(dappMemberEntity,request));
return new FebsResponse().success().data(data);
}
+
+ /**
+ *客服消息---回复
+ * @return
+ */
+ @PostMapping("sendBackMessage")
+ @ControllerEndpoint(operation = "客服消息---回复", exceptionMessage = "操作失败")
+ public FebsResponse sendBackMessage(@Valid DappMessageEntity dappMessageEntity) {
+ return dappMemberService.sendBackMessage(dappMessageEntity);
+ }
+
+ /**
+ * 客服消息-回复记录
+ * @return
+ */
+ @GetMapping("showMessageList")
+ public FebsResponse showMessageList(DappMessageEntity dappMessageEntity, QueryRequest request, Integer parentId) {
+ if (parentId == null) {
+ ViewController.showMessageInfoFlow = 0;
+ }
+ dappMessageEntity.setId(ViewController.showMessageInfoFlow);
+ User currentUser = FebsUtil.getCurrentUser();
+ if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
+ dappMessageEntity.setDescription(currentUser.getDescription());
+ }
+ Map<String, Object> data = getDataTable(dappMemberService.showMessageList(dappMessageEntity, request));
+ return new FebsResponse().success().data(data);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
index e3297b6..0957125 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
@@ -6,8 +6,10 @@
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.entity.AppVersion;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
+import cc.mrbird.febs.dapp.entity.DappMessageEntity;
import cc.mrbird.febs.dapp.entity.IgtOnHookPlanOrder;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
+import cc.mrbird.febs.dapp.mapper.DappMessageDao;
import cc.mrbird.febs.dapp.service.DappMemberService;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -32,6 +34,7 @@
private final DappMemberService dappMemberService;
private final DappMemberDao dappMemberDao;
+ private final DappMessageDao dappMessageDao;
@GetMapping(value = "admin")
@RequiresPermissions("admin:view")
@@ -229,6 +232,47 @@
}
/**
+ * 客服消息-列表
+ * @return
+ */
+ @GetMapping("sendBackMessage")
+ @RequiresPermissions("user:sendBack")
+ public String sendBackMessage() {
+ return FebsUtil.view("dapp/send-Back-Message");
+ }
+
+ /**
+ * 客服消息-回复
+ * @param id
+ * @param model
+ * @return
+ */
+ @GetMapping("sendBackMessage/{id}")
+ @RequiresPermissions("user:sendBack")
+ public String sendBackMessage(@PathVariable long id, Model model) {
+ DappMessageEntity data = dappMessageDao.selectById(id);
+ model.addAttribute("dappMessage", data);
+ return FebsUtil.view("dapp/send-Back-Message");
+ }
+
+
+ public static long showMessageInfoFlow;
+ /**
+ * 客服消息-记录
+ * @param id
+ * @param model
+ * @return
+ */
+ @GetMapping("/showMessage/{id}")
+ @RequiresPermissions("showMessage:update")
+ public String amountFlow(@PathVariable long id, Model model) {
+ showMessageInfoFlow = id;
+ DappMessageEntity data = dappMessageDao.selectById(id);
+ model.addAttribute("dappMessage", data);
+ return FebsUtil.view("dapp/show-message-list");
+ }
+
+ /**
* 每日资产总览-列表
* @return
*/
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/ApiMessageListDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/ApiMessageListDto.java
new file mode 100644
index 0000000..d94ea20
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/ApiMessageListDto.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.dapp.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMessageListDto", description = "客服消息列表")
+public class ApiMessageListDto {
+
+ @ApiModelProperty(value = "页码")
+ private Integer pageNum = 1;
+
+ @ApiModelProperty(value = "每页数量")
+ private Integer pageSize = 10;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappMessageEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappMessageEntity.java
index 90c5a30..f191d7d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappMessageEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappMessageEntity.java
@@ -13,6 +13,14 @@
private String message;
+ /**
+ * 回复消息
+ ALTER TABLE `dapp_message`
+ DROP COLUMN `back_message`,
+ ADD COLUMN `back_message` varchar(1000) NULL COMMENT '回复消息' AFTER `update_time`;
+ */
+ private String backMessage;
+
@TableField(exist = false)
private String username;
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
index 83e0d1f..ec17b10 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -4,10 +4,7 @@
import cc.mrbird.febs.dapp.dto.ApiMyTeammateInfoDto;
import cc.mrbird.febs.dapp.dto.TeamListDto;
import cc.mrbird.febs.dapp.entity.*;
-import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo;
-import cc.mrbird.febs.dapp.vo.AdminTeamInfoVo;
-import cc.mrbird.febs.dapp.vo.ApiMyTeammateInfoListVo;
-import cc.mrbird.febs.dapp.vo.TeamListVo;
+import cc.mrbird.febs.dapp.vo.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -81,4 +78,8 @@
IPage<AdminMemberCoinWithdrawVo> getWithDrawListByDayInPage(Page<AdminMemberCoinWithdrawVo> page, @Param("record")MemberCoinWithdrawEntity memberCoinWithdrawEntity);
IPage<AdminTeamInfoVo> findTeamInfoListInPage(Page<AdminTeamInfoVo> page, @Param("record")DappMemberEntity dappMemberEntity);
+
+ IPage<DappMessageEntity> showMessageListInPage(Page<DappMessageEntity> page, @Param("record")DappMessageEntity dappMessageEntity);
+
+ IPage<ApiMessageListVo> getMessageListInPage(Page<ApiMessageListVo> page, @Param("record")DappMessageEntity dappMessageEntity);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
index 26445ac..93a113b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -114,4 +114,10 @@
IPage<AdminMemberCoinWithdrawVo> getOutFlowListByDay(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request);
IPage<AdminTeamInfoVo> getTeamInfo(DappMemberEntity dappMemberEntity, QueryRequest request);
+
+ FebsResponse sendBackMessage(DappMessageEntity dappMessageEntity);
+
+ IPage<DappMessageEntity> showMessageList(DappMessageEntity dappMessageEntity, QueryRequest request);
+
+ IPage<ApiMessageListVo> getMessageListInPage(ApiMessageListDto apiMessageListDto);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index 36febc1..d90468a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -1073,7 +1073,7 @@
dappAccountMoneyChangeDao.insert(addFlow);
dappAccountMoneyChangeDao.deleteById(dappAccountMoneyChangeEntity.getId());
- return new FebsResponse().fail().message("操作成功");
+ return new FebsResponse().success().message("操作成功");
}else{
return new FebsResponse().fail().message("只允许回退【盈利分成】和【流水佣金】");
}
@@ -1150,6 +1150,42 @@
return adminTeamInfoVoIPage;
}
+ @Override
+ public FebsResponse sendBackMessage(DappMessageEntity dappMessageEntity) {
+ if(ObjectUtil.isEmpty(dappMessageEntity.getBackMessage())){
+ return new FebsResponse().fail().message("回复不能为空。");
+ }
+ Long id = dappMessageEntity.getId();
+ DappMessageEntity dappMessage = dappMessageDao.selectById(id);
+ DappMessageEntity dappMessageEntityBack = new DappMessageEntity();
+ dappMessageEntityBack.setMemberId(dappMessage.getMemberId());
+ StringBuffer stringBuffer = new StringBuffer();
+ stringBuffer.append("客服回复:");
+ stringBuffer.append(dappMessageEntity.getBackMessage());
+ dappMessageEntityBack.setBackMessage(stringBuffer.toString());
+ dappMessageDao.insert(dappMessageEntityBack);
+ return new FebsResponse().success().message("操作成功");
+ }
+
+ @Override
+ public IPage<DappMessageEntity> showMessageList(DappMessageEntity dappMessageEntity, QueryRequest request) {
+ dappMessageEntity = dappMessageDao.selectById(dappMessageEntity.getId());
+ Page<DappMessageEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+ IPage<DappMessageEntity> dappMessageEntitys = dappMemberDao.showMessageListInPage(page, dappMessageEntity);
+ return dappMessageEntitys;
+ }
+
+ @Override
+ public IPage<ApiMessageListVo> getMessageListInPage(ApiMessageListDto apiMessageListDto) {
+ Page<ApiMessageListVo> page = new Page<>(apiMessageListDto.getPageNum(), apiMessageListDto.getPageSize());
+
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ DappMessageEntity dappMessageEntity = new DappMessageEntity();
+ dappMessageEntity.setMemberId(member.getId());
+ IPage<ApiMessageListVo> records = dappMemberDao.getMessageListInPage(page, dappMessageEntity);
+ return records;
+ }
+
public String generateAsaToken(String token) {
RSA rsa = new RSA(null, AppContants.PUBLIC_KEY);
return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/ApiMessageListVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/ApiMessageListVo.java
new file mode 100644
index 0000000..37343f0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/ApiMessageListVo.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.dapp.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "ApiMessageListVo", description = "客服消息记录")
+public class ApiMessageListVo {
+
+ @ApiModelProperty(value = "客户消息")
+ private String message;
+
+ @ApiModelProperty(value = "回复消息")
+ private String backMessage;
+
+ @ApiModelProperty(value = "时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date createTime;
+
+}
diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml
index a0427e3..973ef8c 100644
--- a/src/main/resources/mapper/dapp/DappMemberDao.xml
+++ b/src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -290,6 +290,7 @@
from dapp_message a
left join dapp_member b on b.id = a.member_id
<where>
+ a.back_message is null
<if test="record.username !='' and record.username != null">
and b.username = #{record.username}
</if>
@@ -335,4 +336,23 @@
(a.id in (select id from dapp_member where FIND_IN_SET(#{record.inviteId}, referer_ids)))
order by a.create_time desc
</select>
+
+ <select id="showMessageListInPage" resultType="cc.mrbird.febs.dapp.entity.DappMessageEntity">
+ select
+ a.*,b.username username
+ from dapp_message a
+ left join dapp_member b on b.id = a.member_id
+ where a.member_id = #{record.memberId}
+ order by create_time desc
+ </select>
+
+ <select id="getMessageListInPage" resultType="cc.mrbird.febs.dapp.vo.ApiMessageListVo">
+ select
+ a.message message,
+ a.back_message backMessage,
+ a.create_time createTime
+ from dapp_message a
+ where a.member_id = #{record.memberId}
+ order by a.create_time desc
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/dapp/message-list.html b/src/main/resources/templates/febs/views/dapp/message-list.html
index 278d599..4c8782c 100644
--- a/src/main/resources/templates/febs/views/dapp/message-list.html
+++ b/src/main/resources/templates/febs/views/dapp/message-list.html
@@ -58,6 +58,23 @@
table.on('tool(memberMessageTable)', function (obj) {
var data = obj.data,
layEvent = obj.event;
+ if (layEvent === 'sendBackMessage') {
+ febs.modal.open('回复', 'dappView/sendBackMessage/' + data.id, {
+ btn: ['确认', '取消'],
+ yes: function (index, layero) {
+ $('#sendBackMessage-update').find('#submit').trigger('click');
+ },
+ btn2: function () {
+ layer.closeAll();
+ }
+ });
+ }
+
+ if (layEvent === 'showMessage') {
+ febs.modal.open( '消息记录', 'dappView/showMessage/' + data.id, {
+ maxmin: true,
+ });
+ }
});
table.on('sort(memberMessageTable)', function (obj) {
@@ -96,7 +113,15 @@
}
}, minWidth: 150, align: 'center'},
{field: 'message', title: '内容', minWidth: 130},
- {field: 'createTime', title: '创建时间', minWidth: 180}
+ {field: 'createTime', title: '创建时间', minWidth: 180},
+ {title: '回复',
+ templet: function (d) {
+ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sendBackMessage" shiro:hasPermission="user:sendBack">回复</button>'
+ },minWidth: 100,align:'center'},
+ {title: '查看记录',
+ templet: function (d) {
+ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="showMessage" shiro:hasPermission="user:showMessage">查看记录</button>'
+ },minWidth: 100,align:'center'},
]]
});
}
diff --git a/src/main/resources/templates/febs/views/dapp/send-Back-Message.html b/src/main/resources/templates/febs/views/dapp/send-Back-Message.html
new file mode 100644
index 0000000..a4c60ea
--- /dev/null
+++ b/src/main/resources/templates/febs/views/dapp/send-Back-Message.html
@@ -0,0 +1,90 @@
+<style>
+ #sendBackMessage-update {
+ padding: 20px 25px 25px 0;
+ }
+
+ #sendBackMessage-update .layui-treeSelect .ztree li a, .ztree li span {
+ margin: 0 0 2px 3px !important;
+ }
+ #sendBackMessage-update #data-permission-tree-block {
+ border: 1px solid #eee;
+ border-radius: 2px;
+ padding: 3px 0;
+ }
+ #sendBackMessage-update .layui-treeSelect .ztree li span.button.switch {
+ top: 1px;
+ left: 3px;
+ }
+ #sendBackMessage-update img{
+ max-width:100px
+ }
+
+</style>
+<div class="layui-fluid" id="sendBackMessage-update">
+ <form class="layui-form" action="" lay-filter="sendBackMessage-update-form">
+ <div class="layui-form-item febs-hide">
+ <label class="layui-form-label febs-form-item-require">id:</label>
+ <div class="layui-input-block">
+ <input type="text" name="id" data-th-value="${dappMessage.id}">
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label ">消息:</label>
+ <div class="layui-input-block">
+ <input type="text" name="message" data-th-id="${dappMessage.message}"class="layui-input" readonly/>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label ">回复内容:</label>
+ <div class="layui-input-block">
+ <input type="text" name="backMessage" data-th-id="${dappMessage.backMessage}" class="layui-input"/>
+ </div>
+ </div>
+ <div class="layui-form-item febs-hide">
+ <button class="layui-btn" lay-submit="" lay-filter="sendBackMessage-update-form-submit" id="submit"></button>
+ </div>
+ </form>
+</div>
+
+<script data-th-inline="javascript">
+ layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () {
+ var $ = layui.$,
+ febs = layui.febs,
+ layer = layui.layer,
+ formSelects = layui.formSelects,
+ treeSelect = layui.treeSelect,
+ form = layui.form,
+ laydate = layui.laydate,
+ eleTree = layui.eleTree,
+ dappMessage = [[${dappMessage}]],
+ $view = $('#sendBackMessage-update'),
+ validate = layui.validate;
+
+ form.render();
+ laydate.render({
+ elem: '#febs-form-group-date'
+ });
+
+ formSelects.render();
+
+
+ initUserValue();
+
+ function initUserValue() {
+ form.val("sendBackMessage-update-form", {
+ "backMessage": dappMessage.backMessage,
+ "message": dappMessage.message,
+ "id": dappMessage.id
+ });
+ }
+
+ form.on('submit(sendBackMessage-update-form-submit)', function (data) {
+ febs.post(ctx + 'member/sendBackMessage', data.field, function () {
+ layer.closeAll();
+ febs.alert.success('操作成功');
+ $('#febs-member').find('#reset').click();
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/dapp/show-message-list.html b/src/main/resources/templates/febs/views/dapp/show-message-list.html
new file mode 100644
index 0000000..cce2a03
--- /dev/null
+++ b/src/main/resources/templates/febs/views/dapp/show-message-list.html
@@ -0,0 +1,51 @@
+<div className="layui-fluid layui-anim febs-anim" id="febs-message-child" lay-title="聊天记录">
+ <div className="layui-row febs-container">
+ <div className="layui-col-md12">
+ <div className="layui-card">
+ <div className="layui-card-body febs-table-full">
+ <table lay-filter="messageTableChild" lay-data="{id: 'messageTableChild'}"></table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script data-th-inline="none" type="text/javascript">
+ layui.use(['jquery', 'form', 'table', 'febs'], function () {
+ var $ = layui.jquery,
+ febs = layui.febs,
+ form = layui.form,
+ table = layui.table,
+ $view = $('#febs-message-child'),
+ tableIns;
+
+ form.render();
+
+ initTable();
+
+ function initTable() {
+ tableIns = febs.table.init({
+ elem: $view.find('table'),
+ id: 'messageTableChild',
+ url: ctx + 'member/showMessageList?parentId=1',
+ cols: [[
+ {field: 'username', title: '用户名',
+ templet: function (d) {
+ if (d.backMessage != null) {
+ return '<span>客服</span>'
+ }else{
+ if(d.username === null){
+ return '<span>游客</span>'
+ }else{
+ return d.username
+ }
+ }
+ }, minWidth: 150, align: 'center'},
+ {field: 'message', title: '内容', minWidth: 130},
+ {field: 'backMessage', title: '回复', minWidth: 130},
+ {field: 'createTime', title: '创建时间', minWidth: 180},
+ ]]
+ });
+ }
+
+ })
+</script>
\ No newline at end of file
--
Gitblit v1.9.1