🔖 Releasing / Version tags. 5.2

🔖 Releasing / Version tags. 5.2
This commit is contained in:
lbw committed 2023-09-13 10:28:40 +08:00
1 parent 95371f54a8
commit 2c6a700154
100 files changed
+507 -439

No files matched your search

+1 -1
View File
@@ -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>
@@ -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);
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
@@ -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;
}
@@ -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;
}
@@ -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();
@@ -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));
}
@@ -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));
}
@@ -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())) {
@@ -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));
}
@@ -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);
}
@@ -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;
@@ -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;
}
@@ -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);
}
@@ -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;
@@ -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();
@@ -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) {
@@ -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());
@@ -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();
@@ -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());
+1 -1
View File
@@ -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>
@@ -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();
}
}
@@ -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());
@@ -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;
}
@@ -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;
}
@@ -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);
@@ -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"));
@@ -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());
+1 -1
View File
@@ -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
View File
@@ -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>