|
@@ -5,9 +5,7 @@ import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
-import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
-import cn.hutool.json.JSONUtil;
|
|
|
import cn.newfeifan.mall.framework.common.core.KeyValue;
|
|
|
import cn.newfeifan.mall.framework.common.enums.UserTypeEnum;
|
|
|
import cn.newfeifan.mall.framework.common.util.json.JsonUtils;
|
|
@@ -23,7 +21,6 @@ import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
|
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
|
|
|
import cn.newfeifan.mall.module.distri.dal.mysql.orderpercentage.OrderPercentageMapper;
|
|
|
import cn.newfeifan.mall.module.distri.enums.CaclEnum;
|
|
|
-import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
|
|
|
import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
|
|
|
import cn.newfeifan.mall.module.distri.service.duser.DuserService;
|
|
|
import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
|
|
@@ -34,7 +31,6 @@ import cn.newfeifan.mall.module.member.api.address.MemberAddressApi;
|
|
|
import cn.newfeifan.mall.module.member.api.address.dto.MemberAddressRespDTO;
|
|
|
import cn.newfeifan.mall.module.member.controller.admin.auth.vo.AppAuthSmsLoginReqVO;
|
|
|
import cn.newfeifan.mall.module.member.convert.auth.AuthConvert;
|
|
|
-import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
|
|
|
import cn.newfeifan.mall.module.member.service.user.MemberUserService;
|
|
|
import cn.newfeifan.mall.module.pay.api.order.PayOrderApi;
|
|
|
import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
|
@@ -42,7 +38,6 @@ import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderRespDTO;
|
|
|
import cn.newfeifan.mall.module.pay.enums.order.PayOrderStatusEnum;
|
|
|
import cn.newfeifan.mall.module.product.api.comment.ProductCommentApi;
|
|
|
import cn.newfeifan.mall.module.product.api.comment.dto.ProductCommentCreateReqDTO;
|
|
|
-import cn.newfeifan.mall.module.product.dal.dataobject.sku.ProductSkuDO;
|
|
|
import cn.newfeifan.mall.module.product.dal.mysql.sku.ProductSkuMapper;
|
|
|
import cn.newfeifan.mall.module.system.api.sms.SmsCodeApi;
|
|
|
import cn.newfeifan.mall.module.system.enums.sms.SmsSceneEnum;
|
|
@@ -80,7 +75,6 @@ import cn.newfeifan.mall.module.trade.service.price.calculator.TradePriceCalcula
|
|
|
import cn.newfeifan.mall.module.trade.utils.push.JPushUtils;
|
|
|
import cn.newfeifan.mall.module.trade.utils.push.pojo.RequestBody;
|
|
|
import cn.newfeifan.mall.module.trade.utils.wechat.WcChatMessageUtils;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.google.gson.Gson;
|
|
|
import com.google.gson.JsonObject;
|
|
|
import com.kuaidi100.sdk.api.Subscribe;
|
|
@@ -263,8 +257,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
order.setProductCount(getSumValue(calculateRespBO.getItems(), TradePriceCalculateRespBO.OrderItem::getCount, Integer::sum));
|
|
|
order.setUserIp(getClientIP()).setTerminal(getTerminal());
|
|
|
// 支付 + 退款信息
|
|
|
- order.setAdjustPrice(0).setPayStatus(false);
|
|
|
- order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus()).setRefundPrice(0);
|
|
|
+ order.setPayStatus(false);
|
|
|
+ order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus());
|
|
|
// 物流信息
|
|
|
order.setDeliveryType(createReqVO.getDeliveryType());
|
|
|
if (Objects.equals(createReqVO.getDeliveryType(), DeliveryTypeEnum.EXPRESS.getType())) {
|
|
@@ -274,7 +268,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
.setReceiverAreaId(address.getAreaId()).setReceiverDetailAddress(address.getDetailAddress());
|
|
|
} else if (Objects.equals(createReqVO.getDeliveryType(), DeliveryTypeEnum.PICK_UP.getType())) {
|
|
|
order.setReceiverName(createReqVO.getReceiverName()).setReceiverMobile(createReqVO.getReceiverMobile());
|
|
|
- order.setPickUpVerifyCode(RandomUtil.randomNumbers(8)); // 随机一个核销码,长度为 8 位
|
|
|
}
|
|
|
return order;
|
|
|
}
|
|
@@ -320,8 +313,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
Long payOrderId = payOrderApi.createOrder(payOrderCreateReqDTO);
|
|
|
|
|
|
// 更新到交易单上
|
|
|
- tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setPayOrderId(payOrderId));
|
|
|
- order.setPayOrderId(payOrderId);
|
|
|
+ tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -336,7 +328,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
// 2. 更新 TradeOrderDO 状态为已支付,等待发货
|
|
|
int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(),
|
|
|
new TradeOrderDO().setStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()).setPayStatus(true)
|
|
|
- .setPayTime(LocalDateTime.now()).setPayChannelCode(payOrder.getChannelCode()));
|
|
|
+ .setPayTime(LocalDateTime.now()));
|
|
|
if (updateCount == 0) {
|
|
|
throw exception(ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
|
|
}
|
|
@@ -369,12 +361,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
id, JsonUtils.toJsonString(order));
|
|
|
throw exception(ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
|
|
}
|
|
|
- // 校验支付订单匹配
|
|
|
- if (ObjectUtil.notEqual(order.getPayOrderId(), payOrderId)) { // 支付单号
|
|
|
- log.error("[validateOrderPaid][order({}) 支付单不匹配({}),请进行处理!order 数据是:{}]",
|
|
|
- id, payOrderId, JsonUtils.toJsonString(order));
|
|
|
- throw exception(ORDER_UPDATE_PAID_FAIL_PAY_ORDER_ID_ERROR);
|
|
|
- }
|
|
|
|
|
|
// 校验支付单是否存在
|
|
|
PayOrderRespDTO payOrder = payOrderApi.getOrder(payOrderId);
|
|
@@ -389,7 +375,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
throw exception(ORDER_UPDATE_PAID_FAIL_PAY_ORDER_STATUS_NOT_SUCCESS);
|
|
|
}
|
|
|
// 校验支付金额一致
|
|
|
- if (ObjectUtil.notEqual(payOrder.getPrice(), order.getPayPrice())) {
|
|
|
+ if (ObjectUtil.notEqual(payOrder.getPrice(), order.getPayIntegral())) {
|
|
|
log.error("[validateOrderPaid][order({}) payOrder({}) 支付金额不匹配,请进行处理!order 数据是:{},payOrder 数据是:{}]",
|
|
|
id, payOrderId, JsonUtils.toJsonString(order), JsonUtils.toJsonString(payOrder));
|
|
|
throw exception(ORDER_UPDATE_PAID_FAIL_PAY_PRICE_NOT_MATCH);
|
|
@@ -733,9 +719,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
if (payIntegral > 0) {
|
|
|
integralService.updateUserIntegral(userId, CaclEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, payIntegral, tradeOrderId, orderNum);
|
|
|
}
|
|
|
- if (order.getPayConsumptionPoints() > 0) {
|
|
|
- integralService.updateUserConsumptionPoints(userId, ConsumptionEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, order.getPayConsumptionPoints(), tradeOrderId, orderNum);
|
|
|
- }
|
|
|
|
|
|
count++;
|
|
|
} catch (Throwable e) {
|
|
@@ -789,7 +772,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_CANCEL_AFTER_SALE)
|
|
|
public void cancelOrderByAfterSale(TradeOrderDO order, Integer refundPrice) {
|
|
|
// 1. 更新订单
|
|
|
- if (refundPrice < order.getPayPrice()) {
|
|
|
+ if (refundPrice < order.getPayIntegral()) {
|
|
|
return;
|
|
|
}
|
|
|
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
|
@@ -840,19 +823,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
if (order.getPayStatus()) {
|
|
|
throw exception(ORDER_UPDATE_PRICE_FAIL_PAID);
|
|
|
}
|
|
|
- // 1.2 校验调价金额是否变化
|
|
|
- if (order.getAdjustPrice() > 0) {
|
|
|
- throw exception(ORDER_UPDATE_PRICE_FAIL_ALREADY);
|
|
|
- }
|
|
|
// 1.3 支付价格不能为 0
|
|
|
- int newPayPrice = order.getPayPrice() + order.getAdjustPrice();
|
|
|
+ int newPayPrice = order.getPayIntegral().intValue();
|
|
|
if (newPayPrice <= 0) {
|
|
|
throw exception(ORDER_UPDATE_PRICE_FAIL_PRICE_ERROR);
|
|
|
}
|
|
|
|
|
|
// 2. 更新订单
|
|
|
- tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
|
|
- .setAdjustPrice(reqVO.getAdjustPrice()).setPayPrice(newPayPrice));
|
|
|
+ tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setPayIntegral((long) newPayPrice));
|
|
|
|
|
|
// 3. 更新 TradeOrderItem,需要做 adjustPrice 的分摊
|
|
|
List<TradeOrderItemDO> orderOrderItems = tradeOrderItemMapper.selectListByOrderId(order.getId());
|
|
@@ -860,17 +838,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
List<TradeOrderItemDO> updateItems = new ArrayList<>();
|
|
|
for (int i = 0; i < orderOrderItems.size(); i++) {
|
|
|
TradeOrderItemDO item = orderOrderItems.get(i);
|
|
|
- updateItems.add(new TradeOrderItemDO().setId(item.getId()).setAdjustPrice(dividePrices.get(i))
|
|
|
- .setPayPrice(item.getPayPrice() + dividePrices.get(i)));
|
|
|
+ updateItems.add(new TradeOrderItemDO().setId(item.getId())
|
|
|
+ .setPayIntegral(item.getPayIntegral() + dividePrices.get(i)));
|
|
|
}
|
|
|
tradeOrderItemMapper.updateBatch(updateItems);
|
|
|
|
|
|
- // 4. 更新支付订单
|
|
|
- payOrderApi.updatePayOrderPrice(order.getPayOrderId(), newPayPrice);
|
|
|
-
|
|
|
// 5. 记录订单日志
|
|
|
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus(),
|
|
|
- MapUtil.<String, Object>builder().put("oldPayPrice", MoneyUtils.fenToYuanStr(order.getPayPrice()))
|
|
|
+ MapUtil.<String, Object>builder().put("oldPayPrice", MoneyUtils.fenToYuanStr(order.getPayIntegral().intValue()))
|
|
|
.put("newPayPrice", MoneyUtils.fenToYuanStr(newPayPrice)).build());
|
|
|
}
|
|
|
|
|
@@ -897,17 +872,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
getSelf().pickUpOrder(tradeOrderMapper.selectById(id));
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_PICK_UP_RECEIVE)
|
|
|
- public void pickUpOrderByAdmin(String pickUpVerifyCode) {
|
|
|
- getSelf().pickUpOrder(tradeOrderMapper.selectOneByPickUpVerifyCode(pickUpVerifyCode));
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public TradeOrderDO getByPickUpVerifyCode(String pickUpVerifyCode) {
|
|
|
- return tradeOrderMapper.selectOneByPickUpVerifyCode(pickUpVerifyCode);
|
|
|
- }
|
|
|
-
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void pickUpOrder(TradeOrderDO order) {
|
|
|
if (order == null) {
|
|
@@ -940,14 +904,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
tradeOrderHandlers.forEach(handler -> handler.afterCancelOrderItem(order, orderItem));
|
|
|
|
|
|
// 2.1 更新订单的退款金额、积分
|
|
|
- Integer orderRefundPrice = order.getRefundPrice() + refundPrice;
|
|
|
- Integer orderRefundPoint = order.getRefundPoint() + orderItem.getUsePoint();
|
|
|
+ Integer orderRefundPrice = order.getPayIntegral().intValue() + refundPrice;
|
|
|
Integer refundStatus = isAllOrderItemAfterSaleSuccess(order.getId()) ?
|
|
|
TradeOrderRefundStatusEnum.ALL.getStatus() // 如果都售后成功,则需要取消订单
|
|
|
: TradeOrderRefundStatusEnum.PART.getStatus();
|
|
|
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
|
|
- .setRefundStatus(refundStatus)
|
|
|
- .setRefundPrice(orderRefundPrice).setRefundPoint(orderRefundPoint));
|
|
|
+ .setRefundStatus(refundStatus));
|
|
|
// 2.2 如果全部退款,则进行取消订单
|
|
|
getSelf().cancelOrderByAfterSale(order, orderRefundPrice);
|
|
|
}
|
|
@@ -1039,14 +1001,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public void updateOrderCombinationInfo(Long orderId, Long activityId, Long combinationRecordId, Long headId) {
|
|
|
- tradeOrderMapper.updateById(
|
|
|
- new TradeOrderDO().setId(orderId).setCombinationActivityId(activityId)
|
|
|
- .setCombinationRecordId(combinationRecordId).setCombinationHeadId(headId));
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void cancelPaidOrder(Long userId, Long orderId) {
|
|
@@ -1063,175 +1017,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
tradeOrderMapper.updateById(order);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_PAY)
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public void updateOrderPaid(Long payOrderId) {
|
|
|
- //查询订单提成比例
|
|
|
- QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
|
|
|
- OrderPercentageDO orderPercentageDO = orderPercentageMapper.selectOne(queryWrapper);//表中只有一条记录
|
|
|
-
|
|
|
- /*
|
|
|
- * 毛利 = 成本 * 0.38... (推广费用)
|
|
|
- */
|
|
|
- String grossProfitPerc = orderPercentageDO.getGrossProfitPerc();
|
|
|
-
|
|
|
- /*
|
|
|
- * 购物本人自得 百分比
|
|
|
- */
|
|
|
- String grossProfitUserQuotaPerc = orderPercentageDO.getGrossProfitUserQuotaPerc();
|
|
|
-
|
|
|
- /*
|
|
|
- * 推荐人(上一级) 百分比
|
|
|
- */
|
|
|
- String grossProfitAncestorQuotaPerc = orderPercentageDO.getGrossProfitAncestorQuotaPerc();
|
|
|
-
|
|
|
- //add by Ben 根据支付订单id,查询所有 支付订单 对应的 订单
|
|
|
- List<TradeOrderDO> TradeOrderDOList = tradeOrderMapper.selectList("pay_order_id", payOrderId);
|
|
|
-
|
|
|
- //购物者ID
|
|
|
- Long memberUserIdOfTradeOrder = TradeOrderDOList.get(0).getUserId();
|
|
|
- //20240604 推荐人(上级用户ID)
|
|
|
- Long ancesterUserId = tradeOrderMapper.selectAncesterByMemberUserId(memberUserIdOfTradeOrder);
|
|
|
-
|
|
|
- // 当前订单用户
|
|
|
- MemberUserDO user = memberUserService.getUser(memberUserIdOfTradeOrder);
|
|
|
-
|
|
|
- for (TradeOrderDO tradeOrderDO : TradeOrderDOList) {
|
|
|
-
|
|
|
- Long tradeOrderId = tradeOrderDO.getId();
|
|
|
-
|
|
|
-// System.out.println("#########updateOrderPaid####tradeOrderId:"+tradeOrderId);
|
|
|
-
|
|
|
- // 1. 校验并获得交易订单(可支付)
|
|
|
- KeyValue<TradeOrderDO, PayOrderRespDTO> orderResult = validateOrderPayable(tradeOrderId, payOrderId);
|
|
|
-
|
|
|
- TradeOrderDO order = orderResult.getKey();
|
|
|
- PayOrderRespDTO payOrder = orderResult.getValue();
|
|
|
-
|
|
|
- // 2. 更新 TradeOrderDO 状态为已支付,等待发货
|
|
|
- int updateCount = tradeOrderMapper.updateByIdAndStatus(tradeOrderId, order.getStatus(),
|
|
|
- new TradeOrderDO().setStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()).setPayStatus(true)
|
|
|
- .setPayTime(LocalDateTime.now()).setPayChannelCode(payOrder.getChannelCode()));
|
|
|
-
|
|
|
-// System.out.println("#########updateOrderPaid####updateCount:"+updateCount);
|
|
|
-
|
|
|
- if (updateCount == 0) {
|
|
|
- throw exception(ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
|
|
- }
|
|
|
-
|
|
|
- //注释 by Ben ,下面是系统原来的营销部分,和我们业务对不上,注释掉
|
|
|
- // 3. 执行 TradeOrderHandler 的后置处理
|
|
|
-// List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(tradeOrderId);
|
|
|
-
|
|
|
- //注释 by Ben ,下面是系统原来的营销部分,和我们业务对不上,注释掉
|
|
|
-// tradeOrderHandlers.forEach(handler -> handler.afterPayOrder(order, orderItems));
|
|
|
-
|
|
|
- // 4. 记录订单日志
|
|
|
- TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.UNDELIVERED.getStatus());
|
|
|
- TradeOrderLogUtils.setUserInfo(order.getUserId(), UserTypeEnum.MEMBER.getValue());
|
|
|
-
|
|
|
-
|
|
|
- // 5. 增加用户冻结积分 20240420
|
|
|
-
|
|
|
-
|
|
|
- List<Long> skuList = new ArrayList<>();
|
|
|
- //汇总各订单项利润
|
|
|
- List<TradeOrderItemDO> TradeOrderItemList = tradeOrderItemMapper.selectList("order_id", order.getId());
|
|
|
- for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
|
|
|
- Long skuId = tradeOrderItemDO.getSkuId();
|
|
|
- skuList.add(skuId);
|
|
|
- }
|
|
|
-
|
|
|
- List<ProductSkuDO> productSkuDOS = productSkuMapper.selectBatchIds(skuList);
|
|
|
- Map<Long, ProductSkuDO> skuDOMap = new HashMap<>();
|
|
|
- for (ProductSkuDO productSkuDO : productSkuDOS) {
|
|
|
- skuDOMap.put(productSkuDO.getId(), productSkuDO);
|
|
|
- }
|
|
|
-
|
|
|
- Long totalFreezeAmount = 0L;//用户总的冻结积分
|
|
|
-
|
|
|
- Long totalAncestorFreezeAmount = 0L;//推荐人总的冻结积分
|
|
|
-
|
|
|
- Long totalFreezeHighQuota = 0L;//冻结峰值
|
|
|
-
|
|
|
- for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
|
|
|
- ProductSkuDO productSkuDO = skuDOMap.get(tradeOrderItemDO.getSkuId());
|
|
|
- //这类商品的总推广费
|
|
|
- Integer promotionExpenses = (productSkuDO.getPrice() - productSkuDO.getCostPrice())
|
|
|
- * tradeOrderItemDO.getCount();
|
|
|
-
|
|
|
- //把商品项的推广费,转换为这项商品直推人获得的冻结积分
|
|
|
- Long itemFreezeAmount =
|
|
|
- promotionExpenses2GrossProfitAncestorQuota(promotionExpenses,
|
|
|
- grossProfitPerc,//毛利 = 成本 * 0.38... (推广费用)
|
|
|
- grossProfitUserQuotaPerc//消费者自得额度 百分比
|
|
|
- );
|
|
|
-
|
|
|
-
|
|
|
- //把商品项的推广费,转换为这项商品推荐人(上级)获得的冻结积分
|
|
|
- Long ancestorItemFreezeAmount =
|
|
|
- promotionExpenses2GrossProfitAncestorQuota(promotionExpenses,
|
|
|
- grossProfitPerc,//毛利 = 成本 * 0.38... (推广费用)
|
|
|
- grossProfitAncestorQuotaPerc//消费者自得额度 百分比
|
|
|
- );
|
|
|
-
|
|
|
- //峰值为毛利的十倍
|
|
|
- BigDecimal grossProfit = new BigDecimal(promotionExpenses).multiply(new BigDecimal(grossProfitPerc)).setScale(4, RoundingMode.DOWN);
|
|
|
- BigDecimal freezeHighQuota = grossProfit.multiply(new BigDecimal("10"));
|
|
|
- freezeHighQuota = money2Integral(freezeHighQuota);
|
|
|
- Long freezeHighQuotaInt = freezeHighQuota.longValue();
|
|
|
-
|
|
|
- totalFreezeAmount += itemFreezeAmount;
|
|
|
- totalAncestorFreezeAmount += ancestorItemFreezeAmount;
|
|
|
- totalFreezeHighQuota += freezeHighQuotaInt;
|
|
|
-
|
|
|
- //记录用户在此订单项获得的冻结积分
|
|
|
- TradeOrderItemDO toid = new TradeOrderItemDO();
|
|
|
- toid.setId(tradeOrderItemDO.getId());
|
|
|
- toid.setIncreaseIntegral(itemFreezeAmount);
|
|
|
- toid.setAncestorIncreaseIntegral(ancestorItemFreezeAmount);//20240504 add by Ben
|
|
|
- toid.setFreezeHighQuota(freezeHighQuotaInt);
|
|
|
- tradeOrderItemMapper.updateById(toid);
|
|
|
- }
|
|
|
-
|
|
|
- //把商品的推广费总额,转换为直推人获得的冻结积分
|
|
|
-// Integer freezeAmount = promotionExpenses2GrossProfitAncestorQuota(orderPercentageMapper,totalPromotionExpenses);
|
|
|
-
|
|
|
- String OrderNum = order.getNo();
|
|
|
- //修改购物者本人获得的冻结积分
|
|
|
- integralService.updateUserIntegral(tradeOrderDO.getUserId(), tradeOrderDO.getUserId(), CaclEnum.ORDER_PAY_INTEGRAL_CONSUMER, 0L, totalFreezeAmount, tradeOrderId, OrderNum);
|
|
|
-
|
|
|
- // 如果用户不是游客才会分配直推将,否者是计算到游客收益中的
|
|
|
- if (!user.getVisitor()) {
|
|
|
- //修改推荐人(上级)获得的冻结积分
|
|
|
- integralService.updateUserIntegral(tradeOrderDO.getUserId(), ancesterUserId, CaclEnum.ORDER_PAY_INTEGRAL_ANCESTER, 0L, totalAncestorFreezeAmount, tradeOrderId, OrderNum);
|
|
|
- } else {
|
|
|
- // 游客收益
|
|
|
- PtProfitDO ptProfitDO = ptProfitService.getPtProfit();
|
|
|
-
|
|
|
- ptProfitDO.setVisitorEarnings(ptProfitDO.getVisitorEarnings() + totalAncestorFreezeAmount);
|
|
|
- ptProfitDO.setPtTotalAdd(ptProfitDO.getPtTotalAdd() + totalAncestorFreezeAmount);
|
|
|
- ptProfitService.updatePtProfit(cn.newfeifan.mall.framework.common.util.object.BeanUtils.toBean(ptProfitDO, PtProfitSaveReqVO.class));
|
|
|
-
|
|
|
- // 记录日志
|
|
|
- ptProfitLogService.addMessage(user.getId(), null, CaclEnum.RECOMMENDED_PERSON_QUOTA, totalAncestorFreezeAmount,
|
|
|
- ptProfitDO.getVisitorEarnings(), null, null, JSONUtil.toJsonStr(orderPercentageDO), tradeOrderId, OrderNum);
|
|
|
- }
|
|
|
-
|
|
|
- //修改购物者本人获得的冻结峰值
|
|
|
- integralService.updateIntegralFreezeHighQuota(tradeOrderDO.getUserId(), tradeOrderDO.getUserId(), CaclEnum.ORDER_PAY_FREEZE_HIGH_QUOTA, totalFreezeHighQuota, tradeOrderId, OrderNum);
|
|
|
- log.warn("[TradeOrderUpdateServiceImpl.updateOrderPaid]$$$:[tradeOrderId({}),ancesterUserId({}),totalAncestorFreezeAmount({})]" + new Date(),
|
|
|
- tradeOrderId, ancesterUserId, totalAncestorFreezeAmount);
|
|
|
-
|
|
|
- // 发送给微信消息给系统用户待发货消息
|
|
|
-// sentWcChatMessage(order);
|
|
|
- }
|
|
|
-
|
|
|
- // 七天获得变为即算即得,后续如果恢复把这里注释即可,并打开平台定时任务得订单结算
|
|
|
- calc(TradeOrderDOList, orderPercentageDO, JsonUtils.toJsonString(orderPercentageDO));
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public void pickUpInAStore(AppAuthSmsLoginReqVO smsLoginReqVO, Long orderId) {
|
|
|
// 校验验证码
|
|
@@ -1284,7 +1069,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
BigDecimal productCount = new BigDecimal(j.getCount());
|
|
|
BigDecimal oneGrossProfit = onePrice.subtract(oneCostPrice).multiply(productCount);
|
|
|
profit[0] = profit[0].add(oneGrossProfit); // 注意这里的改动
|
|
|
- profit[1] = profit[1].add(new BigDecimal(j.getIncreaseIntegral())); //自得积分
|
|
|
profit[2] = profit[2].add(new BigDecimal(j.getAncestorIncreaseIntegral())); //直推奖
|
|
|
profit[3] = profit[3].add(new BigDecimal(j.getFreezeHighQuota())); //用户获得冻结最大可用额度
|
|
|
|
|
@@ -1308,7 +1092,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
}
|
|
|
|
|
|
// 用户所得: 毛利 * 0.35
|
|
|
- BigDecimal descendantQuota = profit[1];
|
|
|
+ BigDecimal descendantQuota = BigDecimal.valueOf(0L);
|
|
|
|
|
|
// 直推奖: 毛利 * 0.3 (上一级)
|
|
|
BigDecimal ancestorQuota = profit[2];
|
|
@@ -1441,7 +1225,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
.orderNo(k.getNo())
|
|
|
.userId(sharePath.getAncestor())
|
|
|
.amount(amount)
|
|
|
- .afterAmount(integralDOAncestor.getCurrentQuota())
|
|
|
+ .afterAmount(integralDOAncestor.getRedCurrentQuota())
|
|
|
.freezeAmount(-amount)
|
|
|
.afterFreezeAmount(integralDOAncestor.getFreezeQuota())
|
|
|
.ancestorQuotaAmount(ptReplenish)
|
|
@@ -1459,7 +1243,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
.orderNo(k.getNo())
|
|
|
.userId(sharePath.getDescendant())
|
|
|
.amount(descendantQuotaInt)
|
|
|
- .afterAmount(integralDO.getCurrentQuota())
|
|
|
+ .afterAmount(integralDO.getRedCurrentQuota())
|
|
|
.freezeAmount(-descendantQuotaInt)
|
|
|
.afterFreezeAmount(integralDO.getFreezeQuota())
|
|
|
.maxAvailablePointsAmount(highQuotaInt)
|
|
@@ -1525,10 +1309,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
integralDO.setFreezeHighQuota(integralDO.getFreezeHighQuota() - highQuota);
|
|
|
// todo 增加累计额度
|
|
|
|
|
|
- integralDO.setCurrentQuota(integralDO.getCurrentQuota() + descendantQuota);
|
|
|
+ integralDO.setRedCurrentQuota(integralDO.getRedCurrentQuota() + descendantQuota);
|
|
|
integralDO.setFreezeQuota(integralDO.getFreezeQuota() - descendantQuota);
|
|
|
// 增加推荐人额度
|
|
|
- integralDOAncestor.setCurrentQuota(integralDOAncestor.getCurrentQuota() + ancestorQuota);
|
|
|
+ integralDOAncestor.setRedCurrentQuota(integralDOAncestor.getRedCurrentQuota() + ancestorQuota);
|
|
|
// 减少推荐人的可获取额度
|
|
|
integralDOAncestor.setHighQuota(integralDOAncestor.getHighQuota() - ancestorQuota);
|
|
|
integralDOAncestor.setAncestorQuota(integralDOAncestor.getAncestorQuota() + ancestorQuota);
|
|
@@ -1536,7 +1320,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
integralService.updateIntegral(cn.newfeifan.mall.framework.common.util.object.BeanUtils.toBean(integralDOAncestor, IntegralSaveReqVO.class));
|
|
|
|
|
|
// 增加平台额度
|
|
|
- pt.setCurrentQuota(pt.getCurrentQuota() + ptA + ptB);
|
|
|
+ pt.setRedCurrentQuota(pt.getRedCurrentQuota() + ptA + ptB);
|
|
|
|
|
|
integralService.updateIntegral(cn.newfeifan.mall.framework.common.util.object.BeanUtils.toBean(integralDO, IntegralSaveReqVO.class));
|
|
|
integralService.updateIntegral(cn.newfeifan.mall.framework.common.util.object.BeanUtils.toBean(pt, IntegralSaveReqVO.class));
|