Browse Source

circle

release_toaliyun_real
xhxu 5 years ago
parent
commit
fb9ea2bd8c
7 changed files with 338 additions and 131 deletions
  1. +159
    -29
      mallinkPublicApi/src/main/java/com/iformall/controller/UserThirdCircleOrderController.java
  2. +22
    -17
      mallinkPublicApi/src/main/java/com/iformall/utils/AppTest.java
  3. +3
    -2
      mallinkService/src/main/java/com/iformall/service/AliBusinessCircleOrderService.java
  4. +3
    -2
      mallinkService/src/main/java/com/iformall/service/WxBusinessCircleOrderService.java
  5. +72
    -42
      mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java
  6. +71
    -31
      mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java
  7. +8
    -8
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java

+ 159
- 29
mallinkPublicApi/src/main/java/com/iformall/controller/UserThirdCircleOrderController.java View File

@@ -2,9 +2,14 @@ package com.iformall.controller;


import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.AliBusinessCircleOrder;
import com.iformall.domain.po.WxBusinessCircleOrder;
import com.iformall.domain.po.WxThirdPartyOrders; import com.iformall.domain.po.WxThirdPartyOrders;
import com.iformall.enums.EnumThirdOrderType; import com.iformall.enums.EnumThirdOrderType;
import com.iformall.enums.EnumUserType;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.service.AliBusinessCircleOrderService;
import com.iformall.service.WxBusinessCircleOrderService;
import com.iformall.service.WxThirdPartyOrdersService; import com.iformall.service.WxThirdPartyOrdersService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -36,6 +41,12 @@ public class UserThirdCircleOrderController extends BaseController {
@Autowired @Autowired
WxThirdPartyOrdersService thirdPartyOrdersService; WxThirdPartyOrdersService thirdPartyOrdersService;


@Autowired
WxBusinessCircleOrderService wxBusinessCircleOrderService;

@Autowired
AliBusinessCircleOrderService aliBusinessCircleOrderService;

/** /**
* *
* @param * @param
@@ -46,6 +57,16 @@ public class UserThirdCircleOrderController extends BaseController {
public ResultData createOrder(@RequestBody Map<String,Object> map) { public ResultData createOrder(@RequestBody Map<String,Object> map) {
logger.info("UserThirdCircleOrderController >>>>>>>>>>>> createOrder >>>>>>>>>>>>>"+map.toString()); logger.info("UserThirdCircleOrderController >>>>>>>>>>>> createOrder >>>>>>>>>>>>>"+map.toString());


String sourceType = map.get("sourceType")==null?"":map.get("sourceType").toString();//来源类型,EnumUserType
Integer sourceTypeInt = EnumUserType.THIRD_CIRCLE.getCode();
if(StringUtils.isNotBlank(sourceType)){
try {
sourceTypeInt = Integer.parseInt(sourceType);
} catch (NumberFormatException e) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"sourceType格式不正确");
}
}

String transactionId = map.get("transactionId")==null?"":map.get("transactionId").toString();//***订单Id String transactionId = map.get("transactionId")==null?"":map.get("transactionId").toString();//***订单Id
String shopNumber = map.get("shopNumber")==null?"":map.get("shopNumber").toString();//***门店唯一标识 对应双方平台门店 String shopNumber = map.get("shopNumber")==null?"":map.get("shopNumber").toString();//***门店唯一标识 对应双方平台门店
String shopName = map.get("shopName")==null?"":map.get("shopName").toString();//门店名称 String shopName = map.get("shopName")==null?"":map.get("shopName").toString();//门店名称
@@ -91,23 +112,74 @@ public class UserThirdCircleOrderController extends BaseController {
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"amount为正整数"); return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"amount为正整数");
} }
try{
if(sourceTypeInt.equals(EnumUserType.THIRD_CIRCLE.getCode())){
WxThirdPartyOrders thirdPartyOrders = new WxThirdPartyOrders();
thirdPartyOrders.updateTenantInfo(getTenantInfo());
thirdPartyOrders.setSourceAppId(getAppId());
thirdPartyOrders.setSourceAppName(getAppConfig().getName());


WxThirdPartyOrders thirdPartyOrders = new WxThirdPartyOrders();
thirdPartyOrders.updateTenantInfo(getTenantInfo());
thirdPartyOrders.setSourceAppId(getAppId());
thirdPartyOrders.setSourceAppName(getAppConfig().getName());
thirdPartyOrders.setTransactionId(transactionId);
thirdPartyOrders.setShopNumber(shopNumber);
thirdPartyOrders.setShopName(shopName);
thirdPartyOrders.setUserNumber(userNumber);
thirdPartyOrders.setUserPhone(userPhone);
thirdPartyOrders.setTimeEnd(timeEndDate);
thirdPartyOrders.setAmount(Integer.parseInt(amount));
thirdPartyOrders.setPayAmount(Integer.parseInt(amount));
thirdPartyOrders.setSummary(summary);


thirdPartyOrders.setTransactionId(transactionId);
thirdPartyOrders.setShopNumber(shopNumber);
thirdPartyOrders.setShopName(shopName);
thirdPartyOrders.setUserNumber(userNumber);
thirdPartyOrders.setUserPhone(userPhone);
thirdPartyOrders.setTimeEnd(timeEndDate);
thirdPartyOrders.setAmount(Integer.parseInt(amount));
thirdPartyOrders.setPayAmount(Integer.parseInt(amount));
thirdPartyOrders.setSummary(summary);
try{
return thirdPartyOrdersService.createOrder(thirdPartyOrders);
return thirdPartyOrdersService.createOrder(thirdPartyOrders);

}else if(sourceTypeInt.equals(EnumUserType.BUSINESS_CIRCLE.getCode())){//微信商圈
WxBusinessCircleOrder wxBusinessCircleOrder = new WxBusinessCircleOrder();
wxBusinessCircleOrder.updateTenantInfo(getTenantInfo());
wxBusinessCircleOrder.setSummary(summary);

// wxBusinessCircleOrder.setWxMchid(result.getMchid());
// wxBusinessCircleOrder.setWxMerchantName(result.getMerchantName());
wxBusinessCircleOrder.setWxShopName(shopName);
wxBusinessCircleOrder.setWxShopNumber(shopNumber);
Long userId = null;
try {
userId = Long.parseLong(userNumber);
} catch (NumberFormatException e) {}
wxBusinessCircleOrder.setCUserId(userId);
// wxBusinessCircleOrder.setCUserPhone(userPhone);
// wxBusinessCircleOrder.setAppid(result.getAppid());
// wxBusinessCircleOrder.setOpenid(result.getOpenid());
wxBusinessCircleOrder.setTimeEnd(timeEndDate);
wxBusinessCircleOrder.setAmount(Integer.parseInt(amount));
wxBusinessCircleOrder.setPayAmount(Integer.parseInt(amount));
wxBusinessCircleOrder.setTransactionId(transactionId);
// wxBusinessCircleOrder.setCommitTag(result.getCommitTag());

return wxBusinessCircleOrderService.createOrder(wxBusinessCircleOrder);
}else if(sourceTypeInt.equals(EnumUserType.ALI_CIRCLE.getCode())){//支付宝商圈
AliBusinessCircleOrder aliBusinessCircleOrder = new AliBusinessCircleOrder();
// aliBusinessCircleOrder.setNoticeId(notifyId);
// aliBusinessCircleOrder.setNoticeEventType(msgMethod);

aliBusinessCircleOrder.updateTenantInfo(getTenantInfo());
aliBusinessCircleOrder.setTransactionId(transactionId);
aliBusinessCircleOrder.setAmount(Integer.parseInt(amount));
aliBusinessCircleOrder.setPayAmount(Integer.parseInt(amount));
aliBusinessCircleOrder.setTimeEnd(timeEndDate);
// aliBusinessCircleOrder.setMallStoreId(mallStoreId);
// aliBusinessCircleOrder.setBuyerId(buyerId);
Long userId = null;
try {
userId = Long.parseLong(userNumber);
} catch (NumberFormatException e) {}
aliBusinessCircleOrder.setCUserId(userId);

aliBusinessCircleOrder.setMallStoreId(shopNumber);

return aliBusinessCircleOrderService.createOrder(null,aliBusinessCircleOrder);

}else{
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"sourceType未匹配");
}
}catch(MallinkException e){ }catch(MallinkException e){
logger.error(e.getMessage()); logger.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage());
@@ -115,7 +187,6 @@ public class UserThirdCircleOrderController extends BaseController {
logger.error("异常:" + e); logger.error("异常:" + e);
return new ResultData(ErrorCode.SYS_SERVER_ERROR); return new ResultData(ErrorCode.SYS_SERVER_ERROR);
} }

} }


/** /**
@@ -128,6 +199,16 @@ public class UserThirdCircleOrderController extends BaseController {
public ResultData orderRefund(@RequestBody Map<String,Object> map) { public ResultData orderRefund(@RequestBody Map<String,Object> map) {
logger.info("UserThirdCircleOrderController >>>>>>>>>>>> orderRefund >>>>>>>>>>>>>"+map.toString()); logger.info("UserThirdCircleOrderController >>>>>>>>>>>> orderRefund >>>>>>>>>>>>>"+map.toString());


String sourceType = map.get("sourceType")==null?"":map.get("sourceType").toString();//来源类型,EnumUserType
Integer sourceTypeInt = EnumUserType.THIRD_CIRCLE.getCode();
if(StringUtils.isNotBlank(sourceType)){
try {
sourceTypeInt = Integer.parseInt(sourceType);
} catch (NumberFormatException e) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"sourceType格式不正确");
}
}

String transactionId = map.get("transactionId")==null?"":map.get("transactionId").toString();//***订单Id String transactionId = map.get("transactionId")==null?"":map.get("transactionId").toString();//***订单Id
String refundTime = map.get("refundTime")==null?"":map.get("refundTime").toString();//***退款时间(yyyy-MM-dd HH:mm:ss) String refundTime = map.get("refundTime")==null?"":map.get("refundTime").toString();//***退款时间(yyyy-MM-dd HH:mm:ss)
String refundSummary = map.get("refundSummary")==null?"":map.get("refundSummary").toString();//退款摘要 String refundSummary = map.get("refundSummary")==null?"":map.get("refundSummary").toString();//退款摘要
@@ -164,22 +245,70 @@ public class UserThirdCircleOrderController extends BaseController {
if(StringUtils.isBlank(refundId)){ if(StringUtils.isBlank(refundId)){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"refundId为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"refundId为空");
} }
try{
if(sourceTypeInt.equals(EnumUserType.THIRD_CIRCLE.getCode())){
WxThirdPartyOrders thirdPartyOrders = new WxThirdPartyOrders();
thirdPartyOrders.updateTenantInfo(getTenantInfo());
thirdPartyOrders.setSourceAppId(getAppId());
thirdPartyOrders.setSourceAppName(getAppConfig().getName());


WxThirdPartyOrders thirdPartyOrders = new WxThirdPartyOrders();
thirdPartyOrders.updateTenantInfo(getTenantInfo());
thirdPartyOrders.setSourceAppId(getAppId());
thirdPartyOrders.setSourceAppName(getAppConfig().getName());
thirdPartyOrders.setTransactionId(transactionId);
thirdPartyOrders.setTimeEnd(refundTimeDate);
thirdPartyOrders.setSummary(refundSummary);
if(refund > 0){
thirdPartyOrders.setRefundAmount(refund);
}
thirdPartyOrders.setRefundId(refundId);


thirdPartyOrders.setTransactionId(transactionId);
thirdPartyOrders.setTimeEnd(refundTimeDate);
thirdPartyOrders.setSummary(refundSummary);
if(refund > 0){
thirdPartyOrders.setRefundAmount(refund);
}
thirdPartyOrders.setRefundId(refundId);
return thirdPartyOrdersService.insertRefundNoticeOrder(thirdPartyOrders);


try{
return thirdPartyOrdersService.insertRefundNoticeOrder(thirdPartyOrders);
}else if(sourceTypeInt.equals(EnumUserType.BUSINESS_CIRCLE.getCode())){//微信商圈
WxBusinessCircleOrder wxBusinessCircleOrder = new WxBusinessCircleOrder();
wxBusinessCircleOrder.updateTenantInfo(getTenantInfo());
// wxBusinessCircleOrder.setNoticeId(notifyData.getId());
// wxBusinessCircleOrder.setNoticeCreateTime(sdf.parse(notifyData.getCreateTime()));
// wxBusinessCircleOrder.setNoticeEventType(notifyData.getEventType());
wxBusinessCircleOrder.setSummary(refundSummary);

// wxBusinessCircleOrder.setWxMchid(result.getMchid());
// wxBusinessCircleOrder.setWxMerchantName(result.getMerchantName());
// wxBusinessCircleOrder.setWxShopName(result.getShopName());
// wxBusinessCircleOrder.setWxShopNumber(result.getShopNumber());
// wxBusinessCircleOrder.setAppid(result.getAppid());
// wxBusinessCircleOrder.setOpenid(result.getOpenid());
wxBusinessCircleOrder.setTimeEnd(refundTimeDate);
// wxBusinessCircleOrder.setAmount(result.getPayAmount());
// wxBusinessCircleOrder.setPayAmount(result.getPayAmount());
wxBusinessCircleOrder.setTransactionId(transactionId);

if(refund > 0){
wxBusinessCircleOrder.setRefundAmount(refund);
}
wxBusinessCircleOrder.setRefundId(refundId);

return wxBusinessCircleOrderService.insertRefundNoticeOrder(wxBusinessCircleOrder);

}else if(sourceTypeInt.equals(EnumUserType.ALI_CIRCLE.getCode())){//支付宝商圈
AliBusinessCircleOrder aliBusinessCircleOrder = new AliBusinessCircleOrder();
// aliBusinessCircleOrder.setNoticeId(notifyId);
// aliBusinessCircleOrder.setNoticeEventType(msgMethod);

aliBusinessCircleOrder.updateTenantInfo(getTenantInfo());
aliBusinessCircleOrder.setTransactionId(transactionId);
if(refund > 0){
aliBusinessCircleOrder.setRefundAmount(refund);
}
aliBusinessCircleOrder.setTimeEnd(refundTimeDate);
// aliBusinessCircleOrder.setMallStoreId(mallStoreId);
// aliBusinessCircleOrder.setBuyerId(buyerId);

// aliBusinessCircleOrder.setMallId(mallId);
// aliBusinessCircleOrder.setMallName(mallName);

return aliBusinessCircleOrderService.insertRefundNoticeOrder(null,aliBusinessCircleOrder);
}else{
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"sourceType未匹配");
}
}catch(MallinkException e){ }catch(MallinkException e){
logger.error(e.getMessage()); logger.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage());
@@ -187,6 +316,7 @@ public class UserThirdCircleOrderController extends BaseController {
logger.error("异常:" + e); logger.error("异常:" + e);
return new ResultData(ErrorCode.SYS_SERVER_ERROR); return new ResultData(ErrorCode.SYS_SERVER_ERROR);
} }

} }






+ 22
- 17
mallinkPublicApi/src/main/java/com/iformall/utils/AppTest.java View File

@@ -2,6 +2,7 @@ package com.iformall.utils;


import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.enums.EnumUserType;
import com.iformall.utils.sign.SignUtils; import com.iformall.utils.sign.SignUtils;


import java.util.Date; import java.util.Date;
@@ -46,25 +47,29 @@ public class AppTest {
/** /**
* 创建交易信息 参数 * 创建交易信息 参数
*/ */
// IdWorker idWorker = IdWorker.get();
// paramMap.put("transactionId",String.valueOf(idWorker.nextId()));//***订单Id
// paramMap.put("shopNumber","1001");//***门店唯一标识 对应双方平台门店
// paramMap.put("shopName","百丽");//门店名称
// paramMap.put("userNumber","551612907794915328");//***会员Id
//// paramMap.put("userPhone","18872592633");//会员手机号
// paramMap.put("timeEnd","2021-06-08 14:44:00");//***付款时间(yyyy-MM-dd HH:mm:ss)
// paramMap.put("amount","9000");//***付款金额(分)
//// paramMap.put("summary","");//付款摘要
IdWorker idWorker = IdWorker.get();

paramMap.put("sourceType", EnumUserType.THIRD_CIRCLE.getCode());

paramMap.put("transactionId",String.valueOf(idWorker.nextId()));//***订单Id
paramMap.put("shopNumber","1001");//***门店唯一标识 对应双方平台门店
paramMap.put("shopName","百丽");//门店名称
paramMap.put("userNumber","562957699461472256");//***会员Id
// paramMap.put("userPhone","18872592633");//会员手机号
paramMap.put("timeEnd","2021-06-11 14:44:00");//***付款时间(yyyy-MM-dd HH:mm:ss)
paramMap.put("amount","9000");//***付款金额(分)
// paramMap.put("summary","");//付款摘要


/** /**
* 交易退款信息 参数 * 交易退款信息 参数
*/ */
IdWorker idWorker = IdWorker.get();
paramMap.put("transactionId","562134761668694016");//***订单Id
paramMap.put("refundTime","2021-06-08 19:46:00");//***退款时间(yyyy-MM-dd HH:mm:ss)
// paramMap.put("refundAmount","1000");//退款金额(分)
paramMap.put("refundSummary","我要退款");//付款摘要
paramMap.put("refundId",String.valueOf(idWorker.nextId()));//退款订单号
// IdWorker idWorker = IdWorker.get();
// paramMap.put("sourceType", EnumUserType.THIRD_CIRCLE.getCode());
// paramMap.put("transactionId","562134761668694016");//***订单Id
// paramMap.put("refundTime","2021-06-08 19:46:00");//***退款时间(yyyy-MM-dd HH:mm:ss)
//// paramMap.put("refundAmount","1000");//退款金额(分)
// paramMap.put("refundSummary","我要退款");//付款摘要
// paramMap.put("refundId",String.valueOf(idWorker.nextId()));//退款订单号


/** /**
* 积分抵扣 参数 * 积分抵扣 参数
@@ -102,14 +107,14 @@ public class AppTest {
/** /**
* 创建交易信息 接口 * 创建交易信息 接口
*/ */
// String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/thirdCircle/order", headMap, JSON.toJSONString(paramMap));
String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/thirdCircle/order", headMap, JSON.toJSONString(paramMap));
// String s = HttpUtil.doPost("http://localhost:7070/public/api/thirdCircle/order", headMap, JSON.toJSONString(paramMap)); // String s = HttpUtil.doPost("http://localhost:7070/public/api/thirdCircle/order", headMap, JSON.toJSONString(paramMap));




/** /**
* 交易退款 接口 * 交易退款 接口
*/ */
String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/thirdCircle/orderRefund", headMap, JSON.toJSONString(paramMap));
// String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/thirdCircle/orderRefund", headMap, JSON.toJSONString(paramMap));


/** /**
* 积分抵扣 接口 * 积分抵扣 接口


+ 3
- 2
mallinkService/src/main/java/com/iformall/service/AliBusinessCircleOrderService.java View File

@@ -1,6 +1,7 @@
package com.iformall.service; package com.iformall.service;


import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.po.AliBusinessCircleOrder; import com.iformall.domain.po.AliBusinessCircleOrder;
import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
@@ -38,9 +39,9 @@ public interface AliBusinessCircleOrderService {
List<AliBusinessCircleOrder> getRefundOrderByTransactionId(String transactionId, String tenantId); List<AliBusinessCircleOrder> getRefundOrderByTransactionId(String transactionId, String tenantId);




void createOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record);
ResultData createOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record);


void insertRefundNoticeOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record);
ResultData insertRefundNoticeOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record);


/** /**
* 积分 * 积分


+ 3
- 2
mallinkService/src/main/java/com/iformall/service/WxBusinessCircleOrderService.java View File

@@ -1,6 +1,7 @@
package com.iformall.service; package com.iformall.service;


import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxBusinessCircleOrder; import com.iformall.domain.po.WxBusinessCircleOrder;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;


@@ -36,9 +37,9 @@ public interface WxBusinessCircleOrderService {
WxBusinessCircleOrder getRefundOrderByRefundId(String refundId, String tenantId); WxBusinessCircleOrder getRefundOrderByRefundId(String refundId, String tenantId);
List<WxBusinessCircleOrder> getRefundOrderByTransactionId(String transactionId, String tenantId); List<WxBusinessCircleOrder> getRefundOrderByTransactionId(String transactionId, String tenantId);


void createOrder(WxBusinessCircleOrder record);
ResultData createOrder(WxBusinessCircleOrder record);


void insertRefundNoticeOrder(WxBusinessCircleOrder record);
ResultData insertRefundNoticeOrder(WxBusinessCircleOrder record);


/** /**
* 更新积分 * 更新积分


+ 72
- 42
mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java View File

@@ -2,10 +2,13 @@ package com.iformall.service.impl;


import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.AliBusinessCircleOrderMapper; import com.iformall.mapper.AliBusinessCircleOrderMapper;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.RedisLock; import com.iformall.utils.RedisLock;
@@ -45,6 +48,9 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
@Autowired @Autowired
WxCreditHistoryService creditHistoryService; WxCreditHistoryService creditHistoryService;


@Autowired
WxCouponSendService wxCouponSendService;



@Override @Override
public PageInfo<AliBusinessCircleOrder> listAsPage(AliBusinessCircleOrder record, Integer pageIndex, Integer pageSize) { public PageInfo<AliBusinessCircleOrder> listAsPage(AliBusinessCircleOrder record, Integer pageIndex, Integer pageSize) {
@@ -100,7 +106,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder


@Override @Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void createOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record) {
public ResultData createOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record) {
String lockKey = StringUtils.join(ALI_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.NO.getCode(),":","lock"); String lockKey = StringUtils.join(ALI_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.NO.getCode(),":","lock");
long time = System.currentTimeMillis() + 2000; long time = System.currentTimeMillis() + 2000;
String timeStr = String.valueOf(time); String timeStr = String.valueOf(time);
@@ -108,6 +114,8 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
AliBusinessCircleOrder byTransactionId = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId()); AliBusinessCircleOrder byTransactionId = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(byTransactionId != null){ if(byTransactionId != null){
logger.error("--Ali商圈付款--订单消息已存在---byTransactionId="+byTransactionId.getTransactionId()); logger.error("--Ali商圈付款--订单消息已存在---byTransactionId="+byTransactionId.getTransactionId());
redisLock.unlock(lockKey, timeStr);
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "订单数据已存在");
}else{ }else{
Date now = new Date(); Date now = new Date();
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
@@ -115,40 +123,51 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
record.setCreateTime(now); record.setCreateTime(now);
record.setUpdateTime(now); record.setUpdateTime(now);


//TODO 第三方获取门店(标识可能发生变化)
// WxMerchant wxMerchant = wxMerchantService.getById(Long.parseLong(record.getMallStoreId()));
//必有门店
// WxMerchant wxMerchant = wxMerchantService.getMerchantByEncode(record.getMallStoreId());
// if(wxMerchant != null){
// record.setMerchantId(wxMerchant.getId());
// }else{
// logger.error("--Ali商圈付款通知消息未找到门店--mallStoreId="+record.getMallStoreId());
// }
record.setMerchantId(wxMerchant.getId());
record.setMerchantName(wxMerchant.getName());

AliPayCUser userQ = new AliPayCUser();
userQ.updateTenantInfo(record);
userQ.setAlipayUserId(record.getBuyerId());
AliPayCUser aliUser = aliPayCUserService.getByAliPayUserId(userQ);
if(aliUser != null){
// WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(aliUser, aliUser.getPhone());
WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.registerByPhone(aliUser, aliUser.getPhone(),aliUser.getName(),null,null);
if(infoByPhone != null ){
record.setCUserId(infoByPhone.getId());
record.setCUserNickName(infoByPhone.getNickName());
record.setCUserPhone(infoByPhone.getPhone());
if(wxMerchant == null && StringUtils.isNotBlank(record.getMallStoreId())){
wxMerchant = wxMerchantService.getMerchantByEncode(record.getMallStoreId());
}
if(wxMerchant != null){
record.setMerchantId(wxMerchant.getId());
record.setMerchantName(wxMerchant.getName());
}else{
logger.error("--Ali商圈付款通知消息未找到门店--mallStoreId="+record.getMallStoreId());
record.setMerchantName("未知门店");
}

if(record.getCUserId() != null){
WxCUserBasicInfo byId = wxCUserBasicInfoService.getById(record.getCUserId(), record.getFinalTenantId());
if(byId != null){
record.setCUserNickName(byId.getNickName());
record.setCUserPhone(byId.getPhone());
}else{ }else{
logger.error("--Ali商圈付款通知消息未找到会员--aliUserId="+record.getBuyerId());
record.setCUserId(null);
} }

}else{ }else{
logger.error("--Ali商圈付款通知消息未找到会员--aliUserId="+record.getBuyerId());
AliPayCUser userQ = new AliPayCUser();
userQ.updateTenantInfo(record);
userQ.setAlipayUserId(record.getBuyerId());
AliPayCUser aliUser = aliPayCUserService.getByAliPayUserId(userQ);
if(aliUser != null){
// WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(aliUser, aliUser.getPhone());
WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.registerByPhone(aliUser, aliUser.getPhone(),aliUser.getName(),null,null);
if(infoByPhone != null ){
record.setCUserId(infoByPhone.getId());
record.setCUserNickName(infoByPhone.getNickName());
record.setCUserPhone(infoByPhone.getPhone());
}else{
logger.error("--Ali商圈付款通知消息未找到会员--aliUserId="+record.getBuyerId());
}
}else{
logger.error("--Ali商圈付款通知消息未找到会员--aliUserId="+record.getBuyerId());
}
} }

aliBusinessCircleOrderMapper.insertNoticeOrder(record); aliBusinessCircleOrderMapper.insertNoticeOrder(record);


if(record.getCUserId() == null){ if(record.getCUserId() == null){
redisLock.unlock(lockKey, timeStr); redisLock.unlock(lockKey, timeStr);
return;
return new ResultData(0);
} }
Integer businessId = EnumBusiness.BUSINESS_ID6.getCode(); Integer businessId = EnumBusiness.BUSINESS_ID6.getCode();
if(wxMerchant != null){ if(wxMerchant != null){
@@ -165,7 +184,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
creditHistory.setMerchantId(record.getMerchantId()); creditHistory.setMerchantId(record.getMerchantId());
creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode());
creditHistory.setSpend(record.getPayAmount()); creditHistory.setSpend(record.getPayAmount());
creditHistory.setChangePurpose("支付宝商圈消费:商户["+wxMerchant.getName()+"] ("+record.getPayAmountStr()+"元) ");
creditHistory.setChangePurpose("支付宝商圈消费:商户["+record.getMerchantName()+"] ("+record.getPayAmountStr()+"元) ");
creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId()); creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId());
Integer creditNum = 0; Integer creditNum = 0;
if (creditHistory.getCreditNum() != null) { if (creditHistory.getCreditNum() != null) {
@@ -173,14 +192,22 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
} }
if(creditNum == 0){ if(creditNum == 0){
redisLock.unlock(lockKey, timeStr); redisLock.unlock(lockKey, timeStr);
return;
return new ResultData(0);
} }
record.setIncreasedPoints(creditNum); record.setIncreasedPoints(creditNum);
record.setPointsUpdateTime(creditHistory.getCreateDate()); record.setPointsUpdateTime(creditHistory.getCreateDate());
this.updatePoints(record); this.updatePoints(record);

try {
wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, record,EnumPayWay.PAY_WAY_NOT_UNPAY_B_MA);
} catch (Exception e) {
logger.error("支付发券: " + e.getMessage());
}

redisLock.unlock(lockKey, timeStr);
return new ResultData(creditNum);
} }


redisLock.unlock(lockKey, timeStr);
}else{ }else{
logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey); logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey);
try { try {
@@ -190,16 +217,18 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
}finally { }finally {
redisLock.unlock(lockKey, timeStr); redisLock.unlock(lockKey, timeStr);
} }
return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION);
} }


} }


@Override @Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void insertRefundNoticeOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record) {
public ResultData insertRefundNoticeOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record) {
AliBusinessCircleOrder order = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId()); AliBusinessCircleOrder order = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(order == null){ if(order == null){
logger.error("--Ali商圈退款--付款消息未找到--transactionId="+record.getTransactionId()); logger.error("--Ali商圈退款--付款消息未找到--transactionId="+record.getTransactionId());
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "付款消息未找到");
}else{ }else{
String lockKey = StringUtils.join(ALI_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.YES.getCode(),":","lock"); String lockKey = StringUtils.join(ALI_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.YES.getCode(),":","lock");
long time = System.currentTimeMillis() + 2000; long time = System.currentTimeMillis() + 2000;
@@ -208,6 +237,8 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
List<AliBusinessCircleOrder> refundOrders = this.getRefundOrderByTransactionId(record.getTransactionId(),record.getTenantId()); List<AliBusinessCircleOrder> refundOrders = this.getRefundOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(refundOrders != null && refundOrders.size() > 0){ if(refundOrders != null && refundOrders.size() > 0){
logger.error("--Ali商圈退款--已经退款--transactionId="+record.getTransactionId()); logger.error("--Ali商圈退款--已经退款--transactionId="+record.getTransactionId());
redisLock.unlock(lockKey, timeStr);
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "退款数据已存在");
} }


// AliBusinessCircleOrder refundOrder = this.getRefundOrderByRefundId(record.getRefundId(),record.getTenantId()); // AliBusinessCircleOrder refundOrder = this.getRefundOrderByRefundId(record.getRefundId(),record.getTenantId());
@@ -251,6 +282,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
order.setUpdateTime(now); order.setUpdateTime(now);
aliBusinessCircleOrderMapper.updateOrderStatus(order); aliBusinessCircleOrderMapper.updateOrderStatus(order);


int creditNum = 0;
if(order.getEarnPoints().equals(EnumYesOrNo.YES.getCode())){ if(order.getEarnPoints().equals(EnumYesOrNo.YES.getCode())){
WxCreditHistory creditHistory = new WxCreditHistory(); WxCreditHistory creditHistory = new WxCreditHistory();
creditHistory.setTenantId(record.getFinalTenantId()); creditHistory.setTenantId(record.getFinalTenantId());
@@ -273,25 +305,22 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
int points = order.getIncreasedPoints(); int points = order.getIncreasedPoints();
creditHistory.setCreditNum(points); creditHistory.setCreditNum(points);
creditHistory.setSpend(0-record.getRefundAmount()); creditHistory.setSpend(0-record.getRefundAmount());
creditHistory.setChangePurpose("支付宝商圈退款:商户["+wxMerchant.getName()+"] ("+record.getRefundAmountStr()+"元) ");
creditHistory.setChangePurpose("支付宝商圈退款:商户["+record.getMerchantName()+"] ("+record.getRefundAmountStr()+"元) ");
creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId()); creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId());
Integer creditNum = 0;
if (creditHistory.getCreditNum() != null) { if (creditHistory.getCreditNum() != null) {
creditNum = creditHistory.getCreditNum(); creditNum = creditHistory.getCreditNum();
} }
if(creditNum == 0){
redisLock.unlock(lockKey, timeStr);
return;
if(creditNum != 0){
record.setIncreasedPoints(creditNum);
record.setPointsUpdateTime(creditHistory.getCreateDate());
this.updatePoints(record);
} }

record.setIncreasedPoints(creditNum);
record.setPointsUpdateTime(creditHistory.getCreateDate());
this.updatePoints(record);
} }
redisLock.unlock(lockKey, timeStr);
return new ResultData(creditNum);
} }
// } // }

redisLock.unlock(lockKey, timeStr);
}else{ }else{
logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey); logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey);
try { try {
@@ -301,6 +330,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
}finally { }finally {
redisLock.unlock(lockKey, timeStr); redisLock.unlock(lockKey, timeStr);
} }
return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION);
} }
} }
} }


+ 71
- 31
mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java View File

@@ -2,10 +2,13 @@ package com.iformall.service.impl;


import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxBusinessCircleOrderMapper; import com.iformall.mapper.WxBusinessCircleOrderMapper;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.RedisLock; import com.iformall.utils.RedisLock;
@@ -49,6 +52,9 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
@Autowired @Autowired
WxCallBackService wxCallBackService; WxCallBackService wxCallBackService;


@Autowired
WxCouponSendService wxCouponSendService;



@Override @Override
public PageInfo<WxBusinessCircleOrder> listAsPage(WxBusinessCircleOrder record, Integer pageIndex, Integer pageSize) { public PageInfo<WxBusinessCircleOrder> listAsPage(WxBusinessCircleOrder record, Integer pageIndex, Integer pageSize) {
@@ -104,7 +110,7 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe


@Override @Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void createOrder(WxBusinessCircleOrder record) {
public ResultData createOrder(WxBusinessCircleOrder record) {
String lockKey = StringUtils.join(WX_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.NO.getCode(),":", "lock"); String lockKey = StringUtils.join(WX_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.NO.getCode(),":", "lock");
long time = System.currentTimeMillis() + 2000; long time = System.currentTimeMillis() + 2000;
String timeStr = String.valueOf(time); String timeStr = String.valueOf(time);
@@ -113,6 +119,8 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
WxBusinessCircleOrder byTransactionId = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId()); WxBusinessCircleOrder byTransactionId = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(byTransactionId != null){ if(byTransactionId != null){
logger.error("--Wx商圈付款--订单消息已存在---byTransactionId="+byTransactionId.getTransactionId()); logger.error("--Wx商圈付款--订单消息已存在---byTransactionId="+byTransactionId.getTransactionId());
redisLock.unlock(lockKey, timeStr);
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "订单数据已存在");
}else { }else {
Date now = new Date(); Date now = new Date();
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
@@ -127,21 +135,35 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
record.setMerchantId(wxMerchant.getId()); record.setMerchantId(wxMerchant.getId());
record.setMerchantName(wxMerchant.getName()); record.setMerchantName(wxMerchant.getName());
} else { } else {
record.setMerchantName("未知门店");
logger.error("--wx商圈付款通知消息未找到门店--shopName=" + record.getWxShopName() + "&shopNumber=" + record.getWxShopNumber()); logger.error("--wx商圈付款通知消息未找到门店--shopName=" + record.getWxShopName() + "&shopNumber=" + record.getWxShopNumber());
} }
WxCUser userQ = new WxCUser();
userQ.updateTenantInfo(record);
userQ.setOpenId(record.getOpenid());
userQ.setAppId(record.getAppid());
WxCUser user = wxCUserService.getByOpenId(userQ);
if (user != null && user.getUserId() != null) {
record.setCUserId(user.getUserId());
record.setCUserNickName(user.getNickName());
record.setCUserPhone(user.getPhone());
} else {
logger.error("--Wx商圈付款通知消息未找到会员--openid=" + record.getOpenid());

if(StringUtils.isNotBlank(record.getOpenid()) && StringUtils.isNotBlank(record.getAppid())){
WxCUser userQ = new WxCUser();
userQ.updateTenantInfo(record);
userQ.setOpenId(record.getOpenid());
userQ.setAppId(record.getAppid());
WxCUser user = wxCUserService.getByOpenId(userQ);
if (user != null && user.getUserId() != null) {
record.setCUserId(user.getUserId());
}
} }
if(record.getCUserId() == null){
logger.error("--微信商圈付款通知消息未找到会员--1");
}else{
WxCUserBasicInfo byId = wxCUserBasicInfoService.getById(record.getCUserId(), record.getFinalTenantId());
if(byId != null){
record.setCUserNickName(byId.getNickName());
record.setCUserPhone(byId.getPhone());
}else{
record.setCUserId(null);
logger.error("--微信商圈付款通知消息未找到会员--2");
}
}

wxBusinessCircleOrderMapper.insertNoticeOrder(record); wxBusinessCircleOrderMapper.insertNoticeOrder(record);
Integer creditNum = 0;
if(record.getCUserId() != null){ if(record.getCUserId() != null){
Integer businessId = EnumBusiness.BUSINESS_ID6.getCode(); Integer businessId = EnumBusiness.BUSINESS_ID6.getCode();
if(wxMerchant != null){ if(wxMerchant != null){
@@ -158,26 +180,34 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
creditHistory.setMerchantId(record.getMerchantId()); creditHistory.setMerchantId(record.getMerchantId());
creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode());
creditHistory.setSpend(record.getPayAmount()); creditHistory.setSpend(record.getPayAmount());
creditHistory.setChangePurpose("微信商圈消费:商户["+record.getWxShopName()+"] ("+record.getPayAmountStr()+"元) ");
creditHistory.setChangePurpose("微信商圈消费:商户["+record.getWxMerchantName()+"] ("+record.getPayAmountStr()+"元) ");
creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId()); creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId());
Integer creditNum = 0;
if (creditHistory.getCreditNum() != null) { if (creditHistory.getCreditNum() != null) {
creditNum = creditHistory.getCreditNum(); creditNum = creditHistory.getCreditNum();
} }
if(creditNum == 0){ if(creditNum == 0){
redisLock.unlock(lockKey, timeStr); redisLock.unlock(lockKey, timeStr);
return;
return new ResultData(0);
} }
record.setIncreasedPoints(creditNum); record.setIncreasedPoints(creditNum);
record.setPointsUpdateTime(creditHistory.getCreateDate()); record.setPointsUpdateTime(creditHistory.getCreateDate());
this.updatePoints(record); this.updatePoints(record);


//同步积分
wxCallBackService.notifyPoints(record);
}
try {
wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, record,EnumPayWay.PAY_WAY_NOT_UNPAY_B_MA);
} catch (Exception e) {
logger.error("支付发券: " + e.getMessage());
}


if(StringUtils.isNotBlank(record.getNoticeId())){
//同步积分
wxCallBackService.notifyPoints(record);
}
}
redisLock.unlock(lockKey, timeStr);
return new ResultData(creditNum);
} }
redisLock.unlock(lockKey, timeStr);


}else { }else {
logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey); logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey);
@@ -188,16 +218,18 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
}finally { }finally {
redisLock.unlock(lockKey, timeStr); redisLock.unlock(lockKey, timeStr);
} }
return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION);
} }


} }


@Override @Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void insertRefundNoticeOrder(WxBusinessCircleOrder record) {
public ResultData insertRefundNoticeOrder(WxBusinessCircleOrder record) {
WxBusinessCircleOrder order = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId()); WxBusinessCircleOrder order = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(order == null){ if(order == null){
logger.error("--Wx商圈退款--付款消息未找到--transactionId="+record.getTransactionId()); logger.error("--Wx商圈退款--付款消息未找到--transactionId="+record.getTransactionId());
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "付款消息未找到");
}else{ }else{
String lockKey = StringUtils.join(WX_CIRCLE_KEY,record.getRefundId(), ":",EnumYesOrNo.YES.getCode(),":", "lock"); String lockKey = StringUtils.join(WX_CIRCLE_KEY,record.getRefundId(), ":",EnumYesOrNo.YES.getCode(),":", "lock");
long time = System.currentTimeMillis() + 2000; long time = System.currentTimeMillis() + 2000;
@@ -206,6 +238,8 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
WxBusinessCircleOrder refundOrder = this.getRefundOrderByRefundId(record.getRefundId(),record.getTenantId()); WxBusinessCircleOrder refundOrder = this.getRefundOrderByRefundId(record.getRefundId(),record.getTenantId());
if(refundOrder != null){ if(refundOrder != null){
logger.error("--Ali商圈退款--退款消息已存在---RefundId="+record.getRefundId()); logger.error("--Ali商圈退款--退款消息已存在---RefundId="+record.getRefundId());
redisLock.unlock(lockKey, timeStr);
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "退款数据已存在");
}else{ }else{
List<WxBusinessCircleOrder> refundOrders = this.getRefundOrderByTransactionId(record.getTransactionId(),record.getTenantId()); List<WxBusinessCircleOrder> refundOrders = this.getRefundOrderByTransactionId(record.getTransactionId(),record.getTenantId());
Integer amount = order.getPayAmount(); Integer amount = order.getPayAmount();
@@ -219,10 +253,17 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
refundIncreasedPoints += ro.getIncreasedPoints(); refundIncreasedPoints += ro.getIncreasedPoints();
} }
} }
if(record.getRefundAmount() == null){
record.setRefundAmount(order.getPayAmount()-refundAmount);
}
if(refundAmount >= amount){ if(refundAmount >= amount){
logger.error("--Wx商圈退款--已经退款--transactionId="+record.getTransactionId()); logger.error("--Wx商圈退款--已经退款--transactionId="+record.getTransactionId());
redisLock.unlock(lockKey, timeStr);
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "已经退款");
}else if((refundAmount + record.getRefundAmount()) > amount ){ }else if((refundAmount + record.getRefundAmount()) > amount ){
logger.error("--Wx商圈退款--退款金额超限--transactionId="+record.getTransactionId()); logger.error("--Wx商圈退款--退款金额超限--transactionId="+record.getTransactionId());
redisLock.unlock(lockKey, timeStr);
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "退款金额超限");
}else{ }else{
Date now = new Date(); Date now = new Date();
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
@@ -244,7 +285,7 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
} }
order.setUpdateTime(now); order.setUpdateTime(now);
wxBusinessCircleOrderMapper.updateOrderStatus(order); wxBusinessCircleOrderMapper.updateOrderStatus(order);
int creditNum = 0;
if(order.getEarnPoints().equals(EnumYesOrNo.YES.getCode())){ if(order.getEarnPoints().equals(EnumYesOrNo.YES.getCode())){
WxCreditHistory creditHistory = new WxCreditHistory(); WxCreditHistory creditHistory = new WxCreditHistory();
creditHistory.setTenantId(record.getFinalTenantId()); creditHistory.setTenantId(record.getFinalTenantId());
@@ -267,24 +308,22 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe


creditHistory.setCreditNum(points); creditHistory.setCreditNum(points);
creditHistory.setSpend(0-record.getRefundAmount()); creditHistory.setSpend(0-record.getRefundAmount());
creditHistory.setChangePurpose("微信商圈退款:商户["+record.getWxShopName()+"] ("+record.getRefundAmountStr()+"元) ");
creditHistory.setChangePurpose("微信商圈退款:商户["+record.getMerchantName()+"] ("+record.getRefundAmountStr()+"元) ");
creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId()); creditHistory = creditHistoryService.saveOrUpdate(creditHistory,record.getTenantId());
Integer creditNum = 0;
if (creditHistory.getCreditNum() != null) { if (creditHistory.getCreditNum() != null) {
creditNum = creditHistory.getCreditNum(); creditNum = creditHistory.getCreditNum();
} }
if(creditNum == 0){
redisLock.unlock(lockKey, timeStr);
return;
if(creditNum != 0){
record.setIncreasedPoints(creditNum);
record.setPointsUpdateTime(creditHistory.getCreateDate());
this.updatePoints(record);
} }

record.setIncreasedPoints(creditNum);
record.setPointsUpdateTime(creditHistory.getCreateDate());
this.updatePoints(record);
} }
redisLock.unlock(lockKey, timeStr);
return new ResultData(creditNum);
} }
} }
redisLock.unlock(lockKey, timeStr);
}else { }else {
logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey); logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey);
try { try {
@@ -294,6 +333,7 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
}finally { }finally {
redisLock.unlock(lockKey, timeStr); redisLock.unlock(lockKey, timeStr);
} }
return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION);
} }


} }


+ 8
- 8
mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java View File

@@ -266,14 +266,14 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
} catch (Exception e) { } catch (Exception e) {
logger.error("收银发券条件判断错误:ID=" + wxCouponSend.getId() + e.getMessage()); logger.error("收银发券条件判断错误:ID=" + wxCouponSend.getId() + e.getMessage());
} }
}else if(param.getClass().equals(WxThirdPartyOrders.class)){
WxThirdPartyOrders thirdOrder = (WxThirdPartyOrders) param;
}else if(param.getClass().equals(BusinessCircleBase.class)){
BusinessCircleBase circleBase = (BusinessCircleBase) param;


try { try {
JSONObject jo = JSONObject.parseObject(wxCouponSend.getConditions()); JSONObject jo = JSONObject.parseObject(wxCouponSend.getConditions());


if (thirdOrder.getMerchantId() != null
&& thirdOrder.getMerchantId().equals(jo.getLong("id"))) {
if (circleBase.getMerchantId() != null
&& circleBase.getMerchantId().equals(jo.getLong("id"))) {
return true; return true;
} }
} catch (Exception e) { } catch (Exception e) {
@@ -325,10 +325,10 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
cUserId = order.getCUserId(); cUserId = order.getCUserId();
tenantEntity = order; tenantEntity = order;
break; break;
}else if(param.getClass().equals(WxThirdPartyOrders.class)){
WxThirdPartyOrders thirdOrder = (WxThirdPartyOrders) param;
cUserId = thirdOrder.getCUserId();
tenantEntity = thirdOrder;
}else if(param.getClass().equals(BusinessCircleBase.class)){
BusinessCircleBase circleBase = (BusinessCircleBase) param;
cUserId = circleBase.getCUserId();
tenantEntity = circleBase;
break; break;
}else{ }else{
return false; return false;


Loading…
Cancel
Save