|
@@ -28,6 +28,7 @@ import cn.newfeifan.mall.module.product.dal.mysql.sku.ProductSkuMapper;
|
|
|
import cn.newfeifan.mall.module.product.dal.mysql.spu.ProductSpuMapper;
|
|
|
import cn.newfeifan.mall.module.sale.dal.dataobject.shop.ShopDO;
|
|
|
import cn.newfeifan.mall.module.sale.dal.mysql.shop.ShopMapper;
|
|
|
+import cn.newfeifan.mall.module.sale.service.merchant.MerchantService;
|
|
|
import cn.newfeifan.mall.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
|
|
|
import cn.newfeifan.mall.module.trade.controller.app.order.vo.*;
|
|
|
import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO;
|
|
@@ -35,8 +36,14 @@ import cn.newfeifan.mall.module.trade.convert.order.TradeOrderConvert;
|
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.cart.CartDO;
|
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
|
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
|
|
|
+import cn.newfeifan.mall.module.trade.dal.dataobject.ordersettlement.OrderSettlementDO;
|
|
|
+import cn.newfeifan.mall.module.trade.dal.dataobject.ptsettlement.PtSettlementDO;
|
|
|
+import cn.newfeifan.mall.module.trade.dal.dataobject.shopsettlement.ShopSettlementDO;
|
|
|
import cn.newfeifan.mall.module.trade.dal.mysql.order.TradeOrderItemMapper;
|
|
|
import cn.newfeifan.mall.module.trade.dal.mysql.order.TradeOrderMapper;
|
|
|
+import cn.newfeifan.mall.module.trade.dal.mysql.ordersettlement.OrderSettlementMapper;
|
|
|
+import cn.newfeifan.mall.module.trade.dal.mysql.ptsettlement.PtSettlementMapper;
|
|
|
+import cn.newfeifan.mall.module.trade.dal.mysql.shopsettlement.ShopSettlementMapper;
|
|
|
import cn.newfeifan.mall.module.trade.dal.redis.no.TradeNoRedisDAO;
|
|
|
import cn.newfeifan.mall.module.trade.enums.delivery.DeliveryTypeEnum;
|
|
|
import cn.newfeifan.mall.module.trade.enums.order.*;
|
|
@@ -124,6 +131,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
private SharePathService sharePathService;
|
|
|
@Resource
|
|
|
private PtProfitService ptProfitService;
|
|
|
+ @Resource
|
|
|
+ private MerchantService merchantService;
|
|
|
+ @Resource
|
|
|
+ private OrderSettlementMapper orderSettlementMapper;
|
|
|
+ @Resource
|
|
|
+ private PtSettlementMapper ptSettlementMapper;
|
|
|
+ @Resource
|
|
|
+ private ShopSettlementMapper shopSettlementMapper;
|
|
|
|
|
|
// =================== Order ===================
|
|
|
|
|
@@ -258,7 +273,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
|
|
Long spuId = null;
|
|
|
for (AppTradeOrderSettlementRespVO value : respVO.getShopRespVOMap().values()) {
|
|
|
- spuId = value.getItems().get(0).getSpuId();
|
|
|
+ spuId = value.getItems().get(0).getSpuId();
|
|
|
}
|
|
|
ProductSpuDO productSpuDO = productSpuMapper.selectOne(new LambdaQueryWrapper<ProductSpuDO>().eq(ProductSpuDO::getId, spuId));
|
|
|
respVO.setShopAreaId(productSpuDO.getAreaId().intValue());
|
|
@@ -453,16 +468,35 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
// 收货订单
|
|
|
receiveOrder0(order);
|
|
|
|
|
|
+ List<TradeOrderItemDO> tradeOrderItemDOS = tradeOrderItemMapper.selectList(new LambdaQueryWrapper<TradeOrderItemDO>().eq(TradeOrderItemDO::getOrderId, order.getId()));
|
|
|
// 收货后给商家结算价
|
|
|
- giveShopSettlementPrice(order);
|
|
|
+ giveShopSettlementPrice(order, tradeOrderItemDOS);
|
|
|
+
|
|
|
+ // 记录pt和sh的结算单
|
|
|
+ addSettlement(order.getId(), tradeOrderItemDOS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加结算单
|
|
|
+ */
|
|
|
+ private void addSettlement(Long orderId, List<TradeOrderItemDO> tradeOrderItemDOS) {
|
|
|
+ OrderSettlementDO orderSettlementDO = orderSettlementMapper.selectOne(new LambdaQueryWrapper<OrderSettlementDO>().eq(OrderSettlementDO::getTradeOrderId, orderId));
|
|
|
+
|
|
|
+ if (orderSettlementDO == null) return;
|
|
|
+
|
|
|
+ ShopSettlementDO shopSettlementDO = shopSettlementMapper.selectOne(new LambdaQueryWrapper<ShopSettlementDO>().eq(ShopSettlementDO::getId, orderSettlementDO.getTradeShopSettlementId()));
|
|
|
+ PtSettlementDO ptSettlementDO = ptSettlementMapper.selectOne(new LambdaQueryWrapper<PtSettlementDO>().eq(PtSettlementDO::getId, shopSettlementDO.getPtSettlementId()));
|
|
|
+ for (TradeOrderItemDO tradeOrderItemDO : tradeOrderItemDOS) {
|
|
|
+ shopSettlementDO.setSettlementAmount(shopSettlementDO.getSettlementAmount() + tradeOrderItemDO.getSettlementPrice());
|
|
|
+ ptSettlementDO.setSettlementAmount(ptSettlementDO.getSettlementAmount() + tradeOrderItemDO.getSettlementPrice());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 给商家结算价
|
|
|
* @param order 订单
|
|
|
*/
|
|
|
- private void giveShopSettlementPrice(TradeOrderDO order){
|
|
|
- List<TradeOrderItemDO> tradeOrderItemDOS = tradeOrderItemMapper.selectList(new LambdaQueryWrapper<TradeOrderItemDO>().eq(TradeOrderItemDO::getOrderId,order.getId()));
|
|
|
+ private void giveShopSettlementPrice(TradeOrderDO order, List<TradeOrderItemDO> tradeOrderItemDOS) {
|
|
|
|
|
|
Long settlementPrice = 0L; //结算价
|
|
|
for (TradeOrderItemDO tradeOrderItemDO : tradeOrderItemDOS) {
|
|
@@ -474,7 +508,13 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
tradeOrderItemMapper.updateBatch(tradeOrderItemDOS);
|
|
|
|
|
|
// 从平台中扣除
|
|
|
- ptProfitService.subtractIntegral(moneyTransitionIntegral(settlementPrice),IntegralEnum.ORDER_SETTLEMENT,order.getId(),order.getNo(),order.getUserId());
|
|
|
+ Long settlementPrice1 = moneyTransitionIntegral(settlementPrice);
|
|
|
+ ptProfitService.subtractIntegral(settlementPrice1, IntegralEnum.ORDER_SETTLEMENT, order.getId(), order.getNo(), order.getUserId());
|
|
|
+
|
|
|
+ // 记录结算价
|
|
|
+ Long applyMemberUserId = merchantService.getMerchantByMerchantId(order.getMerchantId()).getApplyMemberUserId(); //商家的会员用户
|
|
|
+ // 增加商家绑定用户积分(黄)
|
|
|
+ integralService.updateSHUserIntegral(order.getId(), order.getNo(), settlementPrice1, applyMemberUserId, IntegralEnum.ORDER_SETTLEMENT, getLoginUserId());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -990,8 +1030,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
Long userId = getLoginUserId();
|
|
|
MemberUserDO user = memberUserService.getUser(userId);
|
|
|
// 校验支付密码
|
|
|
- if(user.getPayPassword() == null) throw exception(USER_NOT_PAY_PASSWORD);
|
|
|
- if (!memberUserService.isPasswordMatch(requestVO.getPayPassword(), user.getPayPassword())) throw exception(USER_PAY_PASS_WORD_ERROR);
|
|
|
+ if (user.getPayPassword() == null) throw exception(USER_NOT_PAY_PASSWORD);
|
|
|
+ if (!memberUserService.isPasswordMatch(requestVO.getPayPassword(), user.getPayPassword()))
|
|
|
+ throw exception(USER_PAY_PASS_WORD_ERROR);
|
|
|
|
|
|
for (Long orderId : requestVO.getOrderIds()) {
|
|
|
List<Long> skuList = new ArrayList<>();
|
|
@@ -1054,7 +1095,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
totalFreezeHighQuota += freezeHighQuotaInt;
|
|
|
|
|
|
totalPromotionExpenses += promotionExpenses; //累加推广费
|
|
|
- totalServiceCharge += (long)(promotionExpenses * Double.parseDouble(orderPercentageDO.getGrossProfitPlatformQuotaPerc())); //累加服务费
|
|
|
+ totalServiceCharge += (long) (promotionExpenses * Double.parseDouble(orderPercentageDO.getGrossProfitPlatformQuotaPerc())); //累加服务费
|
|
|
totalProfit += (long) (productSkuDO.getCostPrice() - productSkuDO.getSettlementPrice()) * tradeOrderItemDO.getCount(); //累加利润
|
|
|
totalSettlementPrice += (long) productSkuDO.getSettlementPrice() * tradeOrderItemDO.getCount(); //累加结算价
|
|
|
|
|
@@ -1071,7 +1112,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
// 记录平台收益
|
|
|
ptProfitService.updatePtProfit(moneyTransitionIntegral(totalPromotionExpenses), moneyTransitionIntegral(totalServiceCharge),
|
|
|
moneyTransitionIntegral(totalProfit), moneyTransitionIntegral(totalSettlementPrice), IntegralEnum.BUY_ORDER,
|
|
|
- orderId,order.getNo(),order.getUserId());
|
|
|
+ orderId, order.getNo(), order.getUserId());
|
|
|
|
|
|
// 增加推荐人积分
|
|
|
SharePathDO sharePathByDescendant = sharePathService.getSharePathByDescendant(order.getUserId()); // 获取用户的关系王拿到推荐人id
|
|
@@ -1140,7 +1181,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
return money.multiply(DistriConstants.MONEY2INTEGRAL_BIG_DECIMAL);
|
|
|
}
|
|
|
|
|
|
- public static Long moneyTransitionIntegral(Long money){
|
|
|
+ public static Long moneyTransitionIntegral(Long money) {
|
|
|
return money * DistriConstants.MONEY2INTEGRAL;
|
|
|
}
|
|
|
|