diff --git a/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java index 582ceabdb..d2ac7f4e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java @@ -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 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 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 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{ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java index ef254d391..8359f0060 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java @@ -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){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java index 9a956d457..d76244bb2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java @@ -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;