diff --git a/mallinkService/src/main/java/com/iformall/domain/po/TtOrderPushError.java b/mallinkService/src/main/java/com/iformall/domain/po/TtOrderPushError.java new file mode 100644 index 000000000..8fccfa38c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/TtOrderPushError.java @@ -0,0 +1,27 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@TableName(value = "tt_order_push_error") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtOrderPushError extends TenantEntity { + + protected Long id;//batch_order_id + + @io.swagger.annotations.ApiModelProperty(value="errMsg",name="errMsg") + private String errMsg; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtOrderPushErrorMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtOrderPushErrorMapper.java new file mode 100644 index 000000000..b7ca87c43 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/TtOrderPushErrorMapper.java @@ -0,0 +1,14 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.TtOrderPushError; + +import java.util.List; + +public interface TtOrderPushErrorMapper extends CommonMapper { + + List findList(TtOrderPushError record); + + List findIdList(TtOrderPushError record); + +} 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 index e4e90559d..a197d3270 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java @@ -8,16 +8,20 @@ import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumPayWay; import com.iformall.exception.MallinkException; import com.iformall.mapper.TtCUserMapper; +import com.iformall.mapper.TtOrderPushErrorMapper; import com.iformall.mapper.WxPayOrderMapper; import com.iformall.service.*; import com.iformall.service.msg.MsgSendService; import com.iformall.service.pay.PayServiceFactory; +import com.iformall.service.pay.service.pay.entity.PayAdapterResult; +import com.iformall.utils.DateUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -47,6 +51,15 @@ public class FmInsideOrderPushMsgServiceImpl implements MsgSendService { @Autowired WxPayOrderMapper wxPayOrderMapper; + @Autowired + TtOrderPushErrorMapper ttOrderPushErrorMapper; + + @Autowired + private String fmExceptionEmails; + + @Autowired + private MailService mailService; + @Override public void send(BaseMsg baseMsg) throws Exception{ @@ -70,7 +83,28 @@ public class FmInsideOrderPushMsgServiceImpl implements MsgSendService { && EnumComposeOrder.SINGLE.getCode().equals(batchOrder.getOrderType()) && batchOrder.getOrders().size() == 1){ WxAppinfo appinfo = wxAppinfoService.getCAppInfo(batchOrder,EnumPayWay.PAY_WAY_TT.getPlat()); - payOrderPush(appinfo,batchOrder); + try{ + payOrderPush(appinfo,batchOrder); + }catch(Exception e){ + logger.error("订单同步异常batchOrderId"+batchOrder.getId()+"{}"+e.getMessage()); + String[] receivers = fmExceptionEmails.split(","); + StringBuilder sb = new StringBuilder(); + sb.append(DateUtils.date2String(new Date())); + sb.append("\n"); + sb.append(e.getMessage()); + sb.append("\n"); + sb.append("batchOrderId="+batchOrder.getId()); + //发送邮件 + mailService.sendSimpleMail(receivers, "订单同步异常", sb.toString()); + + TtOrderPushError pushError = new TtOrderPushError(); + pushError.setId(batchOrder.getId()); + pushError.updateTenantInfo(batchOrder); + pushError.setErrMsg(e.getMessage()); + saveOrUpdate(pushError); + + } + // WxOrderCouponVo wxOrderCouponVo = batchOrder.getOrders().get(0); // if(EnumPayType.PAY_PAYMENT.getCode().equals(wxOrderCouponVo.getPaymentType())){ @@ -101,6 +135,20 @@ public class FmInsideOrderPushMsgServiceImpl implements MsgSendService { } } + private void saveOrUpdate(TtOrderPushError pushError){ + Date now = new Date(); + TtOrderPushError pushError1 = ttOrderPushErrorMapper.selectById(pushError.getId()); + if(pushError1 != null){ + pushError1.setErrMsg(pushError.getErrMsg()); + pushError1.setUpdateDate(now); + ttOrderPushErrorMapper.updateById(pushError1); + }else{ + pushError.setCreateDate(now); + pushError.setUpdateDate(now); + ttOrderPushErrorMapper.insert(pushError); + } + } + private void payOrderPush(WxAppinfo appinfo, WxBatchOrder batchOrder) throws Exception{ WxPayOrder orderq = new WxPayOrder(); @@ -121,6 +169,12 @@ public class FmInsideOrderPushMsgServiceImpl implements MsgSendService { throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "支付订单找到多个用户" + batchOrder.getId()); } - payServiceFactory.getPayAdapterService(EnumPayWay.PAY_WAY_TT.getCode()).payOrderPush(openIds.get(0),appinfo,batchOrder,payOrder); + PayAdapterResult payAdapterResult = payServiceFactory.getPayAdapterService(EnumPayWay.PAY_WAY_TT.getCode()).payOrderPush(openIds.get(0), appinfo, batchOrder, payOrder); + + if(payAdapterResult.isSuccess()){ + ttOrderPushErrorMapper.deleteById(batchOrder.getId()); + }else{ + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), payAdapterResult.getMsg() + batchOrder.getId()); + } } } 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 f9a0a0619..a91ce4329 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 @@ -143,9 +143,9 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen return new PayAdapterResult(false, err_msg, null, null); } } catch (WxErrorException e) { - return new PayAdapterResult(false, "订单同步异常", null, null); + return new PayAdapterResult(false, "订单同步异常"+e.getMessage(), null, null); } catch (Exception e){ - return new PayAdapterResult(false, "订单同步异常", null, null); + return new PayAdapterResult(false, "订单同步异常"+e.getMessage(), null, null); } } diff --git a/mallinkService/src/main/resources/mapper/TtOrderPushErrorMapper.xml b/mallinkService/src/main/resources/mapper/TtOrderPushErrorMapper.xml new file mode 100644 index 000000000..41d89f116 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/TtOrderPushErrorMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`err_msg`, + `create_date`,`update_date` + + + + where 1=1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `id` in + + #{idItem} + + + + order by ${sortColumns} + + + + + + +