Explorar el Código

//update

release_toaliyun_real
xhxu hace 4 años
padre
commit
b01b399097
Se han modificado 14 ficheros con 431 adiciones y 307 borrados
  1. +10
    -22
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java
  2. +1
    -10
      mallinkBApi/src/main/java/com/iformall/controller/WxRefundOrderController.java
  3. +36
    -0
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  4. +87
    -66
      mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
  5. +1
    -7
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java
  6. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java
  7. +2
    -2
      mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderRefundMsg.java
  8. +2
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumPayType.java
  9. +5
    -4
      mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java
  10. +243
    -146
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java
  11. +28
    -26
      mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java
  12. +7
    -19
      mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderRefundMsgServiceImpl.java
  13. +1
    -1
      mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java
  14. +5
    -3
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml

+ 10
- 22
mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java Ver fichero

@@ -100,29 +100,17 @@ public class WxCouponOrderController extends BaseController {
logger.error("券ID不存在:" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
WxAppinfo appinfoQ = new WxAppinfo();
appinfoQ.updateTenantInfo(getTenantInfo());
appinfoQ.setPlat(EnumPayWay.getEnum(wxCouponOrder.getPayVendor()).getPlat().getCode());
// appinfoQ.setType(EnumAppType.B.getCode());
appinfoQ.setType(EnumAppType.C.getCode());
PageInfo<WxAppinfo> appinfoPageInfo = wxAppinfoService.listAsPage(appinfoQ, 1, 1);
if (appinfoPageInfo.getList().size() > 0) {
WxAppinfo appinfo = appinfoPageInfo.getList().get(0);
if (appinfo != null) {
try {
wxRefundOrderService.createRefundOrder(appinfo, couponOrderId, EnumPayType.PAY_ADMIN_REFUND, null,getUserId());
return new ResultData();
} catch (MallinkException e) {
logger.error(e.getMessage(),e);
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage(),e);
return new ResultData(ErrorCode.REFUND_ORDER_ERROR);
}
}

try {
wxRefundOrderService.createRefundOrder(getTenantInfo(), wxCouponOrder.getOrderId(), EnumPayType.PAY_ADMIN_REFUND, null,getUserId());
return new ResultData();
} catch (MallinkException e) {
logger.error(e.getMessage(),e);
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage(),e);
return new ResultData(ErrorCode.REFUND_ORDER_ERROR);
}
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), "AppInfo获取失败");
}

@GetMapping("exportData")


+ 1
- 10
mallinkBApi/src/main/java/com/iformall/controller/WxRefundOrderController.java Ver fichero

@@ -63,17 +63,8 @@ public class WxRefundOrderController extends BaseController {
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxMerchantBUser bUser = getLoginBUser();

WxAppinfo appinfo = new WxAppinfo();
appinfo.updateTenantInfo(getTenantInfo());
//appinfo.setType(EnumAppType.B.getCode());
appinfo.setPlat(EnumPayWay.getEnum(wxCouponOrder.getPayVendor()).getPlat().getCode());
appinfo.setType(EnumAppType.C.getCode());
appinfo = wxAppinfoService.getList(appinfo).get(0);
// WxAppinfo appinfo = getAppInfo(bUser.getAppId());
try {
ResultData rd = wxRefundOrderService.createRefundOrder(appinfo, couponOrderId, EnumPayType.PAY_B_REFUND, bUser, null);
ResultData rd = wxRefundOrderService.createRefundOrder(getTenantInfo(), wxCouponOrder.getOrderId(), EnumPayType.PAY_B_REFUND, getLoginBUser(), null);
return rd;
} catch (MallinkException e) {
logger.error(e.getMessage());


+ 36
- 0
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java Ver fichero

@@ -55,6 +55,12 @@ public class WxOrderController extends BaseController {
@Autowired
private OrderSnapshotService orderSnapshotService;

@Autowired
private WxAppinfoService wxAppinfoService;

@Autowired
private WxRefundOrderService wxRefundOrderService;

@Autowired
@Qualifier("couponDetailRedisTemplate")
RedisTemplate<String, WxCouponCVo> cdRedisTemplate;
@@ -567,4 +573,34 @@ public class WxOrderController extends BaseController {
}


@ApiOperation(value = "退券退款", notes = "{\"orderId\":\"string\"}")
@PostMapping("/refund")
public ResultData refund(@RequestBody Map<String, String> paramMap) {
logger.debug("[" + getIpAddr() + "] WxOrderController::refund");
logger.info(paramMap.toString());
String orderIdStr = paramMap.get("orderId");
if (StringUtils.isBlank(orderIdStr)) {
logger.error("orderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
Long orderId = 0L;
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
logger.error("orderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}

try {
wxRefundOrderService.createRefundOrder(getTenantInfo(), orderId, EnumPayType.PAY_ADMIN_REFUND, null,null);
return new ResultData();
} catch (MallinkException e) {
logger.error(e.getMessage(),e);
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage(),e);
return new ResultData(ErrorCode.REFUND_ORDER_ERROR);
}
}

}

+ 87
- 66
mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java Ver fichero

@@ -2498,87 +2498,108 @@ public class PosServiceImpl implements PosService {
final Long posOrderId, final Integer orderAmount, final Date posOrderTime, final String orderCreateSn
) {
// 1. 查找正向订单
WxOrder orderQ = new WxOrder();
orderQ.updateTenantInfo(buUser);
orderQ.setType(EnumOrderType.POSPAY.getCode());
orderQ.setCUserId(memId);
orderQ.setPaymentType(EnumPayType.PAY_PAYMENT.getCode());
orderQ.setPosOrderId(posOrderId);
WxOrder wxOrder = new WxOrder();
wxOrder.updateTenantInfo(buUser);
wxOrder.setType(EnumOrderType.POSPAY.getCode());
wxOrder.setCUserId(memId);
wxOrder.setPaymentType(EnumPayType.PAY_PAYMENT.getCode());
wxOrder.setPosOrderId(posOrderId);

try {
orderQ = orderMapper.selectOne(new QueryWrapper<>(orderQ));
wxOrder = orderMapper.selectOne(new QueryWrapper<>(wxOrder));
} catch (Exception e) {
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if (orderQ == null) {
if (wxOrder == null) {
logger.error(ErrorCode.POS_ORDER_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.POS_ORDER_NOT_FOUND);
}

// 2. 查找是否有退款订单
WxOrder refundQ = new WxOrder();
refundQ.updateTenantInfo(buUser);
refundQ.setType(EnumOrderType.POSPAY.getCode());
refundQ.setCUserId(memId);
refundQ.setPosOrderId(posOrderId);
refundQ.setOrderNumber(orderQ.getOrderNumber());
try {
refundQ = orderMapper.selectOne(new QueryWrapper<>(refundQ));
} catch (Exception e) {
logger.error("sql error ",e);
}
if (refundQ != null) {
logger.error(ErrorCode.POS_ORDER_HAD_SYNCED.getMessage());
throw new MallinkException(ErrorCode.POS_ORDER_HAD_SYNCED);
if(!EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode().equals(wxOrder.getOrderStatus())){
logger.error("交易订单状态不支持退款:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage());
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
}

// 3. 创建退款订单
final IdWorker idWorker = IdWorker.get();
WxBatchOrder border =new WxBatchOrder();
border.setId(idWorker.nextId());
border.setCUserId(memId);
border.updateTenantInfo(buUser);
border.setPayment(orderAmount);
border.setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode());
border.setOrderType(EnumComposeOrder.SINGLE.getCode());
border.setCreateDate(new Date());
wxBatchOrderMapper.insert(border);
Long orderId = idWorker.nextId();
WxOrder order = new WxOrder();

Date curr = new Date();
WxOrder updWxOrder = new WxOrder();
updWxOrder.setId(wxOrder.getId());
updWxOrder.updateTenantInfo(wxOrder);
updWxOrder.setPaymentType(EnumPayType.PAY_POS_REFUND.getCode());
String bodyStr = "POS退款, 金额: " + orderAmount;
order.setId(orderId);
order.updateTenantInfo(buUser);
order.setType(EnumOrderType.POSPAY.getCode());
order.setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode());
order.setProductId(buUser.getId());
order.setCUserId(memId);
order.setPaymentType(EnumPayType.PAY_POS_REFUND.getCode());
order.setPayment(orderAmount);
order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS.getCode());
order.setDetail(bodyStr);
order.setCreateDate(curr);
order.setUpdateDate(curr);
order.setPosOrderId(posOrderId);
order.setPosOrderCreateTime(posOrderTime.getTime());
order.setPosOrderCreateSn(orderCreateSn);
order.setOrderNumber(orderQ.getOrderNumber());
order.setComposeOrderId(border.getId());
order.setComposeOrderType(EnumComposeOrder.SINGLE.getCode());
order.setCouponNumber(1);
updWxOrder.setRefDetail(bodyStr);
updWxOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS.getCode());
updWxOrder.setUpdateDate(new Date());

try {
orderMapper.insert(order);
orderMapper.updateById(updWxOrder);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
logger.error("db failed: wxOrder-" + wxOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
return order;
return wxOrder;

// // 2. 查找是否有退款订单
// WxOrder refundQ = new WxOrder();
// refundQ.updateTenantInfo(buUser);
// refundQ.setType(EnumOrderType.POSPAY.getCode());
// refundQ.setCUserId(memId);
// refundQ.setPosOrderId(posOrderId);
// refundQ.setOrderNumber(orderQ.getOrderNumber());
// try {
// refundQ = orderMapper.selectOne(new QueryWrapper<>(refundQ));
// } catch (Exception e) {
// logger.error("sql error ",e);
// }
// if (refundQ != null) {
// logger.error(ErrorCode.POS_ORDER_HAD_SYNCED.getMessage());
// throw new MallinkException(ErrorCode.POS_ORDER_HAD_SYNCED);
// }
//
// // 3. 创建退款订单
// final IdWorker idWorker = IdWorker.get();
//
//
// WxBatchOrder border =new WxBatchOrder();
// border.setId(idWorker.nextId());
// border.setCUserId(memId);
// border.updateTenantInfo(buUser);
// border.setPayment(orderAmount);
// border.setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode());
// border.setOrderType(EnumComposeOrder.SINGLE.getCode());
// border.setCreateDate(new Date());
// wxBatchOrderMapper.insert(border);
//
//
// Long orderId = idWorker.nextId();
// WxOrder order = new WxOrder();
//
// Date curr = new Date();
// String bodyStr = "POS退款, 金额: " + orderAmount;
// order.setId(orderId);
// order.updateTenantInfo(buUser);
// order.setType(EnumOrderType.POSPAY.getCode());
// order.setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode());
// order.setProductId(buUser.getId());
// order.setCUserId(memId);
// order.setPaymentType(EnumPayType.PAY_POS_REFUND.getCode());
// order.setPayment(orderAmount);
// order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS.getCode());
// order.setDetail(bodyStr);
// order.setCreateDate(curr);
// order.setUpdateDate(curr);
// order.setPosOrderId(posOrderId);
// order.setPosOrderCreateTime(posOrderTime.getTime());
// order.setPosOrderCreateSn(orderCreateSn);
// order.setOrderNumber(orderQ.getOrderNumber());
// order.setComposeOrderId(border.getId());
// order.setComposeOrderType(EnumComposeOrder.SINGLE.getCode());
// order.setCouponNumber(1);
//
// try {
// orderMapper.insert(order);
// } catch (Exception e) {
// logger.error(e.getMessage());
// throw new MallinkException(ErrorCode.DB_FAIL);
// }
// return order;
}




+ 1
- 7
mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java Ver fichero

@@ -173,12 +173,6 @@ public class CouponOrderExpiringSchedule {
// 非储值卡, 可以退款
if(!co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())
&& !co.getAutoRefund().equals(EnumCouponAutoRefund.UNSUPPORTED.getCode())) {
WxAppinfo appinfo = new WxAppinfo();
appinfo.updateTenantInfo(co);
//appinfo.setType(EnumAppType.B.getCode());
appinfo.setPlat(EnumPayWay.getEnum(co.getPayVendor()).getPlat().getCode());
appinfo.setType(EnumAppType.C.getCode());
appinfo = wxAppinfoMapper.findList(appinfo).get(0);

Date limitDate = DateUtils.getTimeAfterDays(360, co.getCreateDate());
if (limitDate.before(new Date())) {
@@ -187,7 +181,7 @@ public class CouponOrderExpiringSchedule {
}

try {
wxRefundOrderService.createRefundOrder(appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null,null);
wxRefundOrderService.createRefundOrder(co, co.getOrderId(), EnumPayType.PAY_AUTO_REFUND, null,null);
} catch (MallinkException e) {
if (e.getErrorCode() == ErrorCode.REFUND_NOT_ALLOW.getCode()) {
} else {


+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java Ver fichero

@@ -79,6 +79,9 @@ public class WxOrder extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="支付描述,订单支付时用",name="detail")
private String detail;

@io.swagger.annotations.ApiModelProperty(value="退款描述,订单退款时用",name="refDetail")
private String refDetail;

@io.swagger.annotations.ApiModelProperty(value="砍价结束时间",name="pressEndDate")
private Date pressEndDate;
@io.swagger.annotations.ApiModelProperty(value="砍价人数",name="pressCurrentNum")


+ 2
- 2
mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderRefundMsg.java Ver fichero

@@ -9,8 +9,8 @@ import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
public class FmInsideOrderRefundMsg extends BaseMsg{

@io.swagger.annotations.ApiModelProperty(value = "", name = "couponOrderId")
private Long couponOrderId;
// @io.swagger.annotations.ApiModelProperty(value = "", name = "couponOrderId")
// private Long couponOrderId;
@io.swagger.annotations.ApiModelProperty(value = "退款订单ID", name = "orderId")
private Long orderId;



+ 2
- 1
mallinkService/src/main/java/com/iformall/enums/EnumPayType.java Ver fichero

@@ -9,7 +9,8 @@ public enum EnumPayType {
PAY_B_REFUND(1, "B端退款"),
PAY_AUTO_REFUND(2, "自动退款"),
PAY_ADMIN_REFUND(3, "A端退款"),
PAY_POS_REFUND(4, "POS发起退款");
PAY_POS_REFUND(4, "POS发起退款"),
PAY_C_REFUND(5, "用户自己发起退款");

public static EnumPayType getEnum(Integer code) {
for (EnumPayType value : values()) {


+ 5
- 4
mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java Ver fichero

@@ -3,6 +3,7 @@ package com.iformall.service;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumPayType;
import com.iformall.enums.EnumPayWay;

@@ -13,13 +14,13 @@ public interface WxRefundOrderService {

/**
* 创建退款订单
* @param appInfo
* @param
* @param couponOrderId 券包Id
* @param payType 退款来源
* @param bUserId b端退款Id,auto,admin,self可为null
* @param bUser b端退款Id,auto,admin,self可为null
* @return
*/
ResultData createRefundOrder(WxAppinfo appInfo, Long couponOrderId, EnumPayType payType, WxMerchantBUser bUser, Long aUserId);
ResultData createRefundOrder(TenantEntity tenantEntity, Long couponOrderId, EnumPayType payType, WxMerchantBUser bUser, Long aUserId);

/**
* 创建退款订单
@@ -98,5 +99,5 @@ public interface WxRefundOrderService {

boolean hasRefundOrder(Long orderId, Integer status);

void actionAfterCouponOrder(WxCouponOrder couponOrder, WxOrder rOrder, WxCoupon coupon, WxCUserBasicInfo basicInfo);
void actionAfterCouponOrder(WxOrder wxOrder, WxCUserBasicInfo basicInfo);
}

+ 243
- 146
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java Ver fichero

@@ -10,6 +10,7 @@ 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.base.TenantEntity;
import com.iformall.domain.po.msg.FmInsideOrderRefundMsg;
import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg;
import com.iformall.domain.po.msg.WxMsgRecord;
@@ -21,6 +22,7 @@ import com.iformall.pay.WxPay;
import com.iformall.pay.WxPayment;
import com.iformall.pay.WxRefundOrderP;
import com.iformall.pay.WxRefundOrderSP;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxOrderService;
import com.iformall.service.WxRefundOrderService;
import com.iformall.service.helper.WxPayOrderServiceHelper;
@@ -51,6 +53,9 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
@Autowired
WxAppinfoMapper wxAppinfoMapper;

@Autowired
WxAppinfoService wxAppinfoService;

@Autowired
WxRefundOrderMapper wxRefundOrderMapper;

@@ -137,17 +142,42 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData createRefundOrder(WxAppinfo appInfo, Long couponOrderId, EnumPayType payType, WxMerchantBUser bUser, Long aUserId) {
WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectById(couponOrderId,appInfo.getTenantId());
if (wxCouponOrder == null) {
logger.error("券ID不存在:" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
WxOrder wxOrder = wxOrderMapper.selectById(wxCouponOrder.getOrderId(),wxCouponOrder.getTenantId());
public ResultData createRefundOrder(TenantEntity tenantEntity, Long orderId, EnumPayType payType, WxMerchantBUser bUser, Long aUserId) {

WxOrder wxOrder = wxOrderMapper.selectById(orderId,tenantEntity.getTenantId());
if (wxOrder == null) {
logger.error("订单ID不存在:" + couponOrderId);
logger.error("交易订单不存在:" + orderId);
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if(!EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode().equals(wxOrder.getOrderStatus())){
logger.error("交易订单状态不支持退款:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage());
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
}
WxAppinfo appInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumPayWay.getEnum(wxOrder.getPayVendor()).getPlat());
if(appInfo == null){
logger.error("AppInfo获取失败:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage());
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), "AppInfo获取失败");
}

WxCouponOrder couponOrderQ = new WxCouponOrder();
couponOrderQ.updateTenantInfo(tenantEntity);
couponOrderQ.setOrderId(orderId);
List<WxCouponOrder> couponOrderList = wxCouponOrderMapper.findList(couponOrderQ);
if(couponOrderList == null || couponOrderList.isEmpty()){
logger.error("数据异常,券未找到:" + orderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

for (WxCouponOrder wxCouponOrder:couponOrderList) {
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
logger.error("已退款: couponOrder-" + wxCouponOrder.getCouponId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
logger.error("已经核销过的券: couponOrder-" + wxCouponOrder.getCouponId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
}

if (payType == EnumPayType.PAY_B_REFUND) {
logger.info("B端发起退款: bUserId-" + bUser);
@@ -169,8 +199,11 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
logger.info("ADMIN端发起退款: aUserId-" + aUserId);
} else if (payType == EnumPayType.PAY_AUTO_REFUND) {
logger.info("auto端发起退款");
} else {
} else if (payType == EnumPayType.PAY_C_REFUND){
logger.info("自己发起退款");
} else {
logger.error("未知退款类型");
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW.getCode(),"未知退款类型");
}

if (wxOrder.getPayment() <= 0) {
@@ -178,18 +211,11 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
}

if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
logger.error("已退款: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
logger.error("已经核销过的券: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}


// 查询订单状态是否是支付成功的状态,支付成功的状态才能退款。
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.updateTenantInfo(wxCouponOrder);
payOrderQ.updateTenantInfo(tenantEntity);
payOrderQ.setCUserId(wxOrder.getCUserId());
payOrderQ.setOrderId(wxOrder.getComposeOrderId());
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
@@ -218,100 +244,129 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} catch (Exception e) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR);
}
final IdWorker idWorker = IdWorker.get();
Long refundOrderId = idWorker.nextId();

Date currentDate = new Date();

WxBatchOrder order =new WxBatchOrder();
order.setId(idWorker.nextId());
order.setCUserId(wxOrder.getCUserId());
order.updateTenantInfo(wxCouponOrder);
order.setPayment(wxOrder.getPayment());
order.setPayVendor(wxOrder.getPayVendor());
order.setOrderType(wxOrder.getComposeOrderType());
order.setCreateDate(new Date());
wxBatchOrderMapper.insert(order);
// 创建 refund Order
WxOrder rOrder = new WxOrder();
rOrder.setId(refundOrderId);
rOrder.updateTenantInfo(wxCouponOrder);
rOrder.setOrderNumber(wxOrder.getOrderNumber()); // 退款订单填写支付订单orderNumber
rOrder.setProductId(wxOrder.getProductId());
rOrder.setType(EnumOrderType.COUPON.getCode());
rOrder.setPayVendor(wxOrder.getPayVendor());
rOrder.setCUserId(wxOrder.getCUserId());
//这里wx_order不创建退款订单了, 直接修改原订单
WxOrder updWxOrder = new WxOrder();
updWxOrder.setId(wxOrder.getId());
updWxOrder.updateTenantInfo(wxOrder);
if (payType == EnumPayType.PAY_B_REFUND) {
rOrder.setDetail("["+bUser.getId()+"]B端管理员操作退款"); //B端发起退款后存B端用户ID在此
}else if (payType == EnumPayType.PAY_ADMIN_REFUND) {
rOrder.setDetail("["+aUserId+"]A端管理员操作退款");
updWxOrder.setRefDetail("["+bUser.getId()+"]B端管理员操作退款"); //B端发起退款后存B端用户ID在此
} else if (payType == EnumPayType.PAY_ADMIN_REFUND) {
updWxOrder.setRefDetail("["+aUserId+"]A端管理员操作退款");
} else if (payType == EnumPayType.PAY_AUTO_REFUND) {
rOrder.setDetail("auto端发起退款");
} else {
rOrder.setDetail("自己发起退款");
}
rOrder.setPaymentType(payType.getCode());
rOrder.setPayment(wxOrder.getPayment());
rOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
rOrder.setCreateDate(currentDate);
rOrder.setUpdateDate(currentDate);
rOrder.setComposeOrderId(order.getId());
rOrder.setComposeOrderType(wxOrder.getComposeOrderType());
rOrder.setCouponNumber(wxOrder.getCouponNumber());
try {
wxOrderMapper.insert(rOrder);
} catch (Exception e) {
logger.error("退款订单保存出错: " + e.getMessage(),e);
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "退款订单保存出错");
updWxOrder.setRefDetail("定时过期发起退款");
} else if (payType == EnumPayType.PAY_C_REFUND){
updWxOrder.setRefDetail("用户发起退款");
} else{
logger.error("未知退款类型");
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW.getCode(),"未知退款类型");
}
updWxOrder.setPaymentType(payType.getCode());
updWxOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
updWxOrder.setUpdateDate(currentDate);

// 更改 couponOrder 状态
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_RETURNED.getCode()); // 卡线下退款
} else {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
}
if (payType == EnumPayType.PAY_B_REFUND) {
wxCouponOrder.setBUserId(bUser.getId());
wxCouponOrder.setAUserId(payType.getCode().longValue());
wxCouponOrder.setBMerchantId(bUser.getMerchantId());
} else if (payType == EnumPayType.PAY_ADMIN_REFUND) {
wxCouponOrder.setBUserId(payType.getCode().longValue());
wxCouponOrder.setAUserId(aUserId);
wxCouponOrder.setBMerchantId(0L);
} else {
wxCouponOrder.setBUserId(payType.getCode().longValue());
wxCouponOrder.setAUserId(payType.getCode().longValue());
wxCouponOrder.setBMerchantId(0L);
}
wxCouponOrder.setUpdateDate(currentDate);
try {
wxCouponOrderMapper.updateById(wxCouponOrder);
wxOrderMapper.updateById(updWxOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage());
logger.error("db failed: wxOrder-" + wxOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

// 卡退款,把卡余额设为0
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
WxCardInfo updateCardInfo = new WxCardInfo();
updateCardInfo.setId(couponOrderId);
updateCardInfo.setRemainingAmount(0);

// final IdWorker idWorker = IdWorker.get();
// Long refundOrderId = idWorker.nextId();
//
// Date currentDate = new Date();
//
// WxBatchOrder order =new WxBatchOrder();
// order.setId(idWorker.nextId());
// order.setCUserId(wxOrder.getCUserId());
// order.updateTenantInfo(wxCouponOrder);
// order.setPayment(wxOrder.getPayment());
// order.setPayVendor(wxOrder.getPayVendor());
// order.setOrderType(wxOrder.getComposeOrderType());
// order.setCreateDate(new Date());
// wxBatchOrderMapper.insert(order);
// // 创建 refund Order
// WxOrder rOrder = new WxOrder();
// rOrder.setId(refundOrderId);
// rOrder.updateTenantInfo(wxCouponOrder);
// rOrder.setOrderNumber(wxOrder.getOrderNumber()); // 退款订单填写支付订单orderNumber
// rOrder.setProductId(wxOrder.getProductId());
// rOrder.setType(EnumOrderType.COUPON.getCode());
// rOrder.setPayVendor(wxOrder.getPayVendor());
// rOrder.setCUserId(wxOrder.getCUserId());
// if (payType == EnumPayType.PAY_B_REFUND) {
// rOrder.setDetail("["+bUser.getId()+"]B端管理员操作退款"); //B端发起退款后存B端用户ID在此
// }else if (payType == EnumPayType.PAY_ADMIN_REFUND) {
// rOrder.setDetail("["+aUserId+"]A端管理员操作退款");
// } else if (payType == EnumPayType.PAY_AUTO_REFUND) {
// rOrder.setDetail("auto端发起退款");
// } else {
// rOrder.setDetail("自己发起退款");
// }
// rOrder.setPaymentType(payType.getCode());
// rOrder.setPayment(wxOrder.getPayment());
// rOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
// rOrder.setCreateDate(currentDate);
// rOrder.setUpdateDate(currentDate);
// rOrder.setComposeOrderId(order.getId());
// rOrder.setComposeOrderType(wxOrder.getComposeOrderType());
// rOrder.setCouponNumber(wxOrder.getCouponNumber());
// try {
// wxOrderMapper.insert(rOrder);
// } catch (Exception e) {
// logger.error("退款订单保存出错: " + e.getMessage(),e);
// throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "退款订单保存出错");
// }

for (WxCouponOrder wxCouponOrder:couponOrderList) {
// 更改 couponOrder 状态
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_RETURNED.getCode()); // 卡线下退款
} else {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
}
if (payType == EnumPayType.PAY_B_REFUND) {
wxCouponOrder.setBUserId(bUser.getId());
wxCouponOrder.setAUserId(payType.getCode().longValue());
wxCouponOrder.setBMerchantId(bUser.getMerchantId());
} else if (payType == EnumPayType.PAY_ADMIN_REFUND) {
wxCouponOrder.setBUserId(payType.getCode().longValue());
wxCouponOrder.setAUserId(aUserId);
wxCouponOrder.setBMerchantId(0L);
} else {
wxCouponOrder.setBUserId(payType.getCode().longValue());
wxCouponOrder.setAUserId(payType.getCode().longValue());
wxCouponOrder.setBMerchantId(0L);
}
wxCouponOrder.setUpdateDate(new Date());
try {
cardInfoMapper.updateById(updateCardInfo);
wxCouponOrderMapper.updateById(wxCouponOrder);
} catch (Exception e) {
logger.error("db failed: wxCardInfo-" + couponOrderId + ", e:" + e.getMessage());
logger.error("db failed: couponOrder-" + wxCouponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

// 卡退款,把卡余额设为0
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
WxCardInfo updateCardInfo = new WxCardInfo();
updateCardInfo.setId(wxCouponOrder.getId());
updateCardInfo.setRemainingAmount(0);
try {
cardInfoMapper.updateById(updateCardInfo);
} catch (Exception e) {
logger.error("db failed: wxCardInfo-" + wxCouponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
}
}

WxRefundOrder record = new WxRefundOrder();
record.updateTenantInfo(wxCouponOrder);
record.updateTenantInfo(tenantEntity);
record.setPayOrderNo(String.valueOf(payOrder.getId()));
record.setOrderId(rOrder.getId());
record.setOrderId(wxOrder.getId());

// check 是否有退款订单
List<WxRefundOrder> refundList = wxRefundOrderMapper.findList(record);
@@ -321,6 +376,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}


final IdWorker idWorker = IdWorker.get();
// 创建退款订单
Long refundId = idWorker.nextId();
//String out_refund_id = String.valueOf(refundId);
@@ -355,7 +411,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {

//通知用户
try {
sendInsideOrderRefundMsg(wxCouponOrder,rOrder);
sendInsideOrderRefundMsg(wxOrder);
} catch (Exception e) {
logger.error("订单成功通知用户error:" + e.getMessage(),e);
}
@@ -367,12 +423,11 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}

private void sendInsideOrderRefundMsg(WxCouponOrder wxCouponOrder, WxOrder rOrder) {
private void sendInsideOrderRefundMsg(WxOrder wxOrder) {
FmInsideOrderRefundMsg orderRefund = new FmInsideOrderRefundMsg();
orderRefund.setMsgType(EnumMsgRecordType.INSIDE_ORDER_REFUND.getCode());
orderRefund.updateTenantInfo(wxCouponOrder);
orderRefund.setCouponOrderId(wxCouponOrder.getId());
orderRefund.setOrderId(rOrder.getId());
orderRefund.updateTenantInfo(wxOrder);
orderRefund.setOrderId(wxOrder.getId());
logger.info(">>>>>>>>>>>send sendInsideOrderRefundMsg :"+orderRefund);
mqBaseProducer.sendMessage(orderRefund, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
}
@@ -382,6 +437,15 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
public ResultData createRefundOrderFromMicroPay(WxAppinfo appInfo, Long orderId, EnumPayType payType, Long bUserId) {
WxOrder wxOrder = wxOrderMapper.selectById(orderId,appInfo.getTenantId());

if (wxOrder == null) {
logger.error("交易订单不存在:" + orderId);
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if(!EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode().equals(wxOrder.getOrderStatus())){
logger.error("交易订单状态不支持退款:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage());
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
}

if (payType == EnumPayType.PAY_B_REFUND) {
logger.info("B端发起退款: bUserId-" + bUserId);
if (bUserId == null || bUserId == 0) {
@@ -399,58 +463,85 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_BUSER_NOT_EQUAL);
}
} else if (payType == EnumPayType.PAY_ADMIN_REFUND) {
logger.info("ADMIN端发起退款: bUserId-" + bUserId);
logger.info("ADMIN端发起退款: aUserId-------");
} else if (payType == EnumPayType.PAY_AUTO_REFUND) {
logger.info("auto端发起退款");
} else if (payType == EnumPayType.PAY_C_REFUND){
logger.info("自己发起退款");
} else {
logger.info("自己发起退款: cUserId-" + bUserId);
logger.error("未知退款类型");
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW.getCode(),"未知退款类型");
}
if (wxOrder.getPayment() <= 0) {
logger.error("订单支付金额小于等于0: " + wxOrder.toString());
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
}
final IdWorker idWorker = IdWorker.get();
Long refundOrderId = idWorker.nextId();

Date currentDate = new Date();

WxBatchOrder order =new WxBatchOrder();
order.setId(idWorker.nextId());
order.setCUserId(wxOrder.getCUserId());
order.updateTenantInfo(wxOrder);
order.setPayment(wxOrder.getPayment());
order.setPayVendor(wxOrder.getPayVendor());
order.setOrderType(EnumComposeOrder.SINGLE.getCode());
order.setCreateDate(new Date());
wxBatchOrderMapper.insert(order);
// 创建 refund Order
WxOrder rOrder = new WxOrder();
rOrder.setId(refundOrderId);
rOrder.updateTenantInfo(wxOrder);
rOrder.setOrderNumber(wxOrder.getOrderNumber()); // 退款订单填写支付订单orderNumber
rOrder.setType(EnumOrderType.MICROPAY.getCode());
rOrder.setCUserId(wxOrder.getCUserId());
//这里wx_order不创建退款订单了, 直接修改原订单
WxOrder updWxOrder = new WxOrder();
updWxOrder.setId(wxOrder.getId());
updWxOrder.updateTenantInfo(wxOrder);
if (payType == EnumPayType.PAY_B_REFUND) {
rOrder.setProductId(bUserId); //B端发起退款后存B端用户ID在此
}
rOrder.setPayVendor(wxOrder.getPayVendor());
rOrder.setPaymentType(payType.getCode());
rOrder.setPayment(wxOrder.getPayment());
rOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
rOrder.setCreateDate(currentDate);
rOrder.setUpdateDate(currentDate);
rOrder.setComposeOrderId(order.getId());
rOrder.setComposeOrderType(EnumComposeOrder.SINGLE.getCode());
rOrder.setCouponNumber(1);
updWxOrder.setRefDetail("["+bUserId+"]B端管理员操作退款"); //B端发起退款后存B端用户ID在此
} else{
logger.error("未知退款类型");
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW.getCode(),"未知退款类型");
}
updWxOrder.setPaymentType(payType.getCode());
updWxOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
updWxOrder.setUpdateDate(currentDate);

try {
wxOrderMapper.insert(rOrder);
wxOrderMapper.updateById(updWxOrder);
} catch (Exception e) {
logger.error("退款订单保存出错: " + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "退款订单保存出错");
logger.error("db failed: wxOrder-" + wxOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}


// final IdWorker idWorker = IdWorker.get();
// Long refundOrderId = idWorker.nextId();
//
// WxBatchOrder order =new WxBatchOrder();
// order.setId(idWorker.nextId());
// order.setCUserId(wxOrder.getCUserId());
// order.updateTenantInfo(wxOrder);
// order.setPayment(wxOrder.getPayment());
// order.setPayVendor(wxOrder.getPayVendor());
// order.setOrderType(EnumComposeOrder.SINGLE.getCode());
// order.setCreateDate(new Date());
// wxBatchOrderMapper.insert(order);
//
// // 创建 refund Order
// WxOrder rOrder = new WxOrder();
// rOrder.setId(refundOrderId);
// rOrder.updateTenantInfo(wxOrder);
// rOrder.setOrderNumber(wxOrder.getOrderNumber()); // 退款订单填写支付订单orderNumber
// rOrder.setType(EnumOrderType.MICROPAY.getCode());
// rOrder.setCUserId(wxOrder.getCUserId());
// if (payType == EnumPayType.PAY_B_REFUND) {
// rOrder.setProductId(bUserId); //B端发起退款后存B端用户ID在此
// } else {
// logger.error("退款类型错误");
// throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW.getCode(),"退款类型错误");
// }
// rOrder.setPayVendor(wxOrder.getPayVendor());
// rOrder.setPaymentType(payType.getCode());
// rOrder.setPayment(wxOrder.getPayment());
// rOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
// rOrder.setCreateDate(currentDate);
// rOrder.setUpdateDate(currentDate);
// rOrder.setComposeOrderId(order.getId());
// rOrder.setComposeOrderType(EnumComposeOrder.SINGLE.getCode());
// rOrder.setCouponNumber(1);
// try {
// wxOrderMapper.insert(rOrder);
// } catch (Exception e) {
// logger.error("退款订单保存出错: " + e.getMessage());
// throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "退款订单保存出错");
// }

// 查找支付订单
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.updateTenantInfo(wxOrder);
@@ -472,11 +563,14 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND);
}

WxRefundOrder record = new WxRefundOrder();
record.setPayOrderNo(String.valueOf(payOrder.getId()));
record.setOrderId(rOrder.getId());
// 创建退款订单
final IdWorker idWorker = IdWorker.get();
Long refundId = idWorker.nextId();

WxRefundOrder record = new WxRefundOrder();
record.setPayOrderNo(String.valueOf(payOrder.getId()));
record.setOrderId(wxOrder.getId());

//String out_refund_id = String.valueOf(refundId);

record.setId(refundId);
@@ -755,25 +849,28 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}

@Override
public void actionAfterCouponOrder(WxCouponOrder couponOrder, WxOrder rOrder, WxCoupon coupon, WxCUserBasicInfo user) {
public void actionAfterCouponOrder( WxOrder order, WxCUserBasicInfo user) {
// 发送短信
if(EnumPayWay.PAY_WAY_TT.getCode().equals(couponOrder.getPayVendor())){
logger.info("订单成功短信通知start");
//券名
String name = coupon.getTitle();
if(EnumPayWay.PAY_WAY_TT.getCode().equals(order.getPayVendor())){
logger.info("订单退款短信通知start");
//订单号
String orderNumber = order.getId().toString();
//金额
String priceStr = order.getPaymentStr();
//找出用户手机号
String phone = user.getPhone();
Map<String, String> msgReplaceMap = new HashMap();
msgReplaceMap.put("name", name);
msgReplaceMap.put("orderNumber", orderNumber);
msgReplaceMap.put("priceStr", priceStr);

WxMsgRecord wxMsgRecord = new WxMsgRecord();
wxMsgRecord.updateTenantInfo(couponOrder);
wxMsgRecord.updateTenantInfo(order);
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");
logger.info("订单退款短信通知end");
}
}



+ 28
- 26
mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java Ver fichero

@@ -71,32 +71,34 @@ 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());
WxOrderCouponVo wxOrderCouponVo = batchOrder.getOrders().get(0);
if(EnumPayType.PAY_PAYMENT.getCode().equals(wxOrderCouponVo.getPaymentType())){
payOrderPush(appinfo,batchOrder);
}else{
//退款
//通过退款订单找支付订单
WxOrder ref_order = orderService.getById(wxOrderCouponVo.getOrderNumber(), wxOrderCouponVo.getTenantId());
WxBatchOrder ref_border = new WxBatchOrder();
ref_border.setTenantId(ref_order.getTenantId());
ref_border.setParentTenantId(ref_order.getParentTenantId());
ref_border.setId(ref_order.getComposeOrderId());
WxBatchOrder ref_batchOrder = orderService.batchOrderDetail(ref_border);
if(ref_batchOrder == null){
logger.error("退款 主订单未找到: " + ref_order.getComposeOrderId());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "退款 主订单未找到" + ref_order.getComposeOrderId());
}
if(EnumPayWay.PAY_WAY_TT.getCode().equals(ref_batchOrder.getPayVendor())
&& EnumComposeOrder.SINGLE.getCode().equals(ref_batchOrder.getOrderType())
&& ref_batchOrder.getOrders().size() == 1){
for (WxOrderCouponVo ref_vo:ref_batchOrder.getOrders()) {
ref_vo.setOrderStatus(wxOrderCouponVo.getOrderStatus());
}
payOrderPush(appinfo,ref_batchOrder);
}

}
payOrderPush(appinfo,batchOrder);

// WxOrderCouponVo wxOrderCouponVo = batchOrder.getOrders().get(0);
// if(EnumPayType.PAY_PAYMENT.getCode().equals(wxOrderCouponVo.getPaymentType())){
// payOrderPush(appinfo,batchOrder);
// }else{
// //退款
// //通过退款订单找支付订单
// WxOrder ref_order = orderService.getById(wxOrderCouponVo.getOrderNumber(), wxOrderCouponVo.getTenantId());
// WxBatchOrder ref_border = new WxBatchOrder();
// ref_border.setTenantId(ref_order.getTenantId());
// ref_border.setParentTenantId(ref_order.getParentTenantId());
// ref_border.setId(ref_order.getComposeOrderId());
// WxBatchOrder ref_batchOrder = orderService.batchOrderDetail(ref_border);
// if(ref_batchOrder == null){
// logger.error("退款 主订单未找到: " + ref_order.getComposeOrderId());
// throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "退款 主订单未找到" + ref_order.getComposeOrderId());
// }
// if(EnumPayWay.PAY_WAY_TT.getCode().equals(ref_batchOrder.getPayVendor())
// && EnumComposeOrder.SINGLE.getCode().equals(ref_batchOrder.getOrderType())
// && ref_batchOrder.getOrders().size() == 1){
// for (WxOrderCouponVo ref_vo:ref_batchOrder.getOrders()) {
// ref_vo.setOrderStatus(wxOrderCouponVo.getOrderStatus());
// }
// payOrderPush(appinfo,ref_batchOrder);
// }
//
// }
}
}



+ 7
- 19
mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderRefundMsgServiceImpl.java Ver fichero

@@ -45,31 +45,19 @@ public class FmInsideOrderRefundMsgServiceImpl implements MsgSendService {
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());
WxOrder order = orderService.getById(msg.getOrderId(),msg.getTenantId());
if(order == null) {
logger.error("订单未找到: " + msg.getOrderId());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单未找到" + msg.getOrderId());
}

WxCUserBasicInfo user = userService.getById(couponOrder.getCUserId(),couponOrder.getFinalTenantId());
WxCUserBasicInfo user = userService.getById(order.getCUserId(),msg.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());
logger.error("用户未找到: " + order.getCUserId());
throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "用户未找到" + order.getCUserId());
}

// 提交退款后处理
refundOrderService.actionAfterCouponOrder(couponOrder, rOrder, coupon, user);
refundOrderService.actionAfterCouponOrder(order, user);
}
}

+ 1
- 1
mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java Ver fichero

@@ -47,7 +47,7 @@ public class TtRefundAdapterService implements RefundPayAdapterService{
createRefund.setReason("管理端商户退款");
} else if (payType == EnumPayType.PAY_AUTO_REFUND) {
createRefund.setReason("超期自动退款");
} else {
} else if (payType == EnumPayType.PAY_C_REFUND){
createRefund.setReason("用户自己退款");
}
createRefund.setRefundAmount(record.getRefundFee());


+ 5
- 3
mallinkService/src/main/resources/mapper/WxOrderMapper.xml Ver fichero

@@ -19,6 +19,7 @@
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
<result column="detail" jdbcType="VARCHAR" property="detail"/>
<result column="ref_detail" jdbcType="VARCHAR" property="refDetail"/>
<result column="press_end_date" jdbcType="TIMESTAMP" property="pressEndDate"/>
<result column="press_current_num" jdbcType="INTEGER" property="pressCurrentNum"/>
<result column="press_current_value" jdbcType="INTEGER" property="pressCurrentValue"/>
@@ -34,7 +35,7 @@
</resultMap>

<sql id="allColumns">
`id`,`order_number`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`coupon_channel_id`,`product_id`,`type`,`pay_vendor`,`payment_type`,`payment`,`payment_time`,`freight_price`,`order_status`,`create_date`,`update_date`,`detail`,
`id`,`order_number`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`coupon_channel_id`,`product_id`,`type`,`pay_vendor`,`payment_type`,`payment`,`payment_time`,`freight_price`,`order_status`,`create_date`,`update_date`,`detail`,`ref_detail`,
`press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id`,`total_payment`,`compose_order_id`,`coupon_number`,`compose_order_type`,`shipping_type`,`shipping_address`,`parent_order_id`
</sql>

@@ -571,7 +572,7 @@
select
o.`id`,o.`order_number`,o.`tenant_id`,o.`parent_tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`,o.`pay_vendor`,
o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`
o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`,o.`ref_detail`
from wx_order o
where o.order_status = '1' and o.`type` = 1
@@ -603,7 +604,7 @@
select
o.`id`,o.`order_number`,o.`tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`,o.`pay_vendor`,
o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`
o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`,o.`ref_detail`
from wx_order o
where o.order_status = '0' and o.`type` = 1
@@ -750,6 +751,7 @@
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
<result column="detail" jdbcType="VARCHAR" property="detail"/>
<result column="ref_detail" jdbcType="VARCHAR" property="refDetail"/>
<result column="merchant_name" jdbcType="VARCHAR" property="merchantName"/>
<result column="c_user_name" jdbcType="VARCHAR" property="cUserName"/>
<result column="phone" jdbcType="VARCHAR" property="phone"/>


Cargando…
Cancelar
Guardar