|
@@ -8,6 +8,7 @@ import com.caimei365.order.mapper.CartClubMapper;
|
|
|
import com.caimei365.order.mapper.CartSellerMapper;
|
|
|
import com.caimei365.order.mapper.SubmitMapper;
|
|
|
import com.caimei365.order.model.ResponseJson;
|
|
|
+import com.caimei365.order.model.dto.RechargeDto;
|
|
|
import com.caimei365.order.model.po.*;
|
|
|
import com.caimei365.order.model.dto.SubmitDto;
|
|
|
import com.caimei365.order.model.bo.OrderParamBo;
|
|
@@ -269,7 +270,6 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
return saveOrder(orderParamBo);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Transactional
|
|
|
private ResponseJson<Map<String, Object>> saveOrder(OrderParamBo orderParamBo) {
|
|
|
log.info("******************** 提交订单逻辑处理 start *******************");
|
|
@@ -1237,4 +1237,193 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成充值商品订单
|
|
|
+ *
|
|
|
+ * @param rechargeDto {
|
|
|
+ * serviceProviderId 协销id
|
|
|
+ * clubId 机构Id
|
|
|
+ * name 商品名称
|
|
|
+ * price 价格
|
|
|
+ * note 备注
|
|
|
+ * }
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public ResponseJson<Map<String, Object>> generateRechargeOrder(RechargeDto rechargeDto) {
|
|
|
+ // 获取机构用户Id
|
|
|
+ Integer clubUserId = baseMapper.getUserIdByClubId(rechargeDto.getClubId());
|
|
|
+ if (null == clubUserId || clubUserId == 0){
|
|
|
+ return ResponseJson.error("机构用户信息异常!", null);
|
|
|
+ }
|
|
|
+ // 获取协销用户Id
|
|
|
+ Integer spUserId = submitMapper.getServiceProviderUserId(rechargeDto.getServiceProviderId());
|
|
|
+ if (null == spUserId || spUserId == 0){
|
|
|
+ return ResponseJson.error("协销用户异常!", null);
|
|
|
+ }
|
|
|
+ log.info("******************** 提交充值订单逻辑处理 start *******************");
|
|
|
+ /*
|
|
|
+ * 初始化主订单
|
|
|
+ */
|
|
|
+ OrderPo mainOrder = new OrderPo();
|
|
|
+ // 订单来源
|
|
|
+ mainOrder.setOrderSource(6);
|
|
|
+ // 订单号
|
|
|
+ String orderNo = CodeUtil.generateOrderNo(6);
|
|
|
+ mainOrder.setOrderNo(orderNo);
|
|
|
+ // 用户Id
|
|
|
+ mainOrder.setClubId(rechargeDto.getClubId());
|
|
|
+ mainOrder.setUserId(clubUserId);
|
|
|
+ mainOrder.setBuyUserId(spUserId);
|
|
|
+ // 订单提交时间
|
|
|
+ Date date = new Date();
|
|
|
+ String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
|
|
|
+ mainOrder.setOrderTime(curDateStr);
|
|
|
+ mainOrder.setUpdateDate(curDateStr);
|
|
|
+ // 订单状态 0 有效 其它无效
|
|
|
+ mainOrder.setDelFlag(0);
|
|
|
+ mainOrder.setOrderType(0);
|
|
|
+ mainOrder.setOrderSubmitType(3);
|
|
|
+ mainOrder.setConfirmFlag(0);
|
|
|
+ mainOrder.setPayFlag(0);
|
|
|
+ mainOrder.setOnlinePayFlag(0);
|
|
|
+ // 订单提交时间
|
|
|
+ mainOrder.setOrderTime(curDateStr);
|
|
|
+ // 订单不可以拆分
|
|
|
+ mainOrder.setSplitFlag(0);
|
|
|
+ // 发票类型
|
|
|
+ mainOrder.setInvoiceFlag(0);
|
|
|
+ mainOrder.setReceiptStatus(1);
|
|
|
+ mainOrder.setPayStatus(1);
|
|
|
+ mainOrder.setZeroCostFlag(0);
|
|
|
+ mainOrder.setSendOutStatus(1);
|
|
|
+ mainOrder.setRefundType(0);
|
|
|
+ // 是否包含活动商品(受订单未支付自动关闭时间影响) 0 否 1 是
|
|
|
+ mainOrder.setHasActProduct(0);
|
|
|
+ // 是否确认付款供应商
|
|
|
+ mainOrder.setAffirmPaymentFlag(0);
|
|
|
+ // 设置是否是二手订单
|
|
|
+ mainOrder.setSecondHandOrderFlag(0);
|
|
|
+ mainOrder.setPromotionFullReduction(0d);
|
|
|
+ // 商品总数量
|
|
|
+ mainOrder.setProductCount(1);
|
|
|
+ // 赠品数量
|
|
|
+ mainOrder.setPresentCount(0);
|
|
|
+ //促销赠品数量
|
|
|
+ mainOrder.setPromotionalGiftsCount(0);
|
|
|
+ // 0包邮 -1到付 1 有运费
|
|
|
+ mainOrder.setPostageFlag(0);
|
|
|
+ mainOrder.setPostage(0d);
|
|
|
+ // 商品总额
|
|
|
+ mainOrder.setProductTotalFee(rechargeDto.getPrice());
|
|
|
+ mainOrder.setOrderTotalFee(rechargeDto.getPrice());
|
|
|
+ mainOrder.setPayTotalFee(rechargeDto.getPrice());
|
|
|
+ // 订单状态
|
|
|
+ mainOrder.setStatus(0);
|
|
|
+ // 余额支付金额
|
|
|
+ mainOrder.setBalancePayFee(0d);
|
|
|
+ // 实际支付金额(商品金额+运费-余额抵扣)
|
|
|
+ mainOrder.setPayableAmount(rechargeDto.getPrice());
|
|
|
+ // 售后条款
|
|
|
+ mainOrder.setClauseId(1);
|
|
|
+ mainOrder.setClauseName("无条款");
|
|
|
+ // 是否返佣订单
|
|
|
+ mainOrder.setRebateFlag(0);
|
|
|
+ /*
|
|
|
+ * 保存主订单数据,返回订单Id
|
|
|
+ */
|
|
|
+ submitMapper.insertMainOrder(mainOrder);
|
|
|
+ log.info("【提交充值订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增主订单(insert[cm_order])orderId:" + mainOrder.getOrderId());
|
|
|
+ // 获取数据库商品信息
|
|
|
+ OrderProductPo rechargeProduct = submitMapper.getProductDetails(6060);
|
|
|
+ // 供应商名称
|
|
|
+ String shopName = submitMapper.getShopNameById(rechargeProduct.getShopId());
|
|
|
+ /*
|
|
|
+ * 初始化子订单
|
|
|
+ */
|
|
|
+ OrderShopPo rechargeShopOrder = new OrderShopPo();
|
|
|
+ // 子订单编号
|
|
|
+ rechargeShopOrder.setShopOrderNo(mainOrder.getOrderNo() + "01");
|
|
|
+ rechargeShopOrder.setOrderNo(mainOrder.getOrderNo());
|
|
|
+ rechargeShopOrder.setOrderId(mainOrder.getOrderId());
|
|
|
+ rechargeShopOrder.setShopId(rechargeProduct.getShopId());
|
|
|
+ rechargeShopOrder.setShopName(shopName);
|
|
|
+ // 用户Id
|
|
|
+ rechargeShopOrder.setClubId(mainOrder.getClubId());
|
|
|
+ rechargeShopOrder.setUserId(mainOrder.getUserId());
|
|
|
+ // 协销订单
|
|
|
+ rechargeShopOrder.setSpId(rechargeDto.getServiceProviderId());
|
|
|
+ rechargeShopOrder.setOrderSubmitType(mainOrder.getOrderSubmitType());
|
|
|
+ rechargeShopOrder.setItemCount(1);
|
|
|
+ rechargeShopOrder.setProductAmount(rechargeDto.getPrice());
|
|
|
+ rechargeShopOrder.setTotalAmount(rechargeDto.getPrice());
|
|
|
+ rechargeShopOrder.setNeedPayAmount(rechargeDto.getPrice());
|
|
|
+ rechargeShopOrder.setOrderTime(mainOrder.getOrderTime());
|
|
|
+ rechargeShopOrder.setCanRefundAmount(0d);
|
|
|
+ rechargeShopOrder.setSplitFlag(0);
|
|
|
+ /*
|
|
|
+ * 保存子订单
|
|
|
+ */
|
|
|
+ submitMapper.insertShopOrder(rechargeShopOrder);
|
|
|
+ log.info("【提交充值订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增子订单(insert[cm_shop_order])shopOrderId:" + rechargeShopOrder.getShopOrderId() + ",orderId:" + mainOrder.getOrderId());
|
|
|
+ /*
|
|
|
+ * 更新主订单的子订单Id信息,如:1000,1002
|
|
|
+ */
|
|
|
+ if (null != rechargeShopOrder.getShopOrderId()) {
|
|
|
+ mainOrder.setShopOrderIds(rechargeShopOrder.getShopOrderId().toString());
|
|
|
+ submitMapper.updateShopOrderIds(rechargeShopOrder.getShopOrderId().toString(), mainOrder.getOrderId());
|
|
|
+ } else {
|
|
|
+ // 设置手动回滚事务
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return ResponseJson.error("生成子订单异常!", null);
|
|
|
+ }
|
|
|
+ /*
|
|
|
+ * 订单商品
|
|
|
+ */
|
|
|
+ rechargeProduct.setOrderNo(mainOrder.getOrderNo());
|
|
|
+ rechargeProduct.setOrderId(mainOrder.getOrderId());
|
|
|
+ rechargeProduct.setShopOrderId(rechargeShopOrder.getShopOrderId());
|
|
|
+ rechargeProduct.setShopOrderNo(rechargeShopOrder.getShopOrderNo());
|
|
|
+ rechargeProduct.setNum(1);
|
|
|
+ rechargeProduct.setPresentNum(0);
|
|
|
+ rechargeProduct.setPrice(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setNormalPrice(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setTotalAmount(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setTotalFee(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setShouldPayFee(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setDiscount(100d);
|
|
|
+ rechargeProduct.setDiscountPrice(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setTaxRate(100d);
|
|
|
+ rechargeProduct.setAddedValueTax(0d);
|
|
|
+ rechargeProduct.setTotalAddedValueTax(0d);
|
|
|
+ rechargeProduct.setShopFee(0d);
|
|
|
+ rechargeProduct.setOtherFee(0d);
|
|
|
+ rechargeProduct.setCmFee(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setSingleShopFee(0d);
|
|
|
+ rechargeProduct.setSingleOtherFee(0d);
|
|
|
+ rechargeProduct.setSingleCmFee(rechargeDto.getPrice());
|
|
|
+ rechargeProduct.setNotOutStore(0);
|
|
|
+ rechargeProduct.setBuyAgainFlag(0);
|
|
|
+ /*
|
|
|
+ * 保存 订单商品
|
|
|
+ */
|
|
|
+ submitMapper.insertOrderProduct(rechargeProduct);
|
|
|
+ log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>保存订单商品(insert[cm_order_product])OrderProductId:" + rechargeProduct.getOrderProductId() + ",orderId:" + mainOrder.getOrderId());
|
|
|
+
|
|
|
+ log.info("******************** 提交充值订单逻辑处理 end *******************");
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 构造返回参数
|
|
|
+ */
|
|
|
+ Map<String, Object> info = new HashMap<>();
|
|
|
+ info.put("orderID", String.valueOf(mainOrder.getOrderId()));
|
|
|
+ info.put("orderNo", String.valueOf(mainOrder.getOrderNo()));
|
|
|
+ info.put("orderMark", "#" + mainOrder.getOrderId() + "#");
|
|
|
+ //应付订单金额
|
|
|
+ info.put("payTotalFee", String.valueOf(mainOrder.getPayTotalFee()));
|
|
|
+ //真实需要付款金额
|
|
|
+ info.put("payableAmount", String.valueOf(mainOrder.getPayableAmount()));
|
|
|
+ return ResponseJson.success(info);
|
|
|
+ }
|
|
|
+
|
|
|
}
|