From e8f4b7c8f4919c89bf8cdb89f243d4f0b63c1ad5 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Wed, 20 Dec 2023 15:38:21 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=B0=86=E5=A4=B4=E5=83=8F=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E4=B8=8E=E5=AE=8C=E5=96=84=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miniProgram/controller/UserMemberController.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java index 69ffcfe..b75866b 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java @@ -67,17 +67,7 @@ public class UserMemberController extends BaseController { * @return */ @PostMapping("/updateUser") - public R updateUser(@RequestParam(value = "file", required = false) MultipartFile file, @Validated UserMemberUpdateVo userMemberUpdateVo) { - if (file != null) { - R result = remoteFileService.upload(file); - if (result.getCode() != Constants.SUCCESS) { - logger.error("上传头像失败"); - throw new ServiceException("上传头像失败"); - } - userMemberUpdateVo.setHeadimg(result.getData().getUrl()); - } else { - userMemberUpdateVo.setHeadimg(null); - } + public R updateUser(@Validated UserMemberUpdateVo userMemberUpdateVo) { return R.ok(wxUserMemberService.updateUser(userMemberUpdateVo)); } From 86647553edc10cd564df186e111dec638b0a23fb Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Wed, 20 Dec 2023 15:52:30 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=B0=86=E5=A4=B4=E5=83=8F=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E4=B8=8E=E5=AE=8C=E5=96=84=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=88=86=E7=A6=BB=20(revert)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miniProgram/controller/UserMemberController.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java index b75866b..69ffcfe 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java @@ -67,7 +67,17 @@ public class UserMemberController extends BaseController { * @return */ @PostMapping("/updateUser") - public R updateUser(@Validated UserMemberUpdateVo userMemberUpdateVo) { + public R updateUser(@RequestParam(value = "file", required = false) MultipartFile file, @Validated UserMemberUpdateVo userMemberUpdateVo) { + if (file != null) { + R result = remoteFileService.upload(file); + if (result.getCode() != Constants.SUCCESS) { + logger.error("上传头像失败"); + throw new ServiceException("上传头像失败"); + } + userMemberUpdateVo.setHeadimg(result.getData().getUrl()); + } else { + userMemberUpdateVo.setHeadimg(null); + } return R.ok(wxUserMemberService.updateUser(userMemberUpdateVo)); } From df720853c2bde989b9e0a030197b30d549bd9ba1 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Wed, 20 Dec 2023 18:02:17 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=8F=91=E9=80=81=E8=AF=9D=E6=9C=AF?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/entity/WxUserScriptLog.java | 262 ++++++++++++++++++ .../core/domain/req/WxUserScriptReq.java | 234 ++++++++++++++++ .../core/mapper/WxUserScriptLogMapper.java | 62 +++++ .../mapper/WxUserScriptLogMapper.xml | 149 ++++++++++ .../controller/WxUserScriptLogController.java | 164 +++++++++++ .../service/IWxUserScriptLogService.java | 64 +++++ .../impl/WxUserScriptLogServiceImpl.java | 143 ++++++++++ 7 files changed, 1078 insertions(+) create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserScriptLog.java create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserScriptReq.java create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java create mode 100644 flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml create mode 100644 flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserScriptLogController.java create mode 100644 flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserScriptLogService.java create mode 100644 flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserScriptLogServiceImpl.java diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserScriptLog.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserScriptLog.java new file mode 100644 index 0000000..cc6779a --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserScriptLog.java @@ -0,0 +1,262 @@ +package com.flossom.common.core.domain.entity; + +import com.flossom.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 发送话术记录对象 wx_user_script_log + * + * @author flossom + * @date 2023-12-20 + */ +public class WxUserScriptLog extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * $column.columnComment + */ + private Long id; + + /** + * 话术接收人 + */ + private Long wxUserId; + + /** + * 是否已读:0否,1是 + */ + private Integer isRead; + + /** + * 是否自定义话术:0否,1是 + */ + private Integer isCustom; + + /** + * 当为 is_custom = 0,选择话术模板 + */ + private Integer scriptTemplateId; + + /** + * 话术名称 + */ + private String scriptName; + + /** + * 话术标题 + */ + private String titile; + + /** + * 话术内容 + */ + private String content; + + /** + * 标签类型:1小程序标签 2企微标签 + */ + private Integer tagType; + + /** + * 跳转类型:0无跳转、1跳转内部链接、3跳转外部链接、4跳转小程序、5导向视频号、6导向视频号直播间 + */ + private Integer type; + + /** + * 跳转链接(跳转外部链接、跳转内部链接) + */ + private String link; + + /** + * 跳转链接参数(跳转内部链接) + */ + private String linkParams; + + /** + * 外链小程序appid(跳转小程序) + */ + private String redirectAppid; + + /** + * 外链小程序url(跳转小程序) + */ + private String redirectUrl; + + /** + * 视频号(导向视频号、导向视频号直播间) + */ + private String videoNo; + + /** + * 视频号feedId(导向视频号) + */ + private String feedId; + + /** + * 标签名字(xxx,xxx,xxx) + */ + private String tagNames; + + /** + * 标签ID(xxxx,xxxx,xxx) + */ + private String tagIds; + + /** + * 状态(0正常 1停用) + */ + private Integer status; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getWxUserId() { + return wxUserId; + } + + public void setWxUserId(Long wxUserId) { + this.wxUserId = wxUserId; + } + + public Integer getIsRead() { + return isRead; + } + + public void setIsRead(Integer isRead) { + this.isRead = isRead; + } + + public Integer getIsCustom() { + return isCustom; + } + + public void setIsCustom(Integer isCustom) { + this.isCustom = isCustom; + } + + public Integer getScriptTemplateId() { + return scriptTemplateId; + } + + public void setScriptTemplateId(Integer scriptTemplateId) { + this.scriptTemplateId = scriptTemplateId; + } + + public String getScriptName() { + return scriptName; + } + + public void setScriptName(String scriptName) { + this.scriptName = scriptName; + } + + public String getTitile() { + return titile; + } + + public void setTitile(String titile) { + this.titile = titile; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Integer getTagType() { + return tagType; + } + + public void setTagType(Integer tagType) { + this.tagType = tagType; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public String getLinkParams() { + return linkParams; + } + + public void setLinkParams(String linkParams) { + this.linkParams = linkParams; + } + + public String getRedirectAppid() { + return redirectAppid; + } + + public void setRedirectAppid(String redirectAppid) { + this.redirectAppid = redirectAppid; + } + + public String getRedirectUrl() { + return redirectUrl; + } + + public void setRedirectUrl(String redirectUrl) { + this.redirectUrl = redirectUrl; + } + + public String getVideoNo() { + return videoNo; + } + + public void setVideoNo(String videoNo) { + this.videoNo = videoNo; + } + + public String getFeedId() { + return feedId; + } + + public void setFeedId(String feedId) { + this.feedId = feedId; + } + + public String getTagNames() { + return tagNames; + } + + public void setTagNames(String tagNames) { + this.tagNames = tagNames; + } + + public String getTagIds() { + return tagIds; + } + + public void setTagIds(String tagIds) { + this.tagIds = tagIds; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserScriptReq.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserScriptReq.java new file mode 100644 index 0000000..5df5be5 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserScriptReq.java @@ -0,0 +1,234 @@ +package com.flossom.common.core.domain.req; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.util.List; + +/** + * 发送话术记录 请求对象 + * + * @author flossom + * @date 2023-12-20 + */ +public class WxUserScriptReq { + + /** + * 话术接收用户id + */ + @NotNull(message = "用户列表不能为空") + List userIdList; + + /** + * 是否自定义话术:0否,1是 + */ + @NotNull(message = "请选择是否自定义话术") + @Range(min = 0, max = 1) + private Integer isCustom; + + /** + * 当为 is_custom = 0,选择话术模板 + */ + private Integer scriptTemplateId; + + /** + * 话术名称 + */ + private String scriptName; + + /** + * 话术标题 + */ + private String titile; + + /** + * 话术内容 + */ + private String content; + + /** + * 标签类型:1小程序标签 2企微标签 + */ + private Integer tagType; + + /** + * 跳转类型:0无跳转、1跳转内部链接、3跳转外部链接、4跳转小程序、5导向视频号、6导向视频号直播间 + */ + @NotNull(message = "请选择跳转类型") + @Range(min = 0, max = 6) + private Integer type; + + /** + * 跳转链接(跳转外部链接、跳转内部链接) + */ + private String link; + + /** + * 跳转链接参数(跳转内部链接) + */ + private String linkParams; + + /** + * 外链小程序appid(跳转小程序) + */ + private String redirectAppid; + + /** + * 外链小程序url(跳转小程序) + */ + private String redirectUrl; + + /** + * 视频号(导向视频号、导向视频号直播间) + */ + private String videoNo; + + /** + * 视频号feedId(导向视频号) + */ + private String feedId; + + /** + * 标签名字(xxx,xxx,xxx) + */ + private String tagNames; + + /** + * 标签ID(xxxx,xxxx,xxx) + */ + private String tagIds; + + + public List getUserIdList() { + return userIdList; + } + + public void setUserIdList(List userIdList) { + this.userIdList = userIdList; + } + + public Integer getIsCustom() { + return isCustom; + } + + public void setIsCustom(Integer isCustom) { + this.isCustom = isCustom; + } + + public Integer getScriptTemplateId() { + return scriptTemplateId; + } + + public void setScriptTemplateId(Integer scriptTemplateId) { + this.scriptTemplateId = scriptTemplateId; + } + + public String getScriptName() { + return scriptName; + } + + public void setScriptName(String scriptName) { + this.scriptName = scriptName; + } + + public String getTitile() { + return titile; + } + + public void setTitile(String titile) { + this.titile = titile; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Integer getTagType() { + return tagType; + } + + public void setTagType(Integer tagType) { + this.tagType = tagType; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public String getLinkParams() { + return linkParams; + } + + public void setLinkParams(String linkParams) { + this.linkParams = linkParams; + } + + public String getRedirectAppid() { + return redirectAppid; + } + + public void setRedirectAppid(String redirectAppid) { + this.redirectAppid = redirectAppid; + } + + public String getRedirectUrl() { + return redirectUrl; + } + + public void setRedirectUrl(String redirectUrl) { + this.redirectUrl = redirectUrl; + } + + public String getVideoNo() { + return videoNo; + } + + public void setVideoNo(String videoNo) { + this.videoNo = videoNo; + } + + public String getFeedId() { + return feedId; + } + + public void setFeedId(String feedId) { + this.feedId = feedId; + } + + public String getTagNames() { + return tagNames; + } + + public void setTagNames(String tagNames) { + this.tagNames = tagNames; + } + + public String getTagIds() { + return tagIds; + } + + public void setTagIds(String tagIds) { + this.tagIds = tagIds; + } + +} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java new file mode 100644 index 0000000..2ea0e9a --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java @@ -0,0 +1,62 @@ +package com.flossom.common.core.mapper; + +import com.flossom.common.core.domain.entity.WxUserScriptLog; + +import java.util.List; + + +/** + * 发送话术记录Mapper接口 + * + * @author flossom + * @date 2023-12-20 + */ +public interface WxUserScriptLogMapper { + /** + * 查询发送话术记录 + * + * @param id 发送话术记录主键 + * @return 发送话术记录 + */ + public WxUserScriptLog selectWxUserScriptLogById(Long id); + + /** + * 查询发送话术记录列表 + * + * @param wxUserScriptLog 发送话术记录 + * @return 发送话术记录集合 + */ + public List selectWxUserScriptLogList(WxUserScriptLog wxUserScriptLog); + + /** + * 新增发送话术记录 + * + * @param wxUserScriptLog 发送话术记录 + * @return 结果 + */ + public int insertWxUserScriptLog(WxUserScriptLog wxUserScriptLog); + + /** + * 修改发送话术记录 + * + * @param wxUserScriptLog 发送话术记录 + * @return 结果 + */ + public int updateWxUserScriptLog(WxUserScriptLog wxUserScriptLog); + + /** + * 删除发送话术记录 + * + * @param id 发送话术记录主键 + * @return 结果 + */ + public int deleteWxUserScriptLogById(Long id); + + /** + * 批量删除发送话术记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWxUserScriptLogByIds(Long[] ids); +} diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml new file mode 100644 index 0000000..bf974dc --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, wx_user_id, is_read, is_custom, script_template_id, script_name, titile, content, tag_type, type, link, link_params, redirect_appid, redirect_url, video_no, feed_id, tag_names, tag_ids, status, create_by, create_time from wx_user_script_log + + + + + + + + insert into wx_user_script_log + + wx_user_id, + is_read, + is_custom, + script_template_id, + script_name, + titile, + content, + tag_type, + type, + link, + link_params, + redirect_appid, + redirect_url, + video_no, + feed_id, + tag_names, + tag_ids, + status, + create_by, + create_time, + + + #{wxUserId}, + #{isRead}, + #{isCustom}, + #{scriptTemplateId}, + #{scriptName}, + #{titile}, + #{content}, + #{tagType}, + #{type}, + #{link}, + #{linkParams}, + #{redirectAppid}, + #{redirectUrl}, + #{videoNo}, + #{feedId}, + #{tagNames}, + #{tagIds}, + #{status}, + #{createBy}, + #{createTime}, + + + + + update wx_user_script_log + + wx_user_id = #{wxUserId}, + is_read = #{isRead}, + is_custom = #{isCustom}, + script_template_id = #{scriptTemplateId}, + script_name = #{scriptName}, + titile = #{titile}, + content = #{content}, + tag_type = #{tagType}, + type = #{type}, + link = #{link}, + link_params = #{linkParams}, + redirect_appid = #{redirectAppid}, + redirect_url = #{redirectUrl}, + video_no = #{videoNo}, + feed_id = #{feedId}, + tag_names = #{tagNames}, + tag_ids = #{tagIds}, + status = #{status}, + create_by = #{createBy}, + create_time = #{createTime}, + + where id = #{id} + + + + delete from wx_user_script_log where id = #{id} + + + + delete from wx_user_script_log where id in + + #{id} + + + \ No newline at end of file diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserScriptLogController.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserScriptLogController.java new file mode 100644 index 0000000..133e6a5 --- /dev/null +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserScriptLogController.java @@ -0,0 +1,164 @@ +package com.flossom.system.controller; + +import javax.servlet.http.HttpServletResponse; + +import com.flossom.common.core.domain.R; +import com.flossom.common.core.domain.entity.WxUserScriptLog; +import com.flossom.common.core.domain.req.WxUserScriptReq; +import com.flossom.common.core.exception.ServiceException; +import com.flossom.common.core.utils.StringUtils; +import com.flossom.common.core.utils.poi.ExcelUtil; +import com.flossom.common.core.web.controller.BaseController; +import com.flossom.common.core.web.domain.AjaxResult; +import com.flossom.common.core.web.page.TableDataInfo; +import com.flossom.common.log.annotation.Log; +import com.flossom.common.log.enums.BusinessType; +import com.flossom.common.security.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.flossom.system.service.IWxUserScriptLogService; + +import java.util.List; + +/** + * 发送话术记录Controller + * + * @author flossom + * @date 2023-12-20 + */ +@RestController +@RequestMapping("/userScriptLog") +public class WxUserScriptLogController extends BaseController { + + @Autowired + private IWxUserScriptLogService wxUserScriptLogService; + + /** + * 查询发送话术记录列表 + */ + @RequiresPermissions("system:user_script_log:list") + @GetMapping("/list") + public TableDataInfo list(WxUserScriptLog wxUserScriptLog) { + startPage(); + List list = wxUserScriptLogService.selectWxUserScriptLogList(wxUserScriptLog); + return getDataTable(list); + } + + /** + * 导出发送话术记录列表 + */ + @RequiresPermissions("system:user_script_log:export") + @Log(title = "发送话术记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WxUserScriptLog wxUserScriptLog) { + List list = wxUserScriptLogService.selectWxUserScriptLogList(wxUserScriptLog); + ExcelUtil util = new ExcelUtil(WxUserScriptLog.class); + util.exportExcel(response, list, "发送话术记录数据"); + } + + /** + * 获取发送话术记录详细信息 + */ + @RequiresPermissions("system:user_script_log:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return success(wxUserScriptLogService.selectWxUserScriptLogById(id)); + } + + /** + * 新增发送话术记录 + */ + @RequiresPermissions("system:user_script_log:add") + @Log(title = "发送话术记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WxUserScriptLog wxUserScriptLog) { + return toAjax(wxUserScriptLogService.insertWxUserScriptLog(wxUserScriptLog)); + } + + /** + * 修改发送话术记录 + */ + @RequiresPermissions("system:user_script_log:edit") + @Log(title = "发送话术记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WxUserScriptLog wxUserScriptLog) { + return toAjax(wxUserScriptLogService.updateWxUserScriptLog(wxUserScriptLog)); + } + + /** + * 删除发送话术记录 + */ + @RequiresPermissions("system:user_script_log:remove") + @Log(title = "发送话术记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(wxUserScriptLogService.deleteWxUserScriptLogByIds(ids)); + } + + /** + * 发送话术 + * + * @return + */ + @PostMapping("/sendScript") + public R sendScript(@RequestBody @Validated WxUserScriptReq wxUserScriptReq) { + if (wxUserScriptReq.getIsCustom() == 0) { + // 模板话术 + if (wxUserScriptReq.getScriptTemplateId() == null || wxUserScriptReq.getScriptTemplateId() == 0) { + return R.fail("请选择话术模板"); + } + } else if (wxUserScriptReq.getIsCustom() == 1) { + // 自定义话术 + if(StringUtils.isBlank(wxUserScriptReq.getTitile())){ + return R.fail("请输入话术标题"); + } + if(StringUtils.isBlank(wxUserScriptReq.getContent())){ + return R.fail("请输入话术内容"); + } + // 跳转类型 + if (wxUserScriptReq.getType() == 1) { + // 1跳转内部链接 + if (StringUtils.isBlank(wxUserScriptReq.getLink())) { + return R.fail("请输入内部链接"); + } + if (StringUtils.isBlank(wxUserScriptReq.getLinkParams())) { + return R.fail("请输入跳转参数"); + } + } + if (wxUserScriptReq.getType() == 3) { + // 03跳转外部链接 + if (StringUtils.isBlank(wxUserScriptReq.getLink())) { + return R.fail("请输入外部链接地址"); + } + } + if (wxUserScriptReq.getType() == 4) { + // 4跳转小程序 + if (StringUtils.isBlank(wxUserScriptReq.getRedirectAppid())) { + return R.fail("请输入小程序appid"); + } + if (StringUtils.isBlank(wxUserScriptReq.getRedirectUrl())) { + return R.fail("请输入小程序页面地址"); + } + } + if (wxUserScriptReq.getType() == 5) { + // 5导向视频号 + if (StringUtils.isBlank(wxUserScriptReq.getVideoNo())) { + return R.fail("请输入视频号id"); + } + if (StringUtils.isBlank(wxUserScriptReq.getFeedId())) { + return R.fail("请输入视频号feedid"); + } + } + if (wxUserScriptReq.getType() == 6) { + // 6导向视频号直播间 + if (StringUtils.isBlank(wxUserScriptReq.getVideoNo())) { + return R.fail("请输入视频号id"); + } + } + } + wxUserScriptLogService.sendScript(wxUserScriptReq); + return R.ok(); + } + +} diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserScriptLogService.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserScriptLogService.java new file mode 100644 index 0000000..bb735c9 --- /dev/null +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserScriptLogService.java @@ -0,0 +1,64 @@ +package com.flossom.system.service; + +import com.flossom.common.core.domain.entity.WxUserScriptLog; +import com.flossom.common.core.domain.req.WxUserScriptReq; + +import java.util.List; + +/** + * 发送话术记录Service接口 + * + * @author flossom + * @date 2023-12-20 + */ +public interface IWxUserScriptLogService { + /** + * 查询发送话术记录 + * + * @param id 发送话术记录主键 + * @return 发送话术记录 + */ + public WxUserScriptLog selectWxUserScriptLogById(Long id); + + /** + * 查询发送话术记录列表 + * + * @param wxUserScriptLog 发送话术记录 + * @return 发送话术记录集合 + */ + public List selectWxUserScriptLogList(WxUserScriptLog wxUserScriptLog); + + /** + * 新增发送话术记录 + * + * @param wxUserScriptLog 发送话术记录 + * @return 结果 + */ + public int insertWxUserScriptLog(WxUserScriptLog wxUserScriptLog); + + /** + * 修改发送话术记录 + * + * @param wxUserScriptLog 发送话术记录 + * @return 结果 + */ + public int updateWxUserScriptLog(WxUserScriptLog wxUserScriptLog); + + /** + * 批量删除发送话术记录 + * + * @param ids 需要删除的发送话术记录主键集合 + * @return 结果 + */ + public int deleteWxUserScriptLogByIds(Long[] ids); + + /** + * 删除发送话术记录信息 + * + * @param id 发送话术记录主键 + * @return 结果 + */ + public int deleteWxUserScriptLogById(Long id); + + void sendScript(WxUserScriptReq wxUserScriptReq); +} diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserScriptLogServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserScriptLogServiceImpl.java new file mode 100644 index 0000000..c7f99d0 --- /dev/null +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserScriptLogServiceImpl.java @@ -0,0 +1,143 @@ +package com.flossom.system.service.impl; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import com.flossom.common.core.domain.entity.SysTag; +import com.flossom.common.core.domain.entity.WxScriptTemplate; +import com.flossom.common.core.domain.entity.WxUserScriptLog; +import com.flossom.common.core.domain.req.WxUserScriptReq; +import com.flossom.common.core.mapper.*; +import com.flossom.common.core.utils.DateUtils; +import com.flossom.common.core.utils.StringUtils; +import com.flossom.common.security.utils.SecurityUtils; +import com.flossom.system.service.IWxUserMemberService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.flossom.system.service.IWxUserScriptLogService; +import org.springframework.transaction.annotation.Transactional; + +/** + * 发送话术记录Service业务层处理 + * + * @author flossom + * @date 2023-12-20 + */ +@Service +public class WxUserScriptLogServiceImpl implements IWxUserScriptLogService { + @Autowired + private WxUserScriptLogMapper wxUserScriptLogMapper; + + @Autowired + private IWxUserMemberService wxUserMemberService; + + @Autowired + private WxScriptTemplateMapper wxScriptTemplateMapper; + + /** + * 查询发送话术记录 + * + * @param id 发送话术记录主键 + * @return 发送话术记录 + */ + @Override + public WxUserScriptLog selectWxUserScriptLogById(Long id) { + return wxUserScriptLogMapper.selectWxUserScriptLogById(id); + } + + /** + * 查询发送话术记录列表 + * + * @param wxUserScriptLog 发送话术记录 + * @return 发送话术记录 + */ + @Override + public List selectWxUserScriptLogList(WxUserScriptLog wxUserScriptLog) { + return wxUserScriptLogMapper.selectWxUserScriptLogList(wxUserScriptLog); + } + + /** + * 新增发送话术记录 + * + * @param wxUserScriptLog 发送话术记录 + * @return 结果 + */ + @Override + public int insertWxUserScriptLog(WxUserScriptLog wxUserScriptLog) { + wxUserScriptLog.setCreateTime(DateUtils.getNowDate()); + return wxUserScriptLogMapper.insertWxUserScriptLog(wxUserScriptLog); + } + + /** + * 修改发送话术记录 + * + * @param wxUserScriptLog 发送话术记录 + * @return 结果 + */ + @Override + public int updateWxUserScriptLog(WxUserScriptLog wxUserScriptLog) { + return wxUserScriptLogMapper.updateWxUserScriptLog(wxUserScriptLog); + } + + /** + * 批量删除发送话术记录 + * + * @param ids 需要删除的发送话术记录主键 + * @return 结果 + */ + @Override + public int deleteWxUserScriptLogByIds(Long[] ids) { + return wxUserScriptLogMapper.deleteWxUserScriptLogByIds(ids); + } + + /** + * 删除发送话术记录信息 + * + * @param id 发送话术记录主键 + * @return 结果 + */ + @Override + public int deleteWxUserScriptLogById(Long id) { + return wxUserScriptLogMapper.deleteWxUserScriptLogById(id); + } + + @Override + @Transactional + public void sendScript(WxUserScriptReq wxUserScriptReq) { + List userIdList = wxUserScriptReq.getUserIdList(); + // 保存消息 + for (Long wxUserId : userIdList) { + WxUserScriptLog wxUserScriptLog = new WxUserScriptLog(); + BeanUtils.copyProperties(wxUserScriptReq, wxUserScriptLog); + wxUserScriptLog.setWxUserId(wxUserId); + wxUserScriptLog.setCreateBy(SecurityUtils.getUsername()); + wxUserScriptLog.setCreateTime(DateUtils.getNowDate()); + wxUserScriptLogMapper.insertWxUserScriptLog(wxUserScriptLog); + } + + // 保存标签关联 + if (wxUserScriptReq.getIsCustom() == 0) { + // 模板话术 + Integer scriptTemplateId = wxUserScriptReq.getScriptTemplateId(); + WxScriptTemplate wxScriptTemplate = wxScriptTemplateMapper.selectWxScriptTemplateById(scriptTemplateId.longValue()); + if (StringUtils.isNotBlank(wxScriptTemplate.getTagIds())) { + List list = Arrays.asList(wxScriptTemplate.getTagIds().split(",")); + List tagList = list.stream().map(Integer::parseInt).collect(Collectors.toList()); + List collect = userIdList.stream().map(Long::intValue).collect(Collectors.toList()); + wxUserMemberService.batchAddMiniProgramTag(tagList, collect); + } + } + if (wxUserScriptReq.getIsCustom() == 1) { + // 自定义话术 + if (StringUtils.isNotBlank(wxUserScriptReq.getTagIds())) { + List list = Arrays.asList(wxUserScriptReq.getTagIds().split(",")); + List tagList = list.stream().map(Integer::parseInt).collect(Collectors.toList()); + List collect = userIdList.stream().map(Long::intValue).collect(Collectors.toList()); + wxUserMemberService.batchAddMiniProgramTag(tagList, collect); + } + } + + } +} From c5d7b88f5b906f6c66dd5b42348965ff5df61d5c Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 21 Dec 2023 10:16:13 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/entity/WxUserRemark.java | 85 ++++++++++++ .../core/domain/req/WxUserRemarkReq.java | 53 ++++++++ .../com/flossom/common/core/enums/Status.java | 8 +- .../core/mapper/WxUserRemarkMapper.java | 61 +++++++++ .../resources/mapper/WxUserRemarkMapper.xml | 82 ++++++++++++ .../controller/WxUserRemarkController.java | 107 +++++++++++++++ .../system/service/IWxUserRemarkService.java | 64 +++++++++ .../service/impl/WxUserRemarkServiceImpl.java | 122 ++++++++++++++++++ 8 files changed, 578 insertions(+), 4 deletions(-) create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserRemark.java create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserRemarkReq.java create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java create mode 100644 flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml create mode 100644 flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserRemarkController.java create mode 100644 flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserRemarkService.java create mode 100644 flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserRemarkServiceImpl.java diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserRemark.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserRemark.java new file mode 100644 index 0000000..ec54102 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserRemark.java @@ -0,0 +1,85 @@ +package com.flossom.common.core.domain.entity; + +import com.flossom.common.core.annotation.Excel; +import com.flossom.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 微信用户备注列对象 wx_user_remark + * + * @author flossom + * @date 2023-12-21 + */ +public class WxUserRemark extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * $column.columnComment + */ + private Long id; + + /** + * 微信用户id + */ + @Excel(name = "微信用户id") + private Long userId; + + /** + * 备注内容 + */ + @Excel(name = "备注内容") + private String content; + + /** + * 状态(0正常 1停用) + */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private Integer status; + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getUserId() { + return userId; + } + + public void setContent(String content) { + this.content = content; + } + + public String getContent() { + return content; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getStatus() { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("userId", getUserId()) + .append("content", getContent()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserRemarkReq.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserRemarkReq.java new file mode 100644 index 0000000..59b0733 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/WxUserRemarkReq.java @@ -0,0 +1,53 @@ +package com.flossom.common.core.domain.req; + +import com.flossom.common.core.web.domain.BaseEntity; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * 微信用户备注列对象 wx_user_remark + * + * @author flossom + * @date 2023-12-21 + */ +public class WxUserRemarkReq { + + /** + * 微信用户id列表 + */ + private List userIdList; + + /** + * 备注内容 + */ + @NotBlank(message = "请输入备注") + @Length(min = 0, max = 100, message = "备注内容不能为空") + private String content; + + + public WxUserRemarkReq() { + } + + public WxUserRemarkReq(List userIdList, String content) { + this.userIdList = userIdList; + this.content = content; + } + + public List getUserIdList() { + return userIdList; + } + + public void setUserIdList(List userIdList) { + this.userIdList = userIdList; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java index 3d66a77..97d3c53 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java @@ -7,18 +7,18 @@ package com.flossom.common.core.enums; */ public enum Status { - OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); + OK(0, "正常"), DISABLE(1, "停用"), DELETED(2, "删除"); - private final String code; + private final Integer code; private final String info; - Status(String code, String info) + Status(Integer code, String info) { this.code = code; this.info = info; } - public String getCode() + public Integer getCode() { return code; } diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java new file mode 100644 index 0000000..fc52bc1 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java @@ -0,0 +1,61 @@ +package com.flossom.common.core.mapper; + +import com.flossom.common.core.domain.entity.WxUserRemark; + +import java.util.List; + +/** + * 微信用户备注列Mapper接口 + * + * @author flossom + * @date 2023-12-21 + */ +public interface WxUserRemarkMapper { + /** + * 查询微信用户备注列 + * + * @param id 微信用户备注列主键 + * @return 微信用户备注列 + */ + public WxUserRemark selectWxUserRemarkById(Long id); + + /** + * 查询微信用户备注列列表 + * + * @param wxUserRemark 微信用户备注列 + * @return 微信用户备注列集合 + */ + public List selectWxUserRemarkList(WxUserRemark wxUserRemark); + + /** + * 新增微信用户备注列 + * + * @param wxUserRemark 微信用户备注列 + * @return 结果 + */ + public int insertWxUserRemark(WxUserRemark wxUserRemark); + + /** + * 修改微信用户备注列 + * + * @param wxUserRemark 微信用户备注列 + * @return 结果 + */ + public int updateWxUserRemark(WxUserRemark wxUserRemark); + + /** + * 删除微信用户备注列 + * + * @param id 微信用户备注列主键 + * @return 结果 + */ + public int deleteWxUserRemarkById(Long id); + + /** + * 批量删除微信用户备注列 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWxUserRemarkByIds(Long[] ids); +} diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml new file mode 100644 index 0000000..fea7d45 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + select id, user_id, content, status, create_by, create_time, update_by, update_time from wx_user_remark + + + + + + + + insert into wx_user_remark + + user_id, + content, + status, + create_by, + create_time, + update_by, + update_time, + + + #{userId}, + #{content}, + #{status}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update wx_user_remark + + user_id = #{userId}, + content = #{content}, + status = #{status}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from wx_user_remark where id = #{id} + + + + delete from wx_user_remark where id in + + #{id} + + + \ No newline at end of file diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserRemarkController.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserRemarkController.java new file mode 100644 index 0000000..ae0efeb --- /dev/null +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxUserRemarkController.java @@ -0,0 +1,107 @@ +package com.flossom.system.controller; + +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; + +import com.flossom.common.core.domain.R; +import com.flossom.common.core.domain.entity.WxUserRemark; +import com.flossom.common.core.domain.req.WxUserIntegralVm; +import com.flossom.common.core.domain.req.WxUserRemarkReq; +import com.flossom.common.core.enums.IntegralChangeTypeEnum; +import com.flossom.common.core.exception.ServiceException; +import com.flossom.common.core.utils.poi.ExcelUtil; +import com.flossom.common.core.web.controller.BaseController; +import com.flossom.common.core.web.domain.AjaxResult; +import com.flossom.common.core.web.page.TableDataInfo; +import com.flossom.common.log.annotation.Log; +import com.flossom.common.log.enums.BusinessType; +import com.flossom.common.security.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.flossom.system.service.IWxUserRemarkService; + +/** + * 微信用户备注列Controller + * + * @author flossom + * @date 2023-12-21 + */ +@RestController +@RequestMapping("/wxUserRemark") +public class WxUserRemarkController extends BaseController { + @Autowired + private IWxUserRemarkService wxUserRemarkService; + + /** + * 查询微信用户备注列列表 + */ + @RequiresPermissions("system:wxUserRemark:list") + @GetMapping("/list") + public TableDataInfo list(WxUserRemark wxUserRemark) { + startPage(); + List list = wxUserRemarkService.selectWxUserRemarkList(wxUserRemark); + return getDataTable(list); + } + + /** + * 导出微信用户备注列列表 + */ + @RequiresPermissions("system:wxUserRemark:export") + @Log(title = "微信用户备注列", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WxUserRemark wxUserRemark) { + List list = wxUserRemarkService.selectWxUserRemarkList(wxUserRemark); + ExcelUtil util = new ExcelUtil(WxUserRemark.class); + util.exportExcel(response, list, "微信用户备注列数据"); + } + + /** + * 获取微信用户备注列详细信息 + */ + @RequiresPermissions("system:wxUserRemark:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return success(wxUserRemarkService.selectWxUserRemarkById(id)); + } + + /** + * 新增微信用户备注列 + */ + @RequiresPermissions("system:wxUserRemark:add") + @Log(title = "微信用户备注列", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WxUserRemark wxUserRemark) { + return toAjax(wxUserRemarkService.insertWxUserRemark(wxUserRemark)); + } + + /** + * 修改微信用户备注列 + */ + @RequiresPermissions("system:wxUserRemark:edit") + @Log(title = "微信用户备注列", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WxUserRemark wxUserRemark) { + return toAjax(wxUserRemarkService.updateWxUserRemark(wxUserRemark)); + } + + /** + * 删除微信用户备注列 + */ + @RequiresPermissions("system:wxUserRemark:remove") + @Log(title = "微信用户备注列", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(wxUserRemarkService.deleteWxUserRemarkByIds(ids)); + } + + /** + * 批量 添加备注 + */ + @PostMapping("/batchAddRemark") + public R batchAddRemark(@RequestBody @Validated WxUserRemarkReq wxUserRemarkReq) { + wxUserRemarkService.batchAddRemark(wxUserRemarkReq); + return R.ok(); + } +} diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserRemarkService.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserRemarkService.java new file mode 100644 index 0000000..f3de232 --- /dev/null +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxUserRemarkService.java @@ -0,0 +1,64 @@ +package com.flossom.system.service; + +import com.flossom.common.core.domain.entity.WxUserRemark; +import com.flossom.common.core.domain.req.WxUserRemarkReq; + +import java.util.List; + +/** + * 微信用户备注列Service接口 + * + * @author flossom + * @date 2023-12-21 + */ +public interface IWxUserRemarkService { + /** + * 查询微信用户备注列 + * + * @param id 微信用户备注列主键 + * @return 微信用户备注列 + */ + public WxUserRemark selectWxUserRemarkById(Long id); + + /** + * 查询微信用户备注列列表 + * + * @param wxUserRemark 微信用户备注列 + * @return 微信用户备注列集合 + */ + public List selectWxUserRemarkList(WxUserRemark wxUserRemark); + + /** + * 新增微信用户备注列 + * + * @param wxUserRemark 微信用户备注列 + * @return 结果 + */ + public int insertWxUserRemark(WxUserRemark wxUserRemark); + + /** + * 修改微信用户备注列 + * + * @param wxUserRemark 微信用户备注列 + * @return 结果 + */ + public int updateWxUserRemark(WxUserRemark wxUserRemark); + + /** + * 批量删除微信用户备注列 + * + * @param ids 需要删除的微信用户备注列主键集合 + * @return 结果 + */ + public int deleteWxUserRemarkByIds(Long[] ids); + + /** + * 删除微信用户备注列信息 + * + * @param id 微信用户备注列主键 + * @return 结果 + */ + public int deleteWxUserRemarkById(Long id); + + void batchAddRemark(WxUserRemarkReq wxUserRemarkReq); +} diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserRemarkServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserRemarkServiceImpl.java new file mode 100644 index 0000000..bf847cb --- /dev/null +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxUserRemarkServiceImpl.java @@ -0,0 +1,122 @@ +package com.flossom.system.service.impl; + +import java.util.List; +import java.util.stream.Collectors; + +import com.flossom.common.core.domain.entity.WxUserRemark; +import com.flossom.common.core.domain.req.WxUserRemarkReq; +import com.flossom.common.core.enums.Status; +import com.flossom.common.core.mapper.WxUserMemberMapper; +import com.flossom.common.core.mapper.WxUserRemarkMapper; +import com.flossom.common.core.utils.DateUtils; +import com.flossom.common.security.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.flossom.system.service.IWxUserRemarkService; + +/** + * 微信用户备注列Service业务层处理 + * + * @author flossom + * @date 2023-12-21 + */ +@Service +public class WxUserRemarkServiceImpl implements IWxUserRemarkService { + + @Autowired + private WxUserRemarkMapper wxUserRemarkMapper; + + @Autowired + private WxUserMemberMapper wxUserMemberMapper; + + /** + * 查询微信用户备注列 + * + * @param id 微信用户备注列主键 + * @return 微信用户备注列 + */ + @Override + public WxUserRemark selectWxUserRemarkById(Long id) { + return wxUserRemarkMapper.selectWxUserRemarkById(id); + } + + /** + * 查询微信用户备注列列表 + * + * @param wxUserRemark 微信用户备注列 + * @return 微信用户备注列 + */ + @Override + public List selectWxUserRemarkList(WxUserRemark wxUserRemark) { + return wxUserRemarkMapper.selectWxUserRemarkList(wxUserRemark); + } + + /** + * 新增微信用户备注列 + * + * @param wxUserRemark 微信用户备注列 + * @return 结果 + */ + @Override + public int insertWxUserRemark(WxUserRemark wxUserRemark) { + wxUserRemark.setCreateTime(DateUtils.getNowDate()); + return wxUserRemarkMapper.insertWxUserRemark(wxUserRemark); + } + + /** + * 修改微信用户备注列 + * + * @param wxUserRemark 微信用户备注列 + * @return 结果 + */ + @Override + public int updateWxUserRemark(WxUserRemark wxUserRemark) { + wxUserRemark.setUpdateTime(DateUtils.getNowDate()); + return wxUserRemarkMapper.updateWxUserRemark(wxUserRemark); + } + + /** + * 批量删除微信用户备注列 + * + * @param ids 需要删除的微信用户备注列主键 + * @return 结果 + */ + @Override + public int deleteWxUserRemarkByIds(Long[] ids) { + return wxUserRemarkMapper.deleteWxUserRemarkByIds(ids); + } + + /** + * 删除微信用户备注列信息 + * + * @param id 微信用户备注列主键 + * @return 结果 + */ + @Override + public int deleteWxUserRemarkById(Long id) { + return wxUserRemarkMapper.deleteWxUserRemarkById(id); + } + + @Override + public void batchAddRemark(WxUserRemarkReq wxUserRemarkReq) { + if (wxUserRemarkReq.getUserIdList() == null || wxUserRemarkReq.getUserIdList().size() == 0) { + List userIdList = wxUserMemberMapper.selectWxUserMemberIdList(); + if (userIdList != null && userIdList.size() > 0) { + List collect = userIdList.stream().map(Integer::longValue).collect(Collectors.toList()); + wxUserRemarkReq.setUserIdList(collect); + } + } + + if (wxUserRemarkReq.getUserIdList() != null && wxUserRemarkReq.getUserIdList().size() > 0) { + WxUserRemark wxUserRemark = new WxUserRemark(); + for (Long userId : wxUserRemarkReq.getUserIdList()) { + wxUserRemark.setUserId(userId); + wxUserRemark.setContent(wxUserRemarkReq.getContent()); + wxUserRemark.setStatus(Status.OK.getCode()); + wxUserRemark.setCreateTime(DateUtils.getNowDate()); +// wxUserRemark.setCreateBy(SecurityUtils.getUsername()); + wxUserRemarkMapper.insertWxUserRemark(wxUserRemark); + } + } + } +} From 745bc56b629c31b5ad7f83f1f0b98172217e80b4 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 21 Dec 2023 11:46:01 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/mapper/SysUserMapper.java | 2 + .../core/mapper/WxNoRemindRecordMapper.java | 2 + .../core/mapper/WxUserIntegralLogMapper.java | 2 + .../core/mapper/WxUserRemarkMapper.java | 3 ++ .../core/mapper/WxUserScriptLogMapper.java | 3 ++ .../common/core/mapper/WxUserTagMapper.java | 2 + .../main/resources/mapper/SysUserMapper.xml | 4 ++ .../mapper/WxNoRemindRecordMapper.xml | 4 ++ .../mapper/WxUserIntegralLogMapper.xml | 4 ++ .../resources/mapper/WxUserRemarkMapper.xml | 4 ++ .../mapper/WxUserScriptLogMapper.xml | 3 ++ .../main/resources/mapper/WxUserTagMapper.xml | 4 ++ .../controller/WxUserMemberController.java | 2 +- .../system/service/ISysUserService.java | 2 + .../service/impl/SysUserServiceImpl.java | 10 +++++ .../service/impl/WxUserMemberServiceImpl.java | 45 +++++++++++++++---- 16 files changed, 87 insertions(+), 9 deletions(-) diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysUserMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysUserMapper.java index f3f8e57..924c84f 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysUserMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysUserMapper.java @@ -124,4 +124,6 @@ public interface SysUserMapper { * @return 结果 */ public SysUser checkEmailUnique(String email); + + int deleteWxUserById(Long userId); } diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxNoRemindRecordMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxNoRemindRecordMapper.java index 38230c9..d132d3f 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxNoRemindRecordMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxNoRemindRecordMapper.java @@ -62,4 +62,6 @@ public interface WxNoRemindRecordMapper { public int deleteWxNoRemindRecordByIds(Long[] ids); int selectWxNoRemindRecordByOpenid(@Param("openid") String openid); + + void deleteWxNoRemindRecordByOpenid(@Param("openid") String openid); } diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserIntegralLogMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserIntegralLogMapper.java index 3894731..99053c3 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserIntegralLogMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserIntegralLogMapper.java @@ -62,4 +62,6 @@ public interface WxUserIntegralLogMapper public int deleteWxUserIntegralLogByIds(Long[] ids); List obtainUserIntegral(@Param("userId") Long userId); + + void deleteWxUserIntegralLogByUserId(@Param("userId") Long userId); } diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java index fc52bc1..852c39a 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserRemarkMapper.java @@ -1,6 +1,7 @@ package com.flossom.common.core.mapper; import com.flossom.common.core.domain.entity.WxUserRemark; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -58,4 +59,6 @@ public interface WxUserRemarkMapper { * @return 结果 */ public int deleteWxUserRemarkByIds(Long[] ids); + + void deleteWxUserRemarkByUserId(@Param("userId") Long userId); } diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java index 2ea0e9a..1843563 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserScriptLogMapper.java @@ -1,6 +1,7 @@ package com.flossom.common.core.mapper; import com.flossom.common.core.domain.entity.WxUserScriptLog; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -59,4 +60,6 @@ public interface WxUserScriptLogMapper { * @return 结果 */ public int deleteWxUserScriptLogByIds(Long[] ids); + + void deleteWxUserScriptLogByWxUserId(@Param("userId") Long userId); } diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserTagMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserTagMapper.java index 78ce92b..4c11851 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserTagMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxUserTagMapper.java @@ -66,4 +66,6 @@ public interface WxUserTagMapper { void insertBatch(@Param("list") List list); void deleteBatch(@Param("tagIdList") List tagIdList, @Param("userIdList") List userIdList); + + void deleteWxUserTagByUserId(@Param("userId") Long userId); } diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/SysUserMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/SysUserMapper.xml index 2d6ebac..317d15b 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/SysUserMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/SysUserMapper.xml @@ -218,4 +218,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + delete from sys_user where user_id = #{userId} + + diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxNoRemindRecordMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxNoRemindRecordMapper.xml index 544e1d7..d0a0efe 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxNoRemindRecordMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxNoRemindRecordMapper.xml @@ -72,4 +72,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + delete from wx_no_remind_record where openid = #{openid} + \ No newline at end of file diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserIntegralLogMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserIntegralLogMapper.xml index c84bc8b..81ff59f 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserIntegralLogMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserIntegralLogMapper.xml @@ -99,4 +99,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + delete from wx_user_integral_log where user_id = #{userId} + diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml index fea7d45..16f4728 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserRemarkMapper.xml @@ -79,4 +79,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + delete from wx_user_remark where user_id = #{userId} + \ No newline at end of file diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml index bf974dc..900a32b 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserScriptLogMapper.xml @@ -146,4 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + delete from wx_user_script_log where wx_user_id = #{userId} + \ No newline at end of file diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserTagMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserTagMapper.xml index 0a45abe..01d0487 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserTagMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxUserTagMapper.xml @@ -127,4 +127,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{userId} + + + delete from wx_user_tag where user_id = #{userId} + \ No newline at end of file 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 72e55cf..64c543a 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 @@ -91,7 +91,7 @@ public class WxUserMemberController extends BaseController { /** * 删除用户 */ - @RequiresPermissions("system:member:remove") +// @RequiresPermissions("system:member:remove") @Log(title = "用户", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysUserService.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysUserService.java index 874340e..eb6e313 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysUserService.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysUserService.java @@ -204,4 +204,6 @@ public interface ISysUserService * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName); + + int deleteWxUserById(Long userId); } diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysUserServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysUserServiceImpl.java index 618fcac..ca8279c 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysUserServiceImpl.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysUserServiceImpl.java @@ -441,6 +441,16 @@ public class SysUserServiceImpl implements ISysUserService return userMapper.deleteUserById(userId); } + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteWxUserById(Long userId) { + // 删除用户与角色关联 + userRoleMapper.deleteUserRoleByUserId(userId); + // 删除用户与岗位表 + userPostMapper.deleteUserPostByUserId(userId); + return userMapper.deleteWxUserById(userId); + } + /** * 批量删除用户信息 * 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 0628ccf..599dd22 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 @@ -4,20 +4,15 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import com.flossom.common.core.domain.entity.SysTag; -import com.flossom.common.core.domain.entity.WxUserIntegralLog; -import com.flossom.common.core.domain.entity.WxUserMember; -import com.flossom.common.core.domain.entity.WxUserTag; +import com.flossom.common.core.domain.entity.*; import com.flossom.common.core.domain.req.WxUserIntegralVm; import com.flossom.common.core.domain.req.WxUserMemberVm; import com.flossom.common.core.enums.IntegralChangeTypeEnum; import com.flossom.common.core.enums.TagTypeStatus; -import com.flossom.common.core.mapper.SysTagMapper; -import com.flossom.common.core.mapper.WxUserIntegralLogMapper; -import com.flossom.common.core.mapper.WxUserMemberMapper; -import com.flossom.common.core.mapper.WxUserTagMapper; +import com.flossom.common.core.mapper.*; import com.flossom.common.core.utils.DateUtils; import com.flossom.common.security.utils.SecurityUtils; +import com.flossom.system.service.ISysUserService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,6 +39,18 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService { @Autowired private WxUserIntegralLogMapper wxUserIntegralLogMapper; + @Autowired + private ISysUserService sysUserService; + + @Autowired + private WxNoRemindRecordMapper wxNoRemindRecordMapper; + + @Autowired + private WxUserRemarkMapper wxUserRemarkMapper; + + @Autowired + private WxUserScriptLogMapper wxUserScriptLogMapper; + /** * 查询用户 * @@ -107,8 +114,30 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService { * @param ids 需要删除的用户主键 * @return 结果 */ + @Transactional @Override public int deleteWxUserMemberByIds(Long[] ids) { + for (Long id : ids) { + WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberById(id); + if (wxUserMember != null) { + // sys_user 删除系统用户关联表 + SysUser sysUser = sysUserService.selectUserByUserName(wxUserMember.getOpenid()); + if (sysUser != null) { + sysUserService.deleteWxUserById(sysUser.getUserId()); + } + // wx_user_integral_log 用户积分关联表 + wxUserIntegralLogMapper.deleteWxUserIntegralLogByUserId(wxUserMember.getId()); + // wx_no_remain_record 不提醒关联表 + wxNoRemindRecordMapper.deleteWxNoRemindRecordByOpenid(wxUserMember.getOpenid()); + // wx_user_remark 备注关联表 + wxUserRemarkMapper.deleteWxUserRemarkByUserId(wxUserMember.getId()); + // wx_user_script_log 话术发送记录关联表 + wxUserScriptLogMapper.deleteWxUserScriptLogByWxUserId(wxUserMember.getId()); + // wx_user_tag 用户标签关联表 + wxUserTagMapper.deleteWxUserTagByUserId(wxUserMember.getId()); + } + } + // wx_user_member 微信用户表 return wxUserMemberMapper.deleteWxUserMemberByIds(ids); } From ff3b36036c20dd6159774d1f468f6eeecfce27a1 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 21 Dec 2023 16:47:41 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BC=9A=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/entity/WxUserTag.java | 2 +- .../common/core/enums/TagTypeStatus.java | 2 +- .../common/core/mapper/SysTagMapper.java | 2 + .../main/resources/mapper/SysTagMapper.xml | 11 +- .../ActivityChannelInfoController.java | 10 ++ .../system/controller/SysTagController.java | 62 ++++---- .../service/IActivityChannelInfoService.java | 4 + .../system/service/ISysTagService.java | 5 + .../impl/ActivityChannelInfoServiceImpl.java | 43 ++++-- .../service/impl/SysTagServiceImpl.java | 144 +++++++++--------- flossom-ui/src/api/system/member.js | 30 ++++ flossom-ui/src/views/system/member/index.vue | 112 +++++++++++++- 12 files changed, 308 insertions(+), 119 deletions(-) diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserTag.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserTag.java index d2cc666..71f1ef8 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserTag.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxUserTag.java @@ -34,7 +34,7 @@ public class WxUserTag extends BaseEntity { private Long tagId; /** - * 标签类型:1企业微信标签 2小程序标签 + * 标签类型:1小程序标签 2企业微信标签 */ private Integer type; diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/TagTypeStatus.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/TagTypeStatus.java index 85a19dc..5d4a12b 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/TagTypeStatus.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/TagTypeStatus.java @@ -6,7 +6,7 @@ package com.flossom.common.core.enums; * @author flossom */ public enum TagTypeStatus { - ENTERPRISE_WECHAT(1, "正常"), MINI_PROGRAM(2, "停用"); + MINI_PROGRAM(1, "小程序标签"), ENTERPRISE_WECHAT(2, "企业微信标签"); private final Integer code; private final String info; diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysTagMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysTagMapper.java index c550488..472fdc1 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysTagMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/SysTagMapper.java @@ -115,4 +115,6 @@ public interface SysTagMapper { * @return 结果 */ public int deleteDeptById(Long id); + + List selectSecondTagByType(@Param("type") Integer type); } diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/SysTagMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/SysTagMapper.xml index 440f047..5e74cad 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/SysTagMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/SysTagMapper.xml @@ -89,7 +89,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where tag_name=#{tagName} and parent_id = #{parentId} and del_flag = '0' limit 1 - + + + insert into sys_tag( id, parent_id, diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/ActivityChannelInfoController.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/ActivityChannelInfoController.java index c52ad35..03dc69c 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/ActivityChannelInfoController.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/ActivityChannelInfoController.java @@ -4,6 +4,7 @@ import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import com.flossom.common.core.domain.R; import com.flossom.common.core.domain.entity.ActivityChannelInfo; import com.flossom.common.core.utils.poi.ExcelUtil; import com.flossom.common.core.web.controller.BaseController; @@ -103,4 +104,13 @@ public class ActivityChannelInfoController extends BaseController { return toAjax(activityChannelInfoService.deleteActivityChannelInfoByIds(ids)); } + + /** + * 获取购买渠道 + * @return + */ + @GetMapping("/getPurchaseChannel") + public R getPurchaseChannel() { + return R.ok(activityChannelInfoService.getPurchaseChannel()); + } } diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/SysTagController.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/SysTagController.java index daa6349..1735059 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/SysTagController.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/SysTagController.java @@ -1,6 +1,7 @@ package com.flossom.system.controller; import com.flossom.common.core.constant.UserConstants; +import com.flossom.common.core.domain.R; import com.flossom.common.core.domain.entity.SysDept; import com.flossom.common.core.domain.entity.SysTag; import com.flossom.common.core.utils.StringUtils; @@ -26,8 +27,7 @@ import java.util.List; */ @RestController @RequestMapping("/tagInfo") -public class SysTagController extends BaseController -{ +public class SysTagController extends BaseController { @Autowired private ISysTagService tagService; @@ -36,8 +36,7 @@ public class SysTagController extends BaseController */ @RequiresPermissions("system:dept:list") @GetMapping("/list") - public AjaxResult list(SysTag sysTag) - { + public AjaxResult list(SysTag sysTag) { List tags = tagService.selectDeptList(sysTag); return success(tags); } @@ -47,8 +46,7 @@ public class SysTagController extends BaseController */ @RequiresPermissions("system:tagInfo:list") @GetMapping("/list/exclude/{id}") - public AjaxResult excludeChild(@PathVariable(value = "id", required = false) Long id) - { + public AjaxResult excludeChild(@PathVariable(value = "id", required = false) Long id) { List tags = tagService.selectDeptList(new SysTag()); tags.removeIf(d -> d.getId().intValue() == id || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), id + "")); return success(tags); @@ -59,8 +57,7 @@ public class SysTagController extends BaseController */ @RequiresPermissions("system:tagInfo:query") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable Long id) - { + public AjaxResult getInfo(@PathVariable Long id) { tagService.checkDeptDataScope(id); return success(tagService.selectDeptById(id)); } @@ -71,10 +68,8 @@ public class SysTagController extends BaseController @RequiresPermissions("system:tagInfo:add") @Log(title = "标签管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysTag tag) - { - if (!tagService.checkDeptNameUnique(tag)) - { + public AjaxResult add(@Validated @RequestBody SysTag tag) { + if (!tagService.checkDeptNameUnique(tag)) { return error("新增标签'" + tag.getTagName() + "'失败,标签名称已存在"); } tag.setCreateBy(SecurityUtils.getUsername()); @@ -87,20 +82,14 @@ public class SysTagController extends BaseController @RequiresPermissions("system:tagInfo:edit") @Log(title = "标签管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysTag tag) - { + public AjaxResult edit(@Validated @RequestBody SysTag tag) { Long id = tag.getId(); tagService.checkDeptDataScope(id); - if (!tagService.checkDeptNameUnique(tag)) - { + if (!tagService.checkDeptNameUnique(tag)) { return error("修改标签'" + tag.getTagName() + "'失败,标签名称已存在"); - } - else if (tag.getParentId().equals(id)) - { + } else if (tag.getParentId().equals(id)) { return error("修改标签'" + tag.getTagName() + "'失败,上级标签不能是自己"); - } - else if (StringUtils.equals(UserConstants.DEPT_DISABLE, tag.getStatus()) && tagService.selectNormalChildrenDeptById(id) > 0) - { + } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, tag.getStatus()) && tagService.selectNormalChildrenDeptById(id) > 0) { return error("该标签包含未停用的子标签!"); } tag.setUpdateBy(SecurityUtils.getUsername()); @@ -113,10 +102,8 @@ public class SysTagController extends BaseController @RequiresPermissions("system:dept:remove") @Log(title = "标签管理", businessType = BusinessType.DELETE) @DeleteMapping("/{id}") - public AjaxResult remove(@PathVariable Long id) - { - if (tagService.hasChildByDeptId(id)) - { + public AjaxResult remove(@PathVariable Long id) { + if (tagService.hasChildByDeptId(id)) { return warn("存在下级标签,不允许删除"); } // if (tagService.checkDeptExistUser(id)) @@ -133,8 +120,27 @@ public class SysTagController extends BaseController */ @RequiresPermissions("system:user:list") @GetMapping("/tagTree") - public AjaxResult tagTree(SysTag tag) - { + public AjaxResult tagTree(SysTag tag) { return success(tagService.selectTagTreeList(tag)); } + + /** + * 获取小程序标签 + * + * @return + */ + @GetMapping("/getMiniProgramTags") + public R getMiniProgramTags() { + return R.ok(tagService.getMiniProgramTags()); + } + + /** + * 获取企微标签 + * + * @return + */ + @GetMapping("/getWecomTags") + public R getWecomTags() { + return R.ok(tagService.getWecomTags()); + } } diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IActivityChannelInfoService.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IActivityChannelInfoService.java index 9a0e029..b3c9050 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IActivityChannelInfoService.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IActivityChannelInfoService.java @@ -3,6 +3,7 @@ package com.flossom.system.service; import com.flossom.common.core.domain.entity.ActivityChannelInfo; import java.util.List; +import java.util.Map; /** * 活动渠道信息Service接口 @@ -59,4 +60,7 @@ public interface IActivityChannelInfoService * @return 结果 */ public int deleteActivityChannelInfoById(Long id); + + List> getPurchaseChannel(); + } diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysTagService.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysTagService.java index fd03429..3a84967 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysTagService.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/ISysTagService.java @@ -5,6 +5,7 @@ import com.flossom.common.core.domain.entity.SysTag; import com.flossom.common.core.domain.vo.TreeSelect; import java.util.List; +import java.util.Map; /** @@ -132,4 +133,8 @@ public interface ISysTagService * @return 标签树信息集合 */ public List selectTagTreeList(SysTag tag); + + List> getMiniProgramTags(); + + List> getWecomTags(); } diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/ActivityChannelInfoServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/ActivityChannelInfoServiceImpl.java index 2b5be8e..c1c7fbc 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/ActivityChannelInfoServiceImpl.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/ActivityChannelInfoServiceImpl.java @@ -1,8 +1,12 @@ package com.flossom.system.service.impl; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.flossom.common.core.domain.entity.ActivityChannelInfo; +import com.flossom.common.core.domain.entity.SysTag; import com.flossom.common.core.mapper.ActivityChannelInfoMapper; import com.flossom.common.core.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -16,8 +20,7 @@ import com.flossom.system.service.IActivityChannelInfoService; * @date 2023-12-20 */ @Service -public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoService -{ +public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoService { @Autowired private ActivityChannelInfoMapper activityChannelInfoMapper; @@ -28,8 +31,7 @@ public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoServi * @return 活动渠道信息 */ @Override - public ActivityChannelInfo selectActivityChannelInfoById(Long id) - { + public ActivityChannelInfo selectActivityChannelInfoById(Long id) { return activityChannelInfoMapper.selectActivityChannelInfoById(id); } @@ -40,8 +42,7 @@ public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoServi * @return 活动渠道信息 */ @Override - public List selectActivityChannelInfoList(ActivityChannelInfo activityChannelInfo) - { + public List selectActivityChannelInfoList(ActivityChannelInfo activityChannelInfo) { return activityChannelInfoMapper.selectActivityChannelInfoList(activityChannelInfo); } @@ -52,8 +53,7 @@ public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoServi * @return 结果 */ @Override - public int insertActivityChannelInfo(ActivityChannelInfo activityChannelInfo) - { + public int insertActivityChannelInfo(ActivityChannelInfo activityChannelInfo) { activityChannelInfo.setCreateTime(DateUtils.getNowDate()); return activityChannelInfoMapper.insertActivityChannelInfo(activityChannelInfo); } @@ -65,8 +65,7 @@ public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoServi * @return 结果 */ @Override - public int updateActivityChannelInfo(ActivityChannelInfo activityChannelInfo) - { + public int updateActivityChannelInfo(ActivityChannelInfo activityChannelInfo) { return activityChannelInfoMapper.updateActivityChannelInfo(activityChannelInfo); } @@ -77,8 +76,7 @@ public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoServi * @return 结果 */ @Override - public int deleteActivityChannelInfoByIds(Long[] ids) - { + public int deleteActivityChannelInfoByIds(Long[] ids) { return activityChannelInfoMapper.deleteActivityChannelInfoByIds(ids); } @@ -89,8 +87,25 @@ public class ActivityChannelInfoServiceImpl implements IActivityChannelInfoServi * @return 结果 */ @Override - public int deleteActivityChannelInfoById(Long id) - { + public int deleteActivityChannelInfoById(Long id) { return activityChannelInfoMapper.deleteActivityChannelInfoById(id); } + + @Override + public List> getPurchaseChannel() { + List> channelList = new ArrayList<>(); + ActivityChannelInfo query = new ActivityChannelInfo(); + List activityChannelInfoList = activityChannelInfoMapper.selectActivityChannelInfoList(query); + if (activityChannelInfoList != null && activityChannelInfoList.size() > 0) { + Map map; + for (ActivityChannelInfo activityChannelInfo : activityChannelInfoList) { + map = new HashMap<>(); + map.put("label", activityChannelInfo.getChannelName()); + map.put("value", activityChannelInfo.getId()); + channelList.add(map); + } + } + + return channelList; + } } diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysTagServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysTagServiceImpl.java index 8eb57d2..f7ffb30 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysTagServiceImpl.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/SysTagServiceImpl.java @@ -6,6 +6,7 @@ import com.flossom.common.core.domain.entity.SysRole; import com.flossom.common.core.domain.entity.SysTag; import com.flossom.common.core.domain.entity.SysUser; import com.flossom.common.core.domain.vo.TreeSelect; +import com.flossom.common.core.enums.TagTypeStatus; import com.flossom.common.core.exception.ServiceException; import com.flossom.common.core.mapper.SysDeptMapper; import com.flossom.common.core.mapper.SysRoleMapper; @@ -20,10 +21,7 @@ import com.flossom.system.service.ISysTagService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -32,8 +30,7 @@ import java.util.stream.Collectors; * @author flossom */ @Service -public class SysTagServiceImpl implements ISysTagService -{ +public class SysTagServiceImpl implements ISysTagService { @Autowired private SysTagMapper tagMapper; @@ -48,8 +45,7 @@ public class SysTagServiceImpl implements ISysTagService */ @Override @DataScope(deptAlias = "d") - public List selectDeptList(SysTag tag) - { + public List selectDeptList(SysTag tag) { return tagMapper.selectDeptList(tag); } @@ -60,8 +56,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 标签树信息集合 */ @Override - public List selectDeptTreeList(SysTag tag) - { + public List selectDeptTreeList(SysTag tag) { List tags = SpringUtils.getAopProxy(this).selectDeptList(tag); return buildDeptTreeSelect(tags); } @@ -73,21 +68,17 @@ public class SysTagServiceImpl implements ISysTagService * @return 树结构列表 */ @Override - public List buildDeptTree(List tags) - { + public List buildDeptTree(List tags) { List returnList = new ArrayList(); List tempList = tags.stream().map(SysTag::getId).collect(Collectors.toList()); - for (SysTag tag : tags) - { + for (SysTag tag : tags) { // 如果是顶级节点, 遍历该父节点的所有子节点 - if (!tempList.contains(tag.getParentId())) - { + if (!tempList.contains(tag.getParentId())) { recursionFn(tags, tag); returnList.add(tag); } } - if (returnList.isEmpty()) - { + if (returnList.isEmpty()) { returnList = tags; } return returnList; @@ -100,8 +91,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 下拉树结构列表 */ @Override - public List buildDeptTreeSelect(List tags) - { + public List buildDeptTreeSelect(List tags) { List deptTrees = buildDeptTree(tags); return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } @@ -113,8 +103,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 选中标签列表 */ @Override - public List selectDeptListByRoleId(Long roleId) - { + public List selectDeptListByRoleId(Long roleId) { SysRole role = roleMapper.selectRoleById(roleId); return tagMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly()); } @@ -126,8 +115,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 标签信息 */ @Override - public SysTag selectDeptById(Long id) - { + public SysTag selectDeptById(Long id) { return tagMapper.selectDeptById(id); } @@ -138,8 +126,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 子标签数 */ @Override - public int selectNormalChildrenDeptById(Long id) - { + public int selectNormalChildrenDeptById(Long id) { return tagMapper.selectNormalChildrenDeptById(id); } @@ -150,8 +137,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 结果 */ @Override - public boolean hasChildByDeptId(Long id) - { + public boolean hasChildByDeptId(Long id) { int result = tagMapper.hasChildByDeptId(id); return result > 0; } @@ -163,8 +149,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 结果 true 存在 false 不存在 */ @Override - public boolean checkDeptExistUser(Long id) - { + public boolean checkDeptExistUser(Long id) { int result = tagMapper.checkDeptExistUser(id); return result > 0; } @@ -176,12 +161,10 @@ public class SysTagServiceImpl implements ISysTagService * @return 结果 */ @Override - public boolean checkDeptNameUnique(SysTag tag) - { + public boolean checkDeptNameUnique(SysTag tag) { Long deptId = StringUtils.isNull(tag.getId()) ? -1L : tag.getId(); SysTag info = tagMapper.checkDeptNameUnique(tag.getTagName(), tag.getParentId()); - if (StringUtils.isNotNull(info) && info.getId().longValue() != deptId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getId().longValue() != deptId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -193,15 +176,12 @@ public class SysTagServiceImpl implements ISysTagService * @param id 标签id */ @Override - public void checkDeptDataScope(Long id) - { - if (!SysUser.isAdmin(SecurityUtils.getUserId())) - { + public void checkDeptDataScope(Long id) { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) { SysTag tag = new SysTag(); tag.setId(id); List tags = SpringUtils.getAopProxy(this).selectDeptList(tag); - if (StringUtils.isEmpty(tags)) - { + if (StringUtils.isEmpty(tags)) { throw new ServiceException("没有权限访问标签数据!"); } } @@ -214,15 +194,14 @@ public class SysTagServiceImpl implements ISysTagService * @return 结果 */ @Override - public int insertDept(SysTag tag) - { + public int insertDept(SysTag tag) { SysTag info = tagMapper.selectDeptById(tag.getParentId()); // 如果父节点不为正常状态,则不允许新增子节点 // if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) // { // throw new ServiceException("标签停用,不允许新增"); // } - if(Objects.isNull(info)) { + if (Objects.isNull(info)) { tag.setAncestors("0"); tag.setParentId(0l); } @@ -237,12 +216,10 @@ public class SysTagServiceImpl implements ISysTagService * @return 结果 */ @Override - public int updateDept(SysTag tag) - { + public int updateDept(SysTag tag) { SysTag newParentDept = tagMapper.selectDeptById(tag.getParentId()); SysTag oldDept = tagMapper.selectDeptById(tag.getId()); - if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) - { + if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getId(); String oldAncestors = oldDept.getAncestors(); tag.setAncestors(newAncestors); @@ -250,8 +227,7 @@ public class SysTagServiceImpl implements ISysTagService } int result = tagMapper.updateDept(tag); if (UserConstants.DEPT_NORMAL.equals(tag.getStatus()) && StringUtils.isNotEmpty(tag.getAncestors()) - && !StringUtils.equals("0", tag.getAncestors())) - { + && !StringUtils.equals("0", tag.getAncestors())) { // 如果该标签是启用状态,则启用该标签的所有上级标签 updateParentDeptStatusNormal(tag); } @@ -263,8 +239,7 @@ public class SysTagServiceImpl implements ISysTagService * * @param */ - private void updateParentDeptStatusNormal(SysTag tag) - { + private void updateParentDeptStatusNormal(SysTag tag) { String ancestors = tag.getAncestors(); Long[] deptIds = Convert.toLongArray(ancestors); tagMapper.updateDeptStatusNormal(deptIds); @@ -277,15 +252,12 @@ public class SysTagServiceImpl implements ISysTagService * @param newAncestors 新的父ID集合 * @param oldAncestors 旧的父ID集合 */ - public void updateDeptChildren(Long id, String newAncestors, String oldAncestors) - { + public void updateDeptChildren(Long id, String newAncestors, String oldAncestors) { List children = tagMapper.selectChildrenDeptById(id); - for (SysTag child : children) - { + for (SysTag child : children) { child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); } - if (children.size() > 0) - { + if (children.size() > 0) { tagMapper.updateDeptChildren(children); } } @@ -297,8 +269,7 @@ public class SysTagServiceImpl implements ISysTagService * @return 结果 */ @Override - public int deleteDeptById(Long id) - { + public int deleteDeptById(Long id) { return tagMapper.deleteDeptById(id); } @@ -308,18 +279,49 @@ public class SysTagServiceImpl implements ISysTagService return buildDeptTreeSelect(tags); } + @Override + public List> getMiniProgramTags() { + List> tagList = new ArrayList<>(); + // 获取小程序标签 + List miniProgramTags = tagMapper.selectSecondTagByType(TagTypeStatus.MINI_PROGRAM.getCode()); + if (miniProgramTags != null && miniProgramTags.size() > 0) { + Map map; + for (SysTag miniProgramTag : miniProgramTags) { + map = new HashMap<>(); + map.put("label", miniProgramTag.getTagName()); + map.put("value", miniProgramTag.getId()); + tagList.add(map); + } + } + return tagList; + } + + @Override + public List> getWecomTags() { + List> tagList = new ArrayList<>(); + // 获取小程序标签 + List miniProgramTags = tagMapper.selectSecondTagByType(TagTypeStatus.ENTERPRISE_WECHAT.getCode()); + if (miniProgramTags != null && miniProgramTags.size() > 0) { + Map map; + for (SysTag miniProgramTag : miniProgramTags) { + map = new HashMap<>(); + map.put("label", miniProgramTag.getTagName()); + map.put("value", miniProgramTag.getId()); + tagList.add(map); + } + } + return tagList; + } + /** * 递归列表 */ - private void recursionFn(List list, SysTag t) - { + private void recursionFn(List list, SysTag t) { // 得到子节点列表 List childList = getChildList(list, t); t.setChildren(childList); - for (SysTag tChild : childList) - { - if (hasChild(list, tChild)) - { + for (SysTag tChild : childList) { + if (hasChild(list, tChild)) { recursionFn(list, tChild); } } @@ -328,15 +330,12 @@ public class SysTagServiceImpl implements ISysTagService /** * 得到子节点列表 */ - private List getChildList(List list, SysTag t) - { + private List getChildList(List list, SysTag t) { List tlist = new ArrayList(); Iterator it = list.iterator(); - while (it.hasNext()) - { + while (it.hasNext()) { SysTag n = (SysTag) it.next(); - if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) - { + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) { tlist.add(n); } } @@ -346,8 +345,7 @@ public class SysTagServiceImpl implements ISysTagService /** * 判断是否有子节点 */ - private boolean hasChild(List list, SysTag t) - { + private boolean hasChild(List list, SysTag t) { return getChildList(list, t).size() > 0 ? true : false; } } diff --git a/flossom-ui/src/api/system/member.js b/flossom-ui/src/api/system/member.js index da16d5a..a481632 100644 --- a/flossom-ui/src/api/system/member.js +++ b/flossom-ui/src/api/system/member.js @@ -42,3 +42,33 @@ export function delMember(id) { method: 'delete' }) } + +export function selectUserCount() { + return request({ + url: '/system/member/selectUserCount', + method: 'get', + }) +} + +export function getMiniProgramTags() { + return request({ + url: '/system/tagInfo/getMiniProgramTags', + method: 'get', + }) +} + +export function getWecomTags() { + return request({ + url: '/system/tagInfo/getWecomTags', + method: 'get', + }) +} + +export function getPurchaseChannel() { + return request({ + url: '/system/channelInfo/getPurchaseChannel', + method: 'get', + }) +} + + diff --git a/flossom-ui/src/views/system/member/index.vue b/flossom-ui/src/views/system/member/index.vue index e3f646e..823bdee 100644 --- a/flossom-ui/src/views/system/member/index.vue +++ b/flossom-ui/src/views/system/member/index.vue @@ -1,5 +1,10 @@