新增商户端订单通知(通过公众号)
This commit is contained in:
@ -11,6 +11,8 @@ package co.yixiang.modules.mp.listener;
|
||||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import co.yixiang.constant.ShopConstants;
|
||||
import co.yixiang.enums.BillDetailEnum;
|
||||
import co.yixiang.enums.PayTypeEnum;
|
||||
import co.yixiang.event.TemplateBean;
|
||||
@ -20,13 +22,17 @@ import co.yixiang.exception.BadRequestException;
|
||||
import co.yixiang.message.rocketmq.MqProducer;
|
||||
import co.yixiang.modules.activity.domain.YxUserExtract;
|
||||
import co.yixiang.modules.activity.service.YxUserExtractService;
|
||||
import co.yixiang.modules.customer.domain.YxStoreCustomer;
|
||||
import co.yixiang.modules.customer.service.YxStoreCustomerService;
|
||||
import co.yixiang.modules.mp.service.WeiXinSubscribeService;
|
||||
import co.yixiang.modules.mp.service.WeixinPayService;
|
||||
import co.yixiang.modules.mp.service.WeixinTemplateService;
|
||||
import co.yixiang.modules.order.vo.YxStoreOrderQueryVo;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
import co.yixiang.modules.user.service.YxUserBillService;
|
||||
import co.yixiang.modules.user.service.YxUserService;
|
||||
import co.yixiang.modules.user.service.dto.WechatUserDto;
|
||||
import co.yixiang.utils.DateUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -37,7 +43,9 @@ import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -61,6 +69,8 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
private WeixinPayService payService;
|
||||
@Autowired
|
||||
private YxUserBillService billService;
|
||||
@Autowired
|
||||
private YxStoreCustomerService yxStoreCustomerService;
|
||||
//@Autowired
|
||||
//private MqProducer mqProducer;
|
||||
|
||||
@ -83,6 +93,18 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
, templateBean.getPrice(), templateBean.getUid());
|
||||
weiXinSubscribeService.paySuccessNotice(templateBean.getOrderId()
|
||||
, templateBean.getPrice(), templateBean.getUid());
|
||||
/**************给客服发送消息**************/
|
||||
try {
|
||||
List<YxStoreCustomer> yxStoreCustomers = yxStoreCustomerService.list(new LambdaQueryWrapper<YxStoreCustomer>().eq(YxStoreCustomer::getIsEnable, ShopConstants.YSHOP_ONE_NUM));
|
||||
yxStoreCustomers.forEach(msg -> {
|
||||
if (StrUtil.isNotBlank(msg.getOpenId())) {
|
||||
weixinTemplateService.paySuccessNoticeToKefu(templateBean.getOrderId()
|
||||
, templateBean.getPrice(), templateBean.getUid());
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
log.error("消息发送失败:{}", e);
|
||||
}
|
||||
break;
|
||||
case TYPE_2:
|
||||
//处理退款与消息
|
||||
@ -114,7 +136,7 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
YxUser user = userService.getById(resources.getUid());
|
||||
if (user != null) {
|
||||
WechatUserDto wechatUser = user.getWxProfile();
|
||||
if (ObjectUtil.isNotNull(wechatUser)&&ObjectUtil.isNotNull(wechatUser.getRoutineOpenid())) {
|
||||
if (ObjectUtil.isNotNull(wechatUser) && ObjectUtil.isNotNull(wechatUser.getRoutineOpenid())) {
|
||||
try {
|
||||
String nonce_str = UUID.randomUUID().toString().replace("-", "");
|
||||
payService.entPay(wechatUser.getRoutineOpenid(), nonce_str,
|
||||
@ -122,7 +144,7 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
resources.getExtractPrice().multiply(new BigDecimal(100)).intValue());
|
||||
success = true;
|
||||
} catch (WxPayException e) {
|
||||
log.error("退款失败,原因:{}",e.getMessage());
|
||||
log.error("退款失败,原因:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -140,8 +162,6 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
break;
|
||||
default:
|
||||
//todo
|
||||
|
@ -12,14 +12,17 @@ import cn.hutool.core.util.StrUtil;
|
||||
import co.yixiang.api.YshopException;
|
||||
import co.yixiang.constant.ShopConstants;
|
||||
import co.yixiang.enums.ShopCommonEnum;
|
||||
import co.yixiang.exception.BadRequestException;
|
||||
import co.yixiang.modules.mp.config.WxMpConfiguration;
|
||||
import co.yixiang.modules.mp.domain.YxWechatTemplate;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
import co.yixiang.modules.user.service.YxUserService;
|
||||
import co.yixiang.modules.user.service.dto.WechatUserDto;
|
||||
import co.yixiang.modules.mp.enums.WechatTempateEnum;
|
||||
import co.yixiang.utils.RedisUtil;
|
||||
import co.yixiang.utils.RedisUtils;
|
||||
import co.yixiang.utils.ShopKeyUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
|
||||
@ -35,6 +38,7 @@ import java.util.Map;
|
||||
* @Author hupeng <610796224@qq.com>
|
||||
* @Date 2020/6/27
|
||||
**/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WeixinTemplateService {
|
||||
|
||||
@ -101,6 +105,42 @@ public class WeixinTemplateService {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 支付成功通知给客服
|
||||
*
|
||||
* @param orderId
|
||||
* @param price
|
||||
* @param uid
|
||||
*/
|
||||
public void paySuccessNoticeToKefu(String orderId,String price,Long uid) {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("first", "尊敬的客服,您有新订单了");
|
||||
map.put("keyword1",orderId);
|
||||
map.put("keyword2",price);
|
||||
map.put("remark",ShopConstants.YSHOP_WECHAT_PUSH_REMARK);
|
||||
String tempId = this.getTempId(WechatTempateEnum.PAY_SUCCESS.getValue());
|
||||
String appId=RedisUtil.get(ShopKeyUtils.getWxAppAppId());
|
||||
if(StrUtil.isNotBlank(tempId)) {
|
||||
String openid = this.getUserOpenid(uid);
|
||||
if(StrUtil.isBlank(openid)) {
|
||||
return;
|
||||
}
|
||||
if(StrUtil.isBlank(appId)){
|
||||
this.sendWxMpTemplateMessage( openid,tempId, this.getSiteUrl()+"/order/detail/"+orderId,map);
|
||||
}else{
|
||||
WxMpTemplateMessage.MiniProgram miniProgram = new WxMpTemplateMessage.MiniProgram();
|
||||
miniProgram.setAppid(RedisUtil.get(ShopKeyUtils.getWxAppAppId()));
|
||||
miniProgram.setPagePath("pages/orderAdmin/AdminOrder/index?oid=" + orderId);
|
||||
this.sendWxMpTemplateMessageToWx(openid, tempId, miniProgram, map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 退款成功通知
|
||||
* @param orderId 订单号
|
||||
@ -183,6 +223,29 @@ public class WeixinTemplateService {
|
||||
return msgId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public String sendWxMpTemplateMessageToWx(String openId, String templateId, WxMpTemplateMessage.MiniProgram miniProgram, Map<String, String> map) {
|
||||
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
|
||||
.toUser(openId)
|
||||
.templateId(templateId)
|
||||
.miniProgram(miniProgram)
|
||||
.build();
|
||||
map.forEach((k, v) -> {
|
||||
templateMessage.addData(new WxMpTemplateData(k, v, "#000000"));
|
||||
});
|
||||
String msgId = null;
|
||||
WxMpService wxService = WxMpConfiguration.getWxMpService();
|
||||
try {
|
||||
msgId = wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
|
||||
} catch (WxErrorException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
return msgId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取模板消息id
|
||||
* @param key 模板key
|
||||
|
Reference in New Issue
Block a user