From cf69d5b1c350ef816fb6a84c79f367d3227a118b Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Tue, 26 Dec 2023 14:25:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=88=97=E8=A1=A8=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=92=8C=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8=E8=AF=A6?= =?UTF-8?q?=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/ret/WxUserMemberRet.java | 47 ++++ .../controller/WxUserMemberController.java | 11 + .../system/service/IWxUserMemberService.java | 3 + .../service/impl/WxUserMemberServiceImpl.java | 24 +- flossom-ui/src/api/system/member.js | 29 ++- flossom-ui/src/views/system/member/index.vue | 211 +++++++++++++++++- 6 files changed, 311 insertions(+), 14 deletions(-) create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/ret/WxUserMemberRet.java diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/ret/WxUserMemberRet.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/ret/WxUserMemberRet.java new file mode 100644 index 0000000..05c4e63 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/ret/WxUserMemberRet.java @@ -0,0 +1,47 @@ +package com.flossom.common.core.domain.ret; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.flossom.common.core.annotation.Excel; +import com.flossom.common.core.domain.entity.WxUserMember; +import com.flossom.common.core.domain.entity.WxUserRemark; +import com.flossom.common.core.domain.entity.WxUserTag; +import com.flossom.common.core.web.domain.BaseEntity; + +import java.util.Date; +import java.util.List; + +/** + * 用户返回对象 + * + * @author flossom + * @date 2023-12-08 + */ +public class WxUserMemberRet extends WxUserMember { + + /** + * 小程序标签 + */ + private List miniProgramTags; + + /** + * 企微标签 + */ + private List wecomTags; + + + public List getMiniProgramTags() { + return miniProgramTags; + } + + public void setMiniProgramTags(List miniProgramTags) { + this.miniProgramTags = miniProgramTags; + } + + public List getWecomTags() { + return wecomTags; + } + + public void setWecomTags(List wecomTags) { + this.wecomTags = wecomTags; + } +} diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserMemberController.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserMemberController.java index deaa77b..d4c5ce0 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserMemberController.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserMemberController.java @@ -8,6 +8,7 @@ import com.flossom.common.core.domain.req.AllChangIntegralOperateReq; import com.flossom.common.core.domain.req.WxUserIntegralVm; import com.flossom.common.core.domain.req.WxUserMemberReq; import com.flossom.common.core.domain.req.WxUserMemberVm; +import com.flossom.common.core.domain.ret.WxUserMemberRet; import com.flossom.common.core.enums.IntegralChangeTypeEnum; import com.flossom.common.core.exception.ServiceException; import com.flossom.common.core.utils.StringUtils; @@ -49,6 +50,16 @@ public class WxUserMemberController extends BaseController { return getDataTable(list); } + /** + * 查询用户列表 + */ + @GetMapping("/listRet") + public TableDataInfo listRet(WxUserMemberVm wxUserMemberVm) { + startPage(); + List list = wxUserMemberService.selectWxUserMemberRetList(wxUserMemberVm); + return getDataTable(list); + } + /** * 导出用户列表 */ diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserMemberService.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserMemberService.java index 5be3c2a..65e1377 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserMemberService.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserMemberService.java @@ -5,6 +5,7 @@ import com.flossom.common.core.domain.entity.WxUserMember; import com.flossom.common.core.domain.req.WxUserIntegralVm; import com.flossom.common.core.domain.req.WxUserMemberReq; import com.flossom.common.core.domain.req.WxUserMemberVm; +import com.flossom.common.core.domain.ret.WxUserMemberRet; import com.flossom.common.core.domain.vo.WxUserMemberVo; import java.util.List; @@ -84,4 +85,6 @@ public interface IWxUserMemberService void openOrCloseClock(Long id); void openOrCloseActivity(Long id); + + List selectWxUserMemberRetList(WxUserMemberVm wxUserMemberVm); } diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserMemberServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserMemberServiceImpl.java index 05ee30c..638e7ca 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserMemberServiceImpl.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserMemberServiceImpl.java @@ -9,6 +9,7 @@ import com.flossom.common.core.domain.entity.*; import com.flossom.common.core.domain.req.WxUserIntegralVm; import com.flossom.common.core.domain.req.WxUserMemberReq; import com.flossom.common.core.domain.req.WxUserMemberVm; +import com.flossom.common.core.domain.ret.WxUserMemberRet; import com.flossom.common.core.domain.vo.WxUserMemberVo; import com.flossom.common.core.enums.IntegralChangeTypeEnum; import com.flossom.common.core.enums.Status; @@ -133,7 +134,7 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService { /** * 修改用户 * - * @param WxUserMemberReq 用户 + * @param * @return 结果 */ @Override @@ -351,4 +352,25 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService { } wxUserMemberMapper.updateWxUserMember(update); } + + @Override + public List selectWxUserMemberRetList(WxUserMemberVm wxUserMemberVm) { + List list = new ArrayList<>(); + List wxUserMembers = wxUserMemberMapper.selectWxUserMemberListByVm(wxUserMemberVm); + if (wxUserMembers != null && wxUserMembers.size() > 0) { + WxUserMemberRet wxUserMemberRet; + for (WxUserMember wxUserMember : wxUserMembers) { + wxUserMemberRet = new WxUserMemberRet(); + BeanUtils.copyProperties(wxUserMember, wxUserMemberRet); + WxUserTag wxUserTag = new WxUserTag(); + wxUserTag.setUserId(wxUserMember.getId()); + wxUserTag.setType(TagTypeStatus.MINI_PROGRAM.getCode()); + wxUserMemberRet.setMiniProgramTags(wxUserTagMapper.selectWxUserTagList(wxUserTag)); + wxUserTag.setType(TagTypeStatus.ENTERPRISE_WECHAT.getCode()); + wxUserMemberRet.setWecomTags(wxUserTagMapper.selectWxUserTagList(wxUserTag)); + list.add(wxUserMemberRet); + } + } + return list; + } } diff --git a/flossom-ui/src/api/system/member.js b/flossom-ui/src/api/system/member.js index 1047869..f810e20 100644 --- a/flossom-ui/src/api/system/member.js +++ b/flossom-ui/src/api/system/member.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询用户列表 export function listMember(query) { return request({ - url: '/system/member/list', + url: '/system/member/listRet', method: 'get', params: query }) @@ -249,3 +249,30 @@ export function openOrCloseActivity(id) { method: 'get' }) } + +// 分页获取消息列表 +export function uObtainUserScriptLog(data) { + return request({ + url: '/system/userScriptLog/list', + method: 'get', + params: data + }) +} + +// 删除用户的消息列表 +export function delUserScriptLog(data) { + return request({ + url: '/system/userScriptLog', + method: 'put', + data: data + }) +} + +// 获取用户积分列表 +export function obtainUserIntegralLog(data) { + return request({ + url: '/system/integralLog/list', + method: 'get', + params: data + }) +} diff --git a/flossom-ui/src/views/system/member/index.vue b/flossom-ui/src/views/system/member/index.vue index 95f506d..3064660 100644 --- a/flossom-ui/src/views/system/member/index.vue +++ b/flossom-ui/src/views/system/member/index.vue @@ -197,19 +197,35 @@ - - - + + + - - + + + + + + - + + + - 查看详情 + @@ -569,7 +659,7 @@ import { getMiniProgramTagsTree, scriptTreeSelect, editRemark, delRemark, - openOrCloseClock, openOrCloseActivity, + openOrCloseClock, openOrCloseActivity, uObtainUserScriptLog, delUserScriptLog, obtainUserIntegralLog, } from "@/api/system/member"; import Treeselect from "@riophae/vue-treeselect"; import {tagTreeSelect} from "@/api/system/wechatTab"; @@ -580,6 +670,23 @@ export default { components: {Treeselect}, data() { return { + tableData: [{ + date: '2016-05-02', + name: '王小虎', + address: '上海市普陀区金沙江路 1518 弄' + }, { + date: '2016-05-04', + name: '王小虎', + address: '上海市普陀区金沙江路 1517 弄' + }, { + date: '2016-05-01', + name: '王小虎', + address: '上海市普陀区金沙江路 1519 弄' + }, { + date: '2016-05-03', + name: '王小虎', + address: '上海市普陀区金沙江路 1516 弄' + }], // 遮罩层 loading: true, // 选中数组 @@ -671,6 +778,28 @@ export default { // 当类型为模板发送时,选择了二级话术标题后,显示内容用,不传后端保存 scriptContent: null, }, + // 用户消息记录 + userScriptLogVisible: false, + userScriptLogQuery: { + total: 0, + pageNum: 1, + pageSize: 10, + wxUserId: null, + userScriptList: null, + orderByColumn: "createTime", + isAsc: "desc" + }, + // 用户积分记录 + userIntegralLogVisible: false, + userIntegralLogQuery: { + total: 0, + pageNum: 1, + pageSize: 10, + userIntegralLogList: null, + userId: null, + orderByColumn: "createTime", + isAsc: "desc" + }, // 查询参数 queryParams: { pageNum: 1, @@ -822,9 +951,25 @@ export default { this.batchRemarkVisible = false; } }, + cancelUserScriptLogDialog() { + this.userScriptLogVisible = false; + this.userScriptLogQuery.total = 0; + this.userScriptLogQuery.pageNum = 1; + this.userScriptLogQuery.pageSize = 10; + this.userScriptLogQuery.wxUserId = null; + this.userScriptLogQuery.userScriptList = null; + }, + cancelUserIntegralLogDialog() { + this.userIntegralLogVisible = false; + this.userIntegralLogQuery.total = 0 + this.userIntegralLogQuery.pageNum = 1; + this.userIntegralLogQuery.pageSize = 10; + this.userIntegralLogQuery.userId = null; + this.userIntegralLogQuery.userIntegralLogList = null; + }, cancelscriptDialog(isclose) { - this.scriptForm.isCustom = null, - this.scriptForm.scriptName = null; + this.scriptForm.isCustom = null; + this.scriptForm.scriptName = null; this.scriptForm.titile = null; this.scriptForm.content = null; this.scriptForm.tagType = null; @@ -1320,6 +1465,48 @@ export default { this.download('system/member/export', { ...this.queryParams }, `member_${new Date().getTime()}.xlsx`) + }, + // 打开用户消息列表窗口 + viewMessageDetail(row) { + this.userScriptLogQuery.wxUserId = row.id; + this.getUserScriptLogList(); + this.userScriptLogVisible = true; + }, + // 分页获取 用户消息列表 + getUserScriptLogList() { + uObtainUserScriptLog(this.userScriptLogQuery).then(response => { + this.userScriptLogQuery.userScriptList = response.rows; + this.userScriptLogQuery.total = response.total; + }); + }, + // 删除用户消息 + delUserScriptLog(row) { + let wxUserScriptLog = { + id: row.id, + status: row.status == 0 ? 1 : 0, + } + delUserScriptLog(wxUserScriptLog).then(Response => { + row.status = wxUserScriptLog.status; + this.$modal.msgSuccess("撤销成功"); + }) + }, + // 打开用户积分列表窗口 + viewUserIntegralDetail(row) { + this.userIntegralLogQuery.userId = row.id; + this.getUserIntegralLogList(); + this.userIntegralLogVisible = true; + }, + // 分页获取用户积分列表 + getUserIntegralLogList() { + obtainUserIntegralLog(this.userIntegralLogQuery).then(Response => { + this.userIntegralLogQuery.userIntegralLogList = Response.rows; + this.userIntegralLogQuery.total = Response.total; + }) + }, + userIntegralSortChang({column, prop}) { + this.userIntegralLogQuery.orderByColumn = prop; + this.userIntegralLogQuery.isAsc = column.order == 'ascending' ? 'asc' : 'desc'; + this.getUserIntegralLogList(); } } }