Browse Source

businessCircle tran

release_toaliyun_real
xhxu 5 years ago
parent
commit
f1a136ed97
3 changed files with 51 additions and 34 deletions
  1. +43
    -33
      mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java
  2. +4
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java
  3. +4
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java

+ 43
- 33
mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java View File

@@ -13,6 +13,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.Date;
@@ -82,6 +84,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void createOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record) {
String lockKey = StringUtils.join(ALI_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.NO.getCode(),":","lock");
long time = System.currentTimeMillis() + 2000;
@@ -172,36 +175,43 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void insertRefundNoticeOrder(WxMerchant wxMerchant, AliBusinessCircleOrder record) {
AliBusinessCircleOrder order = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(order == null){
logger.error("--Ali商圈退款--付款消息未找到--transactionId="+record.getTransactionId());
}else{
String lockKey = StringUtils.join(ALI_CIRCLE_KEY,record.getRefundId(), ":",EnumYesOrNo.YES.getCode(),":","lock");
String lockKey = StringUtils.join(ALI_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.YES.getCode(),":","lock");
long time = System.currentTimeMillis() + 2000;
String timeStr = String.valueOf(time);
if (redisLock.lock2(lockKey, timeStr)) {
AliBusinessCircleOrder refundOrder = this.getRefundOrderByRefundId(record.getRefundId(),record.getTenantId());
if(refundOrder != null){
logger.error("--Ali商圈退款--退款消息已存在---RefundId="+record.getRefundId());
}else{
List<AliBusinessCircleOrder> refundOrders = this.getRefundOrderByTransactionId(record.getTransactionId(),record.getTenantId());
Integer amount = order.getPayAmount();
Integer increasedPoints = order.getIncreasedPoints();
Integer refundAmount = 0;
Integer refundIncreasedPoints = 0;

if(refundOrders != null && refundOrders.size()>0){
for (AliBusinessCircleOrder ro:refundOrders) {
refundAmount += ro.getRefundAmount();
refundIncreasedPoints += ro.getIncreasedPoints();
}
}
if(refundAmount >= amount){
logger.error("--Ali商圈退款--已经退款--transactionId="+record.getTransactionId());
}else if((refundAmount + record.getRefundAmount()) > amount ){
logger.error("--Ali商圈退款--退款金额超限--transactionId="+record.getTransactionId());
}else{
List<AliBusinessCircleOrder> refundOrders = this.getRefundOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(refundOrders != null && refundOrders.size() > 0){
logger.error("--Ali商圈退款--已经退款--transactionId="+record.getTransactionId());
}

// AliBusinessCircleOrder refundOrder = this.getRefundOrderByRefundId(record.getRefundId(),record.getTenantId());
// if(refundOrder != null){
// logger.error("--Ali商圈退款--退款消息已存在---RefundId="+record.getRefundId());
// }else{
// List<AliBusinessCircleOrder> refundOrders = this.getRefundOrderByTransactionId(record.getTransactionId(),record.getTenantId());
// Integer amount = order.getPayAmount();
// Integer increasedPoints = order.getIncreasedPoints();
// Integer refundAmount = 0;
// Integer refundIncreasedPoints = 0;
//
// if(refundOrders != null && refundOrders.size()>0){
// for (AliBusinessCircleOrder ro:refundOrders) {
// refundAmount += ro.getRefundAmount();
// refundIncreasedPoints += ro.getIncreasedPoints();
// }
// }
// if(refundAmount >= amount){
// logger.error("--Ali商圈退款--已经退款--transactionId="+record.getTransactionId());
// }else if((refundAmount + record.getRefundAmount()) > amount ){
// logger.error("--Ali商圈退款--退款金额超限--transactionId="+record.getTransactionId());
// }
else{
Date now = new Date();
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
@@ -224,16 +234,16 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
creditHistory.setCouponId(record.getId());
creditHistory.setMerchantId(order.getMerchantId());
creditHistory.setCreditType(EnumScoreType.REFUND_CONSUMPTION.getCode());
int points = 0;
if((refundAmount + record.getRefundAmount()) == amount){
points = increasedPoints - refundIncreasedPoints;
}else{
points = new BigDecimal(order.getIncreasedPoints())
.divide(new BigDecimal(order.getPayAmount()),2,BigDecimal.ROUND_HALF_UP)
.multiply(new BigDecimal(record.getRefundAmount()))
.intValue();
}
// int points = 0;
// if((refundAmount + record.getRefundAmount()) == amount){
// points = increasedPoints - refundIncreasedPoints;
// }else{
// points = new BigDecimal(order.getIncreasedPoints())
// .divide(new BigDecimal(order.getPayAmount()),2,BigDecimal.ROUND_HALF_UP)
// .multiply(new BigDecimal(record.getRefundAmount()))
// .intValue();
// }
int points = order.getIncreasedPoints();
creditHistory.setCreditNum(points);
creditHistory.setSpend(0-record.getRefundAmount());
creditHistory.setChangePurpose("Ali商圈消费退款:商户["+wxMerchant.getName()+"] ("+record.getRefundAmountStr()+"元) ");
@@ -251,7 +261,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder
this.updatePoints(record);
}
}
}
// }

redisLock.unlock(lockKey, timeStr);
}else{


+ 4
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java View File

@@ -13,6 +13,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.Date;
@@ -82,6 +84,7 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void createOrder(WxBusinessCircleOrder record) {
String lockKey = StringUtils.join(WX_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.NO.getCode(),":", "lock");
long time = System.currentTimeMillis() + 2000;
@@ -167,6 +170,7 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void insertRefundNoticeOrder(WxBusinessCircleOrder record) {
WxBusinessCircleOrder order = this.getOrderByTransactionId(record.getTransactionId(),record.getTenantId());
if(order == null){


+ 4
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java View File

@@ -15,6 +15,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
@@ -90,6 +91,7 @@ public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void createOrder(WxThirdPartyOrders record) {
String lockKey = StringUtils.join(THIRD_CIRCLE_KEY,record.getTransactionId(), ":",EnumYesOrNo.NO.getCode(),":", "lock");
long time = System.currentTimeMillis() + 2000;
@@ -178,6 +180,7 @@ public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService


@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void insertRefundNoticeOrder(WxThirdPartyOrders record) {
WxThirdPartyOrders order = this.getOrderByTransactionId(EnumThirdOrderType.RMB_PAY,record.getTransactionId(),record.getTenantId());
if(order == null){
@@ -284,8 +287,8 @@ public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService
wxThirdPartyOrdersMapper.updatePoints(record);
}

@Transactional(propagation = REQUIRED ,rollbackFor = Exception.class)
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void pointDeduction(WxThirdPartyOrders record) {

WxCUserBasicInfo basicInfo = null;


Loading…
Cancel
Save