diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index 7c3ac6085..34be3d03a 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -188,7 +188,7 @@ public class WxPayOrderController extends BaseController { if (payOrderId<=0) { logger.error("/api/pay/updatePayOrder error : payOrderId不能为空: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "payOrderId非法"+payOrderId+"[payOrderIdStr:"+payOrderIdStr+"]"); - } + } payOrder = wxPayOrderService.getById(payOrderId,payOrder.getTenantId()); if (null == payOrder) { return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到payOrder."); diff --git a/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java b/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java index 5fcb54ac3..e7a8dc5d4 100644 --- a/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java +++ b/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java @@ -37,6 +37,8 @@ public class MqBaseConsumer { @Autowired private FmInsideOrderRefundMsgServiceImpl fmInsideOrderRefundMsgService; @Autowired + private FmInsideOrderPushMsgServiceImpl fmInsideOrderPushMsgService; + @Autowired private FmInsideCLoginMsgServiceImpl fmInsideCLoginMsgService; @Autowired private MqBaseProducer mqBaseProducer; @@ -101,7 +103,12 @@ public class MqBaseConsumer { // 内部消息 - c端登录 FmInsideCLoginMsg msg = (FmInsideCLoginMsg)JsonUtil.readValue(message,FmInsideCLoginMsg.class); fmInsideCLoginMsgService.send(msg); - } + } + else if(EnumMsgRecordType.INSIDE_ORDER_PUSH.getCode().equals(baseMsg.getMsgType())) { + // 内部消息 - 订单同步 + FmInsideOrderPushMsg msg = (FmInsideOrderPushMsg)JsonUtil.readValue(message,FmInsideOrderPushMsg.class); + fmInsideOrderPushMsgService.send(msg); + } //else if(EnumMsgRecordType.INSIDE_NOTIFY_PAY_SUCCESS.getCode().equals(baseMsg.getMsgType())) { // 内部消息 - 微信支付通知 //FmInsideNotifyPaySuccessMsg msg = (FmInsideNotifyPaySuccessMsg)JsonUtil.readValue(message,FmInsideNotifyPaySuccessMsg.class); @@ -111,7 +118,7 @@ public class MqBaseConsumer { // 内部消息 - 微信退款通知 FmInsideNotifyRefundSuccessMsg msg = (FmInsideNotifyRefundSuccessMsg)JsonUtil.readValue(message,FmInsideNotifyRefundSuccessMsg.class); fmInsideNotifyRefundSuccessMsgService.send(msg); - } + } else if(EnumMsgRecordType.CASH_OUT.getCode().equals(baseMsg.getMsgType())) { // 内部消息 - 商户提现通知 FmInsideCashOutMsg msg = (FmInsideCashOutMsg)JsonUtil.readValue(message,FmInsideCashOutMsg.class); diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index 4d85259b4..b83218c50 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -6,7 +6,11 @@ import java.util.List; import java.util.Map; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.msg.FmInsideOrderPushMsg; +import com.iformall.enums.*; import com.iformall.mapper.*; +import com.iformall.mq.MqBaseProducer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.aop.framework.AopContext; @@ -20,13 +24,6 @@ import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; -import com.iformall.enums.EnumAppType; -import com.iformall.enums.EnumComposeOrder; -import com.iformall.enums.EnumOrderStatus; -import com.iformall.enums.EnumOrderType; -import com.iformall.enums.EnumPayStatus; -import com.iformall.enums.EnumPayWay; -import com.iformall.enums.EnumRefundStatus; import com.iformall.exception.MallinkException; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxOrderService; @@ -90,6 +87,9 @@ public class OrderExpiringSchedule { @Autowired OrderFactory orderFactory; + + @Autowired + MqBaseProducer mqBaseProducer; private List getMalls() { WxMall wxMall =new WxMall(); @@ -353,6 +353,8 @@ public class OrderExpiringSchedule { wxOrderMapper.updateById(updateOrder); logger.info("券订单: " + order.getId() + " create at " + order.getCreateDate() + " expired at " + new Date()); + sendInsideOrderPushMsg(order,order.getComposeOrderId()); + } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @@ -464,4 +466,19 @@ public class OrderExpiringSchedule { } } + public void sendInsideOrderPushMsg(TenantEntity tenantEntity, Long mainOrderId) { + try{ + FmInsideOrderPushMsg orderPush = new FmInsideOrderPushMsg(); + orderPush.setDelayTimeLevel(5); + orderPush.setMsgType(EnumMsgRecordType.INSIDE_ORDER_PUSH.getCode()); + orderPush.updateTenantInfo(tenantEntity); + orderPush.setBatchOrderId(mainOrderId); + logger.info(">>>>>>>>>>>send sendInsideOrderPushMsg :"+orderPush); + mqBaseProducer.sendMessage(orderPush, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + }catch(Exception e){ + logger.info(">>>>>>>>>>>send sendInsideOrderPushMsg : error"+e.getMessage()); + } + + } + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java index d19117dcd..9587f1842 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxOrderCouponVo; +import com.iformall.enums.EnumAppPlat; +import com.iformall.utils.Constant; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -40,4 +42,13 @@ public class WxBatchOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "订单集合", name = "orders") private List orders; + public String getWeappOrderPath(EnumAppPlat appPlat){ + if(EnumAppPlat.WX.equals(appPlat)){ + + }else if (EnumAppPlat.TOUTIAO.equals(appPlat)){ + return Constant.mainPageUrl + "?type=dd&couponOrderId=" + id; + } + return null; + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index e9cfbaf5e..66f3d4885 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -173,13 +173,4 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="配送类型 0:默认(无) 1:自提 2:配送",name="shippingType") private Integer shippingType; - - public String getWeappOrderPath(EnumAppPlat appPlat){ - if(EnumAppPlat.WX.equals(appPlat)){ - - }else if (EnumAppPlat.TOUTIAO.equals(appPlat)){ - return Constant.mainPageUrl + "?type=cd&couponId=" + productId; - } - return null; - } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java new file mode 100644 index 000000000..6b61b9770 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java @@ -0,0 +1,19 @@ +package com.iformall.domain.po.msg; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class FmInsideOrderPushMsg 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 = "composeOrderId") + private Long batchOrderId; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index 6806cf2f6..90b309ee3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -100,6 +100,9 @@ public class WxOrderCouponVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="购买须知",name="remark") private String remark; + @io.swagger.annotations.ApiModelProperty(value="内容类型(0:小程序页面类型,1:富文本类型)",name="contentType") + private Integer contentType; + /** 发券商户信息 */ @io.swagger.annotations.ApiModelProperty(value="商户列表",name="merchantVoList") private List merchantVoList; @@ -197,6 +200,7 @@ public class WxOrderCouponVo extends TenantEntity { this.setValidEndDate(c.getValidEndDate()); this.setPickStartDate(c.getPickStartDate()); this.setPickEndDate(c.getPickEndDate()); + this.setContentType(c.getContentType()); if (hasDetail) { this.setDetail(c.getDetail()); this.setRemark(c.getRemark()); diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java index 43f29ffd4..877c3b7f9 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java @@ -7,7 +7,7 @@ public enum EnumMsgRecordType { SMS(1, "短信"), SMS_CALLBACK(2, "业务短信"), EMAIL(3, "邮件"), - SMART_APP(4, "小程序"),//模板消息作废 +// SMART_APP(4, "小程序"),//模板消息作废 SMART_APP_TO(44, "小程序"),//订阅消息 PUBLIC(5, "公众号"), SYSTEM(6, "系统通知"), @@ -21,6 +21,7 @@ public enum EnumMsgRecordType { COUPON_STOCK(105, "券库存更新"), CASH_OUT(106,"商户提现"), INSIDE_ORDER_REFUND(107, "退款提交成功"), + INSIDE_ORDER_PUSH(108, "订单同步"), ; public static EnumMsgRecordType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 6caf701a9..acb8ef521 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -243,6 +243,8 @@ public interface WxOrderService { ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + void sendInsideOrderPushMsg(WxComposeOrder composeOrder); + PageInfo listGoodsCAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); PageInfo listBatchOrderAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index a18ec168c..5fdd75f29 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -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.FmInsideOrderPushMsg; import com.iformall.domain.po.msg.WxMsgRecord; import com.iformall.domain.vo.*; import com.iformall.enums.*; @@ -28,6 +29,7 @@ import com.iformall.service.order.entity.WxComposeChildOrderShare; import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.order.util.OrderHelper; +import com.iformall.service.pay.PayServiceFactory; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -210,6 +212,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired OrderFactory orderFactory; + + @Autowired + PayServiceFactory payServiceFactory; @Lazy @Autowired @@ -2053,6 +2058,14 @@ public class WxOrderServiceImpl implements WxOrderService { logger.error("订单状态更新失败, e:" + e.getMessage(),e); throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR); } + if(ret == 1){ + //订单同步 + WxComposeOrder composeOrder = new WxComposeOrder(); + composeOrder.updateTenantInfo(oldOrder); + composeOrder.setMainOrderId(oldOrder.getComposeOrderId()); + sendInsideOrderPushMsg(composeOrder); + } + return ret; } @@ -2562,8 +2575,7 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION); } cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); - - + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrderType.getCode()); WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(tenantEntity,user, orderSave, payWay); WxOrder lastOrder = null; @@ -3051,6 +3063,8 @@ public class WxOrderServiceImpl implements WxOrderService { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); try { WxComposeOrder order = proxy.saveOrderForCoupon(tenantEntity,allowUnPayOrder,composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay); + //订单同步消息 + sendInsideOrderPushMsg(order); return new ResultData(order); } catch (MallinkException e) { logger.error("saveOrderForCoupon error.",e); @@ -3066,8 +3080,23 @@ public class WxOrderServiceImpl implements WxOrderService { logger.error("composeSaveOrder error.",e); return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } - - + + } + + @Override + public void sendInsideOrderPushMsg(WxComposeOrder composeOrder) { + try{ + FmInsideOrderPushMsg orderPush = new FmInsideOrderPushMsg(); + orderPush.setDelayTimeLevel(5); + orderPush.setMsgType(EnumMsgRecordType.INSIDE_ORDER_PUSH.getCode()); + orderPush.updateTenantInfo(composeOrder); + orderPush.setBatchOrderId(composeOrder.getMainOrderId()); + logger.info(">>>>>>>>>>>send sendInsideOrderPushMsg :"+orderPush); + mqBaseProducer.sendMessage(orderPush, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + }catch(Exception e){ + logger.info(">>>>>>>>>>>send sendInsideOrderPushMsg : error"+e.getMessage()); + } + } //TODO 待优化重做 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 7a5e54204..05c10059d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -172,6 +172,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } } + //订单同步消息 + wxOrderService.sendInsideOrderPushMsg(composeOrder); } } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java new file mode 100644 index 000000000..f81cd4c2f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java @@ -0,0 +1,81 @@ +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.FmInsideOrderPushMsg; +import com.iformall.domain.po.msg.FmInsideOrderRefundMsg; +import com.iformall.enums.EnumPayWay; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.TtCUserMapper; +import com.iformall.mapper.WxBatchOrderMapper; +import com.iformall.mapper.WxCUserMapper; +import com.iformall.mapper.WxPayOrderMapper; +import com.iformall.service.*; +import com.iformall.service.msg.MsgSendService; +import com.iformall.service.pay.PayServiceFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * + * @author Stormeye Wu + * @date 2019/5/10 + */ +@Service +public class FmInsideOrderPushMsgServiceImpl implements MsgSendService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxOrderService orderService; + + @Autowired + WxAppinfoService wxAppinfoService; + + @Autowired + PayServiceFactory payServiceFactory; + + @Autowired + WxPayOrderService wxPayOrderService; + + @Autowired + TtCUserMapper ttCUserMapper; + + + @Override + public void send(BaseMsg baseMsg) throws Exception{ + FmInsideOrderPushMsg msg = (FmInsideOrderPushMsg)baseMsg; + WxBatchOrder border = new WxBatchOrder(); + border.setTenantId(msg.getTenantId()); + border.setParentTenantId(msg.getParentTenantId()); + border.setId(msg.getBatchOrderId()); + WxBatchOrder batchOrder = orderService.batchOrderDetail(border); + if(batchOrder == null){ + logger.error("主订单未找到: " + msg.getBatchOrderId()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "主订单未找到" + msg.getBatchOrderId()); + } + if(EnumPayWay.PAY_WAY_TT.getCode().equals(batchOrder.getPayVendor())){ + WxAppinfo appinfo = wxAppinfoService.getCAppInfo(batchOrder,EnumPayWay.PAY_WAY_TT.getPlat()); + + WxPayOrder orderq = new WxPayOrder(); + orderq.setOrderId(batchOrder.getId()); + orderq.updateTenantInfo(batchOrder); + WxPayOrder payOrder = wxPayOrderService.getByObj(orderq); + if(payOrder == null){ + logger.error("支付订单未找到: " + msg.getBatchOrderId()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "支付订单未找到" + msg.getBatchOrderId()); + } + List openIds = ttCUserMapper.findOpenIdList(batchOrder.getCUserId(),batchOrder.getTenantId()); + if(openIds == null || openIds.size() > 1){ + logger.error("支付订单找到多个用户 同步失败: " + msg.getBatchOrderId()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "支付订单找到多个用户" + msg.getBatchOrderId()); + } + + payServiceFactory.getPayAdapterService(EnumPayWay.PAY_WAY_TT.getCode()).payOrderPush(openIds.get(0),appinfo,batchOrder,payOrder); + } + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java index 2d2fefc27..240a6642f 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java @@ -10,6 +10,7 @@ import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; +import org.springframework.scheduling.annotation.Async; public interface PayAdapterService { @@ -86,7 +87,8 @@ public interface PayAdapterService { * @return * @throws Exception */ - public PayAdapterResult payOrderPush(WxAppinfo appInfo, WxOrder order, WxPayOrder record, WxCoupon coupon) throws Exception; + @Async + public PayAdapterResult payOrderPush(String openId,WxAppinfo appInfo, WxBatchOrder batchOrder,WxPayOrder payOrder) throws Exception; /** * 获取二维码 diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/EnumTtOrderStatus.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/EnumTtOrderStatus.java new file mode 100644 index 000000000..5120c39ca --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/EnumTtOrderStatus.java @@ -0,0 +1,44 @@ +package com.iformall.service.pay.service.pay.douyin.miniApp; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumTtOrderStatus { + + // 0-待付款;1-已支付;2-已取消(限定时间内未付款);3-待退款;4-已退款;5-退款失败 + + ORDER_STATUS_0(0, "待支付"), + ORDER_STATUS_1(1, "已支付"), + ORDER_STATUS_2(2, "已取消"), + ORDER_STATUS_3(3, "已超时"), + ORDER_STATUS_4(4,"已核销"),//核销状态是整单核销(即一笔订单买了 3 个券,核销是指 3 个券核销的整单) + ORDER_STATUS_5(5, "退款中"), + ORDER_STATUS_6(6, "已退款"), + ORDER_STATUS_8(8, "退款失败"), + ORDER_STATUS_9(9, "已预订"),// 所有预售券类订单开发者必须通过订单同步接口回传已预订状态(order_status=9) 顺序在已核销之前 + ; + public static EnumTtOrderStatus getEnum(Integer code) { + for (EnumTtOrderStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumTtOrderStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java index 0648964b2..80608abd1 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java @@ -3,6 +3,7 @@ package com.iformall.service.pay.service.pay.douyin.miniApp; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.iformall.domain.po.*; +import com.iformall.domain.vo.WxOrderCouponVo; import com.iformall.douyin.miniapp.api.TtMaService; import com.iformall.douyin.pay.DouYinPayHelper; import com.iformall.douyin.pay.preOrder.CreatePreOrderResult; @@ -88,31 +89,45 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen } @Override - public PayAdapterResult payOrderPush(WxAppinfo appInfo, WxOrder order, WxPayOrder record, WxCoupon coupon) throws Exception { + public PayAdapterResult payOrderPush(String openId,WxAppinfo appInfo, WxBatchOrder batchOrder,WxPayOrder payOrder) throws Exception { TtMaService ttappService = maUtil.getTtappService(appInfo); Map map = new HashMap<>(); +// map.put("client_key","");//第三方在开放平台申请的 ClientKey(生活服务订单必传) map.put("access_token",appInfo.getAccessToken()); +// map.put("ext_shop_id","");//生活服务外部商户 id,购买店铺 id (生活服务订单必传) map.put("app_name","douyin"); - map.put("open_id",record.getOpenId()); + map.put("open_id",openId); + + WxOrderCouponVo wxOrderCouponVo = batchOrder.getOrders().get(0); + Map orderDetail = new HashMap<>(); - orderDetail.put("order_id",order.getId().toString()); - orderDetail.put("create_time",order.getCreateDate().getTime()); - orderDetail.put("status", EnumOrderStatus.getEnum(order.getOrderStatus()).getMessage()); - orderDetail.put("total_price",order.getPayment()); - orderDetail.put("detail_url",order.getWeappOrderPath(EnumAppPlat.TOUTIAO)); + orderDetail.put("order_id",batchOrder.getId().toString()); + orderDetail.put("create_time",batchOrder.getCreateDate().getTime()); + orderDetail.put("status", getTtOrderStatus(wxOrderCouponVo.getOrderStatus()).getMessage()); + orderDetail.put("total_price",batchOrder.getPayment()); + orderDetail.put("detail_url",batchOrder.getWeappOrderPath(EnumAppPlat.TOUTIAO)); List itemList = new ArrayList<>(); - Map item = new HashMap<>(); - item.put("img",coupon.getCoverImg()); - item.put("title",coupon.getTitle()); - item.put("sub_title",coupon.getSubTitle()); - item.put("price",coupon.getSalePrice()); - itemList.add(item); + for (WxOrderCouponVo orderVo:batchOrder.getOrders()) { + Map item = new HashMap<>(); + item.put("img",orderVo.getCoverImg()); + item.put("title",orderVo.getTitle()); + item.put("sub_title",orderVo.getSubTitle()); + item.put("price",orderVo.getSalePrice()); + itemList.add(item); + } orderDetail.put("item_list",itemList); map.put("order_detail", JSON.toJSONString(orderDetail)); map.put("order_type",0); - map.put("update_time", order.getPaymentTime().getTime()); + map.put("update_time", wxOrderCouponVo.getUpdateDate().getTime()); +// map.put("extra","");//自定义字段,用于关联具体业务场景下的特殊参数 +// map.put("scene","");//小程序场景值 +// map.put("location","");//小程序场景值 +// map.put("launch_from","");//小程序场景值 + map.put("order_status", getTtOrderStatus(wxOrderCouponVo.getOrderStatus()).getCode()); + map.put("payment_order_no", payOrder.getTransactionId()); + try { String response = ttappService.post(ttappService.ORDER_PUSH, map); JSONObject jsonObject = JSON.parseObject(response); @@ -130,6 +145,30 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen } } + private EnumTtOrderStatus getTtOrderStatus(Integer code) throws Exception { + if(EnumOrderStatus.getEnum(code).equals(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT)){ + return EnumTtOrderStatus.ORDER_STATUS_0; + } + else if(EnumOrderStatus.getEnum(code).equals(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS)){ + return EnumTtOrderStatus.ORDER_STATUS_1; + } + else if(EnumOrderStatus.getEnum(code).equals(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL)){ + return EnumTtOrderStatus.ORDER_STATUS_2; + } + else if(EnumOrderStatus.getEnum(code).equals(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND)){ + return EnumTtOrderStatus.ORDER_STATUS_5; + } + else if(EnumOrderStatus.getEnum(code).equals(EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS)){ + return EnumTtOrderStatus.ORDER_STATUS_6; + } + else if(EnumOrderStatus.getEnum(code).equals(EnumOrderStatus.ORDER_STATUS_REFUND_FAILD)){ + return EnumTtOrderStatus.ORDER_STATUS_8; + } + log.error("订单状态异常 。。。"); + throw new Exception("订单状态异常"); + + } + @Override public File getQrcode(WxAppinfo appinfo,String pageUrl,int type,String sceneParam) throws Exception{ return super.getQrCode(appinfo, pageUrl, type, sceneParam); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java index 354a7b4a4..45849c44c 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java @@ -57,7 +57,7 @@ public class WxH5PayService extends BaseWxPayAdapterService implements CDriving } @Override - public PayAdapterResult payOrderPush(WxAppinfo appInfo, WxOrder order, WxPayOrder record, WxCoupon coupon) throws Exception { + public PayAdapterResult payOrderPush(String openId,WxAppinfo appInfo, WxBatchOrder batchOrder,WxPayOrder payOrder) throws Exception { return null; } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java index 94a0bf33c..e4cf25305 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -265,7 +265,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } @Override - public PayAdapterResult payOrderPush(WxAppinfo appInfo, WxOrder order, WxPayOrder record, WxCoupon coupon) throws Exception { + public PayAdapterResult payOrderPush(String openId,WxAppinfo appInfo, WxBatchOrder batchOrder,WxPayOrder payOrder) throws Exception { return null; } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java index a9607373a..552642399 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java @@ -250,7 +250,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement } @Override - public PayAdapterResult payOrderPush(WxAppinfo appInfo, WxOrder order, WxPayOrder record, WxCoupon coupon) throws Exception { + public PayAdapterResult payOrderPush(String openId,WxAppinfo appInfo, WxBatchOrder batchOrder,WxPayOrder payOrder) throws Exception { return null; }