|
@@ -1,6 +1,7 @@
|
|
|
package com.caimei365.order.components;
|
|
|
|
|
|
import com.caimei365.order.mapper.BaseMapper;
|
|
|
+import com.caimei365.order.mapper.PayOrderMapper;
|
|
|
import com.caimei365.order.model.dto.VipSkuPriceDto;
|
|
|
import com.caimei365.order.model.po.*;
|
|
|
import com.caimei365.order.model.vo.*;
|
|
@@ -8,6 +9,7 @@ import com.caimei365.order.utils.MathUtil;
|
|
|
import com.caimei365.order.utils.ImageUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.ArrayUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
@@ -16,6 +18,7 @@ import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.IntStream;
|
|
|
|
|
@@ -32,6 +35,8 @@ public class ProductService {
|
|
|
private String domain;
|
|
|
@Resource
|
|
|
private BaseMapper baseMapper;
|
|
|
+ @Resource
|
|
|
+ private PayOrderMapper payOrderMapper;
|
|
|
|
|
|
/**
|
|
|
* 设置商品图片及税费
|
|
@@ -357,19 +362,102 @@ public class ProductService {
|
|
|
* 保存余额抵扣到收款记录
|
|
|
*
|
|
|
* @param balancePayFee 余额抵扣
|
|
|
- * @param orderId 主订单Id
|
|
|
+ * @param shopOrderList 主订单Id
|
|
|
* @param note 日志备注
|
|
|
*/
|
|
|
- public void saveDiscernReceipt(Double balancePayFee, Integer orderId, String note) {
|
|
|
+ public void saveDiscernReceipt(Double balancePayFee, List<OrderShopPo> shopOrderList, String note) {
|
|
|
Date date = new Date();
|
|
|
String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
|
|
|
+ ShopOrderVo shopOrderVo = new ShopOrderVo();
|
|
|
+ AtomicReference<Double> ba = new AtomicReference<>(balancePayFee);
|
|
|
+ shopOrderList.forEach(shopOrder -> {
|
|
|
+ double shopOrderPay = 0d;
|
|
|
+ if (MathUtil.compare(balancePayFee, shopOrder.getNeedPayAmount()) >= 0) {
|
|
|
+ shopOrder.setReceiptStatus(3);
|
|
|
+ shopOrderPay = shopOrder.getNeedPayAmount();
|
|
|
+ } else {
|
|
|
+ shopOrder.setReceiptStatus(2);
|
|
|
+ shopOrderPay = ba.get();
|
|
|
+ }
|
|
|
+ ba.updateAndGet(v -> ba.get() - shopOrder.getNeedPayAmount());
|
|
|
+ // 识别款项表
|
|
|
+ DiscernReceiptPo discernReceipt = new DiscernReceiptPo();
|
|
|
+ discernReceipt.setPayWay(3);
|
|
|
+ discernReceipt.setPayType(16);
|
|
|
+ discernReceipt.setReceiptType(1);
|
|
|
+ discernReceipt.setReceiptStatus(3);
|
|
|
+ discernReceipt.setReceiptAmount(shopOrderPay);
|
|
|
+ discernReceipt.setConfirmType(4);
|
|
|
+ discernReceipt.setReceiptDate(curDateStr);
|
|
|
+ discernReceipt.setConfirmDate(curDateStr);
|
|
|
+ discernReceipt.setReviewDate(curDateStr);
|
|
|
+ discernReceipt.setUpdateDate(curDateStr);
|
|
|
+ discernReceipt.setDelFlag(0);
|
|
|
+ // 保存 收款记录
|
|
|
+ baseMapper.insertDiscernReceipt(discernReceipt);
|
|
|
+ log.info(note + ">>>>>>>>>>>保存识别款项(insert[cm_discern_receipt])id:" + discernReceipt.getId() + ",shopOrderId:" + shopOrder.getShopOrderId());
|
|
|
+ // 收款项和订单关系表
|
|
|
+ OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
|
|
|
+ relation.setReceiptId(discernReceipt.getId());
|
|
|
+ relation.setOrderId(shopOrder.getOrderId());
|
|
|
+ relation.setShopOrderId(shopOrder.getShopOrderId());
|
|
|
+ relation.setAssociateAmount(shopOrderPay);
|
|
|
+ relation.setRelationType(2);
|
|
|
+ relation.setDelFlag(0);
|
|
|
+ // 保存 收款项和订单关系
|
|
|
+ baseMapper.insertOrderReceiptRelation(relation);
|
|
|
+ //保存余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
+ balanceRecord.setUserId(shopOrder.getUserId());
|
|
|
+ balanceRecord.setType(2);
|
|
|
+ balanceRecord.setBalanceType(1);
|
|
|
+ balanceRecord.setAddDate(new Date());
|
|
|
+ balanceRecord.setAmount(shopOrderPay);
|
|
|
+ balanceRecord.setOrderId(shopOrder.getOrderId());
|
|
|
+ balanceRecord.setShopOrderId(shopOrder.getShopOrderId());
|
|
|
+ balanceRecord.setRemark("机构自主订单");
|
|
|
+ balanceRecord.setDelFlag(0);
|
|
|
+ // 保存 余额收支记录
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
+ log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])shopOrderId:" + shopOrder.getShopOrderId());
|
|
|
+ log.info(note + ">>>>>>>>>>>收款项和订单关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",shopOrderId:" + shopOrder.getShopOrderId());
|
|
|
+ // 修改子订单状态
|
|
|
+ shopOrderVo.setShopOrderId(shopOrder.getShopOrderId());
|
|
|
+ shopOrderVo.setReceiptStatus(shopOrder.getReceiptStatus());
|
|
|
+ shopOrderVo.setAccountAmount(shopOrderPay);
|
|
|
+ shopOrderVo.setReceiptAmount(shopOrderPay);
|
|
|
+ payOrderMapper.updateShopOrderBalancePay(shopOrderVo);
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param balancePayFee
|
|
|
+ * @param shopOrder
|
|
|
+ * @param note
|
|
|
+ */
|
|
|
+ public void saveShopOrderDiscernReceipt(Double balancePayFee, ShopOrderVo shopOrder, String note) {
|
|
|
+ Date date = new Date();
|
|
|
+ String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
|
|
|
+ AtomicReference<Double> ba = new AtomicReference<>(balancePayFee);
|
|
|
+ double shopOrderPay = 0d;
|
|
|
+ if (MathUtil.compare(balancePayFee, shopOrder.getNeedPayAmount()) >= 0) {
|
|
|
+ shopOrder.setReceiptStatus(3);
|
|
|
+ shopOrderPay = shopOrder.getNeedPayAmount();
|
|
|
+ } else {
|
|
|
+ shopOrder.setReceiptStatus(2);
|
|
|
+ shopOrderPay = ba.get();
|
|
|
+ }
|
|
|
+ ba.updateAndGet(v -> ba.get() - shopOrder.getNeedPayAmount());
|
|
|
// 识别款项表
|
|
|
DiscernReceiptPo discernReceipt = new DiscernReceiptPo();
|
|
|
discernReceipt.setPayWay(3);
|
|
|
discernReceipt.setPayType(16);
|
|
|
discernReceipt.setReceiptType(1);
|
|
|
discernReceipt.setReceiptStatus(3);
|
|
|
- discernReceipt.setReceiptAmount(balancePayFee);
|
|
|
+ discernReceipt.setReceiptAmount(shopOrderPay);
|
|
|
discernReceipt.setConfirmType(4);
|
|
|
discernReceipt.setReceiptDate(curDateStr);
|
|
|
discernReceipt.setConfirmDate(curDateStr);
|
|
@@ -378,17 +466,38 @@ public class ProductService {
|
|
|
discernReceipt.setDelFlag(0);
|
|
|
// 保存 收款记录
|
|
|
baseMapper.insertDiscernReceipt(discernReceipt);
|
|
|
- log.info(note + ">>>>>>>>>>>保存识别款项(insert[cm_discern_receipt])id:" + discernReceipt.getId() + ",orderId:" + orderId);
|
|
|
+ log.info(note + ">>>>>>>>>>>保存识别款项(insert[cm_discern_receipt])id:" + discernReceipt.getId() + ",shopOrderId:" + shopOrder.getShopOrderId());
|
|
|
// 收款项和订单关系表
|
|
|
OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
|
|
|
relation.setReceiptId(discernReceipt.getId());
|
|
|
- relation.setOrderId(orderId);
|
|
|
- relation.setAssociateAmount(balancePayFee);
|
|
|
+ relation.setOrderId(shopOrder.getOrderId());
|
|
|
+ relation.setShopOrderId(shopOrder.getShopOrderId());
|
|
|
+ relation.setAssociateAmount(shopOrderPay);
|
|
|
relation.setRelationType(2);
|
|
|
relation.setDelFlag(0);
|
|
|
// 保存 收款项和订单关系
|
|
|
baseMapper.insertOrderReceiptRelation(relation);
|
|
|
- log.info(note + ">>>>>>>>>>>收款项和订单关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",orderId:" + orderId);
|
|
|
+ //保存余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
+ balanceRecord.setUserId(shopOrder.getUserId());
|
|
|
+ balanceRecord.setType(2);
|
|
|
+ balanceRecord.setBalanceType(1);
|
|
|
+ balanceRecord.setAddDate(new Date());
|
|
|
+ balanceRecord.setAmount(shopOrderPay);
|
|
|
+ balanceRecord.setOrderId(shopOrder.getOrderId());
|
|
|
+ balanceRecord.setShopOrderId(shopOrder.getShopOrderId());
|
|
|
+ balanceRecord.setRemark("机构自主订单");
|
|
|
+ balanceRecord.setDelFlag(0);
|
|
|
+ // 保存 余额收支记录
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
+ log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])shopOrderId:" + shopOrder.getShopOrderId());
|
|
|
+ log.info(note + ">>>>>>>>>>>收款项和订单关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",shopOrderId:" + shopOrder.getShopOrderId());
|
|
|
+
|
|
|
+ // 修改子订单状态
|
|
|
+ shopOrder.setAccountAmount(shopOrderPay);
|
|
|
+ shopOrder.setReceiptAmount(shopOrderPay);
|
|
|
+ payOrderMapper.updateShopOrderBalancePay(shopOrder);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|