‘linchangsheng’ 9 mēneši atpakaļ
vecāks
revīzija
6ec176dae4

+ 2 - 2
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/outside/WechatLogic.java

@@ -169,14 +169,14 @@ public class WechatLogic extends OutsideBaseApi{
      * @param companyWechatId
      * @return
      */
-    public String paymentFkm(String orderId, BigDecimal payAmount,String authCode,String profitSharingFlag,String ip,String companyWechatId,String source){
+    public String paymentFkm(String orderId, BigDecimal payAmount,String authCode,String profitSharingFlag,String ip,String companyWechatConfigId,String source){
         Map<String,Object> map = new HashMap<>();
         map.put("orderId",orderId);
         map.put("payAmount",payAmount);
         map.put("authCode",authCode);
         map.put("profitSharingFlag",profitSharingFlag);
         map.put("ip",ip);
-        map.put("companyWechatId",companyWechatId);
+        map.put("companyWechatConfigId",companyWechatConfigId);
         map.put("source",source);
         String s = HttpUtils.requestPostForm(pcUrl + "/wechat/payment/fkmWebsit", map, getHeader());
         log.info("微信付款码支付response:{}",s);

+ 10 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -333,6 +333,8 @@ public class PayOrderLogic {
         if (StringUtil.isEmpty(adminWebsit.getPayWorkerCodeId()))
             throw new RemoteServiceException("网点支付配置未配置");
 
+
+
         if (!workerOrder.getPayStatus().equals("WAIT")){
             throw new RemoteServiceException("订单已取消支付");
         }
@@ -344,8 +346,12 @@ public class PayOrderLogic {
 
 
         if (payType.equals(PayTypeEnum.WECHAT.getKey())) {
-           String transcationId = wechatLogic.paymentFkm(workerOrder.getOrderId(), workerOrder.getTotalAmount(), authCode, "N", ip,
+           String transcationId = wechatLogic.paymentFkm(workerOrder.getOrderId(), workerOrder.getTotalAmount(), authCode, "Y", ip,
                    adminWebsit.getPayWorkerCodeId(),workerOrder.getSource());
+
+            workerOrder.setTranscationId(transcationId);
+            workerOrder.setOpenId(currentCompanyWechat.getUser().getOpenId());
+            workerOrder.setConfigId(adminWebsit.getPayWorkerCodeId());
         }
         workerOrder.setPayTime(new Date());
         workerOrder.setPayType(payType);
@@ -603,6 +609,9 @@ public class PayOrderLogic {
 
         SettlementOrder settlementOrder = BeanUtil.toBean(workerOrder, SettlementOrder.class);
 
+        settlementOrder.setTranscationId(workerOrder.getTranscationId());
+        settlementOrder.setOpenId(workerOrder.getOpenId());
+
         if (!StringUtil.isEmpty(workerOrder.getWorkerOrderId())){
             PgOrderBase pgOrderBase = pgOrderBaseService.getById(workerOrder.getWorkerOrderId());
             if (pgOrderBase != null){

+ 3 - 15
mall-server-api/src/main/java/com/gree/mall/manager/bean/websit/SettlementOrderLogicVO.java

@@ -55,8 +55,6 @@ public class SettlementOrderLogicVO      {
     @ApiModelProperty(value = "订单金额")
     private BigDecimal totalAmount;
 
-    @ApiModelProperty(value = "销售类型")
-    private SettlementTypeEnum settlementType;
 
     @ApiModelProperty(value = "创建人")
     private String createBy;
@@ -80,7 +78,7 @@ public class SettlementOrderLogicVO      {
     private Date payTime;
 
     @ApiModelProperty(value = "结算状态")
-    private SettlementStatusEnum status;
+    private SettlementStatusNewEnum status;
 
     @ApiModelProperty(value = "分账金额")
     private BigDecimal amount;
@@ -91,26 +89,16 @@ public class SettlementOrderLogicVO      {
     @ApiModelProperty(value = "师傅分账金额")
     private BigDecimal workerAmount;
 
-    @ApiModelProperty(value = "商户分账金额")
-    private BigDecimal websitAmount;
 
-    @ApiModelProperty(value = "师傅分账金额手续费")
-    private BigDecimal workerProceAmount;
-
-    @ApiModelProperty(value = "商户分账金额手续费")
-    private BigDecimal websitProceAmount;
-
-    @ApiModelProperty(value = "分账时间")
+    @ApiModelProperty(value = "结算时间")
     private Date settlementTime;
-    @ZfireField(hide = true)
+
     @ApiModelProperty(value = "微信流水号")
     private String wechatOrder;
 
     @ApiModelProperty(value = "支付类型")
     private SettlementPayTypeEnum payType;
 
-    @ApiModelProperty(value = "是否退款")
-    private IsYesNoEnum refundStatus;
 
     @ApiModelProperty(value = "工单销售类型")
     private SaleTypeEnum saleType;

+ 18 - 19
mall-server-api/src/main/java/com/gree/mall/manager/config/wx/WxConfiguration.java

@@ -81,8 +81,7 @@ public class WxConfiguration {
             if(StringUtils.isBlank(adminCompanyWechatPayConfig.getMchId()) || StringUtils.isBlank(adminCompanyWechatPayConfig.getSubAppId())){
                 continue;
             }
-            //初始化企业微信服务
-            //initCpService(companyWechat,redisUtil);
+
             //初始化微信支付服务
             initWxPayService(adminCompanyWechatPayConfig,notifyUrl);
             initWxSubPayService(adminCompanyWechatPayConfig,notifyUrl);
@@ -91,25 +90,25 @@ public class WxConfiguration {
 
     /**
      * 初始化微信小程序支付服务
-     * @param companyWechat
+     * @param adminCompanyWechatPayConfig
      */
-    private static void initWxSubPayService(AdminCompanyWechatPayConfig companyWechat,String notifyUrl){
-        if(StringUtils.isAnyBlank(companyWechat.getAppletAppid())){
+    private static void initWxSubPayService(AdminCompanyWechatPayConfig adminCompanyWechatPayConfig,String notifyUrl){
+        if(StringUtils.isAnyBlank(adminCompanyWechatPayConfig.getAppletAppid())){
             return;
         }
         String path = keyPath.toLowerCase();
         WxPayConfig wxPayConfig = new WxPayConfig();
-        wxPayConfig.setAppId(companyWechat.getAppId());
-        wxPayConfig.setMchId(companyWechat.getMchId());
-        wxPayConfig.setMchKey(companyWechat.getMchKey());
-        wxPayConfig.setSubAppId(companyWechat.getAppletAppid());
-        wxPayConfig.setSubMchId(companyWechat.getSubMchId());
+        wxPayConfig.setAppId(adminCompanyWechatPayConfig.getAppId());
+        wxPayConfig.setMchId(adminCompanyWechatPayConfig.getMchId());
+        wxPayConfig.setMchKey(adminCompanyWechatPayConfig.getMchKey());
+        wxPayConfig.setSubAppId(adminCompanyWechatPayConfig.getAppletAppid());
+        wxPayConfig.setSubMchId(adminCompanyWechatPayConfig.getSubMchId());
         wxPayConfig.setNotifyUrl(notifyUrl);
         wxPayConfig.setKeyPath(path);
         WxPayService wxPayService = new WxPayServiceImpl();
         wxPayService.setConfig(wxPayConfig);
 
-        wxSubPayWebsitServices.put(companyWechat.getCompanyWechatId(),wxPayService);
+        wxSubPayWebsitServices.put(adminCompanyWechatPayConfig.getId(),wxPayService);
     }
 
 
@@ -117,23 +116,23 @@ public class WxConfiguration {
 
     /**
      * 初始化微信支付服务
-     * @param companyWechat
+     * @param adminCompanyWechatPayConfig
      */
-    private static void initWxPayService(AdminCompanyWechatPayConfig companyWechat,String notifyUrl){
+    private static void initWxPayService(AdminCompanyWechatPayConfig adminCompanyWechatPayConfig,String notifyUrl){
 
         String path = keyPath.toLowerCase();
         WxPayConfig wxPayConfig = new WxPayConfig();
-        wxPayConfig.setAppId(companyWechat.getAppId());
-        wxPayConfig.setMchId(companyWechat.getMchId());
-        wxPayConfig.setMchKey(companyWechat.getMchKey());
-        wxPayConfig.setSubAppId(companyWechat.getSubAppId());
-        wxPayConfig.setSubMchId(companyWechat.getSubMchId());
+        wxPayConfig.setAppId(adminCompanyWechatPayConfig.getAppId());
+        wxPayConfig.setMchId(adminCompanyWechatPayConfig.getMchId());
+        wxPayConfig.setMchKey(adminCompanyWechatPayConfig.getMchKey());
+        wxPayConfig.setSubAppId(adminCompanyWechatPayConfig.getSubAppId());
+        wxPayConfig.setSubMchId(adminCompanyWechatPayConfig.getSubMchId());
         wxPayConfig.setNotifyUrl(notifyUrl);
         wxPayConfig.setKeyPath(path);
         WxPayService wxPayService = new WxPayServiceImpl();
         wxPayService.setConfig(wxPayConfig);
 
-        wxPayWebsitServices.put(companyWechat.getId(),wxPayService);
+        wxPayWebsitServices.put(adminCompanyWechatPayConfig.getId(),wxPayService);
     }
 
     public void reloadWxConfig(List<AdminCompanyWechat> list){

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/controller/common/WechatController.java

@@ -131,11 +131,11 @@ public class WechatController {
             @RequestParam BigDecimal payAmount,
             @RequestParam String profitSharingFlag,
             @RequestParam String ip,
-            @RequestParam String companyWechatId,
+            @RequestParam String companyWechatConfigId,
             @RequestParam String authCode,
             @RequestParam String source
     ) throws Exception {
-        String transcationId = wechatLogic.paymentfkmWebsit(orderId, payAmount, profitSharingFlag, ip, companyWechatId, authCode,source);
+        String transcationId = wechatLogic.paymentfkmWebsit(orderId, payAmount, profitSharingFlag, ip, companyWechatConfigId, authCode,source);
         return ResponseHelper.success(transcationId);
     }
 

+ 2 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/websit/SettlementOrderController.java

@@ -2,6 +2,7 @@ package com.gree.mall.manager.controller.websit;
 
 import cn.hutool.core.lang.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.binarywang.wxpay.exception.WxPayException;
 import com.gree.mall.manager.annotation.ZfireList;
 import com.gree.mall.manager.bean.websit.*;
 import com.gree.mall.manager.helper.ResponseHelper;
@@ -101,7 +102,7 @@ public class SettlementOrderController {
     public ResponseHelper settlement(
             @ApiParam(value = "结算id" , required = true) @RequestParam(required = true) List<String> id,
             HttpServletRequest request
-    ) throws ParseException {
+    ) throws ParseException, WxPayException {
         settlementOrderLogic.settlement(id);
         return ResponseHelper.success();
     }

+ 97 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/websit/SettlementOrderNewController.java

@@ -0,0 +1,97 @@
+package com.gree.mall.manager.controller.websit;
+
+import cn.hutool.core.lang.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.websit.SettlementOrderDetail;
+import com.gree.mall.manager.bean.websit.SettlementOrderLogicVO;
+import com.gree.mall.manager.bean.websit.WorkerSettlementLineVO;
+import com.gree.mall.manager.bean.websit.WorkerSettlementVO;
+import com.gree.mall.manager.helper.ResponseHelper;
+import com.gree.mall.manager.logic.websit.SettlementOrderLogic;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
+import java.util.List;
+
+@Slf4j
+@RestController
+@Api(value = "结算单新列表", tags = {"结算单新列表-电子支付"})
+@RequestMapping(value = "/settlementOrderNew", produces = "application/json; charset=utf-8")
+public class SettlementOrderNewController {
+
+    @Autowired
+    private SettlementOrderLogic settlementOrderLogic;
+
+
+
+    @ZfireList
+    @PostMapping("/list/pageV2")
+    @ApiOperation(value = "结算单列表")
+    public ResponseHelper<IPage<SettlementOrderLogicVO>> pageV2(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<SettlementOrderLogicVO> page = settlementOrderLogic.pageV2(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<SettlementOrderLogicVO>() {});
+    }
+
+    @PostMapping("/pageExport")
+    @ApiOperation(value = "结算单导出")
+    public void listExport(@RequestBody ZfireParamBean zfireParamBean, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        //1.组装查询条件
+        ZfireParamBean zfireParam = FieldUtils.supplyParam(zfireParamBean);
+        //2.查询要导出的内容
+        IPage<SettlementOrderLogicVO> page = settlementOrderLogic.pageV2(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(page.getRecords(), zfireParam.getExportFields(), request, response);
+    }
+
+
+    @PostMapping("/detail")
+    @ApiOperation("结算详情")
+    public ResponseHelper<SettlementOrderDetail> detail(
+            @ApiParam(value = "结算id" , required = true) @RequestParam(required = true) String id,
+
+            HttpServletRequest request
+    ) throws ParseException {
+        SettlementOrderDetail  settlementOrderDetail = settlementOrderLogic.detail(id);
+        return ResponseHelper.success(settlementOrderDetail);
+    }
+
+
+    @PostMapping("/settlement")
+    @ApiOperation("结算")
+    public ResponseHelper settlement(
+            @ApiParam(value = "结算id" , required = true) @RequestParam(required = true) List<String> id,
+            HttpServletRequest request
+    ) throws ParseException, WxPayException {
+        settlementOrderLogic.settlement(id);
+        return ResponseHelper.success();
+    }
+
+
+
+    @PostMapping("/lineSettlement")
+    @ApiOperation("线下结算")
+    public ResponseHelper lineSettlement(
+            @ApiParam(value = "结算id" , required = true) @RequestParam(required = true) List<String> id,
+            HttpServletRequest request
+    ) throws ParseException {
+        settlementOrderLogic.lineSettlementOrder(id);
+        return ResponseHelper.success();
+    }
+
+
+
+
+}

+ 22 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/SettlementStatusNewEnum.java

@@ -0,0 +1,22 @@
+package com.gree.mall.manager.enums;
+
+
+import com.gree.mall.manager.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum SettlementStatusNewEnum implements BaseEnum {
+    WAIT ("WAIT","待结算"),
+    OK("OK","完成"),
+    YC("YC","异常结算"),
+    LINE("LINE","线下结算"),
+    ;
+
+
+    private final String key;
+    private final String remark;
+
+}

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

@@ -27,6 +27,7 @@ import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.enums.OrderInfoSourceEnum;
 import com.gree.mall.manager.enums.OrderShareStatusEnum;
 import com.gree.mall.manager.enums.PayStatusEnum;
+import com.gree.mall.manager.enums.SettlementStatusNewEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
@@ -119,14 +120,11 @@ public class WechatLogic {
      * @param source 公众号 / 小程序
      * @return
      */
-    public WxPayService getPayWebstiService(String companyWechatId,String source){
-        if(StringUtils.equals(source,OrderInfoSourceEnum.A.getRemark())) {
-            //小程序
-            return WxConfiguration.wxSubPayWebsitServices.get(companyWechatId);
-        }else{
-            //公众号
-            return WxConfiguration.wxPayWebsitServices.get(companyWechatId);
-        }
+    public WxPayService getPayWebstiService(String id,String source){
+
+
+        return WxConfiguration.wxPayWebsitServices.get(id);
+
     }
 
     /**
@@ -596,6 +594,90 @@ public class WechatLogic {
     }
 
 
+    /**
+     * 电子支付分账
+     * @param settlementOrder
+     * @throws WxPayException
+     */
+    public void shareSettlementAmount(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.updateById();
+
+        } catch (WxPayException e) {
+            log.error("异常结算", e);
+
+            settlementOrder.setStatus(SettlementStatusNewEnum.YC.toString());
+            settlementOrder.updateById();
+        }
+    }
+
+
+    /**
+     * 分账
+     * @param orderSharingId 分账id
+     * @param transactionId 微信支付流水号
+     * @param amountMap  key=分钱人的openid   value=分多少钱
+     * @param phoneMap key=分钱人的openid  value=手机号
+     * @param companyWechatId 商户id
+     * @param source
+     * @throws WxPayException
+     */
+    private void profitSettlementSharing(String orderSharingId, String transactionId, Map<String, BigDecimal> amountMap,
+                               Map<String, String> phoneMap, String companyWechatId, String source,String config) throws WxPayException {
+
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        for(String openId : amountMap.keySet()){
+            //添加分账人
+            addShareReveiver(openId,companyWechatId,source);
+
+            BigDecimal shareAmount = amountMap.get(openId);
+            String workerUserPhone = phoneMap.get(openId);
+            if(shareAmount.doubleValue() == 0){
+                continue;
+            }
+            Map<String, Object> receiver = new HashMap<>();
+            receiver.put("type", "PERSONAL_SUB_OPENID");
+            receiver.put("account", openId);
+            receiver.put("amount", ProfitSharingReceiverRequest.yuanToFen(shareAmount.toString()));
+            receiver.put("description", "销售返佣给" + workerUserPhone + ",金额:" + shareAmount + "元");
+            list.add(receiver);
+        }
+
+        ProfitSharingRequest profitSharingRequest = new ProfitSharingRequest();
+        profitSharingRequest.setOutOrderNo(orderSharingId);
+        profitSharingRequest.setTransactionId(transactionId);
+        profitSharingRequest.setReceivers(JSONObject.toJSONString(list));
+
+        ProfitSharingService profitSharingService = this.getPayWebstiService(config, source).getProfitSharingService();
+        //请求单次分账
+        log.info("【开始分账】request:{}", JSONObject.toJSONString(profitSharingRequest));
+        profitSharingService.profitSharing(profitSharingRequest);
+        //log.info("【开始分账】result:{}", JSONObject.toJSONString(profitSharingResult));
+
+    }
+
+
+
+
 
     /**
      * 商城订单分账
@@ -1084,9 +1166,9 @@ public class WechatLogic {
         }
     }
 
-    public String paymentfkmWebsit(String id, BigDecimal payment, String profitSharingFlag, String ip, String companyWechatId, String authCode, String source) {
+    public String paymentfkmWebsit(String id, BigDecimal payment, String profitSharingFlag, String ip, String configId, String authCode, String source) {
 
-        WxPayService payService = this.getPayWebstiService(companyWechatId,source);
+        WxPayService payService = this.getPayWebstiService(id,source);
 
         WxPayMicropayRequest request = new WxPayMicropayRequest();
         //request.setDeviceInfo(worker.getWorkerId());
@@ -1110,7 +1192,7 @@ public class WechatLogic {
         }
         //记录流水
 
-        AdminCompanyWechatPayConfig adminCompanyWechatPayConfig = adminCompanyWechatPayConfigService.getById(companyWechatId);
+        AdminCompanyWechatPayConfig adminCompanyWechatPayConfig = adminCompanyWechatPayConfigService.getById(configId);
         this.addPayWebsitRecord(adminCompanyWechatPayConfig,payment,"",payResult.getSubOpenid(),ip,payResult.getTradeType(),id,payResult.getTransactionId());
         return payResult.getTransactionId();
     }

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.binarywang.wxpay.exception.WxPayException;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.websit.*;
 import com.gree.mall.manager.commonmapper.WebsitSalesRetCMapper;
@@ -13,6 +14,7 @@ import com.gree.mall.manager.enums.*;
 import com.gree.mall.manager.enums.material.PayTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.logic.common.WechatLogic;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
@@ -51,6 +53,9 @@ public class SettlementOrderLogic {
     @Autowired
     WorkerOrderService workerOrderService;
 
+    @Autowired
+    WechatLogic wechatLogic;
+
     public IPage<SettlementOrderLogicVO> pageV2(ZfireParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         List<String> companyWechatIds = adminUser.getCompanyWechatIds();
@@ -115,7 +120,7 @@ public class SettlementOrderLogic {
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void settlement(List<String> id) {
+    public void settlement(List<String> id) throws WxPayException {
         if (settlementOrderService.lambdaQuery()
                 .in(SettlementOrder::getSettlementOrderId, id)
                 .notIn(SettlementOrder::getStatus, SettlementStatusEnum.WAIT.getKey())
@@ -123,10 +128,15 @@ public class SettlementOrderLogic {
             throw new RemoteServiceException("存在非待结算得结算");
         }
 
-        settlementOrderService.lambdaUpdate()
-                .in(SettlementOrder::getSettlementOrderId, id)
-                .eq(SettlementOrder::getStatus, SettlementStatusEnum.WAIT.getKey())
-                .set(SettlementOrder::getStatus, SettlementStatusEnum.WAIT_ING.getKey()).update();
+
+        List<SettlementOrder> settlementOrders = settlementOrderService.lambdaQuery().in(SettlementOrder::getSettlementOrderId, id).list();
+
+        for (SettlementOrder settlementOrder : settlementOrders) {
+            wechatLogic.shareSettlementAmount(settlementOrder);
+        }
+
+
+
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -276,4 +286,19 @@ public class SettlementOrderLogic {
 
         return settlementOrderLogicVOIPage;
     }
+
+    public void lineSettlementOrder(List<String> id) {
+
+        if (settlementOrderService.lambdaQuery()
+                .in(SettlementOrder::getSettlementOrderId, id)
+                .notIn(SettlementOrder::getStatus, SettlementStatusEnum.WAIT.getKey())
+                .count() > 0) {
+            throw new RemoteServiceException("存在非待结算得结算");
+        }
+
+        settlementOrderService.lambdaUpdate()
+                .in(SettlementOrder::getSettlementOrderId, id)
+                .eq(SettlementOrder::getStatus, SettlementStatusEnum.WAIT.getKey())
+                .set(SettlementOrder::getStatus, SettlementStatusNewEnum.LINE.getKey()).update();
+    }
 }