|
|
@@ -16,30 +16,33 @@ import com.ruoyi.common.core.domain.PageQuery;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.ruoyi.shop.distribution.domain.DistributionUserOrderGains;
|
|
|
import com.ruoyi.shop.distribution.domain.bo.PlatformIncomeBo;
|
|
|
import com.ruoyi.shop.distribution.domain.vo.DistributionBusinessConfigVo;
|
|
|
-import com.ruoyi.shop.distribution.service.IDistributionBusinessConfigService;
|
|
|
-import com.ruoyi.shop.distribution.service.IDistributionUserOrderGainsService;
|
|
|
-import com.ruoyi.shop.distribution.service.IPlatformIncomeService;
|
|
|
+import com.ruoyi.shop.distribution.enums.UserBillType;
|
|
|
+import com.ruoyi.shop.distribution.mapper.DistributionUserOrderGainsMapper;
|
|
|
+import com.ruoyi.shop.distribution.service.*;
|
|
|
+import com.ruoyi.shop.enums.RightsRefundStatus;
|
|
|
import com.ruoyi.shop.order.domain.ShopOrder;
|
|
|
import com.ruoyi.shop.order.domain.ShopOrderDetail;
|
|
|
import com.ruoyi.shop.order.enums.PaymentStatus;
|
|
|
+import com.ruoyi.shop.order.service.IShopOrderService;
|
|
|
+import com.ruoyi.shop.rights.domain.SaleRightsOrder;
|
|
|
+import com.ruoyi.shop.rights.domain.SaleRightsOrderDetail;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.ruoyi.shop.distribution.domain.bo.BusinessOrderGainsBo;
|
|
|
import com.ruoyi.shop.distribution.domain.vo.BusinessOrderGainsVo;
|
|
|
import com.ruoyi.shop.distribution.domain.BusinessOrderGains;
|
|
|
import com.ruoyi.shop.distribution.mapper.BusinessOrderGainsMapper;
|
|
|
-import com.ruoyi.shop.distribution.service.IBusinessOrderGainsService;
|
|
|
import com.ruoyi.shop.distribution.exception.BusinessOrderGainsExceptionEnum;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Collection;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 商家销售商品所得Service业务层处理
|
|
|
@@ -47,11 +50,14 @@ import java.util.Collection;
|
|
|
* @author lubo
|
|
|
* @date 2026-03-09
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@RequiredArgsConstructor
|
|
|
@Service
|
|
|
public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService {
|
|
|
|
|
|
private final BusinessOrderGainsMapper baseMapper;
|
|
|
+ private final DistributionUserOrderGainsMapper distributionUserOrderGainsMapper;
|
|
|
+
|
|
|
|
|
|
@Lazy
|
|
|
@Resource
|
|
|
@@ -76,6 +82,15 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
@Resource(name = "distributionUserOrderGainsServiceImpl")
|
|
|
private IDistributionUserOrderGainsService distributionUserOrderGainsService;
|
|
|
|
|
|
+ @Lazy
|
|
|
+ @Resource
|
|
|
+ private IShopOrderService shopOrderService;
|
|
|
+
|
|
|
+ @Lazy
|
|
|
+ @Resource
|
|
|
+ private IUserBillService userBillService;
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 查询商家销售商品所得分页
|
|
|
*
|
|
|
@@ -132,7 +147,7 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
* @return 商家销售商品所得
|
|
|
*/
|
|
|
@Override
|
|
|
- public BusinessOrderGainsVo queryById(Long businessOrderGainsId){
|
|
|
+ public BusinessOrderGainsVo queryById(Long businessOrderGainsId) {
|
|
|
return baseMapper.selectVoById(businessOrderGainsId);
|
|
|
}
|
|
|
|
|
|
@@ -143,9 +158,9 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
* @return 商家销售商品所得
|
|
|
*/
|
|
|
@Override
|
|
|
- public BusinessOrderGains loadById(Long businessOrderGainsId, Boolean tw){
|
|
|
+ public BusinessOrderGains loadById(Long businessOrderGainsId, Boolean tw) {
|
|
|
BusinessOrderGains info = this.baseMapper.selectById(businessOrderGainsId);
|
|
|
- if(ObjectUtil.isEmpty(info) && tw){
|
|
|
+ if (ObjectUtil.isEmpty(info) && tw) {
|
|
|
throw new ServiceException(BusinessOrderGainsExceptionEnum.BusinessOrderGains_IS_NOT_EXISTS);
|
|
|
}
|
|
|
return info;
|
|
|
@@ -187,7 +202,7 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
*
|
|
|
* @param entity 实体类数据
|
|
|
*/
|
|
|
- private void validEntityBeforeSave(BusinessOrderGains entity){
|
|
|
+ private void validEntityBeforeSave(BusinessOrderGains entity) {
|
|
|
//TODO 做一些数据校验,如唯一约束
|
|
|
}
|
|
|
|
|
|
@@ -199,7 +214,7 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
*/
|
|
|
@Override
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
- if(isValid){
|
|
|
+ if (isValid) {
|
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
|
}
|
|
|
return baseMapper.deleteBatchIds(ids) > 0;
|
|
|
@@ -213,11 +228,9 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
DistributionBusinessConfigVo distributionBusinessConfigVo = distributionBusinessConfigService.queryByBusinessId(business.getBusinessId());
|
|
|
if (PaymentStatus.PAID.equals(order.getPaymentStatus())) {
|
|
|
List<ShopOrderDetail> shopOrderDetails = order.loadOrderDetails(true);
|
|
|
- for(ShopOrderDetail shopOrderDetail : shopOrderDetails)
|
|
|
- {
|
|
|
- BusinessOrderGains obj = this.loadByShopIdAndOrderAndGoodsType(order.getBusinessId(), order.getOrderId(), shopOrderDetail.getOrderDetailId(), order.getOrderType());
|
|
|
- if(ObjectUtil.isNull( obj))
|
|
|
- {
|
|
|
+ for (ShopOrderDetail shopOrderDetail : shopOrderDetails) {
|
|
|
+ BusinessOrderGains obj = this.loadByShopIdAndOrderAndGoodsType(order.getBusinessId(), order.getOrderId(), shopOrderDetail.getOrderDetailId(), order.getOrderType());
|
|
|
+ if (ObjectUtil.isNull(obj)) {
|
|
|
continue;
|
|
|
}
|
|
|
BusinessOrderGainsBo gainsBo = new BusinessOrderGainsBo();
|
|
|
@@ -274,9 +287,8 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
incomeBo.setShopOrderGainsId(businessOrderGains.getBusinessOrderGainsId());
|
|
|
platformIncomeService.insertByBo(incomeBo);
|
|
|
|
|
|
- if(info.getOpen() && ObjectUtil.isNotNull(distributionBusinessConfigVo)&& distributionBusinessConfigVo.getOpen())
|
|
|
- {
|
|
|
- distributionUserOrderGainsService.handle(businessOrderGains);
|
|
|
+ if (info.getOpen() && ObjectUtil.isNotNull(distributionBusinessConfigVo) && distributionBusinessConfigVo.getOpen()) {
|
|
|
+ distributionUserOrderGainsService.handle(businessOrderGains);
|
|
|
}
|
|
|
businessOrderGains.computeAbleGains();
|
|
|
this.baseMapper.updateById(businessOrderGains);
|
|
|
@@ -285,6 +297,107 @@ public class BusinessOrderGainsServiceImpl implements IBusinessOrderGainsService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void refund(SaleRightsOrder rightsOrder) {
|
|
|
+ if (RightsRefundStatus.SUCCESS.equals(rightsOrder.getRightsRefundStatus())) {
|
|
|
+ ShopOrder order = shopOrderService.loadById(rightsOrder.getOrderId(), true);
|
|
|
+ List<SaleRightsOrderDetail> rightsChildOrders = rightsOrder.loadSaleRightsOrderDetails();
|
|
|
+ for(SaleRightsOrderDetail rightsChildOrder : rightsChildOrders)
|
|
|
+ {
|
|
|
+ BusinessOrderGains obj = this.loadByShopIdAndOrderAndGoodsType(rightsOrder.getBusinessId(), rightsOrder.getOrderId(), rightsChildOrder.getOrderDetailId(), order.getOrderType());
|
|
|
+ if (obj == null) {
|
|
|
+ log.info("订单{},商品【{}】退款成功后,没有找到对应的商家所得记录", rightsOrder.getOrderNo(), rightsChildOrder.getProductTitle());
|
|
|
+ } else {
|
|
|
+ if (rightsChildOrder.getRefundMoney().compareTo(obj.getGains()) > 0) {
|
|
|
+ obj.setRefundMoney(obj.getGains());
|
|
|
+ } else {
|
|
|
+ obj.setRefundMoney(rightsChildOrder.getRefundMoney());
|
|
|
+ }
|
|
|
+
|
|
|
+ obj.setExistsRefund(true);
|
|
|
+ distributionUserOrderGainsService.refundDeduct(obj);
|
|
|
+ platformIncomeService.refundDeduct(obj);
|
|
|
+ obj.computeAbleGains();
|
|
|
+ this.baseMapper.updateById(obj);
|
|
|
+
|
|
|
+ //结算商家所得升级
|
|
|
+ settlementByOrderDetail(order, rightsChildOrder.loadOrderDetail(true));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BusinessOrderGains settlementByOrderDetail(ShopOrder order, ShopOrderDetail shopOrderDetail) {
|
|
|
+ OrderType goodsType = OrderType.NORMAL;
|
|
|
+ if (OrderType.SERVICE.equals(order.getOrderType())) {
|
|
|
+ goodsType = OrderType.SERVICE;
|
|
|
+ }
|
|
|
+ BusinessOrderGains obj = this.loadByShopIdAndOrderAndGoodsType(shopOrderDetail.getBusinessId(), shopOrderDetail.getOrderId(), shopOrderDetail.getOrderDetailId(), goodsType);
|
|
|
+ if (ObjectUtil.isNull(obj)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if ((!shopOrderDetail.getEnd())) {
|
|
|
+ log.info("订单{},所购商品【{}】还没有完成不能结算", shopOrderDetail.getOrderNo(), shopOrderDetail.getProductTitle());
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (obj.getSettlement()) {
|
|
|
+ log.info("订单{},所购商品【{}】已结算不要重复结算", shopOrderDetail.getOrderNo(), shopOrderDetail.getProductTitle());
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotNull(obj)) {
|
|
|
+
|
|
|
+ obj.setSettlement(true);
|
|
|
+ obj.setSettlementTime(new Date());
|
|
|
+ this.baseMapper.updateById(obj);
|
|
|
+
|
|
|
+ List<DistributionUserOrderGains> list = obj.loadDistributionUserOrderGainsList(true);
|
|
|
+ for(DistributionUserOrderGains userOrderGains : list)
|
|
|
+ {
|
|
|
+ userOrderGains.setSettlement(false);
|
|
|
+ userOrderGains.setAbleSettlement(true);
|
|
|
+ userOrderGains.setSettlementRemark("系统可以给用户结算");
|
|
|
+ distributionUserOrderGainsMapper.updateById(userOrderGains);
|
|
|
+ }
|
|
|
+
|
|
|
+ settlementUserGains(obj);
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public void settlementUserGains(BusinessOrderGains obj) {
|
|
|
+ //会员分佣结算部分===========================================================
|
|
|
+ List<DistributionUserOrderGains> list = obj.loadDistributionUserOrderGainsList(true);
|
|
|
+ for(DistributionUserOrderGains userOrderGains : list)
|
|
|
+ {
|
|
|
+ userOrderGains.setSettlement(true);
|
|
|
+ userOrderGains.setSettlementTime(new Date());
|
|
|
+ userOrderGains.setAbleSettlement(true);
|
|
|
+ userOrderGains.setSettlementRemark("系统自动结算成功");
|
|
|
+ distributionUserOrderGainsMapper.updateById(userOrderGains);
|
|
|
+ if (userOrderGains.getAbleGains().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+
|
|
|
+ userBillService.inBill(userOrderGains.getUserId(),
|
|
|
+ userOrderGains.getEnvRemark(),
|
|
|
+ UserBillType.SETTLEMENT,
|
|
|
+ userOrderGains.getAbleGains(),
|
|
|
+ userOrderGains.getOrderNo(), "系统");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BigDecimal loadTotalGains(Long orderId) {
|
|
|
+ return this.baseMapper.loadTotalGains(orderId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<BusinessOrderGains> loadOrderGains(Long orderId) {
|
|
|
+ return this.baseMapper.selectList(new LambdaQueryWrapper<BusinessOrderGains>().eq(BusinessOrderGains::getOrderId, orderId).eq(BusinessOrderGains::getSettlement, true));
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public BusinessOrderGains loadByShopIdAndOrderAndGoodsType(Long businessId, Long orderId, Long orderDetailId, OrderType orderType) {
|
|
|
|