From 1ddacb086e97b8fa255d46e34602068cbcb6720f Mon Sep 17 00:00:00 2001 From: lbw Date: Fri, 7 Apr 2023 10:17:51 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20Refactoring=20code.=20pigx-mp-biz?= =?UTF-8?q?=20=E9=80=82=E9=85=8D=E6=9C=80=E6=96=B0V5=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/mp/builder/AbstractBuilder.java | 0 .../pigx/mp/builder/ImageBuilder.java | 0 .../pigx/mp/builder/TextBuilder.java | 0 .../pigx/mp/config/WxMpInitConfigRunner.java | 12 ++++- .../mp/controller/WxAccountController.java | 13 +++-- .../controller/WxAccountFansController.java | 16 ++++++ .../mp/controller/WxAccountTagController.java | 22 ++++++-- .../mp/controller/WxAutoReplyController.java | 3 +- .../mp/controller/WxFansMsgController.java | 8 ++- .../mp/controller/WxMaterialController.java | 11 ++-- .../pigx/mp/controller/WxMenuController.java | 0 .../mp/controller/WxPortalController.java | 0 .../pig4cloud/pigx/mp/entity/WxAccount.java | 0 .../pigx/mp/entity/WxAccountFans.java | 5 ++ .../pigx/mp/entity/WxFansMsgRes.java | 0 .../pig4cloud/pigx/mp/entity/WxMpMenu.java | 0 .../mp/entity/dto/WxAccountTagDeleteDTO.java | 14 +++++ .../pigx/mp/handler/AbstractHandler.java | 0 .../pigx/mp/handler/KfSessionHandler.java | 0 .../pigx/mp/handler/LocationHandler.java | 0 .../pig4cloud/pigx/mp/handler/LogHandler.java | 0 .../pigx/mp/handler/MenuHandler.java | 0 .../pig4cloud/pigx/mp/handler/MsgHandler.java | 11 ++-- .../pigx/mp/handler/NullHandler.java | 0 .../pigx/mp/handler/ScanHandler.java | 0 .../mp/handler/StoreCheckNotifyHandler.java | 0 .../pigx/mp/handler/SubscribeHandler.java | 0 .../pigx/mp/handler/UnsubscribeHandler.java | 0 .../pigx/mp/mapper/WxAccountFansMapper.java | 0 .../pigx/mp/mapper/WxAccountMapper.java | 0 .../pigx/mp/mapper/WxAccountTagMapper.java | 0 .../pigx/mp/mapper/WxFansMsgResMapper.java | 0 .../pigx/mp/mapper/WxMenuMapper.java | 0 .../pigx/mp/service/WxAccountFansService.java | 4 ++ .../pigx/mp/service/WxAccountService.java | 0 .../pigx/mp/service/WxMenuService.java | 0 .../impl/WxAccountFansServiceImpl.java | 51 ++++++++++++++++++- .../mp/service/impl/WxAccountServiceImpl.java | 0 .../service/impl/WxAccountTagServiceImpl.java | 2 +- .../mp/service/impl/WxMenuServiceImpl.java | 0 .../mp/service/impl/WxMsgServiceImpl.java | 17 +++---- .../resources/mapper/WxAccountFansMapper.xml | 0 .../main/resources/mapper/WxAccountMapper.xml | 0 .../main/resources/mapper/WxMenuMapper.xml | 0 44 files changed, 158 insertions(+), 31 deletions(-) mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/AbstractBuilder.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/ImageBuilder.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/TextBuilder.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/config/WxMpInitConfigRunner.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountController.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountFansController.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxFansMsgController.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxMenuController.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccount.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccountFans.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxFansMsgRes.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxMpMenu.java create mode 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/dto/WxAccountTagDeleteDTO.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/AbstractHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/KfSessionHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/LocationHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/LogHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MenuHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MsgHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/NullHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/ScanHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/StoreCheckNotifyHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/SubscribeHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/UnsubscribeHandler.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountFansMapper.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountMapper.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountTagMapper.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxFansMsgResMapper.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxMenuMapper.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountFansService.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountService.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxMenuService.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxAccountFansServiceImpl.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxAccountServiceImpl.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxMenuServiceImpl.java mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxAccountFansMapper.xml mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxAccountMapper.xml mode change 100755 => 100644 pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxMenuMapper.xml diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/AbstractBuilder.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/AbstractBuilder.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/ImageBuilder.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/ImageBuilder.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/TextBuilder.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/builder/TextBuilder.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/config/WxMpInitConfigRunner.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/config/WxMpInitConfigRunner.java old mode 100755 new mode 100644 index e1a573ccf..21123ebf1 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/config/WxMpInitConfigRunner.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/config/WxMpInitConfigRunner.java @@ -15,12 +15,16 @@ import me.chanjar.weixin.mp.api.WxMpMessageRouter; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import me.chanjar.weixin.mp.constant.WxMpEventConstants; +import org.springframework.boot.web.context.WebServerInitializedEvent; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.event.EventListener; +import org.springframework.core.annotation.Order; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.listener.ChannelTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; +import org.springframework.scheduling.annotation.Async; import javax.annotation.PostConstruct; import java.util.ArrayList; @@ -83,7 +87,13 @@ public class WxMpInitConfigRunner { private final RedisTemplate redisTemplate; - @PostConstruct + @Async + @Order + @EventListener({ WebServerInitializedEvent.class }) + public void WebServerInit() { + this.initServices(); + } + public void initServices() { // 获取全部租户 遍历所有租户对应的公众号列表 List accountList = new ArrayList<>(); diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountController.java old mode 100755 new mode 100644 index 05501e56a..8a1fda3fe --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountController.java @@ -16,6 +16,8 @@ */ package com.pig4cloud.pigx.mp.controller; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.common.core.constant.CacheConstants; @@ -54,7 +56,10 @@ public class WxAccountController { */ @GetMapping("/page") public R getWxAccountPage(Page page, WxAccount wxAccount) { - return R.ok(wxAccountService.page(page, Wrappers.query(wxAccount))); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(wxAccount.getName()), WxAccount::getName, wxAccount.getName()) + .like(StrUtil.isNotBlank(wxAccount.getAccount()), WxAccount::getAccount, wxAccount.getAccount()); + return R.ok(wxAccountService.page(page, wrapper)); } /** @@ -126,8 +131,10 @@ public class WxAccountController { * @return */ @GetMapping("/list") - public R list() { - return R.ok(wxAccountService.list()); + public R list(String name) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery().like(StrUtil.isNotBlank(name), + WxAccount::getName, name); + return R.ok(wxAccountService.list(wrapper)); } /** diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountFansController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountFansController.java old mode 100755 new mode 100644 index 7371f689d..98c3cfa92 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountFansController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountFansController.java @@ -94,4 +94,20 @@ public class WxAccountFansController { return R.ok(wxAccountFansService.syncAccountFans(appId)); } + /** + * 取消拉黑 + * @param ids + * @param appId + * @return + */ + @PostMapping("/unblack/{appId}") + public R unblack(@RequestBody Long[] ids, @PathVariable String appId) { + return R.ok(wxAccountFansService.unblack(ids, appId)); + } + + @PostMapping("/black/{appId}") + public R black(@RequestBody Long[] ids, @PathVariable String appId) { + return R.ok(wxAccountFansService.black(ids, appId)); + } + } diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountTagController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountTagController.java index bf599b837..003819df3 100644 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountTagController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAccountTagController.java @@ -1,10 +1,13 @@ package com.pig4cloud.pigx.mp.controller; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.mp.entity.WxAccountTag; +import com.pig4cloud.pigx.mp.entity.dto.WxAccountTagDeleteDTO; import com.pig4cloud.pigx.mp.service.WxAccountTagService; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; @@ -33,8 +36,12 @@ public class WxAccountTagController { * @return */ @GetMapping("/page") - public R> getWxAccountTagPage(Page page, WxAccountTag wxAccountTag) { - return R.ok(wxAccountTagService.page(page, Wrappers.query(wxAccountTag))); + public R> getWxAccountTagPage(Page page, WxAccountTag wxAccountTag) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(wxAccountTag.getTag()), WxAccountTag::getTag, wxAccountTag.getTag()) + .eq(StrUtil.isNotBlank(wxAccountTag.getWxAccountAppid()), WxAccountTag::getWxAccountAppid, + wxAccountTag.getWxAccountAppid()); + return R.ok(wxAccountTagService.page(page, wrapper)); } /** @@ -76,8 +83,15 @@ public class WxAccountTagController { */ @DeleteMapping @PreAuthorize("@pms.hasPermission('mp_wx_account_tag_del')") - public R removeAccountTagById(@RequestBody WxAccountTag wxAccountTag) { - return R.ok(wxAccountTagService.removeAccountTagById(wxAccountTag)); + public R removeAccountTagById(@RequestBody WxAccountTagDeleteDTO deleteDTO) { + + deleteDTO.getIds().forEach(item -> { + WxAccountTag wxAccountTag = new WxAccountTag(); + wxAccountTag.setId(item); + wxAccountTag.setWxAccountAppid(deleteDTO.getWxAccountAppid()); + wxAccountTagService.removeAccountTagById(wxAccountTag); + }); + return R.ok(); } /** diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAutoReplyController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAutoReplyController.java index 3be42cb7a..12ff7ca81 100644 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAutoReplyController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxAutoReplyController.java @@ -67,7 +67,6 @@ public class WxAutoReplyController { @PutMapping @PreAuthorize("@pms.hasPermission('mp_wxautoreply_edit')") public R updateById(@RequestBody WxAutoReply wxAutoReply) { - this.jude(wxAutoReply); return R.ok(wxAutoReplyService.updateById(wxAutoReply)); } @@ -78,7 +77,7 @@ public class WxAutoReplyController { */ @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('mp_wxautoreply_del')") - public R removeById(@PathVariable String id) { + public R removeById(@PathVariable Long id) { return R.ok(wxAutoReplyService.removeById(id)); } diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxFansMsgController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxFansMsgController.java old mode 100755 new mode 100644 index 142eae7a0..3cdcc2830 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxFansMsgController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxFansMsgController.java @@ -16,6 +16,8 @@ */ package com.pig4cloud.pigx.mp.controller; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.common.core.util.R; @@ -47,7 +49,11 @@ public class WxFansMsgController { */ @GetMapping("/page") public R getWxMsgPage(Page page, WxMsg msg) { - return R.ok(wxMsgService.page(page, Wrappers.query(msg))); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(StrUtil.isNotBlank(msg.getAppId()), WxMsg::getAppId, msg.getAppId()) + .like(StrUtil.isNotBlank(msg.getNickName()), WxMsg::getNickName, msg.getNickName()) + .eq(StrUtil.isNotBlank(msg.getType()), WxMsg::getType, msg.getType()); + return R.ok(wxMsgService.page(page, wrapper)); } /** diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxMaterialController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxMaterialController.java index 7378133c1..04e1f99fd 100644 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxMaterialController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxMaterialController.java @@ -32,9 +32,11 @@ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * 微信素材 @@ -56,18 +58,21 @@ public class WxMaterialController { */ @PostMapping("/materialFileUpload") @PreAuthorize("@pms.hasPermission('mp_wxmaterial_add')") - public R materialFileUpload(@RequestParam("file") MultipartFile mulFile, @RequestParam String appId, + public R materialFileUpload(@RequestPart("file") MultipartFile mulFile, @RequestParam String appId, @RequestParam("title") String title, @RequestParam("introduction") String introduction, @RequestParam("mediaType") String mediaType) { try { + String originalFilename = new String( + Objects.requireNonNull(mulFile.getOriginalFilename()).getBytes(StandardCharsets.ISO_8859_1), + StandardCharsets.UTF_8); WxMpMaterial material = new WxMpMaterial(); - material.setName(mulFile.getOriginalFilename()); + material.setName(originalFilename); if (WxConsts.MediaFileType.VIDEO.equals(mediaType)) { material.setVideoTitle(title); material.setVideoIntroduction(introduction); } - File file = FileUtil.newFile(FileUtil.getTmpDirPath() + mulFile.getOriginalFilename()); + File file = FileUtil.newFile(FileUtil.getTmpDirPath() + originalFilename); mulFile.transferTo(file); material.setFile(file); diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxMenuController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxMenuController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccount.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccount.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccountFans.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccountFans.java old mode 100755 new mode 100644 index bec95ec00..558d373b3 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccountFans.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxAccountFans.java @@ -116,6 +116,11 @@ public class WxAccountFans extends Model { */ private Long[] tagIds; + /** + * 是否被拉黑 + */ + private Integer isBlack; + /** * 创建时间 */ diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxFansMsgRes.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxFansMsgRes.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxMpMenu.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/WxMpMenu.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/dto/WxAccountTagDeleteDTO.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/dto/WxAccountTagDeleteDTO.java new file mode 100644 index 000000000..5ed18e26c --- /dev/null +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/entity/dto/WxAccountTagDeleteDTO.java @@ -0,0 +1,14 @@ +package com.pig4cloud.pigx.mp.entity.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class WxAccountTagDeleteDTO { + + private List ids; + + private String wxAccountAppid; + +} diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/AbstractHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/AbstractHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/KfSessionHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/KfSessionHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/LocationHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/LocationHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/LogHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/LogHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MenuHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MenuHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MsgHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MsgHandler.java old mode 100755 new mode 100644 index 48ef35e6a..a2a3bf16f --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MsgHandler.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/MsgHandler.java @@ -1,5 +1,6 @@ package com.pig4cloud.pigx.mp.handler; +import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -167,12 +168,10 @@ public class MsgHandler extends AbstractHandler { } if (WxConsts.KefuMsgType.NEWS.equals(wxAutoReply.getRepType())) { List list = new ArrayList<>(); - - JSONObject content = JSONUtil.parseObj(wxAutoReply.getContent()); - List jsonObjectList = content.getJSONArray("articles").toList(JSONObject.class); - WxMpXmlOutNewsMessage.Item t; - for (JSONObject jsonObject : jsonObjectList) { - t = new WxMpXmlOutNewsMessage.Item(); + JSONArray jsonArray = JSONUtil.parseArray(wxAutoReply.getContent()); + for (Object obj : jsonArray) { + JSONObject jsonObject = (JSONObject) obj; + WxMpXmlOutNewsMessage.Item t = new WxMpXmlOutNewsMessage.Item(); t.setTitle(jsonObject.getStr("title")); t.setDescription(jsonObject.getStr("digest")); t.setPicUrl(jsonObject.getStr("thumbUrl")); diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/NullHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/NullHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/ScanHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/ScanHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/StoreCheckNotifyHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/StoreCheckNotifyHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/SubscribeHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/SubscribeHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/UnsubscribeHandler.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/handler/UnsubscribeHandler.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountFansMapper.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountFansMapper.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountMapper.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountMapper.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountTagMapper.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxAccountTagMapper.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxFansMsgResMapper.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxFansMsgResMapper.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxMenuMapper.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/mapper/WxMenuMapper.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountFansService.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountFansService.java old mode 100755 new mode 100644 index bca5e497c..70d983dd5 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountFansService.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountFansService.java @@ -51,4 +51,8 @@ public interface WxAccountFansService extends IService { */ Boolean updateFans(WxAccountFans wxAccountFans); + Boolean unblack(Long[] ids, String appId); + + Boolean black(Long[] ids, String appId); + } diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountService.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxAccountService.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxMenuService.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/WxMenuService.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxAccountFansServiceImpl.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxAccountFansServiceImpl.java old mode 100755 new mode 100644 index 8c7435095..101f048d9 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxAccountFansServiceImpl.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxAccountFansServiceImpl.java @@ -22,10 +22,12 @@ import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.data.tenant.TenantBroker; import com.pig4cloud.pigx.mp.config.WxMpInitConfigRunner; import com.pig4cloud.pigx.mp.entity.WxAccount; @@ -40,9 +42,11 @@ import lombok.AllArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.WxMpUserBlacklistService; import me.chanjar.weixin.mp.api.WxMpUserService; import me.chanjar.weixin.mp.api.WxMpUserTagService; import me.chanjar.weixin.mp.bean.result.WxMpUser; +import me.chanjar.weixin.mp.bean.result.WxMpUserBlacklistGetResult; import me.chanjar.weixin.mp.bean.result.WxMpUserList; import org.springframework.beans.BeanUtils; import org.springframework.scheduling.annotation.Async; @@ -54,7 +58,9 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author lengleng @@ -80,13 +86,21 @@ public class WxAccountFansServiceImpl extends ServiceImpl wxAccountTags = wxAccountTagMapper.selectList(Wrappers.emptyWrapper()); // 翻页查询粉丝 - IPage fansPage = baseMapper.selectPage(page, Wrappers.query(wxAccountFans)); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(StrUtil.isNotBlank(wxAccountFans.getWxAccountAppid()), WxAccountFans::getWxAccountAppid, + wxAccountFans.getWxAccountAppid()) + .like(StrUtil.isNotBlank(wxAccountFans.getNickname()), WxAccountFans::getNickname, + wxAccountFans.getNickname()); + + IPage fansPage = baseMapper.selectPage(page, wrapper); + List voList = fansPage.getRecords().stream().map(fans -> {// WxAccountFansVo vo = new WxAccountFansVo(); BeanUtils.copyProperties(fans, vo); @@ -144,6 +158,40 @@ public class WxAccountFansServiceImpl extends ServiceImpl wxAccountFans = this.listByIds(CollUtil.toList(ids)); + WxMpService wxMpService = WxMpInitConfigRunner.getMpServices().get(appId); + WxMpUserBlacklistService blackListService = wxMpService.getBlackListService(); + List collect = wxAccountFans.stream().map(WxAccountFans::getOpenid).collect(Collectors.toList()); + blackListService.pullFromBlacklist(collect); + // 更新数据 + List fansList = wxAccountFans.stream().peek(item -> { + item.setIsBlack(CommonConstants.SUCCESS); + }).collect(Collectors.toList()); + this.updateBatchById(fansList); + + return Boolean.TRUE; + } + + @SneakyThrows + @Override + public Boolean black(Long[] ids, String appId) { + List wxAccountFans = this.listByIds(CollUtil.toList(ids)); + WxMpService wxMpService = WxMpInitConfigRunner.getMpServices().get(appId); + WxMpUserBlacklistService blackListService = wxMpService.getBlackListService(); + List collect = wxAccountFans.stream().map(WxAccountFans::getOpenid).collect(Collectors.toList()); + blackListService.pushToBlacklist(collect); + // 更新数据 + List fansList = wxAccountFans.stream().peek(item -> { + item.setIsBlack(CommonConstants.FAIL); + }).collect(Collectors.toList()); + this.updateBatchById(fansList); + + return Boolean.TRUE; + } + /** * 获取公众号粉丝,生产建议异步 * @param appId @@ -230,6 +278,7 @@ public class WxAccountFansServiceImpl extends ServiceImpl wxUserTags = wxMpService.getUserTagService().tagGet(); // 删除旧数据 - baseMapper.delete(Wrappers.lambdaQuery()); + baseMapper.delete(Wrappers.lambdaQuery().eq(WxAccountTag::getWxAccountAppid, appId)); WxAccount wxAccount = accountMapper.selectOne(Wrappers.lambdaQuery().eq(WxAccount::getAppid, appId)); for (WxUserTag wxUserTag : wxUserTags) { diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxMenuServiceImpl.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxMenuServiceImpl.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxMsgServiceImpl.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxMsgServiceImpl.java index b22c7ad04..49bad3f4d 100644 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxMsgServiceImpl.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/service/impl/WxMsgServiceImpl.java @@ -112,15 +112,14 @@ public class WxMsgServiceImpl extends ServiceImpl implements if (WxConsts.KefuMsgType.NEWS.equals(wxMsg.getRepType())) { List list = new ArrayList<>(); - JSONArray articles = JSONUtil.parseObj(wxMsg.getContent()).getJSONArray("articles"); - WxMpKefuMessage.WxArticle t; - for (Object object : articles) { - JSONObject obj = JSONUtil.parseObj(JSONUtil.toJsonStr(object)); - t = new WxMpKefuMessage.WxArticle(); - t.setTitle(obj.getStr("title")); - t.setDescription(obj.getStr("digest")); - t.setPicUrl(obj.getStr("thumbUrl")); - t.setUrl(obj.getStr("url")); + JSONArray jsonArray = JSONUtil.parseArray(wxMsg.getContent()); + for (Object obj : jsonArray) { + JSONObject jsonObject = (JSONObject) obj; + WxMpKefuMessage.WxArticle t = new WxMpKefuMessage.WxArticle(); + t.setTitle(jsonObject.getStr("title")); + t.setDescription(jsonObject.getStr("digest")); + t.setPicUrl(jsonObject.getStr("thumbUrl")); + t.setUrl(jsonObject.getStr("url")); list.add(t); } wxMsg.setRepName(wxMsg.getRepName()); diff --git a/pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxAccountFansMapper.xml b/pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxAccountFansMapper.xml old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxAccountMapper.xml b/pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxAccountMapper.xml old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxMenuMapper.xml b/pigx-visual/pigx-mp-platform/src/main/resources/mapper/WxMenuMapper.xml old mode 100755 new mode 100644