Browse Source

//..temp

private_deployment
xhxu 1 year ago
parent
commit
099883c15e
36 changed files with 559 additions and 700 deletions
  1. +0
    -25
      suimangAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java
  2. +2
    -0
      suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java
  3. +0
    -11
      suimangCApi/src/main/java/com/iformall/controller/UserBasicImageController.java
  4. +45
    -0
      suimangCApi/src/main/java/com/iformall/controller/WxTemplateMsgController.java
  5. +4
    -3
      suimangService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java
  6. +2
    -18
      suimangService/src/main/java/com/iformall/enums/EnumTemplateType.java
  7. +1
    -1
      suimangService/src/main/java/com/iformall/mapper/TtCUserMapper.java
  8. +1
    -1
      suimangService/src/main/java/com/iformall/mapper/WxCUserMapper.java
  9. +1
    -0
      suimangService/src/main/java/com/iformall/mapper/WxTemplateMsgMapper.java
  10. +1
    -0
      suimangService/src/main/java/com/iformall/service/UserBasicPropertyService.java
  11. +1
    -1
      suimangService/src/main/java/com/iformall/service/WxMsgService.java
  12. +4
    -2
      suimangService/src/main/java/com/iformall/service/WxTemplateMsgService.java
  13. +2
    -0
      suimangService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java
  14. +5
    -0
      suimangService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java
  15. +5
    -0
      suimangService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java
  16. +6
    -1
      suimangService/src/main/java/com/iformall/service/impl/UserBasicImageServiceImpl.java
  17. +6
    -1
      suimangService/src/main/java/com/iformall/service/impl/UserBasicPropertyServiceImpl.java
  18. +49
    -122
      suimangService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  19. +36
    -36
      suimangService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  20. +75
    -118
      suimangService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java
  21. +0
    -42
      suimangService/src/main/java/com/iformall/service/impl/WxOrderPressServiceImpl.java
  22. +60
    -160
      suimangService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  23. +50
    -71
      suimangService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java
  24. +1
    -1
      suimangService/src/main/java/com/iformall/service/msg/impl/AfterCarInOutMsgServiceImpl.java
  25. +71
    -71
      suimangService/src/main/java/com/iformall/service/msg/impl/SendSmartAppMsgServiceImpl.java
  26. +19
    -1
      suimangService/src/main/java/com/iformall/service/pay/PayServiceFactory.java
  27. +11
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java
  28. +1
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/BaseTtPayAdapterService.java
  29. +17
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java
  30. +34
    -10
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java
  31. +5
    -0
      suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java
  32. +1
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java
  33. +31
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java
  34. +2
    -2
      suimangService/src/main/resources/mapper/TtCUserMapper.xml
  35. +1
    -1
      suimangService/src/main/resources/mapper/WxCUserMapper.xml
  36. +9
    -1
      suimangService/src/main/resources/mapper/WxTemplateMsgMapper.xml

+ 0
- 25
suimangAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java View File

@@ -72,10 +72,6 @@ public class WxMsgController extends BaseController {
logger.debug("[" + getIpAddr() + "] WxMsgController::list");
if (null == wxTemplateMsg) wxTemplateMsg = new WxTemplateMsg();
wxTemplateMsg.updateTenantInfo(getTenantInfo());
List<Integer> types = new ArrayList<>();
types.add(EnumTemplateType.ACTIVITY_REMIND.getCode());
types.add(EnumTemplateType.LIVE_REMIND.getCode());
wxTemplateMsg.setTypes(types);
final PageInfo<WxTemplateMsg> page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize);
return new ResultData(page);
}
@@ -90,12 +86,6 @@ public class WxMsgController extends BaseController {
logger.debug("[" + getIpAddr() + "] WxMsgController::list");
if (null == wxTemplateMsg) wxTemplateMsg = new WxTemplateMsg();
wxTemplateMsg.updateTenantInfo(getTenantInfo());
List<Integer> 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<WxTemplateMsg> page = wxTemplateMsgService.listAsPageForMiniApp(wxTemplateMsg, pageNum, pageSize);
return new ResultData(page);
}
@@ -116,21 +106,6 @@ public class WxMsgController extends BaseController {
return new ResultData();
}

@ApiOperation("推送模板")
@PostMapping("pushTemp")
@SystemControllerLog(description = "moban tuisong")
public ResultData pushTemp(@RequestBody WxTemplateMsg wxTemplateMsg) {
logger.debug("[" + getIpAddr() + "] WxMsgController::tuisong");
if(wxTemplateMsg.getId() == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
wxTemplateMsg.updateTenantInfo(getTenantInfo());
// if(null == wxTemplateMsg.getOnOff()){
// wxTemplateMsg.setOnOff(1);
// }
return wxTemplateMsgService.pushTemp(wxTemplateMsg);
}

@ApiOperation("新增接口")
@PostMapping("add")
@SystemControllerLog(description = "标签短信-新增")


+ 2
- 0
suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java View File

@@ -189,6 +189,8 @@ public class CallbackSmController extends BaseController {
imgList.add(data.get("img_2"));
imgList.add(data.get("img_3"));
userDigitalAvatarPhotoService.handlePhoto(userDigitalAvatarOrder,imgList);

userDigitalAvatarOrderService.sendPhotoSuccess(userDigitalAvatarOrder);
}else{
UserDigitalAvatarOrder updOrder = new UserDigitalAvatarOrder();
updOrder.setId(userDigitalAvatarOrder.getId());


+ 0
- 11
suimangCApi/src/main/java/com/iformall/controller/UserBasicImageController.java View File

@@ -1,27 +1,17 @@
package com.iformall.controller;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.AuthIgnore;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.po.Product;
import com.iformall.domain.po.ProductOrder;
import com.iformall.domain.po.UserBasicImage;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.sm.UserMouldVideo;
import com.iformall.enums.EnumVideoStatus;
import com.iformall.service.ProductService;
import com.iformall.service.UserBasicImageService;
import com.iformall.sm.AiCheckPhotoParam;
import com.iformall.sm.AiCheckPhotoResult;
import com.iformall.sm.AiDigitalAvatarHelper;
import com.iformall.sm.AiVideoHelper;
import com.iformall.utils.Base64Util;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,7 +37,6 @@ public class UserBasicImageController extends BaseController {
logger.debug("[" + getIpAddr() + "] UserBasicImageController::findImage");

UserBasicImage userBasicImage = userBasicImageService.findById(getMemberId());

return new ResultData(userBasicImage);
}



+ 45
- 0
suimangCApi/src/main/java/com/iformall/controller/WxTemplateMsgController.java View File

@@ -0,0 +1,45 @@
package com.iformall.controller;

import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxTemplateMsg;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.service.WxTemplateMsgService;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
* @author gongbiao
*/
@RestController
@RequestMapping("/api/templateMsg")
public class WxTemplateMsgController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
WxTemplateMsgService wxTemplateMsgService;


@ApiOperation("模板列表接口")
@GetMapping("list")
@ApiImplicitParams({})
public ResultData templateList(@ModelAttribute WxTemplateMsg wxTemplateMsg) {
logger.debug("[" + getIpAddr() + "] WxTemplateMsgController::list");
if(wxTemplateMsg.getProjectType() == null || wxTemplateMsg.getPlat() == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
wxTemplateMsg.updateTenantInfo(getTenantInfo());
wxTemplateMsg.setOnOff(EnumYesOrNo.YES.getCode());
List<WxTemplateMsg> list = wxTemplateMsgService.findList(wxTemplateMsg);
//todo 微信订阅消息一次只支持3个

return new ResultData(list);
}

}

+ 4
- 3
suimangService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java View File

@@ -18,7 +18,7 @@ public class WxTemplateMsg extends TenantEntity {

@io.swagger.annotations.ApiModelProperty(value="模板ID",name="templateId")
private String templateId;
@io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息, 101:公众号审核结果消息, 102:公众号卡券核销消息",name="type")
@io.swagger.annotations.ApiModelProperty(value="EnumTemplateType",name="type")
private Integer type;
@io.swagger.annotations.ApiModelProperty(value="自定义参数",name="customParam")
private String customParam;
@@ -29,14 +29,15 @@ public class WxTemplateMsg extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="消息开关(0/1)",name="onOff")
private Integer onOff;

@io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息, 101:公众号审核结果消息, 102:公众号卡券核销消息",name="type")
private Integer projectType;
private Integer plat;

@TableField(exist = false)
private String typeName;

@TableField(exist = false)
private List<Integer> types;


public String getTypeName(){
if(this.getType() != null) {
this.typeName = EnumTemplateType.getEnum(this.getType()).getMessage();


+ 2
- 18
suimangService/src/main/java/com/iformall/enums/EnumTemplateType.java View File

@@ -5,25 +5,9 @@ package com.iformall.enums;
*/
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"), // 小程序

TT_SEND_COUPON_REMIND(60, "优惠券到账提醒",""), // 抖音小程序

AUDIT_MESSAGE(101, "公众号审核结果通知",""), // 公众号
VERIFY_RESULT(102, "公众号卡券核销通知",""), // 公众号
GIFT_MESSAGE(103, "公众号购票成功通知",""), // 公众号
PHOTO_SUCCESS(1, "AI写真完成通知",""),
;

public static EnumTemplateType getEnum(Integer code) {


+ 1
- 1
suimangService/src/main/java/com/iformall/mapper/TtCUserMapper.java View File

@@ -40,7 +40,7 @@ public interface TtCUserMapper extends CommonMapper<TtCUser, Long> {

// void updateMsgCountDown(@Param("tenantId")String tenantId, @Param("openId")String openId);

List<String> findOpenIdList(@Param("userId")Long userId, @Param("tenantId")String tenantId);
String findOpenId(@Param("userId")Long userId);

List<String> findTokenList(@Param("id")Long id,@Param("userId")Long userId, @Param("tenantId")String tenantId);



+ 1
- 1
suimangService/src/main/java/com/iformall/mapper/WxCUserMapper.java View File

@@ -40,7 +40,7 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> {

// void updateMsgCountDown(@Param("tenantId")String tenantId, @Param("openId")String openId);

String findOpenId(@Param("userId")Long userId, @Param("tenantId")String tenantId);
String findOpenId(@Param("userId")Long userId);

Long findCuserId(@Param("userId")Long userId, @Param("tenantId")String tenantId);



+ 1
- 0
suimangService/src/main/java/com/iformall/mapper/WxTemplateMsgMapper.java View File

@@ -3,6 +3,7 @@ package com.iformall.mapper;
import java.util.*;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxTemplateMsg;
import org.apache.ibatis.annotations.Param;

public interface WxTemplateMsgMapper extends CommonMapper<WxTemplateMsg, Long> {



+ 1
- 0
suimangService/src/main/java/com/iformall/service/UserBasicPropertyService.java View File

@@ -29,4 +29,5 @@ public interface UserBasicPropertyService {
void updUserGlod(Long userId, Integer projectType,Integer propertyLogType, Long extraId, Integer glod, Date now);

UserBasicProperty findById(Long id);

}

+ 1
- 1
suimangService/src/main/java/com/iformall/service/WxMsgService.java View File

@@ -41,7 +41,7 @@ public interface WxMsgService {
void addMsgCallback(WxMsg wxmsg, String batchNo);

void batchSendAppinfo(WxMsg wxMsg);
void batchSendTtAppinfo(WxMsg msg);
// void batchSendTtAppinfo(WxMsg msg);

void batchSendMsg(WxMsg wxMsg, WxMsgConfig wxMsgConfig, WxCouponInject couponInject);



+ 4
- 2
suimangService/src/main/java/com/iformall/service/WxTemplateMsgService.java View File

@@ -2,9 +2,11 @@ package com.iformall.service;

import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxTemplateMsg;

import java.util.List;
import java.util.Map;

public interface WxTemplateMsgService {

@@ -59,7 +61,7 @@ public interface WxTemplateMsgService {
void deleteById(Long id);


ResultData pushTemp(WxTemplateMsg wxTemplateMsg);

PageInfo<WxTemplateMsg> listAsPageForMiniApp(WxTemplateMsg wxTemplateMsg, Integer pageNum, Integer pageSize);

void sendTemplateMsg(WxAppinfo appinfo, Long userId, String toPage, Map<String, String> param);
}

+ 2
- 0
suimangService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java View File

@@ -50,4 +50,6 @@ public interface CUserServiceApapter {
String updateQrCode(CUser user);

List<UserStructureVo> findCountData(WxCUserBasicInfoDto dto);

String getOpenId(Long userId);
}

+ 5
- 0
suimangService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java View File

@@ -350,6 +350,11 @@ public class TtCUserServiceAdapter extends BasicCUserService implements CUserSer
return ttCUserMapper.findCountData(dto);
}

@Override
public String getOpenId(Long userId) {
return ttCUserMapper.findOpenId(userId);
}


private void delForUserIdOnly(Long id, Long userId, String tenantId) {
List<String> tokenList = ttCUserMapper.findTokenList(id,userId, tenantId);


+ 5
- 0
suimangService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java View File

@@ -361,6 +361,11 @@ public class WxCUserServiceAdapter extends BasicCUserService implements CUserSer
return wxCUserMapper.findCountData(dto);
}

@Override
public String getOpenId(Long userId) {
return wxCUserMapper.findOpenId(userId);
}

private WxMaService getWxMaService(WxAppinfo wxAppinfo, Boolean isFmOpen) {
WxMaService wxMaService = null;
if (isFmOpen) {


+ 6
- 1
suimangService/src/main/java/com/iformall/service/impl/UserBasicImageServiceImpl.java View File

@@ -56,7 +56,12 @@ public class UserBasicImageServiceImpl implements UserBasicImageService {

@Override
public UserBasicImage findById(Long userId) {
return userBasicImageMapper.selectById(userId);
UserBasicImage userBasicImage = userBasicImageMapper.selectById(userId);
if(userBasicImage == null){
userBasicImage = new UserBasicImage();
userBasicImage.setId(userId);
}
return userBasicImage;
}




+ 6
- 1
suimangService/src/main/java/com/iformall/service/impl/UserBasicPropertyServiceImpl.java View File

@@ -103,7 +103,12 @@ public class UserBasicPropertyServiceImpl implements UserBasicPropertyService {

@Override
public UserBasicProperty findById(Long id) {
return userBasicPropertyMapper.selectById(id);
UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(id);
if(userBasicProperty == null){
userBasicProperty = new UserBasicProperty();
userBasicProperty.setId(id);
}
return userBasicProperty;
}

private Integer handGlodNum(Integer projectType, Integer propertyLogType, Integer glod){


+ 49
- 122
suimangService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java View File

@@ -2122,131 +2122,58 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
* 核销时间:{{keyword3.DATA}}
* {{remark.DATA}}
*/
MpAppMsg mpAppMsg = new MpAppMsg();
mpAppMsg.setMsgType(EnumMsgRecordType.PUBLIC.getCode());
mpAppMsg.setAppId(user.getMpAppId());
mpAppMsg.setTo(user.getMpOpenId());
mpAppMsg.setMiniAppId(user.getAppId());
mpAppMsg.setMiniPagePath(gotopage);
mpAppMsg.updateTenantInfo(couponOrder);
mpAppMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode());
mpAppMsg.setDataList(Lists.newArrayList(
merchant.getName(),
EnumCouponType.getEnum(coupon.getType()).getMessage(),
couponOrder.getId().toString(),
dateFormat.format(new Date()),
user.getNickName()
));
try {
mqBaseProducer.sendMessage(mpAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
} catch (Exception e) {
logger.error("核销-公众号-模板消息发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.MP_TEMPLATE_SEND_FAILED);
}
// MpAppMsg mpAppMsg = new MpAppMsg();
// mpAppMsg.setMsgType(EnumMsgRecordType.PUBLIC.getCode());
// mpAppMsg.setAppId(user.getMpAppId());
// mpAppMsg.setTo(user.getMpOpenId());
// mpAppMsg.setMiniAppId(user.getAppId());
// mpAppMsg.setMiniPagePath(gotopage);
// mpAppMsg.updateTenantInfo(couponOrder);
// mpAppMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode());
// mpAppMsg.setDataList(Lists.newArrayList(
// merchant.getName(),
// EnumCouponType.getEnum(coupon.getType()).getMessage(),
// couponOrder.getId().toString(),
// dateFormat.format(new Date()),
// user.getNickName()
// ));
//
// try {
// mqBaseProducer.sendMessage(mpAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
// } catch (Exception e) {
// logger.error("核销-公众号-模板消息发送失败: " + e.getMessage());
// throw new MallinkException(ErrorCode.MP_TEMPLATE_SEND_FAILED);
// }
}

private void doVerifyAppUniformMsg(WxCouponOrder couponOrder, WxCoupon coupon, WxMerchant merchant, WxCUser user, SimpleDateFormat dateFormat, String gotopage) {
WxAuthorizerInfo authQ = new WxAuthorizerInfo();
authQ.setAuthorizerAppid(user.getAppId());
authQ.updateTenantInfo(couponOrder);
WxAuthorizerInfo weappInfo = authorizerInfoMapper.findMp(authQ);
if (weappInfo != null) {
AppUniformMsg appUniformMsg = new AppUniformMsg();
appUniformMsg.setTenantId(coupon.getTenantId());
appUniformMsg.setMsgType(EnumMsgRecordType.SMART_APP_UNIFORM.getCode());
appUniformMsg.setAppId(user.getAppId());
appUniformMsg.setTo(user.getOpenId());
appUniformMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode());
appUniformMsg.setPagePath(gotopage);
appUniformMsg.setMpAppId(weappInfo.getAuthorizerAppid());
appUniformMsg.setDataList(Lists.newArrayList(
merchant.getName(),
EnumCouponType.getEnum(coupon.getType()).getMessage(),
couponOrder.getId().toString(),
dateFormat.format(new Date()),
user.getNickName()
));
try {
mqBaseProducer.sendMessage(appUniformMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
} catch (Exception e) {
logger.error("核销-公众号-模板消息发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.UNIFORM_SEND_FAILED);
}
}
}

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);
}
// WxAuthorizerInfo authQ = new WxAuthorizerInfo();
// authQ.setAuthorizerAppid(user.getAppId());
// authQ.updateTenantInfo(couponOrder);
// WxAuthorizerInfo weappInfo = authorizerInfoMapper.findMp(authQ);
// if (weappInfo != null) {
// AppUniformMsg appUniformMsg = new AppUniformMsg();
// appUniformMsg.setTenantId(coupon.getTenantId());
// appUniformMsg.setMsgType(EnumMsgRecordType.SMART_APP_UNIFORM.getCode());
// appUniformMsg.setAppId(user.getAppId());
// appUniformMsg.setTo(user.getOpenId());
// appUniformMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode());
// appUniformMsg.setPagePath(gotopage);
// appUniformMsg.setMpAppId(weappInfo.getAuthorizerAppid());
// appUniformMsg.setDataList(Lists.newArrayList(
// merchant.getName(),
// EnumCouponType.getEnum(coupon.getType()).getMessage(),
// couponOrder.getId().toString(),
// dateFormat.format(new Date()),
// user.getNickName()
// ));
// try {
// mqBaseProducer.sendMessage(appUniformMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
// } catch (Exception e) {
// logger.error("核销-公众号-模板消息发送失败: " + e.getMessage());
// throw new MallinkException(ErrorCode.UNIFORM_SEND_FAILED);
// }
// }
}




+ 36
- 36
suimangService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java View File

@@ -657,42 +657,42 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
}

private void sendCreditUpdRemind(WxCUserBasicInfo wxCUserBasicInfo,WxCreditHistory record,String tenantId){
try {
WxTemplateMsg temp = new WxTemplateMsg();
// temp.updateTenantInfo(record);
temp.setTenantId(tenantId);
temp.setType(EnumTemplateType.CREDIT_UPD_REMIND.getCode());
temp = wxTemplateMsgService.getByObj(temp);
if(temp.getId() != null){
String openId = wxCUserMapper.findOpenId(wxCUserBasicInfo.getId(),tenantId);
if(StringUtils.isNotBlank(openId)){
WxMsg msg = new WxMsg();
// msg.updateTenantInfo(record);
msg.setTenantId(tenantId);
// msg.setWay(EnumSendWay.APPINFOR.getCode());
// msg.setIsright(EnumMsgSend.MSG_SEND_IMMEDIATELY.getCode());
// msg.setStatus(EnumMsgStatus.MSG_STATUS_NOT_SEND.getCode());
msg.setPhones(openId);
msg.setModelId(temp.getId());
Map<String,String> map = new HashMap<>();
map.put("character_string1",record.getCreditNum().toString());
map.put("character_string2",record.getCreditAmount().toString());
map.put("time4",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(record.getCreateDate()));
map.put("thing3",EnumScoreType.getEnum(record.getCreditType()).getMessage());
map.put("goToPage","pages/index/index?type=jf");
msg.setMsg(JSONObject.toJSONString(map));
// msg.setName(EnumTemplateType.CREDIT_UPD_REMIND.name());
// msg.setSignature(EnumTemplateType.CREDIT_UPD_REMIND.name());
// wxMsgService.add(msg);
wxMsgService.batchSendAppinfo(msg);
}else{
logger.error("找不到微信用户");
}
}
} catch (Exception e) {
// e.printStackTrace();
logger.error("积分消息发送异常");
}
// try {
// WxTemplateMsg temp = new WxTemplateMsg();
//// temp.updateTenantInfo(record);
// temp.setTenantId(tenantId);
// temp.setType(EnumTemplateType.CREDIT_UPD_REMIND.getCode());
// temp = wxTemplateMsgService.getByObj(temp);
// if(temp.getId() != null){
// String openId = wxCUserMapper.findOpenId(wxCUserBasicInfo.getId(),tenantId);
// if(StringUtils.isNotBlank(openId)){
// WxMsg msg = new WxMsg();
//// msg.updateTenantInfo(record);
// msg.setTenantId(tenantId);
//// msg.setWay(EnumSendWay.APPINFOR.getCode());
//// msg.setIsright(EnumMsgSend.MSG_SEND_IMMEDIATELY.getCode());
//// msg.setStatus(EnumMsgStatus.MSG_STATUS_NOT_SEND.getCode());
// msg.setPhones(openId);
// msg.setModelId(temp.getId());
// Map<String,String> map = new HashMap<>();
// map.put("character_string1",record.getCreditNum().toString());
// map.put("character_string2",record.getCreditAmount().toString());
// map.put("time4",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(record.getCreateDate()));
// map.put("thing3",EnumScoreType.getEnum(record.getCreditType()).getMessage());
// map.put("goToPage","pages/index/index?type=jf");
// msg.setMsg(JSONObject.toJSONString(map));
//// msg.setName(EnumTemplateType.CREDIT_UPD_REMIND.name());
//// msg.setSignature(EnumTemplateType.CREDIT_UPD_REMIND.name());
//// wxMsgService.add(msg);
// wxMsgService.batchSendAppinfo(msg);
// }else{
// logger.error("找不到微信用户");
// }
// }
// } catch (Exception e) {
//// e.printStackTrace();
// logger.error("积分消息发送异常");
// }
}

@Override


+ 75
- 118
suimangService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java View File

@@ -404,59 +404,16 @@ public class WxMsgServiceImpl implements WxMsgService {
goToPage = "pages/index/index?type=in";//默认首页
}
smartAppMsg.setGotopage(goToPage);
if(wxTemplateMsg.getType() == EnumTemplateType.ACTIVITY_REMIND.getCode()){
if(wxTemplateMsg.getType() == EnumTemplateType.PHOTO_SUCCESS.getCode()){
/**
* 活动名称:{{thing13.DATA}}
* 活动时间:{{date5.DATA}}
* 商户名称:{{thing12.DATA}}
* 活动内容:{{thing1.DATA}}
* 温馨提示:{{thing11.DATA}}"
* {{thing1.DATA}}
* {{character_string3.DATA}}
* {{time4.DATA}}
*/
smartAppMsg.setDataList(Lists.newArrayList(
customParam.getString("thing13"),
customParam.getString("date5"),
customParam.getString("thing12"),
customParam.getString("thing1"),
customParam.getString("thing11")
));
}else if(wxTemplateMsg.getType() == EnumTemplateType.LIVE_REMIND.getCode()){
/**
* 直播标题:{{thing1.DATA}}
* 开播时间:{{date3.DATA}}
* 主播昵称:{{thing4.DATA}}
* 温馨提示:{{thing5.DATA}}
*/
smartAppMsg.setDataList(Lists.newArrayList(
customParam.getString("thing1"),
customParam.getString("date3"),
customParam.getString("thing4"),
customParam.getString("thing5")
));
}else if(wxTemplateMsg.getType() == EnumTemplateType.CREDIT_UPD_REMIND.getCode()){
/**
* 变更数量{{character_string1.DATA}}
* 积分余额{{character_string2.DATA}}
* 变动时间{{time4.DATA}}
* 变更原因{{thing3.DATA}}
*/
smartAppMsg.setDataList(Lists.newArrayList(
customParam.getString("character_string1"),
customParam.getString("character_string2"),
customParam.getString("time4"),
customParam.getString("thing3")
));
}else if(wxTemplateMsg.getType() == EnumTemplateType.SEND_COUPON_REMIND.getCode()){
/**
* 券名称{{thing1.DATA}}
* 获取时间{{time3.DATA}}
* 过期日期{{time4.DATA}}
* 备注{{thing5.DATA}}
*/
smartAppMsg.setDataList(Lists.newArrayList(
customParam.getString("thing1"),
customParam.getString("time3"),
customParam.getString("time4"),
customParam.getString("thing5")
customParam.getString("character_string3"),
customParam.getString("time4")
));
}else{
return;
@@ -509,81 +466,81 @@ public class WxMsgServiceImpl implements WxMsgService {

}

@Override
public void batchSendTtAppinfo(WxMsg msg) {
TenantEntity tenantEntity = new TenantEntity();
tenantEntity.setTenantId(msg.getTenantId());
tenantEntity.setParentTenantId(msg.getParentTenantId());
WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.TOUTIAO);
SmartAppMsg smartAppMsg = new SmartAppMsg();
smartAppMsg.updateTenantInfo(tenantEntity);
smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP_TO.getCode());
smartAppMsg.setAppId(cAppInfo.getAppId());

WxTemplateMsg wxTemplateMsg = wxTemplateMsgMapper.selectById(msg.getModelId());
// if(1 == wxTemplateMsg.getOnOff().intValue()){
// logger.error("订阅消息模板关闭。");
// @Override
// public void batchSendTtAppinfo(WxMsg msg) {
// TenantEntity tenantEntity = new TenantEntity();
// tenantEntity.setTenantId(msg.getTenantId());
// tenantEntity.setParentTenantId(msg.getParentTenantId());
// WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.TOUTIAO);
// SmartAppMsg smartAppMsg = new SmartAppMsg();
// smartAppMsg.updateTenantInfo(tenantEntity);
// smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP_TO.getCode());
// smartAppMsg.setAppId(cAppInfo.getAppId());
//
// WxTemplateMsg wxTemplateMsg = wxTemplateMsgMapper.selectById(msg.getModelId());
//// if(1 == wxTemplateMsg.getOnOff().intValue()){
//// logger.error("订阅消息模板关闭。");
//// return;
//// }
//
// smartAppMsg.setTemplateType(wxTemplateMsg.getType());
// JSONObject customParam = JSON.parseObject(msg.getMsg());
// String goToPage = customParam.getString("goToPage");
// if(StringUtils.isBlank(goToPage)){
// goToPage = "pages/index/index?type=in";//默认首页
// }
// smartAppMsg.setGotopage(goToPage);
// if(wxTemplateMsg.getType() == EnumTemplateType.TT_SEND_COUPON_REMIND.getCode()){
// smartAppMsg.setDataJson(msg.getMsg());
// }else{
// return;
// }

smartAppMsg.setTemplateType(wxTemplateMsg.getType());
JSONObject customParam = JSON.parseObject(msg.getMsg());
String goToPage = customParam.getString("goToPage");
if(StringUtils.isBlank(goToPage)){
goToPage = "pages/index/index?type=in";//默认首页
}
smartAppMsg.setGotopage(goToPage);
if(wxTemplateMsg.getType() == EnumTemplateType.TT_SEND_COUPON_REMIND.getCode()){
smartAppMsg.setDataJson(msg.getMsg());
}else{
return;
}

if(StringUtils.isNotBlank(msg.getPhones())){

smartAppMsg.setTo(msg.getPhones());
mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());

// String[] split = wxMsg.getPhones().split(",");
// int length = split.length;
// int extra = length % 1000;
// int extracount = extra > 0 ? (length / 1000 + 1) : (length / 1000);
// int index = extracount - 1;
// for (int i = 0; i < extracount; i++) {
// if (extra > 0 && i == index) {
// List<String> phoneList = Arrays.asList(split).subList(i * 1000, length);
// String phones = StringUtils.join(phoneList, ",");
// smartAppMsg.setTo(phones);
// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
// } else {
// List<String> phoneList = Arrays.asList(split).subList(i * 1000, (i + 1) * 1000);
// String phones = StringUtils.join(phoneList, ",");
//
// if(StringUtils.isNotBlank(msg.getPhones())){
//
// smartAppMsg.setTo(msg.getPhones());
// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
//
//// String[] split = wxMsg.getPhones().split(",");
//// int length = split.length;
//// int extra = length % 1000;
//// int extracount = extra > 0 ? (length / 1000 + 1) : (length / 1000);
//// int index = extracount - 1;
//// for (int i = 0; i < extracount; i++) {
//// if (extra > 0 && i == index) {
//// List<String> phoneList = Arrays.asList(split).subList(i * 1000, length);
//// String phones = StringUtils.join(phoneList, ",");
//// smartAppMsg.setTo(phones);
//// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
//// } else {
//// List<String> phoneList = Arrays.asList(split).subList(i * 1000, (i + 1) * 1000);
//// String phones = StringUtils.join(phoneList, ",");
//// smartAppMsg.setTo(phones);
//// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
//// }
//// }
// }else{
// TtCUser ttCUserQ = new TtCUser();
// ttCUserQ.updateTenantInfo(tenantEntity);
// PageInfo<String> openIdPage = ttCUserService.listOpenIdAsPage(ttCUserQ, 1, 1000);
// msg.setExpectSendNumber((int) openIdPage.getTotal());
// if(openIdPage.getTotal() == 0){
// return;
// }
// String phones = StringUtils.join(openIdPage.getList(), ",");
// smartAppMsg.setTo(phones);
// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
// if(openIdPage.getPages() > 1){
// for(int i=2;i<=openIdPage.getPages();i++){
// openIdPage = ttCUserService.listOpenIdAsPage(ttCUserQ, i, 1000);
// phones = StringUtils.join(openIdPage.getList(), ",");
// smartAppMsg.setTo(phones);
// mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
// }
// }
}else{
TtCUser ttCUserQ = new TtCUser();
ttCUserQ.updateTenantInfo(tenantEntity);
PageInfo<String> openIdPage = ttCUserService.listOpenIdAsPage(ttCUserQ, 1, 1000);
msg.setExpectSendNumber((int) openIdPage.getTotal());
if(openIdPage.getTotal() == 0){
return;
}
String phones = StringUtils.join(openIdPage.getList(), ",");
smartAppMsg.setTo(phones);
mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
if(openIdPage.getPages() > 1){
for(int i=2;i<=openIdPage.getPages();i++){
openIdPage = ttCUserService.listOpenIdAsPage(ttCUserQ, i, 1000);
phones = StringUtils.join(openIdPage.getList(), ",");
smartAppMsg.setTo(phones);
mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
}
}

}
}
//
// }
// }


@Override


+ 0
- 42
suimangService/src/main/java/com/iformall/service/impl/WxOrderPressServiceImpl.java View File

@@ -208,48 +208,6 @@ public class WxOrderPressServiceImpl implements WxOrderPressService {
// // 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);
}
}


+ 60
- 160
suimangService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java View File

@@ -1665,170 +1665,70 @@ public class WxOrderServiceImpl implements WxOrderService {
}

private void sendCouponRemind(WxCouponOrder couponOrder,WxCoupon coupon,WxCUser cuser){
try {
WxTemplateMsg temp = new WxTemplateMsg();
temp.updateTenantInfo(coupon);
temp.setType(EnumTemplateType.SEND_COUPON_REMIND.getCode());
temp = wxTemplateMsgService.getByObj(temp);
if(temp.getId() != null){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
WxMsg msg = new WxMsg();
msg.updateTenantInfo(coupon);
msg.setPhones(cuser.getOpenId());
msg.setModelId(temp.getId());
Map<String,String> map = new HashMap<>();
map.put("thing1",coupon.getTitle());
map.put("time3",dateFormat.format(couponOrder.getCreateDate()));
map.put("time4",dateFormat.format(couponOrder.getExpiredTime()));
map.put("thing5","你的优惠券已到账!请立即使用");
if(EnumCouponType.COUPON_TINGCHE.getCode().equals(couponOrder.getCouponType())
|| EnumCouponType.COUPON_CREDIT_PARK.getCode().equals(couponOrder.getCouponType())){
map.put("goToPage","pages/index/index?type=pc");
}else{
map.put("goToPage","pages/index/index?type=mc");
}
msg.setMsg(JSONObject.toJSONString(map));
wxMsgService.batchSendAppinfo(msg);
}
} catch (Exception e) {
// e.printStackTrace();
logger.error("发卷消息发送异常");
}
// try {
// WxTemplateMsg temp = new WxTemplateMsg();
// temp.updateTenantInfo(coupon);
// temp.setType(EnumTemplateType.SEND_COUPON_REMIND.getCode());
// temp = wxTemplateMsgService.getByObj(temp);
// if(temp.getId() != null){
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// WxMsg msg = new WxMsg();
// msg.updateTenantInfo(coupon);
// msg.setPhones(cuser.getOpenId());
// msg.setModelId(temp.getId());
// Map<String,String> map = new HashMap<>();
// map.put("thing1",coupon.getTitle());
// map.put("time3",dateFormat.format(couponOrder.getCreateDate()));
// map.put("time4",dateFormat.format(couponOrder.getExpiredTime()));
// map.put("thing5","你的优惠券已到账!请立即使用");
// if(EnumCouponType.COUPON_TINGCHE.getCode().equals(couponOrder.getCouponType())
// || EnumCouponType.COUPON_CREDIT_PARK.getCode().equals(couponOrder.getCouponType())){
// map.put("goToPage","pages/index/index?type=pc");
// }else{
// map.put("goToPage","pages/index/index?type=mc");
// }
//
// msg.setMsg(JSONObject.toJSONString(map));
// wxMsgService.batchSendAppinfo(msg);
// }
// } catch (Exception e) {
//// e.printStackTrace();
// logger.error("发卷消息发送异常");
// }
}

private void sendCouponRemind(WxCouponOrder couponOrder,WxCoupon coupon,TtCUser cuser){
try {
WxTemplateMsg temp = new WxTemplateMsg();
temp.updateTenantInfo(coupon);
temp.setType(EnumTemplateType.TT_SEND_COUPON_REMIND.getCode());
temp = wxTemplateMsgService.getByObj(temp);
if(temp.getId() != null){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
WxMsg msg = new WxMsg();
msg.updateTenantInfo(coupon);
msg.setPhones(cuser.getOpenId());
msg.setModelId(temp.getId());
Map<String,String> map = new HashMap<>();
map.put("优惠券名称",coupon.getTitle());
map.put("剩余时间","至"+ dateFormat.format(couponOrder.getExpiredTime()));
map.put("备注","你的优惠券已到账!请立即使用");
if(EnumCouponType.COUPON_TINGCHE.getCode().equals(couponOrder.getCouponType())
|| EnumCouponType.COUPON_CREDIT_PARK.getCode().equals(couponOrder.getCouponType())){
map.put("goToPage","pages/index/index?type=in");
}else{
map.put("goToPage","pages/index/index?type=mc");
}

msg.setMsg(JSONObject.toJSONString(map));
wxMsgService.batchSendTtAppinfo(msg);
}
} catch (Exception e) {
// e.printStackTrace();
logger.error("发卷消息发送异常");
}
}

private boolean sendMpMsgForSendCoupon(WxCouponOrder couponOrder,WxCoupon coupon, WxCUser user) {
// 发送 公众号 模板消息
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String gotopage = Constant.mainPageUrl + "?type=mc";
// 7. 公众号消息
if (StringUtils.isNotBlank(user.getMpAppId()) &&
StringUtils.isNotBlank(user.getMpOpenId()) &&
user.getMpSubscribe().equals(EnumUserIsSubscribe.YES.getCode())) {
// 检查是否超限
WxMsgLimit msgLimit = new WxMsgLimit();
msgLimit.updateTenantInfo(couponOrder);
msgLimit.setType(EnumMsgLimitType.WXCHAT_OPENID_SEND.getCode());
msgLimit.setLimitId(user.getMpOpenId());
if (wxMsgLimitService.checkIsLimit(msgLimit)) {
logger.error("用户公众号模板消息超限" + user.getId());
return true;
}

// 已关注公众号
/**
* 购票成功通知
* {first.DATA}}
* 订单号:{{keyword1.DATA}}
* 兑换券:{{keyword2.DATA}}
* 订单详情:{{keyword3.DATA}}
* 有效期至:{{keyword4.DATA}}
* 购买数量:{{keyword5.DATA}}
* {{remark.DATA}}
*/
MpAppMsg mpAppMsg = new MpAppMsg();
mpAppMsg.setMsgType(EnumMsgRecordType.PUBLIC.getCode());
mpAppMsg.setAppId(user.getMpAppId());
mpAppMsg.setTo(user.getMpOpenId());
mpAppMsg.setMiniAppId(user.getAppId());
mpAppMsg.setMiniPagePath(gotopage);
mpAppMsg.updateTenantInfo(couponOrder);
mpAppMsg.setTemplateType(EnumTemplateType.GIFT_MESSAGE.getCode());
mpAppMsg.setDataList(Lists.newArrayList(
user.getNickName(),
String.valueOf(couponOrder.getOrderId()),
couponOrder.getId().toString(),
coupon.getTitle(),
dateFormat.format(couponOrder.getExpiredTime()),
"1",
user.getNickName()

));

try {
mqBaseProducer.sendMessage(mpAppMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
} catch (Exception e) {
logger.error("购票成功-公众号-模板消息发送失败: " + e.getMessage());
//throw new MallinkException(ErrorCode.MP_TEMPLATE_SEND_FAILED);
}
} else {
// 可能未关注公众号, 用户可能收不到
// 8. 微信小程序-统一消息
// 检查是否超限
WxMsgLimit msgLimit = new WxMsgLimit();
msgLimit.updateTenantInfo(couponOrder);
msgLimit.setType(EnumMsgLimitType.WEAPP_OPENID_SEND.getCode());
msgLimit.setLimitId(user.getOpenId());
if (wxMsgLimitService.checkIsLimit(msgLimit)) {
logger.error("用户小程序统一模板消息超限:" + user.getId());
return true;
}
// 获取小程序关联的服务号
WxAuthorizerInfo authQ = new WxAuthorizerInfo();
authQ.setAuthorizerAppid(user.getAppId());
authQ.updateTenantInfo(couponOrder);
WxAuthorizerInfo weappInfo = authorizerInfoMapper.findMp(authQ);
if (weappInfo != null) {
AppUniformMsg appUniformMsg = new AppUniformMsg();
appUniformMsg.setTenantId(coupon.getTenantId());
appUniformMsg.setMsgType(EnumMsgRecordType.SMART_APP_UNIFORM.getCode());
appUniformMsg.setAppId(user.getAppId());
appUniformMsg.setTo(user.getOpenId());
appUniformMsg.setTemplateType(EnumTemplateType.GIFT_MESSAGE.getCode());
appUniformMsg.setPagePath(gotopage);
appUniformMsg.setMpAppId(weappInfo.getAuthorizerAppid());
appUniformMsg.setDataList(Lists.newArrayList(
user.getNickName(),
String.valueOf(couponOrder.getOrderId()),
couponOrder.getId().toString(),
coupon.getTitle(),
dateFormat.format(couponOrder.getExpiredTime()),
"1",
user.getNickName()
));
try {
mqBaseProducer.sendMessage(appUniformMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
} catch (Exception e) {
logger.error("核销-公众号-模板消息发送失败: " + e.getMessage());
//throw new MallinkException(ErrorCode.UNIFORM_SEND_FAILED);
}
}
}
return false;
// try {
// WxTemplateMsg temp = new WxTemplateMsg();
// temp.updateTenantInfo(coupon);
// temp.setType(EnumTemplateType.TT_SEND_COUPON_REMIND.getCode());
// temp = wxTemplateMsgService.getByObj(temp);
// if(temp.getId() != null){
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// WxMsg msg = new WxMsg();
// msg.updateTenantInfo(coupon);
// msg.setPhones(cuser.getOpenId());
// msg.setModelId(temp.getId());
// Map<String,String> map = new HashMap<>();
// map.put("优惠券名称",coupon.getTitle());
// map.put("剩余时间","至"+ dateFormat.format(couponOrder.getExpiredTime()));
// map.put("备注","你的优惠券已到账!请立即使用");
// if(EnumCouponType.COUPON_TINGCHE.getCode().equals(couponOrder.getCouponType())
// || EnumCouponType.COUPON_CREDIT_PARK.getCode().equals(couponOrder.getCouponType())){
// map.put("goToPage","pages/index/index?type=in");
// }else{
// map.put("goToPage","pages/index/index?type=mc");
// }
//
// msg.setMsg(JSONObject.toJSONString(map));
// wxMsgService.batchSendTtAppinfo(msg);
// }
// } catch (Exception e) {
//// e.printStackTrace();
// logger.error("发卷消息发送异常");
// }
}
@Override
@Transactional(propagation = Propagation.NESTED, readOnly = false, rollbackFor = {Exception.class})
public WxCouponOrder sendFreeCouponToUser(Long userId,TenantEntity tenantinfo, Long couponId, WxCouponSendVo wxCouponSendVo,EnumPayWay payWay,EnumPayVersion payVersion,Long merchantId,Long bUserId) {


+ 50
- 71
suimangService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java View File

@@ -13,9 +13,12 @@ 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;
import com.iformall.service.cuser.CUserServiceFactory;
import com.iformall.service.pay.PayServiceFactory;
import com.iformall.service.wechat.FmOpenService;
import com.iformall.utils.MaUtil;
import me.chanjar.weixin.common.error.WxErrorException;
@@ -27,6 +30,7 @@ import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Service
public class WxTemplateMsgServiceImpl implements WxTemplateMsgService {
@@ -42,6 +46,12 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService {

@Autowired
private FmOpenService openService;

@Autowired
private PayServiceFactory payServiceFactory;

@Autowired
private CUserServiceFactory cuserFactory;
@Autowired
MaUtil maUtil;
@@ -49,26 +59,26 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService {

@Override
public void wxTemplateMsgInit(String tenantId) {
WxTemplateMsg wxTemplateMsg = new WxTemplateMsg();
wxTemplateMsg.setTenantId(tenantId);
wxTemplateMsg.setTemplateId("");
wxTemplateMsg.setType(EnumTemplateType.ACTIVITY_REMIND.getCode());
wxTemplateMsg.setCustomParam("{\"index\": [\"thing13\", \"date5\", \"thing12\", \"thing1\", \"thing11\"], \"emphasis\": \"\"}");
wxTemplateMsg.setCreateDate(new Date());
wxTemplateMsg.setUpdateDate(new Date());
wxTemplateMsgMapper.insert(wxTemplateMsg);
// WxTemplateMsg wxTemplateMsg = new WxTemplateMsg();
// wxTemplateMsg.setTenantId(tenantId);
// wxTemplateMsg.setTemplateId("");
// wxTemplateMsg.setType(EnumTemplateType.ACTIVITY_REMIND.getCode());
// wxTemplateMsg.setCustomParam("{\"index\": [\"thing13\", \"date5\", \"thing12\", \"thing1\", \"thing11\"], \"emphasis\": \"\"}");
// wxTemplateMsg.setCreateDate(new Date());
// wxTemplateMsg.setUpdateDate(new Date());
// wxTemplateMsgMapper.insert(wxTemplateMsg);
//// wxTemplateMsg.setId(null);
//// wxTemplateMsg.setType(EnumTemplateType.LIVE_REMIND.getCode());
//// wxTemplateMsg.setCustomParam("{\"index\": [\"thing1\", \"date3\", \"thing4\", \"thing5\"], \"emphasis\": \"\"}");
//// wxTemplateMsgMapper.insert(wxTemplateMsg);
// wxTemplateMsg.setId(null);
// wxTemplateMsg.setType(EnumTemplateType.LIVE_REMIND.getCode());
// wxTemplateMsg.setCustomParam("{\"index\": [\"thing1\", \"date3\", \"thing4\", \"thing5\"], \"emphasis\": \"\"}");
// wxTemplateMsg.setType(EnumTemplateType.CREDIT_UPD_REMIND.getCode());
// wxTemplateMsg.setCustomParam("{\"index\": [\"character_string1\", \"character_string2\", \"time4\", \"thing3\"], \"emphasis\": \"\"}");
// wxTemplateMsgMapper.insert(wxTemplateMsg);
// wxTemplateMsg.setId(null);
// wxTemplateMsg.setType(EnumTemplateType.SEND_COUPON_REMIND.getCode());
// wxTemplateMsg.setCustomParam("{\"index\": [\"thing1\", \"time3\", \"time4\", \"thing5\"], \"emphasis\": \"\"}");
// wxTemplateMsgMapper.insert(wxTemplateMsg);
wxTemplateMsg.setId(null);
wxTemplateMsg.setType(EnumTemplateType.CREDIT_UPD_REMIND.getCode());
wxTemplateMsg.setCustomParam("{\"index\": [\"character_string1\", \"character_string2\", \"time4\", \"thing3\"], \"emphasis\": \"\"}");
wxTemplateMsgMapper.insert(wxTemplateMsg);
wxTemplateMsg.setId(null);
wxTemplateMsg.setType(EnumTemplateType.SEND_COUPON_REMIND.getCode());
wxTemplateMsg.setCustomParam("{\"index\": [\"thing1\", \"time3\", \"time4\", \"thing5\"], \"emphasis\": \"\"}");
wxTemplateMsgMapper.insert(wxTemplateMsg);
}

@Override
@@ -114,63 +124,32 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService {
}

@Override
public ResultData pushTemp(WxTemplateMsg wxTemplateMsg) {
WxTemplateMsg byId = this.getById(wxTemplateMsg.getId());
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);
public PageInfo<WxTemplateMsg> listAsPageForMiniApp(WxTemplateMsg record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxTemplateMsgMapper.findListForMiniApp(record));
}

@Override
public void sendTemplateMsg(WxAppinfo appinfo, Long userId, String toPage, Map<String, String> param) {
WxTemplateMsg templateMsgQ = new WxTemplateMsg();
templateMsgQ.setType(EnumTemplateType.PHOTO_SUCCESS.getCode());
templateMsgQ.setProjectType(appinfo.getProjectType());
templateMsgQ.setPlat(appinfo.getPlat());
templateMsgQ.setOnOff(EnumYesOrNo.YES.getCode());
WxTemplateMsg wxTemplateMsg = wxTemplateMsgMapper.selectOne(new QueryWrapper<>(templateMsgQ));
if(wxTemplateMsg == null){
return;
}
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);
}
}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());
} catch (WxErrorException e) {
return new ResultData(ErrorCode.TEMPLATE_ADD_ERROR);
}
}else{
return new ResultData(ErrorCode.TEMPLATE_NOT_FOUND);
String openId = cuserFactory.getCUserService(EnumAppPlat.getByCode(appinfo.getPlat())).getOpenId(userId);
if(StringUtils.isBlank(openId)){
return;
}
if(StringUtils.isBlank(s)){
return new ResultData(ErrorCode.TEMPLATE_ADD_ERROR);
try{
payServiceFactory.getMsgService(appinfo.getPlat()).sendSubscribeMsg(appinfo,wxTemplateMsg,openId,toPage,param);
}catch(Exception e){
logger.error("发送订阅消息失败"+ e);
return;
}

wxTemplateMsg.setTemplateId(s);
this.saveOrUpdate(wxTemplateMsg);
return new ResultData();
}

@Override
public PageInfo<WxTemplateMsg> listAsPageForMiniApp(WxTemplateMsg record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxTemplateMsgMapper.findListForMiniApp(record));
}




+ 1
- 1
suimangService/src/main/java/com/iformall/service/msg/impl/AfterCarInOutMsgServiceImpl.java View File

@@ -94,7 +94,7 @@ public class AfterCarInOutMsgServiceImpl implements MsgSendService {
logger.error("车牌未找到用户{}"+plateNumber);
return;
}
String openId = wxCUserMapper.findOpenId(userCar.getCUserId(), tenantEntity.getTenantId());
String openId = wxCUserMapper.findOpenId(userCar.getCUserId());
if(StringUtils.isBlank(openId)){
logger.error("车牌未找到用户{}"+plateNumber);
return;


+ 71
- 71
suimangService/src/main/java/com/iformall/service/msg/impl/SendSmartAppMsgServiceImpl.java View File

@@ -75,77 +75,77 @@ public class SendSmartAppMsgServiceImpl implements MsgSendService {
// throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND);
return;
}
if(0 == msg.getOnOff().intValue()){
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();
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()))
{
WxMaService wxMaService = null;
if(isFmOpen) {
wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(smartAppMsg.getAppId());
} else {
wxMaService = maUtil.getWeappService(appInfo);
}
//发微信
JSONObject customParam = JSON.parseObject(msg.getCustomParam());
List<String> dataList = smartAppMsg.getDataList();
JSONArray indexArr = customParam.getJSONArray("index");
List<WxMaSubscribeMessage.Data> dataTempList = new ArrayList<>();
for(int i=0;i<indexArr.size();i++) {
String key = indexArr.getString(i);
String value = dataList.get(i);
WxMaSubscribeMessage.Data templateData = new WxMaSubscribeMessage.Data(key, value);
dataTempList.add(templateData);
}
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();
wxMaService.getMsgService().sendSubscribeMsg(subscribeMessage);
// wxCUserMapper.updateMsgCountDown(tenantEntity.getTenantId(),to);
} catch (Exception e) {
logger.error("openId:"+to+"-----发送订阅消息失败");
}
}
}
}
// if(0 == msg.getOnOff().intValue()){
// 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();
//
// 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()))
//
// {
// WxMaService wxMaService = null;
// if(isFmOpen) {
// wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(smartAppMsg.getAppId());
// } else {
// wxMaService = maUtil.getWeappService(appInfo);
// }
// //发微信
// JSONObject customParam = JSON.parseObject(msg.getCustomParam());
// List<String> dataList = smartAppMsg.getDataList();
// JSONArray indexArr = customParam.getJSONArray("index");
//
// List<WxMaSubscribeMessage.Data> dataTempList = new ArrayList<>();
// for(int i=0;i<indexArr.size();i++) {
// String key = indexArr.getString(i);
// String value = dataList.get(i);
// WxMaSubscribeMessage.Data templateData = new WxMaSubscribeMessage.Data(key, value);
// dataTempList.add(templateData);
// }
//
// 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();
//
// wxMaService.getMsgService().sendSubscribeMsg(subscribeMessage);
//// wxCUserMapper.updateMsgCountDown(tenantEntity.getTenantId(),to);
// } catch (Exception e) {
// logger.error("openId:"+to+"-----发送订阅消息失败");
// }
// }
// }
//
// }

}
}

+ 19
- 1
suimangService/src/main/java/com/iformall/service/pay/PayServiceFactory.java View File

@@ -50,6 +50,7 @@ public class PayServiceFactory {
private Map<String,PayAdapterService> payVendorServiceMap = null;
private Map<String,PayShareAdapterService> payVendorShareMap = null;
private Map<String,PayAdapterService> platQrcodeMap = null;
private Map<String,PayAdapterService> platMsgMap = null;
@Autowired
WxMiniAppPayAdapterService wxMiniAppPayService;
@@ -133,6 +134,15 @@ public class PayServiceFactory {
return platQrcodeMap;
}

private Map<String,PayAdapterService> getPlatMsgMap() {
if (null == platMsgMap) {
platMsgMap = new ConcurrentHashMap<String,PayAdapterService>();
platMsgMap.put(EnumAppPlat.WX.getCode()+"_", wxMiniAppPayV3AdapterService);
platMsgMap.put(EnumAppPlat.TOUTIAO.getCode()+"_",ttMiniAppPayService);
}
return platMsgMap;
}

private Map<String,PayAdapterService> getPayVendorServiceMap() {
if (null == payVendorServiceMap) {
payVendorServiceMap = new ConcurrentHashMap<String,PayAdapterService>();
@@ -259,7 +269,15 @@ public class PayServiceFactory {
public PayAdapterService getQrcodeService(Integer type) throws MallinkException{
PayAdapterService service = getPlatQrcodeMap().get(type+"_");
if (null == service) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"payWay["+type+"] 二维码service未找到");
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"plat["+type+"] 二维码service未找到");
}
return service;
}

public PayAdapterService getMsgService(Integer type) throws MallinkException{
PayAdapterService service = getPlatMsgMap().get(type+"_");
if (null == service) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"plat["+type+"] 消息service未找到");
}
return service;
}


+ 11
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java View File

@@ -123,4 +123,15 @@ public interface PayAdapterService {
* @return
*/
PayAdapterResult noCreatePay(WxPayOrder record, WxComposeOrder composeOrder, List<WxOrder> childOrders);

/**
* 发小程序订阅消息
* @param appinfo
* @param wxTemplateMsg
* @param openId
* @param toPage
* @param param
*/
void sendSubscribeMsg(WxAppinfo appinfo, WxTemplateMsg wxTemplateMsg, String openId, String toPage, Map<String, String> param)throws Exception;

}

+ 1
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/BaseTtPayAdapterService.java View File

@@ -116,4 +116,5 @@ public class BaseTtPayAdapterService {
final File codeFile = ttappService.getQrcodeService().createTtaCode("douyin", pathStr, QRCodeUtils.QR_WIDTH);
return codeFile;
}

}

+ 17
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java View File

@@ -3,12 +3,15 @@ package com.iformall.service.pay.service.pay.douyin.v1.miniApp;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxMerchantVo;
import com.iformall.domain.vo.WxOrderCouponVo;
import com.iformall.douyin.miniapp.api.TtMaService;
import com.iformall.douyin.miniapp.api.bean.TtMaSubscribeMessage;
import com.iformall.douyin.pay.DouYinPayHelper;
import com.iformall.douyin.pay.TtPayService;
import com.iformall.douyin.pay.orderQuery.OrderQueryResult;
@@ -526,4 +529,18 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen
return par;
}

@Override
public void sendSubscribeMsg(WxAppinfo appinfo, WxTemplateMsg wxTemplateMsg, String openId, String toPage, Map<String, String> param) throws Exception{
TtMaService ttappService = maUtil.getTtMaService(appinfo);
TtMaSubscribeMessage subscribeMessage = TtMaSubscribeMessage.builder()
.appId(appinfo.getAppId())
.tplId(wxTemplateMsg.getTemplateId())
.openId(openId)
.page(toPage)
.data(new Gson().toJsonTree(param).getAsJsonObject())
.build();
ttappService.getMsgService().sendSubscribeMsg(subscribeMessage);

}

}

+ 34
- 10
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java View File

@@ -1,11 +1,13 @@
package com.iformall.service.pay.service.pay.wx;

import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;

import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
import cn.binarywang.wx.miniapp.bean.scheme.WxMaGenerateSchemeRequest;
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
import com.alibaba.fastjson.JSONArray;
import com.iformall.domain.po.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

@@ -16,13 +18,6 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.PosCouponOrderVerify;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxBatchOrder;
import com.iformall.domain.po.WxCouponOrder;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.WxPayAccount;
import com.iformall.domain.po.WxPayOrder;
import com.iformall.enums.EnumCouponOrderStatus;
import com.iformall.enums.EnumOrderFrom;
import com.iformall.enums.EnumOrderStatus;
@@ -105,6 +100,35 @@ public class BaseWxPayAdapterService {
}
}

protected void subscribeMsg(WxAppinfo appinfo, WxTemplateMsg wxTemplateMsg, String openId, String toPage, Map<String, String> param) throws WxErrorException {
boolean isFmOpen = false;
WxMaService wxMaService;
if(isFmOpen) {
wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appinfo.getAppId());
} else {
wxMaService = maUtil.getWeappService(appinfo);
}
JSONObject customParam = JSON.parseObject(wxTemplateMsg.getCustomParam());
JSONArray indexArr = customParam.getJSONArray("index");
List<WxMaSubscribeMessage.Data> dataTempList = new ArrayList<>();
for(int i=0;i<indexArr.size();i++) {
String key = indexArr.getString(i);
String value = param.get(key);
WxMaSubscribeMessage.Data templateData = new WxMaSubscribeMessage.Data(key, value);
dataTempList.add(templateData);
}
WxMaSubscribeMessage subscribeMessage = WxMaSubscribeMessage.builder()
.templateId(wxTemplateMsg.getTemplateId())
.toUser(openId)
.page(toPage)
.lang(WxMaConstants.MiniprogramLang.ZH_CN)
.miniprogramState(WxMaConstants.MiniprogramState.FORMAL)
.data(dataTempList)
.build();
wxMaService.getMsgService().sendSubscribeMsg(subscribeMessage);

}

protected String generateScheme(WxAppinfo appinfo,String pageUrl,String sceneParam,Long expireTime) throws WxErrorException {
boolean isFmOpen = false;
WxMaService wxMaService;


+ 5
- 0
suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java View File

@@ -460,4 +460,9 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR);
}

@Override
public void sendSubscribeMsg(WxAppinfo appinfo, WxTemplateMsg wxTemplateMsg, String openId, String toPage, Map<String, String> param) throws Exception {
super.subscribeMsg(appinfo,wxTemplateMsg,openId,toPage,param);
}

}

+ 1
- 0
suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java View File

@@ -60,5 +60,6 @@ public interface UserDigitalAvatarOrderService {

void createPhoto(UserDigitalAvatarOrder record);

void sendPhotoSuccess(UserDigitalAvatarOrder record);

}

+ 31
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java View File

@@ -6,6 +6,8 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.UserBasicProperty;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.msg.WxMsg;
import com.iformall.domain.po.sm.DigitalAvatarMould;
import com.iformall.domain.po.sm.UserDigitalAvatarOrder;
import com.iformall.domain.po.sm.UserDigitalAvatarPhoto;
@@ -14,11 +16,14 @@ import com.iformall.exception.MallinkException;
import com.iformall.file.aliyun.AliyunOSS;
import com.iformall.mapper.*;
import com.iformall.service.UserBasicPropertyService;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxTemplateMsgService;
import com.iformall.service.impl.ProductOrderServiceImpl;
import com.iformall.service.sm.UserDigitalAvatarOrderService;
import com.iformall.service.sm.UserDigitalAvatarPhotoService;
import com.iformall.sm.*;
import com.iformall.utils.Base64Util;
import com.iformall.utils.DateUtils;
import com.iformall.utils.RedisLock;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -34,7 +39,9 @@ import org.springframework.transaction.annotation.Transactional;

import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;


@@ -60,6 +67,12 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder
@Autowired
UserBasicPropertyService userBasicPropertyService;

@Autowired
WxAppinfoService wxAppinfoService;

@Autowired
WxTemplateMsgService wxTemplateMsgService;

@Autowired
private AliyunOSS aliyunOSS;

@@ -290,4 +303,22 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder

}

@Async
@Override
public void sendPhotoSuccess(UserDigitalAvatarOrder record) {
UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderMapper.selectById(record.getId());
if(!EnumDigitalAvatarOrderStatus.finish.getCode().equals(userDigitalAvatarOrder.getStatus())){
return;
}
//默认先发微信订阅消息
WxAppinfo appinfo = wxAppinfoService.getProjectCAppInfoFromRedis(EnumProject.PROJECT_5.getCode(), EnumAppPlat.WX.getCode());
String toPage = "/pages/lookPhoto/index?id="+record.getId();
Map<String,String> param = new HashMap<>();
param.put("thing1",record.getTitle());
param.put("character_string3",record.getId().toString());
param.put("time4", DateUtils.date2String(record.getUpdateDate()));

wxTemplateMsgService.sendTemplateMsg(appinfo,record.getUserId(),toPage,param);
}

}

+ 2
- 2
suimangService/src/main/resources/mapper/TtCUserMapper.xml View File

@@ -441,7 +441,7 @@
<!-- union_id = IF(union_id is null ,null,CONCAT(union_id,"_del"))-->


<select id="findOpenIdList" parameterType="hashmap" resultType="String" >
select open_id from tt_c_user where user_id=#{userId} and tenant_id = #{tenantId}
<select id="findOpenId" parameterType="hashmap" resultType="String" >
select open_id from tt_c_user where user_id=#{userId}
</select>
</mapper>

+ 1
- 1
suimangService/src/main/resources/mapper/WxCUserMapper.xml View File

@@ -446,7 +446,7 @@


<select id="findOpenId" parameterType="hashmap" resultType="String" >
select open_id from wx_c_user where user_id=#{userId} and tenant_id = #{tenantId}
select open_id from wx_c_user where user_id=#{userId}
</select>

<select id="findCuserId" parameterType="hashmap" resultType="Long" >


+ 9
- 1
suimangService/src/main/resources/mapper/WxTemplateMsgMapper.xml View File

@@ -12,10 +12,12 @@
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
<result column="on_off" jdbcType="INTEGER" property="onOff"/>
<result column="project_type" jdbcType="INTEGER" property="projectType"/>
<result column="plat" jdbcType="INTEGER" property="plat"/>
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`template_id`,`type`,`custom_param`,`create_date`,`update_date`,`on_off`
`id`,`tenant_id`,`parent_tenant_id`,`template_id`,`type`,`custom_param`,`create_date`,`update_date`,`on_off`,`project_type`,`plat`
</sql>

<sql id="dynamicWhereConditions">
@@ -50,6 +52,12 @@
<if test=" null != onOff ">
and `on_off` = #{onOff}
</if>
<if test=" null != projectType ">
and `project_type` = #{projectType}
</if>
<if test=" null != plat ">
and `plat` = #{plat}
</if>

<if test=" isc ">
and `template_id` is not null and `template_id` &lt;&gt; ''


Loading…
Cancel
Save