|
|
|
@@ -11,9 +11,7 @@ import com.iformall.common.Result; |
|
|
|
import com.iformall.common.ResultData; |
|
|
|
import com.iformall.domain.dto.WxSharingOrderDto; |
|
|
|
import com.iformall.domain.po.*; |
|
|
|
import com.iformall.domain.po.msg.AppUniformMsg; |
|
|
|
import com.iformall.domain.po.msg.MpAppMsg; |
|
|
|
import com.iformall.domain.po.msg.SmartAppMsg; |
|
|
|
import com.iformall.domain.po.msg.*; |
|
|
|
import com.iformall.domain.vo.*; |
|
|
|
import com.iformall.enums.*; |
|
|
|
import com.iformall.exception.MallinkException; |
|
|
|
@@ -276,61 +274,96 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
|
public WxCouponOrder verify(Long couponOrderId, Long bUserId) { |
|
|
|
public WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser) { |
|
|
|
|
|
|
|
WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); |
|
|
|
if (wxCouponOrder == null) { |
|
|
|
logger.error("券ID不存在:" + couponOrderId); |
|
|
|
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); |
|
|
|
} |
|
|
|
|
|
|
|
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue()); |
|
|
|
if (wxMerchantBUser == null) { |
|
|
|
logger.error("核销员ID不存在:" + bUserId); |
|
|
|
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); |
|
|
|
} |
|
|
|
|
|
|
|
WxCoupon wxCoupon = wxCouponMapper.selectByPrimaryKey(wxCouponOrder.getCouponId()); |
|
|
|
// 1. 获取券信息 |
|
|
|
WxCoupon wxCoupon = wxCouponMapper.selectByPrimaryKey(couponOrder.getCouponId()); |
|
|
|
if (wxCoupon == null) { |
|
|
|
logger.error("券: coupon-" + wxCoupon.getId() + "不存在" + "couponOrder-" + wxCouponOrder.getId()); |
|
|
|
logger.error("券: coupon-" + wxCoupon.getId() + "不存在" + "couponOrder-" + couponOrder.getId()); |
|
|
|
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); |
|
|
|
}else { |
|
|
|
WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); |
|
|
|
wxCouponMerchant.setProductId(wxCoupon.getId()); |
|
|
|
wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); |
|
|
|
List<WxCouponMerchant> couponMerchantList = wxCouponMerchantMapper.findList(wxCouponMerchant); |
|
|
|
if (!couponMerchantList.stream().anyMatch(cm->cm.getMerchantId().equals(wxMerchantBUser.getMerchantId()))){ |
|
|
|
logger.error("券: coupon-" + wxCoupon.getId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId()); |
|
|
|
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 2. 检查适用门店 |
|
|
|
WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); |
|
|
|
wxCouponMerchant.setProductId(wxCoupon.getId()); |
|
|
|
wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); |
|
|
|
List<WxCouponMerchant> couponMerchantList = wxCouponMerchantMapper.findList(wxCouponMerchant); |
|
|
|
if (!couponMerchantList.stream().anyMatch(cm->cm.getMerchantId().equals(bUser.getMerchantId()))){ |
|
|
|
logger.error("券: coupon-" + wxCoupon.getId() + "核销: couponMerchantId-" + bUser.getMerchantId()); |
|
|
|
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); |
|
|
|
} |
|
|
|
|
|
|
|
if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { |
|
|
|
logger.error("已过期: couponOrder-" + wxCouponOrder.getId()); |
|
|
|
// 3. 券包状态检查 |
|
|
|
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { |
|
|
|
logger.error("已过期: couponOrder-" + couponOrder.getId()); |
|
|
|
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); |
|
|
|
} |
|
|
|
if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) { |
|
|
|
logger.error("已退款: couponOrder-" + wxCouponOrder.getId()); |
|
|
|
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) { |
|
|
|
logger.error("已退款: couponOrder-" + couponOrder.getId()); |
|
|
|
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID); |
|
|
|
} |
|
|
|
if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { |
|
|
|
logger.error("已经核销过的券: couponOrder-" + wxCouponOrder.getId()); |
|
|
|
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { |
|
|
|
logger.error("已经核销过的券: couponOrder-" + couponOrder.getId()); |
|
|
|
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); |
|
|
|
} |
|
|
|
int num = 0; |
|
|
|
try { |
|
|
|
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 |
|
|
|
wxCouponOrder.setbUserId(wxMerchantBUser.getId()); |
|
|
|
wxCouponOrder.setUpdateDate(new Date()); |
|
|
|
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); |
|
|
|
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 |
|
|
|
couponOrder.setbUserId(bUser.getId()); |
|
|
|
couponOrder.setUpdateDate(new Date()); |
|
|
|
num = wxCouponOrderMapper.updateVerifyCouponOrder(couponOrder); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("db failed: couponOrder-" + wxCouponOrder.getId() + ", e:" + e.getMessage()); |
|
|
|
logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage()); |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); |
|
|
|
} |
|
|
|
if(num != 1) { |
|
|
|
logger.error("核销异常:updatete num " + num); |
|
|
|
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num); |
|
|
|
} |
|
|
|
return couponOrder; |
|
|
|
} |
|
|
|
|
|
|
|
return wxCouponOrder; |
|
|
|
@Override |
|
|
|
public void sendInsideCouponVerifyMsg(WxCouponOrder couponOrder, WxMerchantBUser bUser) { |
|
|
|
FmInsideCouponVerifyMsg verifyMsg = new FmInsideCouponVerifyMsg(); |
|
|
|
verifyMsg.setMsgType(EnumMsgRecordType.INSIDE_COUPON_VERIFY.getCode()); |
|
|
|
verifyMsg.setTenantId(couponOrder.getTenantId()); |
|
|
|
verifyMsg.setCouponOrderId(couponOrder.getId()); |
|
|
|
verifyMsg.setBUserId(bUser.getId()); |
|
|
|
mqBaseProducer.sendMessage(verifyMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void actionAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser) { |
|
|
|
try { |
|
|
|
// 核销分账 |
|
|
|
shareAfterVerify(couponOrder, bUser.getMerchantId()); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
// 核销补贴 |
|
|
|
subsidyAfterVerify(couponOrder, bUser.getMerchantId()); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
boolean bSentCoupon = false; |
|
|
|
|
|
|
|
// 核销发券 |
|
|
|
try { |
|
|
|
bSentCoupon = sendCouponAfterVerify(couponOrder, bUser); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
// 核销发模板消息 |
|
|
|
try { |
|
|
|
sendVerifyMsg(couponOrder, bUser, bSentCoupon); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("核销发送消息发生错误:"+e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@@ -510,6 +543,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { |
|
|
|
|
|
|
|
// 6. get payOrder info |
|
|
|
if(StringUtils.isBlank(order.getFormId())) { |
|
|
|
// formId为空,获取prepayId |
|
|
|
WxPayOrder payOrder = null; |
|
|
|
WxPayOrder payOrderQ = new WxPayOrder(); |
|
|
|
payOrderQ.setTenantId(couponOrder.getTenantId()); |
|
|
|
@@ -557,129 +591,154 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { |
|
|
|
StringUtils.isNotBlank(user.getMpOpenId()) && |
|
|
|
user.getMpSubscribe().equals(EnumUserIsSubscribe.YES.getCode())) { |
|
|
|
// 已关注公众号 |
|
|
|
/** |
|
|
|
* 卡券核销通知 |
|
|
|
* {{first.DATA}} |
|
|
|
* 卡券类型:{{keyword1.DATA}} |
|
|
|
* 卡券号码:{{keyword2.DATA}} |
|
|
|
* 核销时间:{{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.setTenantId(couponOrder.getTenantId()); |
|
|
|
mpAppMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode()); |
|
|
|
mpAppMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMpTemplateData("first", "商家"+merchant.getName()+"的券被核销", "#173177"), |
|
|
|
new WxMpTemplateData("keyword1", EnumCouponType.getEnum(coupon.getType()).getMessage(), "#173177"), |
|
|
|
new WxMpTemplateData("keyword2", couponOrder.getId().toString(), "#173177"), |
|
|
|
new WxMpTemplateData("keyword3", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMpTemplateData("remark", "更多优惠等您来!", "#173177") |
|
|
|
)); |
|
|
|
|
|
|
|
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); |
|
|
|
} |
|
|
|
doVerifyMpMsg(couponOrder, coupon, merchant, user, dateFormat, gotopage); |
|
|
|
return; |
|
|
|
} else { |
|
|
|
// 可能未关注公众号, 用户可能收不到 |
|
|
|
// 8. 微信小程序-统一消息 |
|
|
|
// 获取小程序关联的服务号 |
|
|
|
WxAuthorizerInfo authQ = new WxAuthorizerInfo(); |
|
|
|
authQ.setAuthorizerAppid(user.getAppId()); |
|
|
|
authQ.setTenantId(user.getTenantId()); |
|
|
|
WxAuthorizerInfo weappInfo = authorizerInfoMapper.findMp(authQ); |
|
|
|
if(weappInfo != null) { |
|
|
|
AppUniformMsg appUniformMsg = new AppUniformMsg(); |
|
|
|
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.setUrl("http://iformall.com"); |
|
|
|
appUniformMsg.setMpAppId(weappInfo.getAuthorizerAppid()); |
|
|
|
appUniformMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMaTemplateData("first", "商家"+merchant.getName()+"的券被核销", "#173177"), |
|
|
|
new WxMaTemplateData("keyword1", EnumCouponType.getEnum(coupon.getType()).getMessage(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword2", couponOrder.getId().toString(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword3", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMaTemplateData("remark", "更多优惠等您来!", "#173177") |
|
|
|
)); |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
doVerifyAppUniformMsg(couponOrder, coupon, merchant, user, dateFormat, gotopage); |
|
|
|
} |
|
|
|
|
|
|
|
// 9. 微信小程序-模板消息 |
|
|
|
SmartAppMsg smartAppMsg; |
|
|
|
if (bUsed) { |
|
|
|
//mq发送小程序消息 - 核销成功消息 |
|
|
|
/** |
|
|
|
* 核销成功消息 |
|
|
|
* 核销金额 {{keyword1.DATA}} |
|
|
|
* 商家名称 {{keyword2.DATA}} |
|
|
|
* 商品 {{keyword3.DATA}} |
|
|
|
* 商品描述 {{keyword4.DATA}} |
|
|
|
* 订单金额 {{keyword5.DATA}} |
|
|
|
* 核销时间 {{keyword6.DATA}} |
|
|
|
* 温馨提示 {{keyword7.DATA}} |
|
|
|
*/ |
|
|
|
smartAppMsg = new SmartAppMsg(); |
|
|
|
smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); |
|
|
|
smartAppMsg.setAppId(user.getAppId()); |
|
|
|
smartAppMsg.setTenantId(couponOrder.getTenantId()); |
|
|
|
smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_SUCCESS.getCode()); |
|
|
|
smartAppMsg.setGotopage(gotopage); |
|
|
|
smartAppMsg.setTo(user.getOpenId()); |
|
|
|
smartAppMsg.setFormId(formId); |
|
|
|
smartAppMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMaTemplateData("keyword1", coupon.getPriceStr() + "元", "#173177"), |
|
|
|
new WxMaTemplateData("keyword2", merchant.getName(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword3", coupon.getTitle(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword4", couponDetail, "#173177"), |
|
|
|
new WxMaTemplateData("keyword5", coupon.getSalePriceStr() + "元", "#173177"), |
|
|
|
new WxMaTemplateData("keyword6", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMaTemplateData("keyword7", notes, "#173177"))); |
|
|
|
smartAppMsg.setEmphasisKeyword("keyword1.DATA"); |
|
|
|
doVerifySuccessMsg(couponOrder, formId, coupon, merchant, user, dateFormat, couponDetail, gotopage, notes); |
|
|
|
} else { |
|
|
|
// mq发送小程序消息 - 核销失败消息 |
|
|
|
/** |
|
|
|
* 核销失败消息 |
|
|
|
* 商品名称 {{keyword1.DATA}} |
|
|
|
* 核销时间 {{keyword2.DATA}} |
|
|
|
* 失败原因 {{keyword3.DATA}} |
|
|
|
* 备注 {{keyword4.DATA}} |
|
|
|
*/ |
|
|
|
smartAppMsg = new SmartAppMsg(); |
|
|
|
smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); |
|
|
|
smartAppMsg.setAppId(user.getAppId()); |
|
|
|
smartAppMsg.setTenantId(couponOrder.getTenantId()); |
|
|
|
smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_FAIL.getCode()); |
|
|
|
smartAppMsg.setGotopage(gotopage); |
|
|
|
smartAppMsg.setTo(user.getOpenId()); |
|
|
|
smartAppMsg.setReceiver(user.getOpenId()); |
|
|
|
smartAppMsg.setFormId(formId); |
|
|
|
smartAppMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMaTemplateData("keyword1", coupon.getTitle(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword2", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMaTemplateData("keyword3", "未知"), |
|
|
|
new WxMaTemplateData("keyword4", couponDetail))); |
|
|
|
smartAppMsg.setEmphasisKeyword("keyword1.DATA"); |
|
|
|
doVerifyFailMsg(couponOrder, formId, coupon, user, dateFormat, couponDetail, gotopage); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void doVerifyMpMsg(WxCouponOrder couponOrder, WxCoupon coupon, WxMerchant merchant, WxCUser user, SimpleDateFormat dateFormat, String gotopage) { |
|
|
|
/** |
|
|
|
* 卡券核销通知 |
|
|
|
* {{first.DATA}} |
|
|
|
* 卡券类型:{{keyword1.DATA}} |
|
|
|
* 卡券号码:{{keyword2.DATA}} |
|
|
|
* 核销时间:{{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.setTenantId(couponOrder.getTenantId()); |
|
|
|
mpAppMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode()); |
|
|
|
mpAppMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMpTemplateData("first", "商家"+merchant.getName()+"的券被核销", "#173177"), |
|
|
|
new WxMpTemplateData("keyword1", EnumCouponType.getEnum(coupon.getType()).getMessage(), "#173177"), |
|
|
|
new WxMpTemplateData("keyword2", couponOrder.getId().toString(), "#173177"), |
|
|
|
new WxMpTemplateData("keyword3", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMpTemplateData("remark", "更多优惠等您来!", "#173177") |
|
|
|
)); |
|
|
|
|
|
|
|
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.setTenantId(user.getTenantId()); |
|
|
|
WxAuthorizerInfo weappInfo = authorizerInfoMapper.findMp(authQ); |
|
|
|
if(weappInfo != null) { |
|
|
|
AppUniformMsg appUniformMsg = new AppUniformMsg(); |
|
|
|
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.setUrl("http://iformall.com"); |
|
|
|
appUniformMsg.setMpAppId(weappInfo.getAuthorizerAppid()); |
|
|
|
appUniformMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMaTemplateData("first", "商家"+merchant.getName()+"的券被核销", "#173177"), |
|
|
|
new WxMaTemplateData("keyword1", EnumCouponType.getEnum(coupon.getType()).getMessage(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword2", couponOrder.getId().toString(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword3", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMaTemplateData("remark", "更多优惠等您来!", "#173177") |
|
|
|
)); |
|
|
|
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, String notes) { |
|
|
|
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.setAppId(user.getAppId()); |
|
|
|
smartAppMsg.setTenantId(couponOrder.getTenantId()); |
|
|
|
smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_SUCCESS.getCode()); |
|
|
|
smartAppMsg.setGotopage(gotopage); |
|
|
|
smartAppMsg.setTo(user.getOpenId()); |
|
|
|
smartAppMsg.setFormId(formId); |
|
|
|
smartAppMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMaTemplateData("keyword1", coupon.getPriceStr() + "元", "#173177"), |
|
|
|
new WxMaTemplateData("keyword2", merchant.getName(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword3", coupon.getTitle(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword4", couponDetail, "#173177"), |
|
|
|
new WxMaTemplateData("keyword5", coupon.getSalePriceStr() + "元", "#173177"), |
|
|
|
new WxMaTemplateData("keyword6", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMaTemplateData("keyword7", notes, "#173177"))); |
|
|
|
smartAppMsg.setEmphasisKeyword("keyword1.DATA"); |
|
|
|
|
|
|
|
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.setAppId(user.getAppId()); |
|
|
|
smartAppMsg.setTenantId(couponOrder.getTenantId()); |
|
|
|
smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_FAIL.getCode()); |
|
|
|
smartAppMsg.setGotopage(gotopage); |
|
|
|
smartAppMsg.setTo(user.getOpenId()); |
|
|
|
smartAppMsg.setReceiver(user.getOpenId()); |
|
|
|
smartAppMsg.setFormId(formId); |
|
|
|
smartAppMsg.setTemplateDataList(Lists.newArrayList( |
|
|
|
new WxMaTemplateData("keyword1", coupon.getTitle(), "#173177"), |
|
|
|
new WxMaTemplateData("keyword2", dateFormat.format(new Date()), "#173177"), |
|
|
|
new WxMaTemplateData("keyword3", "未知"), |
|
|
|
new WxMaTemplateData("keyword4", couponDetail))); |
|
|
|
smartAppMsg.setEmphasisKeyword("keyword1.DATA"); |
|
|
|
|
|
|
|
try { |
|
|
|
mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); |
|
|
|
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); |
|
|
|
|