mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-12 21:49:01 +08:00
🔖 Releasing / Version tags. 5.2
🔖 Releasing / Version tags. 5.2
This commit is contained in:
1 parent
95371f54a8
commit
2c6a700154
100 files changed
+507
-439
No files matched your search
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-codegen</artifactId>
|
||||
|
||||
+2
-1
@@ -299,7 +299,8 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
// 按字段类型分组,使用 Map 存储不同类型的字段列表
|
||||
Map<Boolean, List<GenTableColumnEntity>> typeMap = table.getFieldList()
|
||||
.stream()
|
||||
.collect(Collectors.partitioningBy(columnEntity -> BooleanUtil.toBoolean(columnEntity.getPrimaryPk().toString())));
|
||||
.collect(Collectors
|
||||
.partitioningBy(columnEntity -> BooleanUtil.toBoolean(columnEntity.getPrimaryPk().toString())));
|
||||
|
||||
// 从分组后的 Map 中获取不同类型的字段列表
|
||||
List<GenTableColumnEntity> primaryList = typeMap.get(true);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-daemon-elastic-job</artifactId>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-jimu-platform</artifactId>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-monitor</artifactId>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-mp-platform</artifactId>
|
||||
|
||||
+5
-2
@@ -13,8 +13,11 @@ public class ImageBuilder extends AbstractBuilder {
|
||||
@Override
|
||||
public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, WxMpService service) {
|
||||
|
||||
WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content).fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser()).build();
|
||||
WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE()
|
||||
.mediaId(content)
|
||||
.fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.build();
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
+5
-2
@@ -12,8 +12,11 @@ public class TextBuilder extends AbstractBuilder {
|
||||
|
||||
@Override
|
||||
public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, WxMpService service) {
|
||||
WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content).fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser()).build();
|
||||
WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT()
|
||||
.content(content)
|
||||
.fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.build();
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
+54
-18
@@ -127,36 +127,72 @@ public class WxMpInitConfigRunner {
|
||||
newRouter.rule().handler(this.logHandler).next();
|
||||
|
||||
// 接收客服会话管理事件
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT)
|
||||
.event(WxMpEventConstants.CustomerService.KF_CREATE_SESSION).handler(this.kfSessionHandler).end();
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT)
|
||||
.event(WxMpEventConstants.CustomerService.KF_CLOSE_SESSION).handler(this.kfSessionHandler).end();
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT)
|
||||
.event(WxMpEventConstants.CustomerService.KF_SWITCH_SESSION).handler(this.kfSessionHandler).end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(WxMpEventConstants.CustomerService.KF_CREATE_SESSION)
|
||||
.handler(this.kfSessionHandler)
|
||||
.end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(WxMpEventConstants.CustomerService.KF_CLOSE_SESSION)
|
||||
.handler(this.kfSessionHandler)
|
||||
.end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(WxMpEventConstants.CustomerService.KF_SWITCH_SESSION)
|
||||
.handler(this.kfSessionHandler)
|
||||
.end();
|
||||
|
||||
// 门店审核事件
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT).event(WxMpEventConstants.POI_CHECK_NOTIFY)
|
||||
.handler(this.storeCheckNotifyHandler).end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(WxMpEventConstants.POI_CHECK_NOTIFY)
|
||||
.handler(this.storeCheckNotifyHandler)
|
||||
.end();
|
||||
|
||||
// 自定义菜单事件
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT).event(MenuButtonType.CLICK).handler(this.menuHandler)
|
||||
.end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(MenuButtonType.CLICK)
|
||||
.handler(this.menuHandler)
|
||||
.end();
|
||||
|
||||
// 点击菜单连接事件
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT).event(MenuButtonType.VIEW).handler(this.nullHandler)
|
||||
.end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(MenuButtonType.VIEW)
|
||||
.handler(this.nullHandler)
|
||||
.end();
|
||||
|
||||
// 关注事件
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT).event(EventType.SUBSCRIBE)
|
||||
.handler(this.subscribeHandler).end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(EventType.SUBSCRIBE)
|
||||
.handler(this.subscribeHandler)
|
||||
.end();
|
||||
|
||||
// 取消关注事件
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT).event(EventType.UNSUBSCRIBE)
|
||||
.handler(this.unsubscribeHandler).end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(EventType.UNSUBSCRIBE)
|
||||
.handler(this.unsubscribeHandler)
|
||||
.end();
|
||||
|
||||
// 上报地理位置事件
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.EVENT).event(EventType.LOCATION).handler(this.locationHandler)
|
||||
.end();
|
||||
newRouter.rule()
|
||||
.async(false)
|
||||
.msgType(XmlMsgType.EVENT)
|
||||
.event(EventType.LOCATION)
|
||||
.handler(this.locationHandler)
|
||||
.end();
|
||||
|
||||
// 接收地理位置消息
|
||||
newRouter.rule().async(false).msgType(XmlMsgType.LOCATION).handler(this.locationHandler).end();
|
||||
|
||||
+4
-4
@@ -57,8 +57,8 @@ public class WxAccountController {
|
||||
@GetMapping("/page")
|
||||
public R getWxAccountPage(Page page, WxAccount wxAccount) {
|
||||
LambdaQueryWrapper<WxAccount> wrapper = Wrappers.<WxAccount>lambdaQuery()
|
||||
.like(StrUtil.isNotBlank(wxAccount.getName()), WxAccount::getName, wxAccount.getName())
|
||||
.like(StrUtil.isNotBlank(wxAccount.getAccount()), WxAccount::getAccount, wxAccount.getAccount());
|
||||
.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));
|
||||
}
|
||||
|
||||
@@ -132,8 +132,8 @@ public class WxAccountController {
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public R list(String name) {
|
||||
LambdaQueryWrapper<WxAccount> wrapper = Wrappers.<WxAccount>lambdaQuery().like(StrUtil.isNotBlank(name),
|
||||
WxAccount::getName, name);
|
||||
LambdaQueryWrapper<WxAccount> wrapper = Wrappers.<WxAccount>lambdaQuery()
|
||||
.like(StrUtil.isNotBlank(name), WxAccount::getName, name);
|
||||
return R.ok(wxAccountService.list(wrapper));
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -37,9 +37,9 @@ public class WxAccountTagController {
|
||||
@GetMapping("/page")
|
||||
public R<Page<WxAccountTag>> getWxAccountTagPage(Page<WxAccountTag> page, WxAccountTag wxAccountTag) {
|
||||
LambdaQueryWrapper<WxAccountTag> wrapper = Wrappers.<WxAccountTag>lambdaQuery()
|
||||
.like(StrUtil.isNotBlank(wxAccountTag.getTag()), WxAccountTag::getTag, wxAccountTag.getTag())
|
||||
.eq(StrUtil.isNotBlank(wxAccountTag.getWxAccountAppid()), WxAccountTag::getWxAccountAppid,
|
||||
wxAccountTag.getWxAccountAppid());
|
||||
.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));
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -87,8 +87,8 @@ public class WxAutoReplyController {
|
||||
*/
|
||||
public void jude(WxAutoReply wxAutoReply) {
|
||||
if (ReplyTypeEnum.MSG.getType().equals(wxAutoReply.getType())) {
|
||||
Wrapper<WxAutoReply> queryWrapper = Wrappers.<WxAutoReply>lambdaQuery().eq(WxAutoReply::getReqType,
|
||||
wxAutoReply.getReqType());
|
||||
Wrapper<WxAutoReply> queryWrapper = Wrappers.<WxAutoReply>lambdaQuery()
|
||||
.eq(WxAutoReply::getReqType, wxAutoReply.getReqType());
|
||||
List<WxAutoReply> list = wxAutoReplyService.list(queryWrapper);
|
||||
if (wxAutoReply.getId() != null) {
|
||||
if (list != null && list.size() == 1) {
|
||||
@@ -103,8 +103,8 @@ public class WxAutoReplyController {
|
||||
}
|
||||
if (ReplyTypeEnum.KEYWORD.getType().equals(wxAutoReply.getType())) {
|
||||
Wrapper<WxAutoReply> queryWrapper = Wrappers.<WxAutoReply>lambdaQuery()
|
||||
.eq(WxAutoReply::getReqKey, wxAutoReply.getReqKey())
|
||||
.eq(WxAutoReply::getRepType, wxAutoReply.getRepMate());
|
||||
.eq(WxAutoReply::getReqKey, wxAutoReply.getReqKey())
|
||||
.eq(WxAutoReply::getRepType, wxAutoReply.getRepMate());
|
||||
List<WxAutoReply> list = wxAutoReplyService.list(queryWrapper);
|
||||
if (list != null && list.size() == 1) {
|
||||
if (!list.get(0).getId().equals(wxAutoReply.getId())) {
|
||||
|
||||
+3
-3
@@ -50,9 +50,9 @@ public class WxFansMsgController {
|
||||
@GetMapping("/page")
|
||||
public R getWxMsgPage(Page page, WxMsg msg) {
|
||||
LambdaQueryWrapper<WxMsg> wrapper = Wrappers.<WxMsg>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());
|
||||
.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));
|
||||
}
|
||||
|
||||
|
||||
+7
-6
@@ -45,17 +45,18 @@ public class LocationHandler extends AbstractHandler {
|
||||
wxMessage.getPrecision());
|
||||
|
||||
// 发送关注消息
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService
|
||||
.list(Wrappers.<WxAutoReply>query().lambda().eq(WxAutoReply::getType, ReplyTypeEnum.MSG.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getReqType, wxMessage.getMsgType()));
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService.list(Wrappers.<WxAutoReply>query()
|
||||
.lambda()
|
||||
.eq(WxAutoReply::getType, ReplyTypeEnum.MSG.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getReqType, wxMessage.getMsgType()));
|
||||
// 查询公众号 基本信息
|
||||
WxAccount wxAccount = wxAccountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
|
||||
// 查询粉丝基本信息
|
||||
WxAccountFans fans = wxAccountFansMapper
|
||||
.selectOne(Wrappers.<WxAccountFans>lambdaQuery().eq(WxAccountFans::getOpenid, wxMessage.getFromUser()));
|
||||
.selectOne(Wrappers.<WxAccountFans>lambdaQuery().eq(WxAccountFans::getOpenid, wxMessage.getFromUser()));
|
||||
|
||||
return MsgHandler.getWxMpXmlOutMessage(wxMessage, listWxAutoReply, fans, msgMapper, wxAccount);
|
||||
}
|
||||
|
||||
+2
-2
@@ -44,10 +44,10 @@ public class LogHandler extends AbstractHandler {
|
||||
log.debug("接收到请求消息,内容:{}", wxMessage.getContent());
|
||||
|
||||
WxAccount wxAccount = accountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
|
||||
WxAccountFans fans = fansMapper
|
||||
.selectOne(Wrappers.<WxAccountFans>lambdaQuery().eq(WxAccountFans::getOpenid, wxMessage.getFromUser()));
|
||||
.selectOne(Wrappers.<WxAccountFans>lambdaQuery().eq(WxAccountFans::getOpenid, wxMessage.getFromUser()));
|
||||
|
||||
if (fans == null) {
|
||||
return null;
|
||||
|
||||
+38
-19
@@ -47,10 +47,11 @@ public class MenuHandler extends AbstractHandler {
|
||||
*/
|
||||
public WxMpXmlOutMessage getWxMpXmlOutMessage(WxMpXmlMessage wxMessage) {
|
||||
|
||||
WxMpMenu wxMpMenu = wxMenuMapper.selectOne(
|
||||
Wrappers.<WxMpMenu>lambdaQuery().eq(WxMpMenu::getWxAccountAppid, WxMpContextHolder.getAppId()));
|
||||
List<JSONObject> buttons = JSONUtil.parseObj(wxMpMenu.getMenu()).getJSONArray("button")
|
||||
.toList(JSONObject.class);
|
||||
WxMpMenu wxMpMenu = wxMenuMapper
|
||||
.selectOne(Wrappers.<WxMpMenu>lambdaQuery().eq(WxMpMenu::getWxAccountAppid, WxMpContextHolder.getAppId()));
|
||||
List<JSONObject> buttons = JSONUtil.parseObj(wxMpMenu.getMenu())
|
||||
.getJSONArray("button")
|
||||
.toList(JSONObject.class);
|
||||
String eventKey = wxMessage.getEventKey();
|
||||
|
||||
// 获取子集
|
||||
@@ -80,23 +81,33 @@ public class MenuHandler extends AbstractHandler {
|
||||
String repMediaId = button.getStr("repMediaId");
|
||||
String repDesc = button.getStr("repDesc");
|
||||
if (WxConsts.KefuMsgType.TEXT.equals(repType)) {
|
||||
wxMpXmlOutMessage = new TextBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.content(repContent).build();
|
||||
wxMpXmlOutMessage = new TextBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.content(repContent)
|
||||
.build();
|
||||
}
|
||||
|
||||
if (WxConsts.KefuMsgType.IMAGE.equals(repType)) {
|
||||
wxMpXmlOutMessage = new ImageBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.mediaId(repMediaId).build();
|
||||
wxMpXmlOutMessage = new ImageBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.mediaId(repMediaId)
|
||||
.build();
|
||||
}
|
||||
|
||||
if (WxConsts.KefuMsgType.VOICE.equals(repType)) {
|
||||
wxMpXmlOutMessage = new VoiceBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.mediaId(repMediaId).build();
|
||||
wxMpXmlOutMessage = new VoiceBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.mediaId(repMediaId)
|
||||
.build();
|
||||
}
|
||||
|
||||
if (WxConsts.KefuMsgType.VIDEO.equals(repType)) {
|
||||
wxMpXmlOutMessage = new VideoBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.mediaId(repMediaId).title(repName).description(repDesc).build();
|
||||
wxMpXmlOutMessage = new VideoBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.mediaId(repMediaId)
|
||||
.title(repName)
|
||||
.description(repDesc)
|
||||
.build();
|
||||
}
|
||||
|
||||
if (WxConsts.KefuMsgType.MUSIC.equals(repType)) {
|
||||
@@ -104,17 +115,23 @@ public class MenuHandler extends AbstractHandler {
|
||||
String repUrl = button.getStr("repUrl");
|
||||
String repHqUrl = button.getStr("repHqUrl");
|
||||
|
||||
wxMpXmlOutMessage = new MusicBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.thumbMediaId(repThumbMediaId).title(repName).description(repDesc).musicUrl(repUrl)
|
||||
.hqMusicUrl(repHqUrl).build();
|
||||
wxMpXmlOutMessage = new MusicBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.thumbMediaId(repThumbMediaId)
|
||||
.title(repName)
|
||||
.description(repDesc)
|
||||
.musicUrl(repUrl)
|
||||
.hqMusicUrl(repHqUrl)
|
||||
.build();
|
||||
}
|
||||
|
||||
if (WxConsts.KefuMsgType.NEWS.equals(repType)) {
|
||||
String content = button.getStr("content");
|
||||
|
||||
List<WxMpXmlOutNewsMessage.Item> list = new ArrayList<>();
|
||||
List<JSONObject> articles = JSONUtil.parseObj(content).getJSONArray("articles")
|
||||
.toList(JSONObject.class);
|
||||
List<JSONObject> articles = JSONUtil.parseObj(content)
|
||||
.getJSONArray("articles")
|
||||
.toList(JSONObject.class);
|
||||
WxMpXmlOutNewsMessage.Item t;
|
||||
for (JSONObject jsonObject : articles) {
|
||||
t = new WxMpXmlOutNewsMessage.Item();
|
||||
@@ -124,8 +141,10 @@ public class MenuHandler extends AbstractHandler {
|
||||
t.setUrl(jsonObject.getStr("url"));
|
||||
list.add(t);
|
||||
}
|
||||
wxMpXmlOutMessage = new NewsBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.articles(list).build();
|
||||
wxMpXmlOutMessage = new NewsBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.articles(list)
|
||||
.build();
|
||||
}
|
||||
return wxMpXmlOutMessage;
|
||||
}
|
||||
|
||||
+50
-32
@@ -53,19 +53,20 @@ public class MsgHandler extends AbstractHandler {
|
||||
// 组装回复消息
|
||||
if (!wxMessage.getMsgType().equals(XmlMsgType.EVENT)) {
|
||||
WxMpXmlOutMessage rs;
|
||||
WxAccountFans fans = wxAccountFansMapper.selectOne(
|
||||
Wrappers.<WxAccountFans>lambdaQuery().eq(WxAccountFans::getOpenid, wxMessage.getFromUser()));
|
||||
WxAccountFans fans = wxAccountFansMapper
|
||||
.selectOne(Wrappers.<WxAccountFans>lambdaQuery().eq(WxAccountFans::getOpenid, wxMessage.getFromUser()));
|
||||
// 查询公众号 基本信息
|
||||
WxAccount wxAccount = wxAccountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
// 1、先处理是否有文本关键字回复
|
||||
if (WxConsts.KefuMsgType.TEXT.equals(wxMessage.getMsgType())) {
|
||||
// 先全匹配
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService.list(
|
||||
Wrappers.<WxAutoReply>query().lambda().eq(WxAutoReply::getType, ReplyTypeEnum.KEYWORD.getType())
|
||||
.eq(WxAutoReply::getRepMate, ReplyMateEnum.ALL.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getReqKey, wxMessage.getContent()));
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService.list(Wrappers.<WxAutoReply>query()
|
||||
.lambda()
|
||||
.eq(WxAutoReply::getType, ReplyTypeEnum.KEYWORD.getType())
|
||||
.eq(WxAutoReply::getRepMate, ReplyMateEnum.ALL.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getReqKey, wxMessage.getContent()));
|
||||
if (listWxAutoReply != null && listWxAutoReply.size() > 0) {
|
||||
rs = getWxMpXmlOutMessage(wxMessage, listWxAutoReply, fans, wxMsgMapper, wxAccount);
|
||||
if (rs != null) {
|
||||
@@ -73,11 +74,12 @@ public class MsgHandler extends AbstractHandler {
|
||||
}
|
||||
}
|
||||
// 再半匹配
|
||||
listWxAutoReply = wxAutoReplyService.list(
|
||||
Wrappers.<WxAutoReply>query().lambda().eq(WxAutoReply::getType, ReplyTypeEnum.KEYWORD.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getRepMate, ReplyMateEnum.LIKE.getType())
|
||||
.like(WxAutoReply::getReqKey, wxMessage.getContent()));
|
||||
listWxAutoReply = wxAutoReplyService.list(Wrappers.<WxAutoReply>query()
|
||||
.lambda()
|
||||
.eq(WxAutoReply::getType, ReplyTypeEnum.KEYWORD.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getRepMate, ReplyMateEnum.LIKE.getType())
|
||||
.like(WxAutoReply::getReqKey, wxMessage.getContent()));
|
||||
if (listWxAutoReply != null && listWxAutoReply.size() > 0) {
|
||||
rs = getWxMpXmlOutMessage(wxMessage, listWxAutoReply, fans, wxMsgMapper, wxAccount);
|
||||
if (rs != null) {
|
||||
@@ -86,10 +88,11 @@ public class MsgHandler extends AbstractHandler {
|
||||
}
|
||||
}
|
||||
// 2、再处理消息回复
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService
|
||||
.list(Wrappers.<WxAutoReply>query().lambda().eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getType, ReplyTypeEnum.MSG.getType())
|
||||
.eq(WxAutoReply::getReqType, wxMessage.getMsgType()));
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService.list(Wrappers.<WxAutoReply>query()
|
||||
.lambda()
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId())
|
||||
.eq(WxAutoReply::getType, ReplyTypeEnum.MSG.getType())
|
||||
.eq(WxAutoReply::getReqType, wxMessage.getMsgType()));
|
||||
rs = getWxMpXmlOutMessage(wxMessage, listWxAutoReply, fans, wxMsgMapper, wxAccount);
|
||||
return rs;
|
||||
}
|
||||
@@ -126,8 +129,10 @@ public class MsgHandler extends AbstractHandler {
|
||||
// 文本
|
||||
if (WxConsts.KefuMsgType.TEXT.equals(wxAutoReply.getRepType())) {
|
||||
wxMsg.setRepContent(wxAutoReply.getRepContent());
|
||||
wxMpXmlOutMessage = new TextBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.content(wxAutoReply.getRepContent()).build();
|
||||
wxMpXmlOutMessage = new TextBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.content(wxAutoReply.getRepContent())
|
||||
.build();
|
||||
}
|
||||
|
||||
// 图片
|
||||
@@ -135,24 +140,31 @@ public class MsgHandler extends AbstractHandler {
|
||||
wxMsg.setRepName(wxAutoReply.getRepName());
|
||||
wxMsg.setRepUrl(wxAutoReply.getRepUrl());
|
||||
wxMsg.setRepMediaId(wxAutoReply.getRepMediaId());
|
||||
wxMpXmlOutMessage = new ImageBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.mediaId(wxAutoReply.getRepMediaId()).build();
|
||||
wxMpXmlOutMessage = new ImageBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.mediaId(wxAutoReply.getRepMediaId())
|
||||
.build();
|
||||
}
|
||||
if (WxConsts.KefuMsgType.VOICE.equals(wxAutoReply.getRepType())) {
|
||||
wxMsg.setRepName(wxAutoReply.getRepName());
|
||||
wxMsg.setRepUrl(wxAutoReply.getRepUrl());
|
||||
wxMsg.setRepMediaId(wxAutoReply.getRepMediaId());
|
||||
wxMpXmlOutMessage = new VoiceBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.mediaId(wxAutoReply.getRepMediaId()).build();
|
||||
wxMpXmlOutMessage = new VoiceBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.mediaId(wxAutoReply.getRepMediaId())
|
||||
.build();
|
||||
}
|
||||
if (WxConsts.KefuMsgType.VIDEO.equals(wxAutoReply.getRepType())) {
|
||||
wxMsg.setRepName(wxAutoReply.getRepName());
|
||||
wxMsg.setRepDesc(wxAutoReply.getRepDesc());
|
||||
wxMsg.setRepUrl(wxAutoReply.getRepUrl());
|
||||
wxMsg.setRepMediaId(wxAutoReply.getRepMediaId());
|
||||
wxMpXmlOutMessage = new VideoBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.mediaId(wxAutoReply.getRepMediaId()).title(wxAutoReply.getRepName())
|
||||
.description(wxAutoReply.getRepDesc()).build();
|
||||
wxMpXmlOutMessage = new VideoBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.mediaId(wxAutoReply.getRepMediaId())
|
||||
.title(wxAutoReply.getRepName())
|
||||
.description(wxAutoReply.getRepDesc())
|
||||
.build();
|
||||
}
|
||||
if (WxConsts.KefuMsgType.MUSIC.equals(wxAutoReply.getRepType())) {
|
||||
wxMsg.setRepName(wxAutoReply.getRepName());
|
||||
@@ -161,10 +173,14 @@ public class MsgHandler extends AbstractHandler {
|
||||
wxMsg.setRepHqUrl(wxAutoReply.getRepHqUrl());
|
||||
wxMsg.setRepThumbMediaId(wxAutoReply.getRepThumbMediaId());
|
||||
wxMsg.setRepThumbUrl(wxAutoReply.getRepThumbUrl());
|
||||
wxMpXmlOutMessage = new MusicBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.thumbMediaId(wxAutoReply.getRepThumbMediaId()).title(wxAutoReply.getRepName())
|
||||
.description(wxAutoReply.getRepDesc()).musicUrl(wxAutoReply.getRepUrl())
|
||||
.hqMusicUrl(wxAutoReply.getRepHqUrl()).build();
|
||||
wxMpXmlOutMessage = new MusicBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.thumbMediaId(wxAutoReply.getRepThumbMediaId())
|
||||
.title(wxAutoReply.getRepName())
|
||||
.description(wxAutoReply.getRepDesc())
|
||||
.musicUrl(wxAutoReply.getRepUrl())
|
||||
.hqMusicUrl(wxAutoReply.getRepHqUrl())
|
||||
.build();
|
||||
}
|
||||
if (WxConsts.KefuMsgType.NEWS.equals(wxAutoReply.getRepType())) {
|
||||
List<WxMpXmlOutNewsMessage.Item> list = new ArrayList<>();
|
||||
@@ -183,8 +199,10 @@ public class MsgHandler extends AbstractHandler {
|
||||
wxMsg.setRepUrl(wxAutoReply.getRepUrl());
|
||||
wxMsg.setRepMediaId(wxAutoReply.getRepMediaId());
|
||||
wxMsg.setContent(wxAutoReply.getContent());
|
||||
wxMpXmlOutMessage = new NewsBuilder().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
|
||||
.articles(list).build();
|
||||
wxMpXmlOutMessage = new NewsBuilder().fromUser(wxMessage.getToUser())
|
||||
.toUser(wxMessage.getFromUser())
|
||||
.articles(list)
|
||||
.build();
|
||||
}
|
||||
wxMsgMapper.insert(wxMsg);
|
||||
}
|
||||
|
||||
+7
-6
@@ -66,7 +66,7 @@ public class SubscribeHandler extends AbstractHandler {
|
||||
wxAccountFans.setOpenid(wxMpUser.getOpenId());
|
||||
wxAccountFans.setSubscribeStatus(String.valueOf(BooleanUtil.toInt(wxMpUser.getSubscribe())));
|
||||
wxAccountFans.setSubscribeTime(LocalDateTime
|
||||
.ofInstant(Instant.ofEpochMilli(wxMpUser.getSubscribeTime() * 1000L), ZoneId.systemDefault()));
|
||||
.ofInstant(Instant.ofEpochMilli(wxMpUser.getSubscribeTime() * 1000L), ZoneId.systemDefault()));
|
||||
|
||||
// 随机生成一个昵称,方便平台内部使用
|
||||
String generatedName = ChineseNameGenerator.getInstance().generate();
|
||||
@@ -77,7 +77,7 @@ public class SubscribeHandler extends AbstractHandler {
|
||||
wxAccountFans.setTagIds(wxAccountFans.getTagIds());
|
||||
|
||||
WxAccount wxAccount = wxAccountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, WxMpContextHolder.getAppId()));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, WxMpContextHolder.getAppId()));
|
||||
wxAccountFans.setWxAccountId(wxAccount.getId());
|
||||
wxAccountFans.setWxAccountAppid(wxAccount.getAppid());
|
||||
wxAccountFans.setWxAccountName(wxAccount.getName());
|
||||
@@ -97,12 +97,13 @@ public class SubscribeHandler extends AbstractHandler {
|
||||
*/
|
||||
private WxMpXmlOutMessage handleSpecial(WxMpXmlMessage wxMessage, WxAccountFans fans) {
|
||||
// 发送关注消息
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService
|
||||
.list(Wrappers.<WxAutoReply>query().lambda().eq(WxAutoReply::getType, ReplyTypeEnum.ATTENTION.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId()));
|
||||
List<WxAutoReply> listWxAutoReply = wxAutoReplyService.list(Wrappers.<WxAutoReply>query()
|
||||
.lambda()
|
||||
.eq(WxAutoReply::getType, ReplyTypeEnum.ATTENTION.getType())
|
||||
.eq(WxAutoReply::getAppId, WxMpContextHolder.getAppId()));
|
||||
// 查询公众号 基本信息
|
||||
WxAccount wxAccount = wxAccountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAccount, wxMessage.getToUser()));
|
||||
WxMpXmlOutMessage wxMpXmlOutMessage = MsgHandler.getWxMpXmlOutMessage(wxMessage, listWxAutoReply, fans,
|
||||
msgMapper, wxAccount);
|
||||
return wxMpXmlOutMessage;
|
||||
|
||||
+18
-13
@@ -91,10 +91,10 @@ public class WxAccountFansServiceImpl extends ServiceImpl<WxAccountFansMapper, W
|
||||
|
||||
// 翻页查询粉丝
|
||||
LambdaQueryWrapper<WxAccountFans> wrapper = Wrappers.<WxAccountFans>lambdaQuery()
|
||||
.eq(StrUtil.isNotBlank(wxAccountFans.getWxAccountAppid()), WxAccountFans::getWxAccountAppid,
|
||||
wxAccountFans.getWxAccountAppid())
|
||||
.like(StrUtil.isNotBlank(wxAccountFans.getNickname()), WxAccountFans::getNickname,
|
||||
wxAccountFans.getNickname());
|
||||
.eq(StrUtil.isNotBlank(wxAccountFans.getWxAccountAppid()), WxAccountFans::getWxAccountAppid,
|
||||
wxAccountFans.getWxAccountAppid())
|
||||
.like(StrUtil.isNotBlank(wxAccountFans.getNickname()), WxAccountFans::getNickname,
|
||||
wxAccountFans.getNickname());
|
||||
|
||||
IPage<WxAccountFans> fansPage = baseMapper.selectPage(page, wrapper);
|
||||
|
||||
@@ -104,9 +104,9 @@ public class WxAccountFansServiceImpl extends ServiceImpl<WxAccountFansMapper, W
|
||||
// 赋值 TAG_NAME
|
||||
if (ArrayUtil.isNotEmpty(fans.getTagIds())) {
|
||||
List<WxAccountTag> tagList = wxAccountTags.stream()
|
||||
.filter(tag -> tag.getWxAccountAppid().endsWith(fans.getWxAccountAppid()) //
|
||||
&& ArrayUtil.contains(fans.getTagIds(), tag.getTagId()))
|
||||
.collect(Collectors.toList());
|
||||
.filter(tag -> tag.getWxAccountAppid().endsWith(fans.getWxAccountAppid()) //
|
||||
&& ArrayUtil.contains(fans.getTagIds(), tag.getTagId()))
|
||||
.collect(Collectors.toList());
|
||||
vo.setTagList(tagList);
|
||||
}
|
||||
return vo;
|
||||
@@ -198,7 +198,7 @@ public class WxAccountFansServiceImpl extends ServiceImpl<WxAccountFansMapper, W
|
||||
@Override
|
||||
public Boolean syncAccountFans(String appId) {
|
||||
WxAccount wxAccount = wxAccountMapper
|
||||
.selectOne(Wrappers.<WxAccount>query().lambda().eq(WxAccount::getAppid, appId));
|
||||
.selectOne(Wrappers.<WxAccount>query().lambda().eq(WxAccount::getAppid, appId));
|
||||
|
||||
// 获取操作微信接口类
|
||||
WxMpService wxMpService = WxMpInitConfigRunner.getMpServices().get(appId);
|
||||
@@ -222,8 +222,10 @@ public class WxAccountFansServiceImpl extends ServiceImpl<WxAccountFansMapper, W
|
||||
try {
|
||||
WxMpUserList wxMpUserList = wxMpUserService.userList(nextOpenid);
|
||||
// openId 分组 每组 100个 openid
|
||||
List<List<String>> openIdsList = CollUtil.split(wxMpUserList.getOpenids(), SIZE).stream()
|
||||
.filter(CollUtil::isNotEmpty).collect(Collectors.toList());
|
||||
List<List<String>> openIdsList = CollUtil.split(wxMpUserList.getOpenids(), SIZE)
|
||||
.stream()
|
||||
.filter(CollUtil::isNotEmpty)
|
||||
.collect(Collectors.toList());
|
||||
// 处理每个分组. 调用查询用户信息
|
||||
for (List<String> openIdList : openIdsList) {
|
||||
log.info("开始批量获取用户信息 {}", openIdList);
|
||||
@@ -262,7 +264,7 @@ public class WxAccountFansServiceImpl extends ServiceImpl<WxAccountFansMapper, W
|
||||
// 2020-11-25 部分用户订阅时间为空,跳过此字段处理
|
||||
if (ObjectUtil.isNotEmpty(wxMpUser.getSubscribeTime())) {
|
||||
wxAccountFans.setSubscribeTime(LocalDateTime
|
||||
.ofInstant(Instant.ofEpochMilli(wxMpUser.getSubscribeTime() * 1000L), ZoneId.systemDefault()));
|
||||
.ofInstant(Instant.ofEpochMilli(wxMpUser.getSubscribeTime() * 1000L), ZoneId.systemDefault()));
|
||||
}
|
||||
|
||||
// 随机生成一个昵称,方便平台内部使用
|
||||
@@ -286,8 +288,11 @@ public class WxAccountFansServiceImpl extends ServiceImpl<WxAccountFansMapper, W
|
||||
*/
|
||||
private String queryNextOpenId(String appId) {
|
||||
Page<WxAccountFans> queryPage = new Page<>(0, 1);
|
||||
Page<WxAccountFans> fansPage = baseMapper.selectPage(queryPage, Wrappers.<WxAccountFans>query().lambda()
|
||||
.eq(WxAccountFans::getWxAccountAppid, appId).orderByDesc(WxAccountFans::getCreateTime));
|
||||
Page<WxAccountFans> fansPage = baseMapper.selectPage(queryPage,
|
||||
Wrappers.<WxAccountFans>query()
|
||||
.lambda()
|
||||
.eq(WxAccountFans::getWxAccountAppid, appId)
|
||||
.orderByDesc(WxAccountFans::getCreateTime));
|
||||
String nextOpenId = null;
|
||||
if (fansPage.getTotal() > 0) {
|
||||
nextOpenId = fansPage.getRecords().get(0).getOpenid();
|
||||
|
||||
+19
-11
@@ -64,7 +64,7 @@ public class WxAccountServiceImpl extends ServiceImpl<WxAccountMapper, WxAccount
|
||||
String url = wxMpService.getQrcodeService().qrCodePictureUrl(ticket.getTicket());
|
||||
|
||||
WxAccount wxAccount = baseMapper
|
||||
.selectOne(Wrappers.<WxAccount>query().lambda().eq(WxAccount::getAppid, appId));
|
||||
.selectOne(Wrappers.<WxAccount>query().lambda().eq(WxAccount::getAppid, appId));
|
||||
wxAccount.setQrUrl(url);
|
||||
baseMapper.updateById(wxAccount);
|
||||
}
|
||||
@@ -94,29 +94,37 @@ public class WxAccountServiceImpl extends ServiceImpl<WxAccountMapper, WxAccount
|
||||
List<List<Object>> result = new ArrayList<>();
|
||||
try {
|
||||
// 获取累计用户数据
|
||||
List<Object> cumulateList = cubeService.getUserCumulate(start, end).stream()
|
||||
.map(WxDataCubeUserCumulate::getCumulateUser).collect(Collectors.toList());
|
||||
List<Object> cumulateList = cubeService.getUserCumulate(start, end)
|
||||
.stream()
|
||||
.map(WxDataCubeUserCumulate::getCumulateUser)
|
||||
.collect(Collectors.toList());
|
||||
result.add(cumulateList);
|
||||
|
||||
// 获取用户分享数据
|
||||
List<Object> shareList = cubeService.getUserShare(start, end).stream()
|
||||
.map(WxDataCubeArticleResult::getShareCount).collect(Collectors.toList());
|
||||
List<Object> shareList = cubeService.getUserShare(start, end)
|
||||
.stream()
|
||||
.map(WxDataCubeArticleResult::getShareCount)
|
||||
.collect(Collectors.toList());
|
||||
result.add(shareList);
|
||||
|
||||
// 获取消息发送概况数据
|
||||
List<Object> upstreamList = cubeService.getUpstreamMsg(start, end).stream()
|
||||
.map(WxDataCubeMsgResult::getMsgCount).collect(Collectors.toList());
|
||||
List<Object> upstreamList = cubeService.getUpstreamMsg(start, end)
|
||||
.stream()
|
||||
.map(WxDataCubeMsgResult::getMsgCount)
|
||||
.collect(Collectors.toList());
|
||||
result.add(upstreamList);
|
||||
|
||||
// 获取接口调用概况数据
|
||||
List<WxDataCubeInterfaceResult> interfaceSummaryList = cubeService.getInterfaceSummary(start, end);
|
||||
List<Object> interfaceList = interfaceSummaryList.stream().map(WxDataCubeInterfaceResult::getCallbackCount)
|
||||
.collect(Collectors.toList());
|
||||
List<Object> interfaceList = interfaceSummaryList.stream()
|
||||
.map(WxDataCubeInterfaceResult::getCallbackCount)
|
||||
.collect(Collectors.toList());
|
||||
result.add(interfaceList);
|
||||
|
||||
// 接口日期保存
|
||||
List<Object> dateList = interfaceSummaryList.stream().map(WxDataCubeInterfaceResult::getRefDate)
|
||||
.collect(Collectors.toList());
|
||||
List<Object> dateList = interfaceSummaryList.stream()
|
||||
.map(WxDataCubeInterfaceResult::getRefDate)
|
||||
.collect(Collectors.toList());
|
||||
result.add(dateList);
|
||||
}
|
||||
catch (WxErrorException e) {
|
||||
|
||||
+2
-2
@@ -42,7 +42,7 @@ public class WxAccountTagServiceImpl extends ServiceImpl<WxAccountTagMapper, WxA
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public WxAccountTag saveAccountTag(WxAccountTag accountTag) {
|
||||
WxAccountTag wxAccountTag = baseMapper
|
||||
.selectOne(Wrappers.<WxAccountTag>lambdaQuery().eq(WxAccountTag::getTag, accountTag.getTag()));
|
||||
.selectOne(Wrappers.<WxAccountTag>lambdaQuery().eq(WxAccountTag::getTag, accountTag.getTag()));
|
||||
Assert.isNull(wxAccountTag, StrUtil.format("名称为[{}]的标签已经存在", accountTag.getTag()));
|
||||
|
||||
// 调用微信公众号接口删除
|
||||
@@ -52,7 +52,7 @@ public class WxAccountTagServiceImpl extends ServiceImpl<WxAccountTagMapper, WxA
|
||||
|
||||
// 查询公众号详细信息
|
||||
WxAccount wxAccount = accountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, accountTag.getWxAccountAppid()));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, accountTag.getWxAccountAppid()));
|
||||
accountTag.setWxAccountId(wxAccount.getId());
|
||||
accountTag.setWxAccountAppid(wxAccount.getAppid());
|
||||
accountTag.setWxAccountName(wxAccount.getName());
|
||||
|
||||
+3
-3
@@ -64,7 +64,7 @@ public class WxMenuServiceImpl extends ServiceImpl<WxMenuMapper, WxMpMenu> imple
|
||||
baseMapper.delete(Wrappers.<WxMpMenu>lambdaQuery().eq(WxMpMenu::getWxAccountAppid, appId));
|
||||
|
||||
WxAccount wxAccount = wxAccountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, appId));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, appId));
|
||||
WxMpMenu wxMpMenu = new WxMpMenu();
|
||||
wxMpMenu.setMenu(wxMenus.toStringPretty());
|
||||
wxMpMenu.setWxAccountId(wxAccount.getId());
|
||||
@@ -82,7 +82,7 @@ public class WxMenuServiceImpl extends ServiceImpl<WxMenuMapper, WxMpMenu> imple
|
||||
@Override
|
||||
public R push(String appId) {
|
||||
List<WxMpMenu> wxMpMenuList = baseMapper
|
||||
.selectList(Wrappers.<WxMpMenu>lambdaQuery().eq(WxMpMenu::getWxAccountAppid, appId));
|
||||
.selectList(Wrappers.<WxMpMenu>lambdaQuery().eq(WxMpMenu::getWxAccountAppid, appId));
|
||||
|
||||
if (CollUtil.isEmpty(wxMpMenuList)) {
|
||||
return R.failed("微信菜单配置未保存,不能发布");
|
||||
@@ -118,7 +118,7 @@ public class WxMenuServiceImpl extends ServiceImpl<WxMenuMapper, WxMpMenu> imple
|
||||
@Override
|
||||
public R getByAppId(String appId) {
|
||||
List<WxMpMenu> wxMpMenuList = baseMapper
|
||||
.selectList(Wrappers.<WxMpMenu>lambdaQuery().eq(WxMpMenu::getWxAccountAppid, appId));
|
||||
.selectList(Wrappers.<WxMpMenu>lambdaQuery().eq(WxMpMenu::getWxAccountAppid, appId));
|
||||
|
||||
if (CollUtil.isEmpty(wxMpMenuList)) {
|
||||
return R.ok();
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ public class WxMsgServiceImpl extends ServiceImpl<WxMsgMapper, WxMsg> implements
|
||||
// 查询用户详细
|
||||
WxAccountFans wxUser = accountFansMapper.selectById(wxMsg.getWxUserId());
|
||||
WxAccount wxAccount = accountMapper
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, wxMsg.getAppId()));
|
||||
.selectOne(Wrappers.<WxAccount>lambdaQuery().eq(WxAccount::getAppid, wxMsg.getAppId()));
|
||||
|
||||
// 维护消息-用户
|
||||
wxMsg.setNickName(wxAccount.getName());
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-pay-platform</artifactId>
|
||||
|
||||
+13
-6
@@ -28,9 +28,12 @@ public class SequenceConfig {
|
||||
@Bean
|
||||
public Sequence paySequence(DataSource dataSource, SequenceDbProperties properties) {
|
||||
return DbSeqBuilder.create()
|
||||
.bizName(() -> String.format("pay_%s_%s", TenantContextHolder.getTenantId(), DateUtil.today()))
|
||||
.dataSource(dataSource).step(properties.getStep()).retryTimes(properties.getRetryTimes())
|
||||
.tableName(properties.getTableName()).build();
|
||||
.bizName(() -> String.format("pay_%s_%s", TenantContextHolder.getTenantId(), DateUtil.today()))
|
||||
.dataSource(dataSource)
|
||||
.step(properties.getStep())
|
||||
.retryTimes(properties.getRetryTimes())
|
||||
.tableName(properties.getTableName())
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -41,9 +44,13 @@ public class SequenceConfig {
|
||||
*/
|
||||
@Bean
|
||||
public Sequence channelSequence(DataSource dataSource, SequenceDbProperties properties) {
|
||||
return DbSeqBuilder.create().bizName(() -> String.format("channel_%s", TenantContextHolder.getTenantId()))
|
||||
.dataSource(dataSource).step(properties.getStep()).retryTimes(properties.getRetryTimes())
|
||||
.tableName(properties.getTableName()).build();
|
||||
return DbSeqBuilder.create()
|
||||
.bizName(() -> String.format("channel_%s", TenantContextHolder.getTenantId()))
|
||||
.dataSource(dataSource)
|
||||
.step(properties.getStep())
|
||||
.retryTimes(properties.getRetryTimes())
|
||||
.tableName(properties.getTableName())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
+3
-3
@@ -107,16 +107,16 @@ public class AlipayPayNotifyCallbackHandler extends AbstractPayNotifyCallbakHand
|
||||
@Override
|
||||
public String parse(Map<String, String> params) {
|
||||
String tradeStatus = EnumUtil.fromString(TradeStatusEnum.class, params.get(PayConstants.TRADE_STATUS))
|
||||
.getStatus();
|
||||
.getStatus();
|
||||
|
||||
String orderNo = params.get(PayConstants.OUT_TRADE_NO);
|
||||
PayGoodsOrder goodsOrder = goodsOrderService
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
goodsOrder.setStatus(tradeStatus);
|
||||
goodsOrderService.updateById(goodsOrder);
|
||||
|
||||
PayTradeOrder tradeOrder = tradeOrderService
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
tradeOrder.setPaySuccTime(LocalDateTime.now());
|
||||
tradeOrder.setChannelOrderNo(params.get("trade_no"));
|
||||
tradeOrder.setStatus(TradeStatusEnum.TRADE_SUCCESS.getStatus());
|
||||
|
||||
+8
-4
@@ -57,10 +57,14 @@ public class AlipayPayOrderRefundHandler implements PayOrderRefundHandler {
|
||||
}
|
||||
|
||||
JSONObject params = JSONUtil.parseObj(channel.getParam());
|
||||
AliPayApiConfig aliPayApiConfig = AliPayApiConfig.builder().setAppId(channel.getAppId())
|
||||
.setPrivateKey(params.getStr("privateKey")).setCharset(CharsetUtil.UTF_8)
|
||||
.setAliPayPublicKey(params.getStr("publicKey")).setServiceUrl(params.getStr("serviceUrl"))
|
||||
.setSignType("RSA2").build();
|
||||
AliPayApiConfig aliPayApiConfig = AliPayApiConfig.builder()
|
||||
.setAppId(channel.getAppId())
|
||||
.setPrivateKey(params.getStr("privateKey"))
|
||||
.setCharset(CharsetUtil.UTF_8)
|
||||
.setAliPayPublicKey(params.getStr("publicKey"))
|
||||
.setServiceUrl(params.getStr("serviceUrl"))
|
||||
.setSignType("RSA2")
|
||||
.build();
|
||||
AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig);
|
||||
return channel;
|
||||
}
|
||||
|
||||
+8
-4
@@ -81,10 +81,14 @@ public class AlipayWapPayOrderHandler extends AbstractPayOrderHandler {
|
||||
}
|
||||
|
||||
JSONObject params = JSONUtil.parseObj(channel.getParam());
|
||||
AliPayApiConfig aliPayApiConfig = AliPayApiConfig.builder().setAppId(channel.getAppId())
|
||||
.setPrivateKey(params.getStr("privateKey")).setCharset(CharsetUtil.UTF_8)
|
||||
.setAliPayPublicKey(params.getStr("publicKey")).setServiceUrl(params.getStr("serviceUrl"))
|
||||
.setSignType("RSA2").build();
|
||||
AliPayApiConfig aliPayApiConfig = AliPayApiConfig.builder()
|
||||
.setAppId(channel.getAppId())
|
||||
.setPrivateKey(params.getStr("privateKey"))
|
||||
.setCharset(CharsetUtil.UTF_8)
|
||||
.setAliPayPublicKey(params.getStr("publicKey"))
|
||||
.setServiceUrl(params.getStr("serviceUrl"))
|
||||
.setSignType("RSA2")
|
||||
.build();
|
||||
AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig);
|
||||
return channel;
|
||||
}
|
||||
|
||||
+19
-10
@@ -79,8 +79,11 @@ public class WeChatMpPayOrderHandler extends AbstractPayOrderHandler {
|
||||
}
|
||||
|
||||
JSONObject params = JSONUtil.parseObj(channel.getParam());
|
||||
WxPayApiConfig wx = WxPayApiConfig.builder().appId(channel.getAppId()).mchId(channel.getChannelMchId())
|
||||
.partnerKey(params.getStr("partnerKey")).build();
|
||||
WxPayApiConfig wx = WxPayApiConfig.builder()
|
||||
.appId(channel.getAppId())
|
||||
.mchId(channel.getChannelMchId())
|
||||
.partnerKey(params.getStr("partnerKey"))
|
||||
.build();
|
||||
|
||||
WxPayApiConfigKit.setThreadLocalWxPayApiConfig(wx);
|
||||
return channel;
|
||||
@@ -117,14 +120,20 @@ public class WeChatMpPayOrderHandler extends AbstractPayOrderHandler {
|
||||
WxPayApiConfig wxPayApiConfig = WxPayApiConfigKit.getWxPayApiConfig();
|
||||
|
||||
// 预订单参数
|
||||
Map<String, String> params = UnifiedOrderModel.builder().appid(wxPayApiConfig.getAppId())
|
||||
.mch_id(wxPayApiConfig.getMchId()).nonce_str(WxPayKit.generateStr()).body(goodsOrder.getGoodsName())
|
||||
.attach(TenantContextHolder.getTenantId().toString())
|
||||
.out_trade_no(String.valueOf(tradeOrder.getOrderId())).total_fee(goodsOrder.getAmount())
|
||||
.spbill_create_ip(ip)
|
||||
.notify_url(ChannelPayApiConfigKit.get().getNotifyUrl() + "/admin/notify/wx/callbak")
|
||||
.trade_type(TradeType.JSAPI.getTradeType()).openid(goodsOrder.getUserId()).build()
|
||||
.createSign(wxPayApiConfig.getPartnerKey(), SignType.HMACSHA256);
|
||||
Map<String, String> params = UnifiedOrderModel.builder()
|
||||
.appid(wxPayApiConfig.getAppId())
|
||||
.mch_id(wxPayApiConfig.getMchId())
|
||||
.nonce_str(WxPayKit.generateStr())
|
||||
.body(goodsOrder.getGoodsName())
|
||||
.attach(TenantContextHolder.getTenantId().toString())
|
||||
.out_trade_no(String.valueOf(tradeOrder.getOrderId()))
|
||||
.total_fee(goodsOrder.getAmount())
|
||||
.spbill_create_ip(ip)
|
||||
.notify_url(ChannelPayApiConfigKit.get().getNotifyUrl() + "/admin/notify/wx/callbak")
|
||||
.trade_type(TradeType.JSAPI.getTradeType())
|
||||
.openid(goodsOrder.getUserId())
|
||||
.build()
|
||||
.createSign(wxPayApiConfig.getPartnerKey(), SignType.HMACSHA256);
|
||||
|
||||
String xmlResult = WxPayApi.pushOrder(false, params);
|
||||
log.info("微信统一下单返回 {}", xmlResult);
|
||||
|
||||
+3
-3
@@ -102,16 +102,16 @@ public class WeChatPayNotifyCallbackHandler extends AbstractPayNotifyCallbakHand
|
||||
@Override
|
||||
public String parse(Map<String, String> params) {
|
||||
String tradeStatus = EnumUtil.fromString(TradeStatusEnum.class, params.get(PayConstants.RESULT_CODE))
|
||||
.getStatus();
|
||||
.getStatus();
|
||||
|
||||
String orderNo = params.get(PayConstants.OUT_TRADE_NO);
|
||||
PayGoodsOrder goodsOrder = goodsOrderService
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
goodsOrder.setStatus(tradeStatus);
|
||||
goodsOrderService.updateById(goodsOrder);
|
||||
|
||||
PayTradeOrder tradeOrder = tradeOrderService
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
tradeOrder.setPaySuccTime(LocalDateTime.now());
|
||||
tradeOrder.setStatus(tradeStatus);
|
||||
tradeOrder.setChannelOrderNo(params.get("transaction_id"));
|
||||
|
||||
+2
-2
@@ -86,9 +86,9 @@ public class YungouosMergePayNotifyCallbakHandler extends AbstractPayNotifyCallb
|
||||
String mergeCode = params.get(PayConstants.MERGE_CODE);
|
||||
String orderNo = params.get(PayConstants.MERGE_OUT_TRADE_NO);
|
||||
PayGoodsOrder goodsOrder = goodsOrderService
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
PayTradeOrder tradeOrder = tradeOrderService
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
|
||||
if (OrderStatusEnum.SUCCESS.getStatus().equals(mergeCode)) {
|
||||
goodsOrder.setStatus(OrderStatusEnum.SUCCESS.getStatus());
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-report-platform</artifactId>
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
<parent>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx</artifactId>
|
||||
<version>5.2.0-snapshot</version>
|
||||
<version>5.2.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>pigx-visual</artifactId>
|
||||
|
||||
Reference in new issue
Block a user