From 7555ae91dcee4eaf31a48392ff1f3694490ef40a Mon Sep 17 00:00:00 2001 From: xhxu Date: Sun, 12 Mar 2023 00:05:53 +0800 Subject: [PATCH] //msg --- .../controller/msg/WxMsgController.java | 31 +++-- .../V2023031100001__upd_Template.sql | 8 ++ .../iformall/controller/WxMsgController.java | 41 ++++-- .../controller/WxUserGrantController.java | 2 - .../schedule/CouponOrderNoticeSchedule.java | 2 +- .../java/com/iformall/common/ErrorCode.java | 2 + .../com/iformall/domain/po/WxTemplateMsg.java | 8 +- .../com/iformall/domain/po/msg/WxMsg.java | 2 +- .../com/iformall/enums/EnumTemplateType.java | 62 ++++++--- .../com/iformall/mapper/TtCUserMapper.java | 4 - .../com/iformall/mapper/WxCUserMapper.java | 4 - .../iformall/mapper/WxTemplateMsgMapper.java | 2 - .../com/iformall/service/TtCUserService.java | 1 - .../com/iformall/service/WxCUserService.java | 2 - .../iformall/service/WxOrderPressService.java | 2 - .../service/WxTemplateMsgService.java | 2 +- .../service/cuser/CUserServiceApapter.java | 2 - .../cuser/tt/TtBUserServiceAdapter.java | 5 - .../cuser/tt/TtCUserServiceAdapter.java | 9 -- .../cuser/wx/WxBUserServiceAdapter.java | 5 - .../cuser/wx/WxCUserServiceAdapter.java | 9 -- .../service/impl/TtCUserServiceImpl.java | 5 - .../service/impl/WxCUserServiceImpl.java | 5 - .../service/impl/WxCardSpendServiceImpl.java | 59 +++++++++ .../impl/WxCouponOrderServiceImpl.java | 73 ----------- .../impl/WxCreditHistoryServiceImpl.java | 2 +- .../service/impl/WxMsgServiceImpl.java | 25 +++- .../service/impl/WxOrderPressServiceImpl.java | 112 ----------------- .../impl/WxTemplateMsgServiceImpl.java | 64 +++++----- .../msg/impl/SendMpMsgServiceImpl.java | 77 +++++++----- .../msg/impl/SendSmartAppMsgServiceImpl.java | 118 +++++++++--------- .../main/resources/mapper/TtCUserMapper.xml | 32 +---- .../main/resources/mapper/WxCUserMapper.xml | 32 +---- .../resources/mapper/WxTemplateMsgMapper.xml | 16 +-- .../controller/msg/WxMsgController.java | 4 +- 35 files changed, 336 insertions(+), 493 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2023031100001__upd_Template.sql diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java b/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java index cef65c79e..29a745397 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java @@ -13,6 +13,7 @@ import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.WxMsg; import com.iformall.enums.EnumSendWay; import com.iformall.enums.EnumTemplateType; +import com.iformall.enums.EnumYesOrNo; import com.iformall.service.WxMsgService; import com.iformall.service.WxTemplateMsgService; import io.swagger.annotations.ApiImplicitParam; @@ -62,6 +63,13 @@ public class WxMsgController extends BaseController { return new ResultData(page); } + /** + * 可以主动推消息的订阅模板 + * @param wxTemplateMsg + * @param pageNum + * @param pageSize + * @return + */ @ApiOperation("模板分页列表接口") @GetMapping("templateList") @ApiImplicitParams({ @@ -76,10 +84,18 @@ public class WxMsgController extends BaseController { types.add(EnumTemplateType.ACTIVITY_REMIND.getCode()); types.add(EnumTemplateType.LIVE_REMIND.getCode()); wxTemplateMsg.setTypes(types); - final PageInfo page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize); + wxTemplateMsg.setOnOff(EnumYesOrNo.YES.getCode()); + final PageInfo page = wxTemplateMsgService.listAsPage(wxTemplateMsg, pageNum, pageSize); return new ResultData(page); } + /** + * 获取所有的微信订阅模板 + * @param wxTemplateMsg + * @param pageNum + * @param pageSize + * @return + */ @ApiOperation("模板分页列表接口") @GetMapping("templateListV1") @ApiImplicitParams({ @@ -90,18 +106,13 @@ public class WxMsgController extends BaseController { logger.debug("[" + getIpAddr() + "] WxMsgController::list"); if (null == wxTemplateMsg) wxTemplateMsg = new WxTemplateMsg(); wxTemplateMsg.updateTenantInfo(getTenantInfo()); - List types = new ArrayList<>(); - types.add(EnumTemplateType.ACTIVITY_REMIND.getCode()); - types.add(EnumTemplateType.LIVE_REMIND.getCode()); - types.add(EnumTemplateType.CREDIT_UPD_REMIND.getCode()); - types.add(EnumTemplateType.SEND_COUPON_REMIND.getCode()); - wxTemplateMsg.setTypes(types); - final PageInfo page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize); + wxTemplateMsg.setTypes(EnumTemplateType.getWxList()); + final PageInfo page = wxTemplateMsgService.listAsPage(wxTemplateMsg, pageNum, pageSize); return new ResultData(page); } @ApiOperation("修改模板接口") - @PostMapping("tempUpd") + @PostMapping("tempUpdStatus") @SystemControllerLog(description = "moban xiugai") public ResultData tempUpd(@RequestBody WxTemplateMsg wxTemplateMsg) { logger.debug("[" + getIpAddr() + "] WxMsgController::tempUpd"); @@ -112,7 +123,7 @@ public class WxMsgController extends BaseController { // if(null == wxTemplateMsg.getOnOff()){ // wxTemplateMsg.setOnOff(1); // } - wxTemplateMsgService.saveOrUpdate(wxTemplateMsg); + wxTemplateMsgService.tempUpdStatus(wxTemplateMsg); return new ResultData(); } diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023031100001__upd_Template.sql b/mallinkAdmin/src/main/resources/db/migration/V2023031100001__upd_Template.sql new file mode 100644 index 000000000..f1a9a571d --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2023031100001__upd_Template.sql @@ -0,0 +1,8 @@ +delete from wx_template_msg where type in (1,2,3); + +ALTER TABLE `mallink`.`wx_template_msg` +MODIFY COLUMN `on_off` smallint(2) NOT NULL DEFAULT 0 COMMENT '是否打开' AFTER `update_date`, +ADD COLUMN `sync_status` smallint(2) NOT NULL DEFAULT 0 COMMENT '是否同步' AFTER `on_off`; + +update wx_template_msg set on_off = 1 where template_id is not null and template_id != ''; +update wx_template_msg set sync_status = 1 where template_id is not null and template_id != ''; \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxMsgController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxMsgController.java index 421886881..67220a0ec 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxMsgController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxMsgController.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxTemplateMsg; import com.iformall.enums.EnumTemplateType; +import com.iformall.enums.EnumYesOrNo; import com.iformall.service.WxTemplateMsgService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -14,7 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** @@ -37,15 +40,12 @@ public class WxMsgController extends BaseController { logger.debug("[" + getIpAddr() + "] WxMsgController::list"); if (null == wxTemplateMsg) wxTemplateMsg = new WxTemplateMsg(); wxTemplateMsg.updateTenantInfo(getTenantInfo()); - List types = new ArrayList<>(); - types.add(EnumTemplateType.ACTIVITY_REMIND.getCode()); - types.add(EnumTemplateType.LIVE_REMIND.getCode()); - types.add(EnumTemplateType.CREDIT_UPD_REMIND.getCode()); - types.add(EnumTemplateType.SEND_COUPON_REMIND.getCode()); - wxTemplateMsg.setTypes(types); - wxTemplateMsg.setIsc(true); - final PageInfo page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize); - return new ResultData(page); + wxTemplateMsg.setTypes(EnumTemplateType.getWxList()); + wxTemplateMsg.setOnOff(EnumYesOrNo.YES.getCode()); + List list = wxTemplateMsgService.findList(wxTemplateMsg); + //微信订阅消息一次只支持3个 + + return new ResultData(createRandomList(list,3)); } @ApiOperation("模板分页列表接口") @@ -60,9 +60,26 @@ public class WxMsgController extends BaseController { List types = new ArrayList<>(); types.add(EnumTemplateType.TT_SEND_COUPON_REMIND.getCode()); wxTemplateMsg.setTypes(types); - wxTemplateMsg.setIsc(true); - final PageInfo page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize); - return new ResultData(page); + wxTemplateMsg.setOnOff(EnumYesOrNo.YES.getCode()); + List list = wxTemplateMsgService.findList(wxTemplateMsg); + return new ResultData(list); + } + + private static List createRandomList(List list, int n) { + Map map = new HashMap(); + List listNew = new ArrayList(); + if (list.size() <= n) { + return list; + } else { + while (map.size() < n) { + int random = (int) (Math.random() * list.size()); + if (!map.containsKey(random)) { + map.put(random, ""); + listNew.add(list.get(random)); + } + } + return listNew; + } } } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 7c521b0d9..4e00b65f9 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -784,8 +784,6 @@ public class WxUserGrantController extends BaseController { @PostMapping("/updateMsg") @ApiOperation(value = "updateMsg", notes = "{\"id\":\"string\"}") public ResultData updateMsg() { - CUser user = getCUser(); - cuserFactory.getCUserService(user.getAppPlat()).updateMsgCount(user); return new ResultData(); } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderNoticeSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderNoticeSchedule.java index fc784a541..af8c55f4e 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderNoticeSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderNoticeSchedule.java @@ -91,7 +91,7 @@ public class CouponOrderNoticeSchedule { temp.updateTenantInfo(mall); temp.setType(EnumTemplateType.SEND_COUPON_REMIND.getCode()); temp = wxTemplateMsgService.getByObj(temp); - if(temp.getId() != null){ + if(temp != null){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); WxMsg msg = new WxMsg(); msg.updateTenantInfo(mall); diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index c9e904ac5..ab1e6bdd0 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -408,6 +408,8 @@ public enum ErrorCode{ TEMPLATE_FORMID_NOT_FOUND(12091, "formId不存在"), TEMPLATE_DATA_ERROR(12092, "数据格式错误"), TEMPLATE_ADD_ERROR(12093, "添加模板错误"), + TEMPLATE_IS_CREATE(12094, "模板已同步"), + TEMPLATE_NOT_CREATE(12095, "模板已同步"), /** * diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java index 0c73492b9..6bad67eaf 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java @@ -26,9 +26,12 @@ public class WxTemplateMsg extends TenantEntity { private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; - @io.swagger.annotations.ApiModelProperty(value="消息开关(0/1)",name="onOff") + @io.swagger.annotations.ApiModelProperty(value="是否打开",name="onOff") private Integer onOff; + @io.swagger.annotations.ApiModelProperty(value="是否同步",name="syncStatus") + private Integer syncStatus; + @io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息, 101:公众号审核结果消息, 102:公众号卡券核销消息",name="type") @TableField(exist = false) private String typeName; @@ -36,9 +39,6 @@ public class WxTemplateMsg extends TenantEntity { @TableField(exist = false) private List types; - @TableField(exist = false) - private boolean isc; - public String getTypeName(){ if(this.getType() != null) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/WxMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/WxMsg.java index 14518a7a4..fcfb1ad25 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/WxMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/WxMsg.java @@ -41,7 +41,7 @@ public class WxMsg extends BaseMsg { private Integer errorNumber; @io.swagger.annotations.ApiModelProperty(value = "", name = "returnResult") private String returnResult; - @io.swagger.annotations.ApiModelProperty(value = "", name = "phones") + @io.swagger.annotations.ApiModelProperty(value = "兼容openIDS", name = "phones") private String phones; @io.swagger.annotations.ApiModelProperty(value = "", name = "signature") private String signature; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java b/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java index 3759b4384..90095ca3a 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java @@ -1,29 +1,35 @@ package com.iformall.enums; +import com.google.common.collect.Lists; + +import java.util.ArrayList; +import java.util.List; + /** * Created by Stormeye on 2018/08/09. */ public enum EnumTemplateType { - // 1-核销成功消息, 2-核销失败消息 - - VERIFY_SUCCESS(1, "核销成功消息",""), // 小程序(作废) - VERIFY_FAIL(2, "核销失败消息",""), // 小程序(作废) - PRESS_SUCCESS(3, "砍价成功消息",""), // 小程序(作废) - /** - * + * 微信小程序订阅消息 */ - ACTIVITY_REMIND(4, "活动开始提醒","386"), // 小程序 - LIVE_REMIND(5, "直播开播提醒","8501"), // 小程序 - CREDIT_UPD_REMIND(50, "积分变更提醒","310"), // 小程序 - SEND_COUPON_REMIND(51, "优惠券到账提醒","3209"), // 小程序 + ACTIVITY_REMIND(4, "活动开始提醒","386", Lists.newArrayList(13, 5, 12, 1, 11)), // 小程序 + LIVE_REMIND(5, "直播开播提醒","8501",Lists.newArrayList(1, 3, 4, 5)), // 小程序 + CREDIT_UPD_REMIND(50, "积分变更提醒","310",Lists.newArrayList(1, 2, 4, 3)), // 小程序 + SEND_COUPON_REMIND(51, "优惠券到账提醒","3209",Lists.newArrayList(1, 3, 4, 5)), // 小程序 + CARD_BALANCE_CHANGE(52, "账户余额变动提醒","4148",Lists.newArrayList(7, 1, 2, 4, 6)), // 小程序 - TT_SEND_COUPON_REMIND(60, "优惠券到账提醒",""), // 抖音小程序 + /** + * 抖音小程序订阅消息 + */ + TT_SEND_COUPON_REMIND(60, "优惠券到账提醒","",null), // 抖音小程序 - AUDIT_MESSAGE(101, "公众号审核结果通知",""), // 公众号 - VERIFY_RESULT(102, "公众号卡券核销通知",""), // 公众号 - GIFT_MESSAGE(103, "公众号购票成功通知",""), // 公众号 + /** + * 公众号消息 + */ + AUDIT_MESSAGE(101, "公众号审核结果通知","",null), // 公众号 + VERIFY_RESULT(102, "公众号卡券核销通知","",null), // 公众号 + GIFT_MESSAGE(103, "公众号购票成功通知","",null), // 公众号 ; public static EnumTemplateType getEnum(Integer code) { @@ -38,11 +44,13 @@ public enum EnumTemplateType { private Integer code; private String message; private String tid; + private List param; - EnumTemplateType(Integer code, String message, String tid) { + EnumTemplateType(Integer code, String message, String tid,List param) { this.code = code; this.message = message; this.tid = tid; + this.param = param; } public Integer getCode() { @@ -56,4 +64,26 @@ public enum EnumTemplateType { public String getTid() { return tid; } + + public List getParam() { + return param; + } + + public static List getWxList(){ + List wxList = new ArrayList<>(); + wxList.add(ACTIVITY_REMIND.getCode()); + wxList.add(LIVE_REMIND.getCode()); + wxList.add(CREDIT_UPD_REMIND.getCode()); + wxList.add(SEND_COUPON_REMIND.getCode()); + wxList.add(CARD_BALANCE_CHANGE.getCode()); + return wxList; + } + + public static List getWxOfficialList(){ + List wxList = new ArrayList<>(); + wxList.add(AUDIT_MESSAGE.getCode()); + wxList.add(VERIFY_RESULT.getCode()); + wxList.add(GIFT_MESSAGE.getCode()); + return wxList; + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtCUserMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtCUserMapper.java index 0f5865590..d8fbd308d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/TtCUserMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/TtCUserMapper.java @@ -36,10 +36,6 @@ public interface TtCUserMapper extends CommonMapper { List listOpenId(TtCUser record); - void updateMsgCount(TtCUser record); - -// void updateMsgCountDown(@Param("tenantId")String tenantId, @Param("openId")String openId); - List findOpenIdList(@Param("userId")Long userId, @Param("tenantId")String tenantId); List findTokenList(@Param("id")Long id,@Param("userId")Long userId, @Param("tenantId")String tenantId); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java index 41d3a1c64..87e96302d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java @@ -36,10 +36,6 @@ public interface WxCUserMapper extends CommonMapper { List listOpenId(WxCUser record); - void updateMsgCount(WxCUser user); - -// void updateMsgCountDown(@Param("tenantId")String tenantId, @Param("openId")String openId); - String findOpenId(@Param("userId")Long userId, @Param("tenantId")String tenantId); Long findCuserId(@Param("userId")Long userId, @Param("tenantId")String tenantId); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxTemplateMsgMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxTemplateMsgMapper.java index fca40f672..7d2adf57d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxTemplateMsgMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxTemplateMsgMapper.java @@ -7,6 +7,4 @@ import com.iformall.domain.po.WxTemplateMsg; public interface WxTemplateMsgMapper extends CommonMapper { List findList(WxTemplateMsg wxTemplateMsg); - - List findListForMiniApp(WxTemplateMsg record); } diff --git a/mallinkService/src/main/java/com/iformall/service/TtCUserService.java b/mallinkService/src/main/java/com/iformall/service/TtCUserService.java index 301c64dac..01072f450 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtCUserService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtCUserService.java @@ -125,5 +125,4 @@ public interface TtCUserService { void delForUserIdOnly(Long id, Long userId, String tenantId); - void updateMsgCount(TtCUser user); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserService.java index 85b0ac4da..c5b94719b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserService.java @@ -135,7 +135,5 @@ public interface WxCUserService { void delForUserIdOnly(Long id, Long userId, String tenantId); - void updateMsgCount(WxCUser user); - void updateAuthorizeStateByOpenId(WxCUser updCuser); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderPressService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderPressService.java index f59b0fc21..64d0d7d15 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderPressService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderPressService.java @@ -57,7 +57,5 @@ public interface WxOrderPressService { int pressCouponStatus(WxOrder order, Long cUserId); boolean checkCUserHasJoin(WxOrder order, Long cUserId); - - void sendPressComplateMsg(WxOrder orderUpdatePress); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxTemplateMsgService.java b/mallinkService/src/main/java/com/iformall/service/WxTemplateMsgService.java index b5d420c16..b9e54ce6d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxTemplateMsgService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxTemplateMsgService.java @@ -61,5 +61,5 @@ public interface WxTemplateMsgService { ResultData pushTemp(WxTemplateMsg wxTemplateMsg); - PageInfo listAsPageForMiniApp(WxTemplateMsg wxTemplateMsg, Integer pageNum, Integer pageSize); + ResultData tempUpdStatus(WxTemplateMsg wxTemplateMsg); } diff --git a/mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java b/mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java index 147a3bf8f..c45189f59 100644 --- a/mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java +++ b/mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java @@ -41,8 +41,6 @@ public interface CUserServiceApapter { void updateExtInfo(CUser user); - void updateMsgCount(CUser user); - long findCount(WxCUserBasicInfoDto dto); List findCountHistory(WxCUserBasicInfoDto dto); diff --git a/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtBUserServiceAdapter.java b/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtBUserServiceAdapter.java index da0962ea6..876ec32f5 100644 --- a/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtBUserServiceAdapter.java +++ b/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtBUserServiceAdapter.java @@ -246,11 +246,6 @@ public class TtBUserServiceAdapter extends BasicCUserService implements CUserSer cleanCuserToken(user.getToken()); } - @Override - public void updateMsgCount(CUser user) { - - } - @Override public long findCount(WxCUserBasicInfoDto dto) { return 0l; diff --git a/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java b/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java index 91f01efd3..7019e6b7b 100644 --- a/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java +++ b/mallinkService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java @@ -309,15 +309,6 @@ public class TtCUserServiceAdapter extends BasicCUserService implements CUserSer cleanCuserToken(user.getToken()); } - @Override - public void updateMsgCount(CUser user) { -// TtCUser userL = new TtCUser(); -// userL.setId(user.getId()); -// userL.updateTenantInfo(user); -// ttCUserMapper.updateMsgCount(userL); - ttCUserMapper.updateMsgCount((TtCUser) user); - } - @Override public long findCount(WxCUserBasicInfoDto dto) { TenantEntity tenantEntity = new TenantEntity(); diff --git a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java index 5cfff49c0..26a028499 100644 --- a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java +++ b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java @@ -250,11 +250,6 @@ public class WxBUserServiceAdapter extends BasicCUserService implements CUserSer cleanCuserToken(user.getToken()); } - @Override - public void updateMsgCount(CUser user) { - - } - @Override public long findCount(WxCUserBasicInfoDto dto) { return 0l; diff --git a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java index 61ebdcdd6..0347dec9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java +++ b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java @@ -322,15 +322,6 @@ public class WxCUserServiceAdapter extends BasicCUserService implements CUserSer cleanCuserToken(user.getToken()); } - @Override - public void updateMsgCount(CUser user) { -// WxCUser userL = new WxCUser(); -// userL.setId(user.getId()); -// userL.updateTenantInfo(user); -// wxCUserMapper.updateMsgCount(userL); - wxCUserMapper.updateMsgCount((WxCUser) user); - } - @Override public long findCount(WxCUserBasicInfoDto dto) { TenantEntity tenantEntity = new TenantEntity(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCUserServiceImpl.java index a2d53a2a5..60db2ed6d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCUserServiceImpl.java @@ -259,9 +259,4 @@ public class TtCUserServiceImpl implements TtCUserService { ttCUserMapper.delForUserIdOnly(id,userId,tenantId); } - @Override - public void updateMsgCount(TtCUser user) { - ttCUserMapper.updateMsgCount(user); - } - } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java index 6b9656e9c..c4d82a40f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java @@ -341,11 +341,6 @@ public class WxCUserServiceImpl implements WxCUserService { wxCUserMapper.delForUserIdOnly(id,userId,tenantId); } - @Override - public void updateMsgCount(WxCUser user) { - wxCUserMapper.updateMsgCount(user); - } - @Override public void updateAuthorizeStateByOpenId(WxCUser updCuser) { wxCUserMapper.updateAuthorizeStateByOpenId(updCuser); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index b2c6e60b6..d48863941 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -1,5 +1,6 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSONObject; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; @@ -11,6 +12,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.msg.WxMsg; import com.iformall.domain.vo.PromotionCalc; import com.iformall.domain.vo.WxCardSpendMerchantVo; import com.iformall.domain.vo.WxCardSpendVo; @@ -37,6 +39,7 @@ import javax.servlet.http.HttpServletResponse; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -98,12 +101,21 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { @Lazy @Autowired WxCashOutService wxCashOutService; + + @Autowired + WxTemplateMsgService wxTemplateMsgService; + + @Autowired + WxMsgService wxMsgService; @Autowired WxCouponChannelMapper wxCouponChannelMapper; @Autowired WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + + @Autowired + WxCUserMapper wxCUserMapper; @Override public WxCouponMerchant checkMerchantInCoupon(WxCardInfo cardInfo, Long merchantId) { @@ -302,6 +314,8 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } } + sendCardBalanceChange(coupon,record); + if (null != orderUpdate.getCUserId() && Constant.defaultCUserId != orderUpdate.getCUserId()) { // 成长值 try { @@ -337,6 +351,51 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { return new ResultData(record); } + /** + * 卡余额变动订阅消息 + */ + private void sendCardBalanceChange(WxCoupon coupon,WxCardSpend cardSpend){ + try { + if(cardSpend.getOwnerId() == null){ + return; + } + WxCUser wcuQ = new WxCUser(); + wcuQ.updateTenantInfo(coupon); + wcuQ.setUserId(cardSpend.getOwnerId()); + String openId = wxCUserMapper.findOpenId(cardSpend.getOwnerId(), coupon.getTenantId()); + if(StringUtils.isBlank(openId)){ + return; + } + WxTemplateMsg temp = new WxTemplateMsg(); + temp.updateTenantInfo(coupon); + temp.setType(EnumTemplateType.CARD_BALANCE_CHANGE.getCode()); + temp = wxTemplateMsgService.getByObj(temp); + if(temp == null){ + return; + } + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + WxMsg msg = new WxMsg(); + msg.updateTenantInfo(coupon); + msg.setPhones(openId); + msg.setModelId(temp.getId()); + + Map map = new HashMap<>(); + map.put("thing7",coupon.getTitle()); + map.put("amount1",cardSpend.getPaymentStr()); + map.put("amount2",cardSpend.getCardRemainAmountStr()); + map.put("date4",dateFormat.format(cardSpend.getCreateDate())); + WxMerchant merchant = wxMerchantMapper.selectById(cardSpend.getMerchantId()); + map.put("thing6","商户【"+merchant.getName()+"】消费"); + map.put("goToPage","pages/index/index?type=ca"); + + msg.setMsg(JSONObject.toJSONString(map)); + wxMsgService.batchSendAppinfo(msg); + } catch (Exception e) { +// e.printStackTrace(); + logger.error("卡余额变动消息发送异常"); + } + } + public void creteMerchantSubsidy(WxCardSpend record, Date curDate, IdWorker idWorker, WxCoupon coupon, Integer payment) { WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 02c1eb2db..ae0309e55 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -2272,79 +2272,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } - private void doVerifySuccessMsg(WxCouponOrder couponOrder, String formId, WxCoupon coupon, WxMerchant merchant, WxCUser user, SimpleDateFormat dateFormat, String couponDetail, String gotopage) { - SmartAppMsg smartAppMsg; - /** - * 核销成功消息 - * 核销金额 {{keyword1.DATA}} - * 商家名称 {{keyword2.DATA}} - * 商品 {{keyword3.DATA}} - * 商品描述 {{keyword4.DATA}} - * 订单金额 {{keyword5.DATA}} - * 核销时间 {{keyword6.DATA}} - * 温馨提示 {{keyword7.DATA}} - */ - smartAppMsg = new SmartAppMsg(); -// smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); - smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP_TO.getCode()); - smartAppMsg.setAppId(user.getAppId()); - smartAppMsg.updateTenantInfo(couponOrder); - smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_SUCCESS.getCode()); - smartAppMsg.setGotopage(gotopage); - smartAppMsg.setTo(user.getOpenId()); - smartAppMsg.setFormId(formId); - smartAppMsg.setDataList(Lists.newArrayList( - coupon.getPriceStr(), - merchant.getName(), - coupon.getTitle(), - couponDetail, - coupon.getSalePriceStr(), - dateFormat.format(new Date()), - user.getNickName() - )); - - try { - //mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); - } catch (Exception e) { - logger.error("支付通知发送失败: " + e.getMessage()); - throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); - } - } - - private void doVerifyFailMsg(WxCouponOrder couponOrder, String formId, WxCoupon coupon, WxCUser user, SimpleDateFormat dateFormat, String couponDetail, String gotopage) { - - SmartAppMsg smartAppMsg; /** - * 核销失败消息 - * 商品名称 {{keyword1.DATA}} - * 核销时间 {{keyword2.DATA}} - * 失败原因 {{keyword3.DATA}} - * 备注 {{keyword4.DATA}} - */ - smartAppMsg = new SmartAppMsg(); -// smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); - smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP_TO.getCode()); - smartAppMsg.setAppId(user.getAppId()); - smartAppMsg.updateTenantInfo(couponOrder); - smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_FAIL.getCode()); - smartAppMsg.setGotopage(gotopage); - smartAppMsg.setTo(user.getOpenId()); - smartAppMsg.setReceiver(user.getOpenId()); - smartAppMsg.setFormId(formId); - smartAppMsg.setDataList(Lists.newArrayList( - coupon.getTitle(), - dateFormat.format(new Date()), - "核销失败", - user.getNickName() - )); - - try { -// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); - } catch (Exception e) { - logger.error("支付通知发送失败: " + e.getMessage()); - throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); - } - } - @Override public List queryPriceTotalGroup(TenantEntity tenantEntity, Date startTime, Date endTime) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 970486154..584900756 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -670,7 +670,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { temp.setTenantId(tenantId); temp.setType(EnumTemplateType.CREDIT_UPD_REMIND.getCode()); temp = wxTemplateMsgService.getByObj(temp); - if(temp.getId() != null){ + if(temp != null){ String openId = wxCUserMapper.findOpenId(wxCUserBasicInfo.getId(),tenantId); if(StringUtils.isNotBlank(openId)){ WxMsg msg = new WxMsg(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java index a371a80ee..6801df32c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java @@ -1,6 +1,7 @@ package com.iformall.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; @@ -392,10 +393,10 @@ public class WxMsgServiceImpl implements WxMsgService { smartAppMsg.setAppId(cAppInfo.getAppId()); WxTemplateMsg wxTemplateMsg = wxTemplateMsgMapper.selectById(wxMsg.getModelId()); -// if(1 == wxTemplateMsg.getOnOff().intValue()){ -// logger.error("订阅消息模板关闭。"); -// return; -// } + if(wxTemplateMsg == null || !EnumYesOrNo.YES.getCode().equals(wxTemplateMsg.getOnOff())){ + logger.error("未找到订阅消息模板或模板未启用。"); + return; + } smartAppMsg.setTemplateType(wxTemplateMsg.getType()); JSONObject customParam = JSON.parseObject(wxMsg.getMsg()); @@ -404,6 +405,7 @@ public class WxMsgServiceImpl implements WxMsgService { goToPage = "pages/index/index?type=in";//默认首页 } smartAppMsg.setGotopage(goToPage); + if(wxTemplateMsg.getType() == EnumTemplateType.ACTIVITY_REMIND.getCode()){ /** * 活动名称:{{thing13.DATA}} @@ -458,6 +460,21 @@ public class WxMsgServiceImpl implements WxMsgService { customParam.getString("time4"), customParam.getString("thing5") )); + }else if(wxTemplateMsg.getType() == EnumTemplateType.CARD_BALANCE_CHANGE.getCode()){ + /** + * 账户名称{{thing7.DATA}} + * 变动金额{{amount1.DATA}} + * 账户余额{{amount2.DATA}} + * 时间{{date4.DATA}} + * 变动原因{{thing6.DATA}} + */ + smartAppMsg.setDataList(Lists.newArrayList( + customParam.getString("thing7"), + customParam.getString("amount1"), + customParam.getString("amount2"), + customParam.getString("date4"), + customParam.getString("thing6") + )); }else{ return; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderPressServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderPressServiceImpl.java index 62bd24405..a766773a1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderPressServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderPressServiceImpl.java @@ -141,118 +141,6 @@ public class WxOrderPressServiceImpl implements WxOrderPressService { } return EnumOrderPressStatus.NOT_JOIN.getCode(); } - - /** - * 微信模板消息 - * - * @param - */ - @Override - public void sendPressComplateMsg(WxOrder orderUpdatePress) { - // 1. get order info - WxOrder order = wxOrderMapper.selectById(orderUpdatePress.getId(),orderUpdatePress.getTenantId()); - if (order == null) { - logger.error("找不到订单信息"); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); - } - // 2. get coupon info - WxCoupon coupon = wxCouponMapper.selectById(order.getProductId(),order.getTenantId()); - if (order == null) { - logger.error("找不到券信息"); - throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); - } - // 3. get user info - WxCUser user = null; - WxCUser wcuQ = new WxCUser(); - wcuQ.updateTenantInfo(order); - wcuQ.setUserId(order.getCUserId()); - List list = userMapper.findList(wcuQ); - if(list != null && list.size() > 0){ - user = list.get(0); - } - if (user == null) { - logger.error("找不到C端用户"); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } - - String gotopage = Constant.mainPageUrl + "?type=mb"; - - // 小程序 消息 - String formId = null; - Date curDate = new Date(); - Date dateAfter7Day = DateUtils.getHourTimeAfter(7, order.getCreateDate()); - if(StringUtils.isNotBlank(order.getFormId()) && curDate.before(dateAfter7Day) - && !order.getFormId().equalsIgnoreCase(Constant.UNDEFINED)) { - formId = order.getFormId(); - } - int formType = EnumMsgLimitType.WEAPP_FORMID.getCode(); - - if(StringUtils.isBlank(formId)) { - logger.error("无可用formId, 不能发小程序模板消息"); - return; - } - - // 9. 微信小程序-模板消息 - /** - * 检查 小程序模板消息是否超限 - */ -// WxMsgLimit msgLimit = new WxMsgLimit(); -// msgLimit.updateTenantInfo(user); -// msgLimit.setType(formType); -// msgLimit.setLimitId(formId); -// if(wxMsgLimitService.checkIsLimit(msgLimit)) { -// // 已达到限制条件,不发消息了 -// logger.error("已达到限制条件,不发小程序模板消息了: " + user.getId()); -// return; -// } -// // mq发送小程序消息 - 核销成功消息 -// doPressSuccessMsg(coupon, user, formId, gotopage); - } - - private void doPressSuccessMsg(WxCoupon coupon, WxCUser user, String formId, String gotopage) { - SmartAppMsg smartAppMsg; - /** - * 砍价成功消息 - * 商品名称 {{keyword1.DATA}} - * 商品原价 {{keyword2.DATA}} - * 付款剩余时间 {{keyword3.DATA}} - * 支付截止时间 {{keyword4.DATA}} - * 支付金额 {{keyword5.DATA}} - * 温馨提示 {{keyword6.DATA}} - */ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) +1);// 让日期加1h - System.out.println(calendar.get(Calendar.DATE));// 加1之后的日期Top - System.out.println(); - smartAppMsg = new SmartAppMsg(); -// smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); - smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP_TO.getCode()); - smartAppMsg.setAppId(user.getAppId()); - smartAppMsg.setTenantId(user.getTenantId()); - smartAppMsg.setTemplateType(EnumTemplateType.PRESS_SUCCESS.getCode()); - smartAppMsg.setGotopage(gotopage); - smartAppMsg.setTo(user.getOpenId()); - smartAppMsg.setFormId(formId); - smartAppMsg.setDataList(Lists.newArrayList( - coupon.getTitle(), - coupon.getPriceStr(), - "1小时", - new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()), - coupon.getSalePriceStr(), - user.getNickName() - )); - - try { -// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); - } catch (Exception e) { - logger.error("砍价成功通知发送失败: " + e.getMessage()); - throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); - } - } - - - } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java index 4d4f79ec4..37e4f4153 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java @@ -13,6 +13,7 @@ import com.iformall.domain.po.WxTemplateMsg; import com.iformall.enums.EnumAppPlat; import com.iformall.enums.EnumPayWay; import com.iformall.enums.EnumTemplateType; +import com.iformall.enums.EnumYesOrNo; import com.iformall.mapper.WxTemplateMsgMapper; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxTemplateMsgService; @@ -69,6 +70,11 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService { wxTemplateMsg.setType(EnumTemplateType.SEND_COUPON_REMIND.getCode()); wxTemplateMsg.setCustomParam("{\"index\": [\"thing1\", \"time3\", \"time4\", \"thing5\"], \"emphasis\": \"\"}"); wxTemplateMsgMapper.insert(wxTemplateMsg); + +// wxTemplateMsg.setId(null); +// wxTemplateMsg.setType(EnumTemplateType.CARD_BALANCE_CHANGE.getCode()); +// wxTemplateMsg.setCustomParam("{\"index\": [\"thing7\", \"amount1\", \"amount2\", \"amount4\", \"thing6\"], \"emphasis\": \"\"}"); +// wxTemplateMsgMapper.insert(wxTemplateMsg); } @Override @@ -119,40 +125,21 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService { if(byId == null){ return new ResultData(ErrorCode.TEMPLATE_NOT_FOUND); } - WxAppinfo appinfo = wxAppinfoService.getCAppInfo(wxTemplateMsg, EnumAppPlat.WX); - WxMaService wxMaService = null; - if(isFmOpen) { - wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appinfo.getAppId()); - } else { - wxMaService = maUtil.getWeappService(appinfo); + if(EnumYesOrNo.YES.getCode().equals(byId.getSyncStatus())){ + return new ResultData(ErrorCode.TEMPLATE_IS_CREATE); } String s = ""; - if(byId.getType() == EnumTemplateType.ACTIVITY_REMIND.getCode()){ - try { - s = wxMaService.getSubscribeService().addTemplate(EnumTemplateType.ACTIVITY_REMIND.getTid(), - Lists.newArrayList(13, 5, 12, 1, 11), EnumTemplateType.ACTIVITY_REMIND.getMessage()); - } catch (WxErrorException e) { - return new ResultData(ErrorCode.TEMPLATE_ADD_ERROR); - } - - }else if(byId.getType() == EnumTemplateType.LIVE_REMIND.getCode()){ - try { - s = wxMaService.getSubscribeService().addTemplate(EnumTemplateType.LIVE_REMIND.getTid(), - Lists.newArrayList(1, 3, 4, 5),EnumTemplateType.LIVE_REMIND.getMessage()); - } catch (WxErrorException e) { - return new ResultData(ErrorCode.TEMPLATE_ADD_ERROR); - } - }else if(byId.getType() == EnumTemplateType.CREDIT_UPD_REMIND.getCode()){ - try { - s = wxMaService.getSubscribeService().addTemplate(EnumTemplateType.CREDIT_UPD_REMIND.getTid(), - Lists.newArrayList(1, 2, 4, 3),EnumTemplateType.CREDIT_UPD_REMIND.getMessage()); - } catch (WxErrorException e) { - return new ResultData(ErrorCode.TEMPLATE_ADD_ERROR); + if(EnumTemplateType.getWxList().contains(byId.getType())){ + WxAppinfo appinfo = wxAppinfoService.getCAppInfo(wxTemplateMsg, EnumAppPlat.WX); + WxMaService wxMaService = null; + if(isFmOpen) { + wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appinfo.getAppId()); + } else { + wxMaService = maUtil.getWeappService(appinfo); } - }else if(byId.getType() == EnumTemplateType.SEND_COUPON_REMIND.getCode()){ try { - s = wxMaService.getSubscribeService().addTemplate(EnumTemplateType.SEND_COUPON_REMIND.getTid(), - Lists.newArrayList(1, 3, 4, 5),EnumTemplateType.SEND_COUPON_REMIND.getMessage()); + EnumTemplateType typeEnum = EnumTemplateType.getEnum(byId.getType()); + s = wxMaService.getSubscribeService().addTemplate(typeEnum.getTid(),typeEnum.getParam(),typeEnum.getMessage()); } catch (WxErrorException e) { return new ResultData(ErrorCode.TEMPLATE_ADD_ERROR); } @@ -164,13 +151,26 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService { } wxTemplateMsg.setTemplateId(s); + wxTemplateMsg.setSyncStatus(EnumYesOrNo.YES.getCode()); this.saveOrUpdate(wxTemplateMsg); return new ResultData(); } @Override - public PageInfo listAsPageForMiniApp(WxTemplateMsg record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxTemplateMsgMapper.findListForMiniApp(record)); + public ResultData tempUpdStatus(WxTemplateMsg wxTemplateMsg) { + WxTemplateMsg byId = this.getById(wxTemplateMsg.getId()); + if(byId == null){ + return new ResultData(ErrorCode.TEMPLATE_NOT_FOUND); + } + if(!EnumYesOrNo.YES.getCode().equals(byId.getSyncStatus())){ + return new ResultData(ErrorCode.TEMPLATE_NOT_CREATE); + } + WxTemplateMsg updStatus = new WxTemplateMsg(); + updStatus.setId(wxTemplateMsg.getId()); + updStatus.updateTenantInfo(wxTemplateMsg); + updStatus.setOnOff(wxTemplateMsg.getOnOff()); + this.saveOrUpdate(updStatus); + return new ResultData(); } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendMpMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendMpMsgServiceImpl.java index b8dce4782..d00cce2d7 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendMpMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendMpMsgServiceImpl.java @@ -1,5 +1,7 @@ package com.iformall.service.msg.impl; +import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; +import cn.binarywang.wx.miniapp.constant.WxMaConstants; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -8,6 +10,8 @@ import com.iformall.domain.po.WxTemplateMsg; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.BaseMsg; import com.iformall.domain.po.msg.MpAppMsg; +import com.iformall.enums.EnumTemplateType; +import com.iformall.enums.EnumYesOrNo; import com.iformall.mapper.WxTemplateMsgMapper; import com.iformall.service.msg.MsgSendService; import com.iformall.service.wechat.FmOpenService; @@ -39,53 +43,62 @@ public class SendMpMsgServiceImpl implements MsgSendService { @Override public void send(BaseMsg baseMsg) throws Exception{ MpAppMsg mpAppMsg = (MpAppMsg)baseMsg; - WxTemplateMsg msg = null; TenantEntity tenantEntity = mpAppMsg.getTenantInfo(); - WxMpService wxMpService = openService.getWxOpenComponentService().getWxMpServiceByAppid(mpAppMsg.getAppId()); - // 查询信息模板 WxTemplateMsg msgQ = new WxTemplateMsg(); msgQ.updateTenantInfo(tenantEntity); msgQ.setType(mpAppMsg.getTemplateType()); - try { - msg = wxTemplateMsgMapper.selectOne(new QueryWrapper(msgQ)); - } catch (Exception e) { - logger.error("公众号消息模板错误: " + e.getMessage()); + msgQ.setOnOff(EnumYesOrNo.YES.getCode()); + List list = wxTemplateMsgMapper.findList(msgQ); + WxTemplateMsg msg = null; + if (list.size() > 0) { + msg = list.get(0); } if (msg == null) { logger.error("找不到模板Id"); - //throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); return; } - JSONObject customParam = JSON.parseObject(msg.getCustomParam()); - String url = customParam.getString("url"); + if(EnumTemplateType.getWxOfficialList().contains(msg.getType())){ + WxMpService wxMpService = openService.getWxOpenComponentService().getWxMpServiceByAppid(mpAppMsg.getAppId()); + JSONObject customParam = JSON.parseObject(msg.getCustomParam()); + String url = customParam.getString("url"); - // build template data list - List dataTempList = new ArrayList<>(); - List dataList = mpAppMsg.getDataList(); - JSONArray indexArr = customParam.getJSONArray("index"); - for(int i=0;i dataTempList = new ArrayList<>(); + List dataList = mpAppMsg.getDataList(); + JSONArray indexArr = customParam.getJSONArray("index"); + for(int i=0;i list = wxTemplateMsgMapper.findList(msgQ); WxTemplateMsg msg = null; if (list.size() > 0) { @@ -72,79 +74,71 @@ public class SendSmartAppMsgServiceImpl implements MsgSendService { } if (msg == null) { logger.error("找不到模板Id"); - // throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); return; } - if(0 == msg.getOnOff().intValue()){ + if(EnumTemplateType.getWxList().contains(msg.getType())){ WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(smartAppMsg.getAppId()); - if(EnumTemplateType.TT_SEND_COUPON_REMIND.getCode().equals(msg.getType())){ - //发抖音 - TtMaService ttappService = maUtil.getTtMaService(appInfo); - TtMaSubscribeMessage subscribeMessage; - String[] split = smartAppMsg.getTo().split(","); - for (String to:split) { - try { - subscribeMessage = TtMaSubscribeMessage.builder() - .appId(appInfo.getAppId()) - .tplId(msg.getTemplateId()) - .openId(to) - .page(smartAppMsg.getGotopage()) - .data(new JsonParser().parse(smartAppMsg.getDataJson()).getAsJsonObject()) - .build(); + WxMaService wxMaService = null; + if(isFmOpen) { + wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(smartAppMsg.getAppId()); + } else { + wxMaService = maUtil.getWeappService(appInfo); + } + //发微信 + JSONObject customParam = JSON.parseObject(msg.getCustomParam()); + List dataList = smartAppMsg.getDataList(); + JSONArray indexArr = customParam.getJSONArray("index"); - ttappService.getMsgService().sendSubscribeMsg(subscribeMessage); -// wxCUserMapper.updateMsgCountDown(tenantEntity.getTenantId(),to); - } catch (Exception e) { - logger.error("openId:"+to+"-----发送订阅消息失败"); - } - } - }else -// if(EnumTemplateType.ACTIVITY_REMIND.getCode().equals(msg.getType()) -// || EnumTemplateType.LIVE_REMIND.getCode().equals(msg.getType()) -// || EnumTemplateType.CREDIT_UPD_REMIND.getCode().equals(msg.getType()) -// || EnumTemplateType.SEND_COUPON_REMIND.getCode().equals(msg.getType())) + List dataTempList = new ArrayList<>(); + for(int i=0;i dataList = smartAppMsg.getDataList(); - JSONArray indexArr = customParam.getJSONArray("index"); + WxMaSubscribeMessage subscribeMessage; + String[] split = smartAppMsg.getTo().split(","); + for (String to:split) { + try { + subscribeMessage = WxMaSubscribeMessage.builder() + .templateId(msg.getTemplateId()) + .toUser(to) + .page(smartAppMsg.getGotopage()) + .lang(WxMaConstants.MiniprogramLang.ZH_CN) + .miniprogramState(WxMaConstants.MiniprogramState.FORMAL) + .data(dataTempList) + .build(); - List dataTempList = new ArrayList<>(); - for(int i=0;i select open_id from tt_c_user - where msg_count >= 10 - - and `tenant_id` = #{tenantId} - + where `tenant_id` = #{tenantId} and `parent_tenant_id` = #{parentTenantId} @@ -251,33 +248,6 @@ - - update tt_c_user - set msg_count = msg_count+2 - where msg_count < 10 - - and `id` = #{id} - - - and `open_id` = #{openId} - - - and `tenant_id` = #{tenantId} - - - and `parent_tenant_id` = #{parentTenantId} - - - - - - - - - - - - select open_id from wx_c_user - where msg_count >= 10 - - and `tenant_id` = #{tenantId} - + where `tenant_id` = #{tenantId} and `parent_tenant_id` = #{parentTenantId} @@ -259,33 +256,6 @@ - - update wx_c_user - set msg_count = msg_count+2 - where msg_count < 10 - - and `id` = #{id} - - - and `open_id` = #{openId} - - - and `tenant_id` = #{tenantId} - - - and `parent_tenant_id` = #{parentTenantId} - - - - - - - - - - - - - - diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java index cef65c79e..f74765559 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java @@ -76,7 +76,7 @@ public class WxMsgController extends BaseController { types.add(EnumTemplateType.ACTIVITY_REMIND.getCode()); types.add(EnumTemplateType.LIVE_REMIND.getCode()); wxTemplateMsg.setTypes(types); - final PageInfo page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize); + final PageInfo page = wxTemplateMsgService.listAsPage(wxTemplateMsg, pageNum, pageSize); return new ResultData(page); } @@ -96,7 +96,7 @@ public class WxMsgController extends BaseController { types.add(EnumTemplateType.CREDIT_UPD_REMIND.getCode()); types.add(EnumTemplateType.SEND_COUPON_REMIND.getCode()); wxTemplateMsg.setTypes(types); - final PageInfo page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize); + final PageInfo page = wxTemplateMsgService.listAsPage(wxTemplateMsg, pageNum, pageSize); return new ResultData(page); }