| @@ -113,6 +113,13 @@ public class WxMsgRecordController extends BaseController { | |||
| msg.setTenantId(wxMsgRecord.getTenantId()); | |||
| msg.updateTenantInfo(tenantEntity); | |||
| mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| }else if(EnumMsgRecordType.INSIDE_ORDER_REFUND.getCode().equals(wxMsgRecord.getMsgType())){ | |||
| //内部消息 - 下订单成功 | |||
| FmInsideOrderRefundMsg msg = (FmInsideOrderRefundMsg) JsonUtil.readValue(wxMsgRecord.getMsgJson(),FmInsideOrderRefundMsg.class); | |||
| msg.setMsgType(wxMsgRecord.getMsgType()); | |||
| msg.setReceiver(wxMsgRecord.getReceiver()); | |||
| msg.updateTenantInfo(tenantEntity); | |||
| mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| } | |||
| } | |||
| return new ResultData(); | |||
| @@ -35,6 +35,8 @@ public class MqBaseConsumer { | |||
| @Autowired | |||
| private FmInsideCouponVerifyMsgServiceImpl fmInsideCouponVerifyMsgService; | |||
| @Autowired | |||
| private FmInsideOrderRefundMsgServiceImpl fmInsideOrderRefundMsgService; | |||
| @Autowired | |||
| private FmInsideCLoginMsgServiceImpl fmInsideCLoginMsgService; | |||
| @Autowired | |||
| private MqBaseProducer mqBaseProducer; | |||
| @@ -91,6 +93,10 @@ public class MqBaseConsumer { | |||
| // 内部消息 - 券核销 | |||
| FmInsideCouponVerifyMsg msg = (FmInsideCouponVerifyMsg)JsonUtil.readValue(message,FmInsideCouponVerifyMsg.class); | |||
| fmInsideCouponVerifyMsgService.send(msg); | |||
| } else if(EnumMsgRecordType.INSIDE_ORDER_REFUND.getCode().equals(baseMsg.getMsgType())){ | |||
| //内部消息 - 退款申请成功 | |||
| FmInsideOrderRefundMsg msg = (FmInsideOrderRefundMsg) JsonUtil.readValue(message,FmInsideOrderRefundMsg.class); | |||
| fmInsideOrderRefundMsgService.send(msg); | |||
| } else if(EnumMsgRecordType.INSIDE_C_LOGIN.getCode().equals(baseMsg.getMsgType())) { | |||
| // 内部消息 - c端登录 | |||
| FmInsideCLoginMsg msg = (FmInsideCLoginMsg)JsonUtil.readValue(message,FmInsideCLoginMsg.class); | |||
| @@ -0,0 +1,21 @@ | |||
| package com.iformall.domain.po.msg; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class FmInsideOrderRefundMsg extends BaseMsg{ | |||
| @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") | |||
| private String tenantId; | |||
| @io.swagger.annotations.ApiModelProperty(value="父租户id",name="parentTenantId") | |||
| private String parentTenantId; | |||
| @io.swagger.annotations.ApiModelProperty(value = "", name = "couponOrderId") | |||
| private Long couponOrderId; | |||
| @io.swagger.annotations.ApiModelProperty(value = "退款订单ID", name = "orderId") | |||
| private Long orderId; | |||
| } | |||
| @@ -38,6 +38,9 @@ public enum EnumMsgModel { | |||
| COUPON_CARD_SEND(30, "系统发卡"), | |||
| INVEST_REMIND(31, "招商预约提醒"), | |||
| COUPON_ORDER_SUCCESS(32,"购买成功提醒"), | |||
| COUPON_ORDER_REFUND(33,"提交退款提醒"), | |||
| ; | |||
| public static EnumMsgModel getEnum(Integer code) { | |||
| @@ -20,6 +20,7 @@ public enum EnumMsgRecordType { | |||
| INSIDE_NOTIFY_REFUND_SUCCESS(104, "微信退款回调"), | |||
| COUPON_STOCK(105, "券库存更新"), | |||
| CASH_OUT(106,"商户提现"), | |||
| INSIDE_ORDER_REFUND(107, "退款提交成功"), | |||
| ; | |||
| public static EnumMsgRecordType getEnum(Integer code) { | |||
| @@ -2,9 +2,7 @@ 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.WxMerchantBUser; | |||
| import com.iformall.domain.po.WxRefundOrder; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.enums.EnumPayType; | |||
| import com.iformall.enums.EnumPayWay; | |||
| @@ -100,4 +98,5 @@ public interface WxRefundOrderService { | |||
| boolean hasRefundOrder(Long orderId, Integer status); | |||
| void actionAfterCouponOrder(WxCouponOrder couponOrder, WxOrder rOrder, WxCoupon coupon, WxCUserBasicInfo basicInfo); | |||
| } | |||
| @@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||
| import com.iformall.domain.vo.*; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.service.*; | |||
| @@ -1865,7 +1866,34 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| } catch (Exception e) { | |||
| logger.error("订单发券:" + e.getMessage(),e); | |||
| } | |||
| //通知用户 | |||
| try { | |||
| sendMsgAfterCouponOrderSuccess(order,coupon,user); | |||
| } catch (Exception e) { | |||
| logger.error("订单成功通知用户error:" + e.getMessage(),e); | |||
| } | |||
| } | |||
| private void sendMsgAfterCouponOrderSuccess(WxOrder order,WxCoupon coupon, WxCUserBasicInfo user) { | |||
| // 发送短信 | |||
| // if(EnumPayWay.PAY_WAY_TT.getCode().equals(order.getPayVendor())){ | |||
| logger.info("订单成功短信通知start"); | |||
| //券名 | |||
| String name = coupon.getTitle(); | |||
| //找出用户手机号 | |||
| String phone = user.getPhone(); | |||
| Map<String, String> msgReplaceMap = new HashMap(); | |||
| msgReplaceMap.put("name", name); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.updateTenantInfo(order); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.COUPON_ORDER_SUCCESS.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setDynamicContentMap(msgReplaceMap); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| logger.info("订单成功短信通知end"); | |||
| // } | |||
| } | |||
| @Override | |||
| @@ -10,9 +10,13 @@ import com.iformall.common.IdWorker; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.msg.FmInsideOrderRefundMsg; | |||
| import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; | |||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.mapper.*; | |||
| import com.iformall.mq.MqBaseProducer; | |||
| import com.iformall.pay.WxPay; | |||
| import com.iformall.pay.WxPayment; | |||
| import com.iformall.pay.WxRefundOrderP; | |||
| @@ -92,6 +96,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||
| @Autowired | |||
| WxBatchOrderMapper wxBatchOrderMapper; | |||
| @Autowired | |||
| private MqBaseProducer mqBaseProducer; | |||
| private boolean isMerchantOrder(WxOrder wxOrder, Long merchantId) { | |||
| if (wxOrder.getType().equals(EnumOrderType.COUPON.getCode())) { | |||
| @@ -345,6 +353,14 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||
| if (refundResult.isSuccess()) { | |||
| record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode()); | |||
| wxRefundOrderMapper.updateById(record); | |||
| //通知用户 | |||
| try { | |||
| sendInsideOrderRefundMsg(wxCouponOrder,rOrder); | |||
| } catch (Exception e) { | |||
| logger.error("订单成功通知用户error:" + e.getMessage(),e); | |||
| } | |||
| return new ResultData(Result.SUCCESS, "退款订单申请成功", refundResult.getData()); | |||
| }else { | |||
| throw new MallinkException(refundResult.getCode(), refundResult.getMsg()); | |||
| @@ -352,6 +368,16 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||
| } | |||
| private void sendInsideOrderRefundMsg(WxCouponOrder wxCouponOrder, WxOrder rOrder) { | |||
| FmInsideOrderRefundMsg orderRefund = new FmInsideOrderRefundMsg(); | |||
| orderRefund.setMsgType(EnumMsgRecordType.INSIDE_ORDER_REFUND.getCode()); | |||
| orderRefund.updateTenantInfo(wxCouponOrder); | |||
| orderRefund.setCouponOrderId(wxCouponOrder.getId()); | |||
| orderRefund.setOrderId(rOrder.getId()); | |||
| logger.info(">>>>>>>>>>>send sendInsideOrderRefundMsg :"+orderRefund); | |||
| mqBaseProducer.sendMessage(orderRefund, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| } | |||
| @Override | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| public ResultData createRefundOrderFromMicroPay(WxAppinfo appInfo, Long orderId, EnumPayType payType, Long bUserId) { | |||
| @@ -729,4 +755,28 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||
| return wxRefundOrderMapper.selectCount(new QueryWrapper(order)) > 0 ? true : false; | |||
| } | |||
| @Override | |||
| public void actionAfterCouponOrder(WxCouponOrder couponOrder, WxOrder rOrder, WxCoupon coupon, WxCUserBasicInfo user) { | |||
| // 发送短信 | |||
| // if(EnumPayWay.PAY_WAY_TT.getCode().equals(couponOrder.getPayVendor())){ | |||
| logger.info("订单成功短信通知start"); | |||
| //券名 | |||
| String name = coupon.getTitle(); | |||
| //找出用户手机号 | |||
| String phone = user.getPhone(); | |||
| Map<String, String> msgReplaceMap = new HashMap(); | |||
| msgReplaceMap.put("name", name); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.updateTenantInfo(couponOrder); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.COUPON_ORDER_REFUND.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setDynamicContentMap(msgReplaceMap); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| logger.info("订单成功短信通知end"); | |||
| // } | |||
| } | |||
| } | |||
| @@ -0,0 +1,75 @@ | |||
| package com.iformall.service.msg.impl; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.msg.BaseMsg; | |||
| import com.iformall.domain.po.msg.FmInsideOrderRefundMsg; | |||
| import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.*; | |||
| import com.iformall.service.msg.MsgSendService; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| /** | |||
| * | |||
| * @author Stormeye Wu | |||
| * @date 2019/5/10 | |||
| */ | |||
| @Service | |||
| public class FmInsideOrderRefundMsgServiceImpl implements MsgSendService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxOrderService orderService; | |||
| @Autowired | |||
| private WxRefundOrderService refundOrderService; | |||
| @Autowired | |||
| private WxCUserBasicInfoService userService; | |||
| @Autowired | |||
| private WxCouponService couponService; | |||
| @Autowired | |||
| private WxCouponOrderService couponOrderService; | |||
| @Autowired | |||
| private WxCouponChannelService couponChannelService; | |||
| @Override | |||
| public void send(BaseMsg baseMsg) throws Exception{ | |||
| FmInsideOrderRefundMsg msg = (FmInsideOrderRefundMsg)baseMsg; | |||
| WxCouponOrder couponOrder = couponOrderService.getById(msg.getCouponOrderId(), msg.getTenantId()); | |||
| if(couponOrder == null) { | |||
| logger.error("卷订单未找到: " + msg.getOrderId()); | |||
| throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单未找到" + msg.getOrderId()); | |||
| } | |||
| WxCUserBasicInfo user = userService.getById(couponOrder.getCUserId(),couponOrder.getFinalTenantId()); | |||
| if(user == null) { | |||
| logger.error("用户未找到: " + couponOrder.getCUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "用户未找到" + couponOrder.getCUserId()); | |||
| } | |||
| WxOrder rOrder = orderService.getById(msg.getOrderId(),msg.getTenantId()); | |||
| if(rOrder == null) { | |||
| logger.error("退款订单未找到: " + msg.getOrderId()); | |||
| throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单未找到" + msg.getOrderId()); | |||
| } | |||
| WxCoupon coupon = couponService.getById(couponOrder.getCouponId(),couponOrder.getTenantId()); | |||
| if(coupon == null) { | |||
| logger.error("券未找到" + couponOrder.getCouponId()); | |||
| throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL.getCode(), "券未找到" + couponOrder.getCouponId()); | |||
| } | |||
| // 提交退款后处理 | |||
| refundOrderService.actionAfterCouponOrder(couponOrder, rOrder, coupon, user); | |||
| } | |||
| } | |||