瀏覽代碼

FIX: 分佣

xdd 2 周之前
父節點
當前提交
6bd92a583b

+ 1 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyService.java

@@ -79,6 +79,7 @@ public interface ICompanyService
 
 
     void addCompanyMoney(FsStoreOrder order);
+    void addCompanyMoney(LiveOrder order);
 
     void subCompanyMoney(FsStoreOrder order);
 

+ 34 - 1
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java

@@ -256,7 +256,7 @@ public class CompanyServiceImpl implements ICompanyService
                 //支付金额-(订单金额*rate%)
                 Double rate=config.getTuiMoneyRate()/100d;
                 BigDecimal tuiMoney=order.getPayPrice().subtract(order.getTotalPrice().multiply(new BigDecimal(rate)));
-                logger.info("写入公司推广佣金:"+tuiMoney);
+                logger.info("写入公司推广佣金: {}", tuiMoney);
                 company.setTuiMoney(company.getTuiMoney().add(tuiMoney));
                 companyMapper.updateCompany(company);
                 LiveOrder liveOrderMap=new LiveOrder();
@@ -300,6 +300,39 @@ public class CompanyServiceImpl implements ICompanyService
             }
         }
     }
+
+    @Override
+    @Transactional(rollbackFor = Throwable.class,propagation = Propagation.REQUIRED)
+    public void addCompanyMoney(LiveOrder order) {
+        if(order.getCompanyId()>0){
+            Company company=companyMapper.selectCompanyByIdForUpdate(order.getCompanyId());
+            if(company!=null){
+                LiveOrder orderMap=new LiveOrder();
+                orderMap.setOrderId(order.getOrderId());
+                orderMap.setTuiMoneyStatus(1);
+                liveOrderMapper.updateLiveOrder(orderMap);
+                String json =configService.selectConfigByKey("store.config");
+                StoreConfig config= JSONUtil.toBean(json,StoreConfig.class);
+                //支付金额-(订单金额*rate%)
+                Double rate=config.getTuiMoneyRate()/100d;
+                BigDecimal tuiMoney=order.getPayPrice().subtract(order.getTotalPrice().multiply(new BigDecimal(rate)));
+                company.setMoney(company.getMoney().add(tuiMoney));
+                companyMapper.updateCompany(company);
+                //companyMapper.updateCompanyMoney(company.getCompanyId(),tuiMoney);
+                //写入日志
+                CompanyMoneyLogs log=new CompanyMoneyLogs();
+                log.setCompanyId(order.getCompanyId());
+                log.setRemark("订单佣金入帐");
+                log.setMoney(tuiMoney);
+                log.setLogsType(4);
+                log.setBalance(company.getMoney());
+                log.setCreateTime(new Date());
+                log.setBusinessId(order.getOrderId().toString());
+                moneyLogsMapper.insertCompanyMoneyLogs(log);
+            }
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Throwable.class,propagation = Propagation.REQUIRED)
     public void subLiveCompanyMoney(LiveOrder order) {

+ 39 - 12
fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java

@@ -45,6 +45,7 @@ import com.fs.erp.domain.*;
 import com.fs.erp.dto.*;
 import com.fs.erp.service.IErpOrderService;
 import com.fs.erp.utils.ErpContextHolder;
+import com.fs.express.FsStoreDeliversService;
 import com.fs.huifuPay.domain.HuiFuCreateOrder;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.service.HuiFuService;
@@ -197,7 +198,8 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
     private String jstShopCode;
     @Autowired
     private FsStoreDeliversMapper fsStoreDeliversMapper;
-
+    @Autowired
+    private FsStoreDeliversService fsStoreDeliversService;
 
     @Autowired
     private LiveOrderPaymentErrorMapper liveOrderPaymentErrorMapper;
@@ -554,6 +556,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
                 }
             }
 
+
             //增加用户购买次数
             userService.incPayCount(Long.valueOf(order.getUserId()));
 
@@ -692,7 +695,25 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
     @Override
     public List<LiveOrder> selectLiveOrderList(LiveOrder liveOrder)
     {
-        return baseMapper.selectLiveOrderList(liveOrder);
+        List<LiveOrder> liveOrders = baseMapper.selectLiveOrderList(liveOrder);
+        if(CollectionUtils.isEmpty(liveOrders)){
+            return liveOrders;
+        }
+        Map<Long, FsStoreDelivers> byOrderIdWithTypeBatch = fsStoreDeliversMapper
+                .findByOrderIdWithTypeBatch(liveOrders.stream().map(LiveOrder::getOrderId)
+                        .filter(Objects::nonNull).collect(Collectors.toList()), 1);
+
+        for (LiveOrder order : liveOrders) {
+            FsStoreDelivers delivers = byOrderIdWithTypeBatch.get(order.getOrderId());
+            if(ObjectUtil.isNotNull(delivers)) {
+                order.setDeliveryCode(delivers.getDeliverSn());
+                order.setDeliveryName(delivers.getDeliverName());
+                order.setDeliverySn(delivers.getDeliverId());
+                order.setDeliveryStatus(delivers.getStatus());
+                order.setDeliveryType(String.valueOf(delivers.getStateEx()));
+            }
+        }
+        return liveOrders;
     }
 
     @Override
@@ -1605,7 +1626,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         return found;
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     public R finishStoreOrder(Long orderId){
         LiveOrder order= baseMapper.selectLiveOrderByOrderId(String.valueOf(orderId));
         if(order.getStatus()==OrderInfoEnum.STATUS_3.getValue()){
@@ -1615,16 +1636,22 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
             liveOrderLogsService.create(order.getOrderId(), OrderLogEnum.FINISH_ORDER.getValue(),
                     OrderLogEnum.FINISH_ORDER.getDesc());
 
+            //写入公司余额 条件是只有全款订单才分,非全款后台导入
+            if(order.getCompanyId()!=null&&order.getCompanyId()>0&&order.getPayDelivery().compareTo(new BigDecimal(0))==0){
+                if(order.getTuiMoneyStatus()==null||order.getTuiMoneyStatus()!=1){
+                    companyService.addCompanyMoney(order);
+                }
+            }
             //模板消息支付成功发布事件
-//            TemplateBean templateBean = TemplateBean.builder()
-//                    .orderId(order.getOrderId().toString())
-//                    .title(order.getOrderCode().toString())
-//                    .remark("您的订单已签收成功")
-//                    .time(order.getFinishTime())
-//                    .uid(order.getUserId())
-//                    .templateType(TemplateListenEnum.TYPE_3.getValue())
-//                    .build();
-//            publisher.publishEvent(new TemplateEvent(this, templateBean));
+            TemplateBean templateBean = TemplateBean.builder()
+                    .orderId(order.getOrderId().toString())
+                    .orderCode(order.getOrderCode())
+                    .remark("您的订单已签收成功")
+                    .finishTime(order.getFinishTime())
+                    .userId(Long.valueOf(order.getUserId()))
+                    .templateType(TemplateListenEnum.TYPE_3.getValue())
+                    .build();
+            publisher.publishEvent(new TemplateEvent(this, templateBean));
             return R.ok("操作成功");
         }
         else {

+ 15 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsStoreDeliversMapper.java

@@ -4,6 +4,7 @@ import com.fs.store.domain.FsStoreDelivers;
 import org.apache.ibatis.annotations.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 发货信息Mapper接口
@@ -63,6 +64,20 @@ public interface FsStoreDeliversMapper {
     @Select("SELECT * FROM fs_store_delivers WHERE order_id = #{orderId} and type=#{type}")
     List<FsStoreDelivers> findByOrderIdWithType(@Param("orderId") Long orderId,@Param("type") Integer type);
 
+    @Select("<script>" +
+            "SELECT * FROM fs_store_delivers " +
+            "WHERE type = #{type} " +
+            "AND order_id IN " +
+            "<foreach collection='orderIds' item='orderId' open='(' separator=',' close=')'>" +
+            "#{orderId}" +
+            "</foreach>" +
+            "</script>")
+    @MapKey("orderId")
+    Map<Long,FsStoreDelivers> findByOrderIdWithTypeBatch(@Param("orderIds") List<Long> orderId, @Param("type") Integer type);
+
+    @Select("SELECT * FROM fs_store_delivers WHERE order_id = #{orderId} and type=#{type} limit 1")
+    FsStoreDelivers findByOrderIdWithTypeSingle(@Param("orderId") Long orderId,@Param("type") Integer type);
+
     /**
      * 通过订单号和快递号查询物流信息
      * @param orderId 订单号