Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/develop' into develop

FengChaoYu 11 mesiacov pred
rodič
commit
f29b9c6bf8

+ 6 - 5
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -343,8 +343,7 @@ public class PayOrderLogic {
         workerOrder.setPayStatus(PayStatusEnum.PAID.getKey());
         workerOrder.updateById();
 
-        //插入结算数据
-        this.addSettlementOrder(workerOrder,workerOrderItems);
+
 
         //插入手工结算数据
         if (workerOrder.getManualAmount() != null && workerOrder.getManualAmount().doubleValue() > 0) {
@@ -462,6 +461,9 @@ public class PayOrderLogic {
             workerOrder.updateById();
         }
 
+        //插入结算数据
+        this.addSettlementOrder(workerOrder,workerOrderItems);
+
 
         return true;
     }
@@ -722,9 +724,8 @@ public class PayOrderLogic {
                 .eq(!StringUtil.isEmpty(normType), WebsitGoods::getNormType, normType)
                 .eq(WebsitGoods::getGoodsType, "P")
                 .and(item -> item.like(!StringUtil.isEmpty(categoryId), WebsitGoods::getProductRelaName, categoryId)
-                        .and(item2 -> item2.like(!StringUtil.isEmpty(brand), WebsitGoods::getBrandRelaName, brand)
-                                .or().eq(!StringUtil.isEmpty(brand), WebsitGoods::getBrandRelaName, "通用")
-                        )
+                  //      .and(item2 -> item2.like(!StringUtil.isEmpty(brand), WebsitGoods::getBrandRelaName, brand)
+                        
                         .or().eq(WebsitGoods::getNormType, "S"))
 
                 .in(WebsitGoods::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())

+ 4 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminDeptLogic.java

@@ -110,6 +110,10 @@ public class AdminDeptLogic {
     }
 
     public void add(AdminDept adminDept) {
+        AdminDept adminDeptServiceById = adminDeptService.getById(adminDept.getPId());
+
+        adminDept.setCompanyWechatId(adminDeptServiceById.getCompanyWechatId());
+        adminDept.setCompanyWechatName(adminDeptServiceById.getCompanyWechatName());
         adminDept.insert();
     }
 

+ 9 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminUserLogic.java

@@ -244,6 +244,10 @@ public class AdminUserLogic {
         }else {
             AdminDept adminDept = adminDeptService.getById(adminUser.getAdminDeptId());
 
+            if (!curAdminUser.getType().equals("2") && adminDept.getAdminDeptId().equals("1")){
+                throw new RemoteServiceException("不可选高于商户得平台权限");
+            }
+
             adminUser.setCompanyWechatId(adminDept.getCompanyWechatId());
             adminUser.setCompanyName(adminDept.getCompanyWechatName());
 
@@ -342,7 +346,12 @@ public class AdminUserLogic {
             }
         }else {
 
+
+
             if (!StringUtil.isEmpty(newUser.getAdminDeptId())){
+                if (!admin.getType().equals("2") && newUser.getAdminDeptId().equals("1")){
+                    throw new RemoteServiceException("不可选高于商户得平台权限");
+                }
 
                 AdminDept adminDept = adminDeptService.getById(newUser.getAdminDeptId());
 

+ 40 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java

@@ -635,6 +635,46 @@ public class WechatLogic {
         }
     }
 
+    /**
+     * 电子支付分账-定时
+     * @param settlementOrder
+     * @throws WxPayException
+     */
+    public void shareSettlementAmountCorn(SettlementOrder settlementOrder) throws WxPayException {
+
+        if(settlementOrder == null){
+            return;
+        }
+        if(!StringUtils.equals(settlementOrder.getPayStatus(), PayStatusEnum.PAID.getKey())){
+            throw new RemoteServiceException("未支付订单不可结算");
+        }
+        if(!StringUtils.equals(settlementOrder.getStatus(),"WAIT")){
+            log.error("非待结算状态不可结算,id:{}",settlementOrder.getOrderId());
+            return;
+        }
+        Map<String,BigDecimal> map = new HashMap<>();
+        map.put(settlementOrder.getOpenId(),settlementOrder.getWorkerAmount());
+        Map<String,String> mapPhone = new HashMap<>();
+        mapPhone.put(settlementOrder.getOpenId(),settlementOrder.getWorkerMobile());
+        //开始分账
+        try {
+            profitSettlementSharing(settlementOrder.getOrderId(), settlementOrder.getTranscationId(), map, mapPhone,
+                    settlementOrder.getCompanyWechatId(), "B",settlementOrder.getConfigId());
+
+            settlementOrder.setStatus(SettlementStatusNewEnum.OK.toString());
+            settlementOrder.setSettlementTime(new Date());
+            settlementOrder.updateById();
+
+        } catch (WxPayException e) {
+            log.error("异常结算", e);
+
+            settlementOrder.setStatus(SettlementStatusNewEnum.YC.toString());
+            settlementOrder.setYcRemark(e.getMessage());
+            settlementOrder.updateById();
+        }
+    }
+
+
 
     /**
      * 分账

+ 3 - 3
mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/SettlementOrderLogic.java

@@ -296,14 +296,14 @@ public class SettlementOrderLogic {
 
         if (settlementOrderService.lambdaQuery()
                 .in(SettlementOrder::getSettlementOrderId, id)
-                .notIn(SettlementOrder::getStatus, SettlementStatusEnum.WAIT.getKey())
+                .notIn(SettlementOrder::getStatus, SettlementStatusNewEnum.YC.getKey())
                 .count() > 0) {
-            throw new RemoteServiceException("存在非待结算得结算");
+            throw new RemoteServiceException("存在非异常结算得结算单");
         }
 
         settlementOrderService.lambdaUpdate()
                 .in(SettlementOrder::getSettlementOrderId, id)
-                .eq(SettlementOrder::getStatus, SettlementStatusEnum.WAIT.getKey())
+                .eq(SettlementOrder::getStatus, SettlementStatusNewEnum.YC.getKey())
                 .set(SettlementOrder::getStatus, SettlementStatusNewEnum.LINE.getKey()).update();
     }
 }

+ 26 - 0
mall-server-api/src/main/java/com/gree/mall/manager/schedule/OrderBaseSchedule.java

@@ -1,10 +1,14 @@
 package com.gree.mall.manager.schedule;
 
 import cn.hutool.core.date.DateUtil;
+import com.github.binarywang.wxpay.exception.WxPayException;
 import com.gree.mall.manager.enums.workorder.OrderBaseStatusEnum;
+import com.gree.mall.manager.logic.common.WechatLogic;
 import com.gree.mall.manager.logic.workorder.OrderBaseLogic;
 import com.gree.mall.manager.plus.entity.PgOrderBase;
+import com.gree.mall.manager.plus.entity.SettlementOrder;
 import com.gree.mall.manager.plus.service.PgOrderBaseService;
+import com.gree.mall.manager.plus.service.SettlementOrderService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -32,6 +36,11 @@ public class OrderBaseSchedule {
     OrderBaseLogic orderBaseLogic;
     @Autowired
     PgOrderBaseService pgOrderBaseService;
+    @Autowired
+    SettlementOrderService settlementOrderService;
+
+    @Autowired
+    WechatLogic wechatLogic;
 
     /**
      * 生成抢单通知
@@ -57,4 +66,21 @@ public class OrderBaseSchedule {
         pgOrderBaseService.lambdaUpdate().set(PgOrderBase::getIsQdNotice,true).in(PgOrderBase::getId,orderBaseIds).update();
     }
 
+
+
+    /**
+     * 每天五点结算所有结算单
+     */
+    @Transactional
+    @Scheduled(cron = "0 0 17 * * ?")
+  //  @Scheduled(fixedDelay = 60  * 1000)
+    public void fenzhang() throws WxPayException {
+        List<SettlementOrder> settlementOrders = settlementOrderService.lambdaQuery().eq(SettlementOrder::getStatus, "WAIT").list();
+
+        for (SettlementOrder settlementOrder : settlementOrders) {
+            wechatLogic.shareSettlementAmountCorn(settlementOrder);
+        }
+
+    }
+
 }