Sfoglia il codice sorgente

直播退款和订单接口

yuhongqi 2 settimane fa
parent
commit
58a908d846
27 ha cambiato i file con 697 aggiunte e 31 eliminazioni
  1. 38 9
      fs-admin/src/main/java/com/fs/live/controller/LiveAfterSalesController.java
  2. 8 0
      fs-admin/src/main/java/com/fs/live/controller/LiveController.java
  3. 204 0
      fs-admin/src/main/java/com/fs/live/controller/LiveOrderController.java
  4. 31 2
      fs-company/src/main/java/com/fs/company/controller/live/LiveAfterSalesController.java
  5. 125 1
      fs-company/src/main/java/com/fs/company/controller/live/LiveOrderController.java
  6. 2 0
      fs-service-system/src/main/java/com/fs/live/domain/LiveOrder.java
  7. 5 0
      fs-service-system/src/main/java/com/fs/live/mapper/LiveAfterSalesItemMapper.java
  8. 5 0
      fs-service-system/src/main/java/com/fs/live/mapper/LiveAfterSalesLogsMapper.java
  9. 3 0
      fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderItemMapper.java
  10. 5 0
      fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderLogsMapper.java
  11. 3 0
      fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderMapper.java
  12. 3 0
      fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderPaymentMapper.java
  13. 9 7
      fs-service-system/src/main/java/com/fs/live/service/ILiveAfterSalesItemService.java
  14. 9 7
      fs-service-system/src/main/java/com/fs/live/service/ILiveAfterSalesLogsService.java
  15. 2 0
      fs-service-system/src/main/java/com/fs/live/service/ILiveOrderItemService.java
  16. 3 0
      fs-service-system/src/main/java/com/fs/live/service/ILiveOrderLogsService.java
  17. 2 0
      fs-service-system/src/main/java/com/fs/live/service/ILiveOrderPaymentService.java
  18. 11 0
      fs-service-system/src/main/java/com/fs/live/service/ILiveOrderService.java
  19. 8 2
      fs-service-system/src/main/java/com/fs/live/service/impl/LiveAfterSalesItemServiceImpl.java
  20. 6 0
      fs-service-system/src/main/java/com/fs/live/service/impl/LiveAfterSalesLogsServiceImpl.java
  21. 6 0
      fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderItemServiceImpl.java
  22. 7 0
      fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderLogsServiceImpl.java
  23. 5 0
      fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderPaymentServiceImpl.java
  24. 151 0
      fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java
  25. 2 0
      fs-service-system/src/main/java/com/fs/store/service/IFsExpressService.java
  26. 37 0
      fs-service-system/src/main/java/com/fs/store/service/impl/FsExpressServiceImpl.java
  27. 7 3
      fs-service-system/src/main/resources/mapper/live/LiveOrderMapper.xml

+ 38 - 9
fs-admin/src/main/java/com/fs/live/controller/LiveAfterSalesController.java

@@ -6,14 +6,23 @@ import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.ParseUtils;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.core.security.LoginUser;
 import com.fs.core.web.service.TokenService;
 import com.fs.live.domain.LiveAfterSales;
+import com.fs.live.domain.LiveAfterSalesItem;
+import com.fs.live.domain.LiveAfterSalesLogs;
+import com.fs.live.domain.LiveOrder;
+import com.fs.live.service.ILiveAfterSalesItemService;
+import com.fs.live.service.ILiveAfterSalesLogsService;
 import com.fs.live.service.ILiveAfterSalesService;
+import com.fs.live.service.ILiveOrderService;
 import com.fs.live.vo.LiveAfterSalesVo;
+import com.fs.store.domain.FsUser;
 import com.fs.store.param.*;
+import com.fs.store.service.IFsUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -36,6 +45,32 @@ public class LiveAfterSalesController extends BaseController
 
     @Autowired
     private TokenService tokenService;
+    @Autowired
+    private ILiveAfterSalesItemService liveAfterSalesItemService;
+    @Autowired
+    private ILiveAfterSalesLogsService liveAfterSalesLogsService;
+    @Autowired
+    private IFsUserService userService;
+    @Autowired
+    private ILiveOrderService orderService;
+
+    /**
+     * 获取售后记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('live:liveAfteraSales:query')")
+    @GetMapping(value = "/{id}")
+    public R getInfo(@PathVariable("id") Long id)
+    {
+        LiveAfterSales liveAfterSales = liveAfterSalesService.selectLiveAfterSalesById(id);
+        if(liveAfterSales==null) return R.error("售后记录不存在");
+        List<LiveAfterSalesItem> list = liveAfterSalesItemService.selectLiveAfterSalesItemByAfterId(id);
+        List<LiveAfterSalesLogs> logList = liveAfterSalesLogsService.selectLiveAfterSalesLogsByAfterId(id);
+        FsUser user=userService.selectFsUserById(liveAfterSales.getUserId());
+        user.setPhone(ParseUtils.parsePhone(user.getPhone()));
+        LiveOrder liveOrder = orderService.selectLiveOrderByOrderId(String.valueOf(liveAfterSales.getOrderId()));
+        return R.ok().put("afterSales",liveAfterSales).put("items",list).put("logs",logList).put("user",user).put("order",liveOrder);
+
+    }
 
     /**
      * 查询售后记录列表
@@ -46,6 +81,9 @@ public class LiveAfterSalesController extends BaseController
     {
         startPage();
         List<LiveAfterSalesVo> list = liveAfterSalesService.selectLiveAfterSalesVoList(liveAfterSales);
+        for (LiveAfterSalesVo liveAfterSalesVo : list) {
+            liveAfterSalesVo.setUserPhone(ParseUtils.parsePhone(liveAfterSalesVo.getUserPhone()));
+        }
         return getDataTable(list);
     }
 
@@ -62,15 +100,6 @@ public class LiveAfterSalesController extends BaseController
         return util.exportExcel(list, "售后记录数据");
     }
 
-    /**
-     * 获取售后记录详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('live:liveAfteraSales:query')")
-    @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
-        return AjaxResult.success(liveAfterSalesService.selectLiveAfterSalesById(id));
-    }
 
     /**
      * 新增售后记录

+ 8 - 0
fs-admin/src/main/java/com/fs/live/controller/LiveController.java

@@ -12,6 +12,7 @@ import com.fs.core.security.SecurityUtils;
 import com.fs.live.domain.Live;
 import com.fs.live.service.ILiveService;
 import com.fs.live.vo.LiveListVo;
+import com.fs.task.LiveTask;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -30,6 +31,8 @@ import java.util.Map;
 public class LiveController extends BaseController {
     @Autowired
     private ILiveService liveService;
+    @Autowired
+    private LiveTask liveTask;
 
     /**
      * 查询直播列表
@@ -135,6 +138,11 @@ public class LiveController extends BaseController {
     public R finishLive(Live live) {
         return liveService.finishLive(live);
     }
+//    @GetMapping("/test/test")
+//    public R test() {
+//         liveTask.updateExpress();
+//        return R.ok();
+//    }
 
     /**
      * 复制直播

+ 204 - 0
fs-admin/src/main/java/com/fs/live/controller/LiveOrderController.java

@@ -8,25 +8,46 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ParseUtils;
+import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.core.security.LoginUser;
+import com.fs.core.web.service.TokenService;
+import com.fs.crm.domain.CrmCustomer;
+import com.fs.crm.service.ICrmCustomerService;
 import com.fs.erp.domain.ErpDeliverys;
 import com.fs.erp.domain.ErpOrderQuery;
 import com.fs.erp.dto.ErpOrderQueryRequert;
 import com.fs.erp.dto.ErpOrderQueryResponse;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.utils.ErpContextHolder;
 import com.fs.live.domain.LiveOrder;
+import com.fs.live.domain.LiveOrderItem;
+import com.fs.live.domain.LiveOrderLogs;
+import com.fs.live.domain.LiveOrderPayment;
 import com.fs.live.enums.LiveOrderCancleReason;
+import com.fs.live.service.ILiveOrderItemService;
+import com.fs.live.service.ILiveOrderLogsService;
+import com.fs.live.service.ILiveOrderPaymentService;
 import com.fs.live.service.ILiveOrderService;
 import com.fs.live.vo.LiveGoodsVo;
 import com.fs.live.vo.LiveOrderPaymentVo;
 import com.fs.live.vo.LiveOrderVo;
+import com.fs.store.domain.FsStoreOrder;
+import com.fs.store.domain.FsStoreOrderStatus;
+import com.fs.store.domain.FsUser;
+import com.fs.store.mapper.FsWarehousesMapper;
+import com.fs.store.param.*;
 import com.fs.store.service.IFsExpressService;
+import com.fs.store.service.IFsUserService;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -43,6 +64,24 @@ public class LiveOrderController extends BaseController
 {
     @Autowired
     private ILiveOrderService liveOrderService;
+    @Autowired
+    private ICrmCustomerService crmCustomerService;
+    @Autowired
+    private IFsUserService userService;
+    @Autowired
+    private ILiveOrderItemService orderItemService;
+    @Autowired
+    private ILiveOrderLogsService orderLogsService;
+    @Autowired
+    private ILiveOrderPaymentService orderPaymentService;
+    @Autowired
+    private TokenService tokenService;
+    @Autowired
+    private IFsExpressService expressService;
+    @Autowired
+    private FsWarehousesMapper fsWarehousesMapper;
+    @Autowired
+    IErpOrderService erpOrderService;
 
 
 //    @Autowired
@@ -254,7 +293,172 @@ public class LiveOrderController extends BaseController
         return getDataTable(list);
     }
 
+    @Log(title = "退款", businessType = BusinessType.UPDATE)
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:refundOrderMoney')")
+    @PostMapping("/refundOrderMoney")
+    public synchronized R refundOrderMoney(@Validated @RequestBody FsStoreOrderRefundParam param, HttpServletRequest request) {
+        return liveOrderService.refundOrderMoney(param.getOrderId());
+    }
+
+    /**
+     * 获取订单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('store:storeOrder:query')")
+    @GetMapping(value = "/{id}")
+    public R getInfo(@PathVariable("id") Long id)
+    {
+        LiveOrder order=liveOrderService.selectLiveOrderByOrderId(String.valueOf(id));
+        order.setUserPhone(ParseUtils.parsePhone(order.getUserPhone()));
+        order.setUserAddress(ParseUtils.parseAddress(order.getUserAddress()));
+        FsUser user=userService.selectFsUserById(Long.valueOf(order.getUserId()));
+        user.setPhone(ParseUtils.parsePhone(user.getPhone()));
+        List<LiveOrderItem> items=orderItemService.selectCheckedByOrderId(id);
+        FsStoreOrderStatus statusMap=new FsStoreOrderStatus();
+
+        List<LiveOrderLogs> logs=orderLogsService.selectLiveOrderLogsByOrderId(id);
+        List<LiveOrderPayment> payments=orderPaymentService.selectLiveOrderPaymentByOrderId(id);
+
+        CrmCustomer customer=null;
+        if(order.getCustomerId()!=null&&order.getCustomerId()>0){
+            customer=crmCustomerService.selectCrmCustomerById(order.getCustomerId());
+        }
+        return R.ok().put("order", order).put("items", items).put("logs",logs).put("user",user).put("customer",customer).put("payments",payments) ;
+    }
+
+    @GetMapping(value = "/queryAddress/{id}")
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:queryAddress')")
+    public R getAddress(@PathVariable("id") Long id)
+    {
+        LiveOrder order = liveOrderService.selectLiveOrderByOrderId(String.valueOf(id));
+        String address = order.getUserAddress();
+        return R.ok().put("address",address);
+    }
+    @GetMapping(value = "/queryPhone/{id}")
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:queryPhone')")
+    @Log(title = "查看电话", businessType = BusinessType.GRANT)
+    public R getPhone(@PathVariable("id") Long id)
+    {
+        LiveOrder order = liveOrderService.selectLiveOrderByOrderId(String.valueOf(id));
+        String userPhone = order.getUserPhone();
+        return R.ok().put("userPhone",userPhone);
+    }
+
+    /**
+     * 根据orderId查询
+     */
+    @GetMapping("/getByOrderId/{orderId}")
+    public R getByOrderId(@PathVariable Long orderId) {
+        LiveOrder liveOrder = liveOrderService.selectLiveOrderByOrderId(String.valueOf(orderId));
+        return R.ok().put("data",liveOrder);
+    }
+
+    @ApiOperation("物流查询")
+    @PostMapping("/getExpressByDeliverId")
+    public R getExpressByDeliverId(@Validated @RequestBody FsStoreOrderExpressParam param, HttpServletRequest request){
+        return expressService.getLiveExpressByDeliverId(param);
+    }
+
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:auditPayRemain')")
+    @PostMapping("/auditPayRemain")
+    public R auditPayRemain(@Validated @RequestBody FsStoreOrderAuditPayRemainParam param, HttpServletRequest request) {
+        return liveOrderService.auditPayRemain(param.getOrderId());
+    }
+
+    @Log(title = "分佣", businessType = BusinessType.UPDATE)
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:addTuiMoney')")
+    @PostMapping("/addTuiMoney")
+    public R addTuiMoney(@Validated @RequestBody FsStoreOrderAddTuiMoneyParam param, HttpServletRequest request) {
+        return liveOrderService.addTuiMoney(param);
+    }
+
+    @Log(title = "同步物流", businessType = BusinessType.UPDATE)
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:syncExpress')")
+    @PostMapping("/syncExpress")
+    public R syncExpress(@Validated @RequestBody FsStoreOrderExpressEditParam param, HttpServletRequest request) {
+        return liveOrderService.syncExpress(param.getOrderId());
+    }
 
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:updateExpress')")
+    @PostMapping("/updateExpress")
+    public R updateExpress(@Validated @RequestBody FsStoreOrderExpressEditParam param, HttpServletRequest request) {
+        return liveOrderService.updateExpress(param.getOrderId());
+    }
+
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:getEroOrder')")
+    @GetMapping("/getEroOrder")
+    public R getEroOrder(@RequestParam("extendOrderId") String extendOrderId) {
+        ErpOrderQueryRequert request = new ErpOrderQueryRequert();
+        request.setCode(extendOrderId);
+        if(StringUtils.isEmpty(extendOrderId)) return R.error("物流订单ID为空!");
+
+        LiveOrder order = liveOrderService.selectLiveOrderByExtendId(extendOrderId);
+
+        // 根据仓库code找erp
+        if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
+
+        ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+        return R.ok().put("data",response);
+    }
+
+    @Log(title = "冻结、解冻佣金", businessType = BusinessType.UPDATE)
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:editTuiMoney')")
+    @PostMapping("/editTuiMoney")
+    public R editTuiMoney(@Validated @RequestBody FsStoreOrderEditTuiMoneyParam param, HttpServletRequest request) {
+        return liveOrderService.editTuiMoney(param.getOrderId());
+    }
+
+    @Log(title = "确认订单", businessType = BusinessType.UPDATE)
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:finishOrder')")
+    @PostMapping("/finishOrder")
+    public R finishOrder(@Validated @RequestBody FsStoreOrderFinishParam param, HttpServletRequest request) {
+        return liveOrderService.finishOrder(param.getOrderId());
+    }
+
+    @Log(title = "手动推管易", businessType = BusinessType.INSERT)
+    @ApiOperation("创建ERP订单")
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:createErpOrder')")
+    @GetMapping("/createErpOrder")
+    public R createErpOrder(@RequestParam("orderCode") String orderCode) throws Exception
+    {
+        LiveOrder order=liveOrderService.selectOrderIdByOrderCode(orderCode);
+        liveOrderService.createOmsOrder(order.getOrderId());
+        return R.ok();
+    }
+
+    @Log(title = "同步管易物流单号", businessType = BusinessType.UPDATE)
+    @PreAuthorize("@ss.hasPermi('store:storeOrder:updateErpOrder')")
+    @PostMapping("/updateErpOrder")
+    public R updateErpOrder(@Validated @RequestBody FsStoreOrderExpressEditParam param) {
+        LiveOrder order = liveOrderService.selectLiveOrderByOrderId(String.valueOf(param.getOrderId()));
+        ErpOrderQueryRequert request = new ErpOrderQueryRequert();
+        request.setCode(order.getExtendOrderId());
+
+        // 根据仓库code找erp
+        if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
+
+        ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+        if(response.getOrders()!=null&&response.getOrders().size()>0){
+            for(ErpOrderQuery orderQuery : response.getOrders()){
+                if(orderQuery.getDeliverys()!=null&&orderQuery.getDeliverys().size()>0){
+                    for(ErpDeliverys delivery:orderQuery.getDeliverys()){
+                        if(delivery.getDelivery()&& StringUtils.isNotEmpty(delivery.getMail_no())){
+                            //更新商订单状态
+                            liveOrderService.updateDeliveryOrder(param.getOrderId(), delivery.getMail_no(),delivery.getExpress_code(),delivery.getExpress_name());
+                            return R.ok();
+                        }
+                    }
+
+                }
+            }
+        }
+        return R.error("未查询到快递信息");
+    }
 
 
 

+ 31 - 2
fs-company/src/main/java/com/fs/company/controller/live/LiveAfterSalesController.java

@@ -3,12 +3,22 @@ package com.fs.company.controller.live;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.ParseUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.live.domain.LiveAfterSales;
+import com.fs.live.domain.LiveAfterSalesItem;
+import com.fs.live.domain.LiveAfterSalesLogs;
+import com.fs.live.domain.LiveOrder;
+import com.fs.live.service.ILiveAfterSalesItemService;
+import com.fs.live.service.ILiveAfterSalesLogsService;
 import com.fs.live.service.ILiveAfterSalesService;
+import com.fs.live.service.ILiveOrderService;
 import com.fs.live.vo.LiveAfterSalesVo;
+import com.fs.store.domain.*;
+import com.fs.store.service.IFsUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -27,6 +37,14 @@ public class LiveAfterSalesController extends BaseController
 {
     @Autowired
     private ILiveAfterSalesService liveAfterSalesService;
+    @Autowired
+    private ILiveAfterSalesItemService liveAfterSalesItemService;
+    @Autowired
+    private ILiveAfterSalesLogsService liveAfterSalesLogsService;
+    @Autowired
+    private IFsUserService userService;
+    @Autowired
+    private ILiveOrderService orderService;
 
     /**
      * 查询售后记录列表
@@ -37,6 +55,9 @@ public class LiveAfterSalesController extends BaseController
     {
         startPage();
         List<LiveAfterSalesVo> list = liveAfterSalesService.selectLiveAfterSalesVoList(liveAfterSales);
+        for (LiveAfterSalesVo liveAfterSalesVo : list) {
+            liveAfterSalesVo.setUserPhone(ParseUtils.parsePhone(liveAfterSalesVo.getUserPhone()));
+        }
         return getDataTable(list);
     }
 
@@ -58,9 +79,17 @@ public class LiveAfterSalesController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('live:liveAfteraSales:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
+    public R getInfo(@PathVariable("id") Long id)
     {
-        return AjaxResult.success(liveAfterSalesService.selectLiveAfterSalesById(id));
+        LiveAfterSales liveAfterSales = liveAfterSalesService.selectLiveAfterSalesById(id);
+        if(liveAfterSales==null) return R.error("售后记录不存在");
+        List<LiveAfterSalesItem> list = liveAfterSalesItemService.selectLiveAfterSalesItemByAfterId(id);
+        List<LiveAfterSalesLogs> logList = liveAfterSalesLogsService.selectLiveAfterSalesLogsByAfterId(id);
+        FsUser user=userService.selectFsUserById(liveAfterSales.getUserId());
+        user.setPhone(ParseUtils.parsePhone(user.getPhone()));
+        LiveOrder liveOrder = orderService.selectLiveOrderByOrderId(String.valueOf(liveAfterSales.getOrderId()));
+        return R.ok().put("afterSales",liveAfterSales).put("items",list).put("logs",logList).put("user",user).put("order",liveOrder);
+
     }
 
     /**

+ 125 - 1
fs-company/src/main/java/com/fs/company/controller/live/LiveOrderController.java

@@ -8,24 +8,40 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ParseUtils;
+import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.core.security.LoginUser;
 import com.fs.core.security.SecurityUtils;
+import com.fs.core.web.service.TokenService;
+import com.fs.crm.domain.CrmCustomer;
+import com.fs.crm.service.ICrmCustomerService;
 import com.fs.erp.domain.ErpDeliverys;
 import com.fs.erp.domain.ErpOrderQuery;
 import com.fs.erp.dto.ErpOrderQueryRequert;
 import com.fs.erp.dto.ErpOrderQueryResponse;
 import com.fs.erp.service.IErpOrderService;
-import com.fs.live.domain.LiveOrder;
+import com.fs.live.domain.*;
 import com.fs.live.enums.LiveOrderCancleReason;
+import com.fs.live.service.ILiveOrderItemService;
+import com.fs.live.service.ILiveOrderLogsService;
+import com.fs.live.service.ILiveOrderPaymentService;
 import com.fs.live.service.ILiveOrderService;
 import com.fs.live.vo.LiveGoodsVo;
 import com.fs.live.vo.LiveOrderVo;
+import com.fs.store.domain.*;
+import com.fs.store.param.FsStoreOrderBindCustomerParam;
+import com.fs.store.param.FsStoreOrderExpressParam;
+import com.fs.store.service.IFsExpressService;
+import com.fs.store.service.IFsUserService;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -43,6 +59,21 @@ public class LiveOrderController extends BaseController
     @Autowired
     private ILiveOrderService liveOrderService;
 
+    @Autowired
+    private ICrmCustomerService crmCustomerService;
+    @Autowired
+    private IFsUserService userService;
+    @Autowired
+    private ILiveOrderItemService orderItemService;
+    @Autowired
+    private ILiveOrderLogsService orderLogsService;
+    @Autowired
+    private ILiveOrderPaymentService orderPaymentService;
+    @Autowired
+    private TokenService tokenService;
+    @Autowired
+    private IFsExpressService expressService;
+
 
 //    @Autowired
 //    private IFsExpressService expressService;
@@ -58,6 +89,80 @@ public class LiveOrderController extends BaseController
 //    @Qualifier("wdtErpOrderServiceImpl")
 //    private IErpOrderService wdtOrderService;
 
+    /**
+     * 获取订单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('store:storeOrder:query')")
+    @GetMapping(value = "/{id}")
+    public R getInfo(@PathVariable("id") Long id)
+    {
+        LiveOrder order=liveOrderService.selectLiveOrderByOrderId(String.valueOf(id));
+        order.setUserPhone(ParseUtils.parsePhone(order.getUserPhone()));
+        order.setUserAddress(ParseUtils.parseAddress(order.getUserAddress()));
+        FsUser user=userService.selectFsUserById(Long.valueOf(order.getUserId()));
+        user.setPhone(ParseUtils.parsePhone(user.getPhone()));
+        List<LiveOrderItem> items=orderItemService.selectCheckedByOrderId(id);
+        FsStoreOrderStatus statusMap=new FsStoreOrderStatus();
+
+        List<LiveOrderLogs> logs=orderLogsService.selectLiveOrderLogsByOrderId(id);
+        List<LiveOrderPayment> payments=orderPaymentService.selectLiveOrderPaymentByOrderId(id);
+
+        CrmCustomer customer=null;
+        if(order.getCustomerId()!=null&&order.getCustomerId()>0){
+            customer=crmCustomerService.selectCrmCustomerById(order.getCustomerId());
+        }
+        return R.ok().put("order", order).put("items", items).put("logs",logs).put("user",user).put("customer",customer).put("payments",payments) ;
+    }
+
+//    @Log(title = "订单凭证上传", businessType = BusinessType.UPDATE)
+////    @PreAuthorize("@ss.hasPermi('store:storeOrder:uploadCredentials')")
+//    @PostMapping("/uploadCredentials")
+//    public R UploadCredentials(@RequestBody LiveOrder order)
+//    {
+////        String[] imageUrls = order.getCredentials().split(",");
+//        if (order.getCertificates() == null ){
+//            return R.error("请选择图片上传");
+//        }
+//        liveOrderService.uploadCredentials(order);
+//        return R.ok();
+//    }
+
+    @GetMapping(value = "/queryAddress/{id}")
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:queryAddress')")
+    public R getAddress(@PathVariable("id") Long id)
+    {
+        LiveOrder order = liveOrderService.selectLiveOrderByOrderId(String.valueOf(id));
+        String address = order.getUserAddress();
+        return R.ok().put("address",address);
+    }
+    @GetMapping(value = "/queryPhone/{id}")
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:queryPhone')")
+    @Log(title = "查看电话", businessType = BusinessType.GRANT)
+    public R getPhone(@PathVariable("id") Long id)
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if (loginUser.getUser().getUserType().equals("00")){
+            LiveOrder order = liveOrderService.selectLiveOrderByOrderId(String.valueOf(id));
+            String userPhone = order.getUserPhone();
+            return R.ok().put("userPhone",userPhone);
+        }
+        return R.error("无权查看");
+    }
+
+    /**
+     * 根据orderId查询
+     */
+    @GetMapping("/getByOrderId/{orderId}")
+    public R getByOrderId(@PathVariable Long orderId) {
+        LiveOrder liveOrder = liveOrderService.selectLiveOrderByOrderId(String.valueOf(orderId));
+        return R.ok().put("data",liveOrder);
+    }
+
+    @ApiOperation("物流查询")
+    @PostMapping("/getExpressByDeliverId")
+    public R getExpressByDeliverId(@Validated @RequestBody FsStoreOrderExpressParam param, HttpServletRequest request){
+        return expressService.getLiveExpressByDeliverId(param);
+    }
 
     /**
      * 推送到智慧药房
@@ -268,5 +373,24 @@ public class LiveOrderController extends BaseController
         return getDataTable(list);
     }
 
+//    @PreAuthorize("@ss.hasPermi('store:storeOrder:bindCustomer')")
+    @PostMapping("/bindCustomer")
+    public R bindCustomer(@RequestBody FsStoreOrderBindCustomerParam param)
+    {
+        if(param.getCustomerIds().length>1){
+            return R.error("只能关联一个客户");
+        }
+        for(Long customerId:param.getCustomerIds()){
+            LiveOrder order=new LiveOrder();
+            order.setOrderId(param.getOrderId());
+            order.setCustomerId(customerId);
+            liveOrderService.updateLiveOrder(order);
+            //更新CRM客户订单数
+            crmCustomerService.updateBuyCount(customerId);
+        }
+        return R.ok("操作成功");
+
+    }
+
 
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/live/domain/LiveOrder.java

@@ -314,5 +314,7 @@ public class LiveOrder extends BaseEntity {
     private String companyName;
     private String companyUserName;
 
+    private Long customerId;
+
 
 }

+ 5 - 0
fs-service-system/src/main/java/com/fs/live/mapper/LiveAfterSalesItemMapper.java

@@ -2,6 +2,8 @@ package com.fs.live.mapper;
 
 
 import com.fs.live.domain.LiveAfterSalesItem;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -59,4 +61,7 @@ public interface LiveAfterSalesItemMapper {
      * @return 结果
      */
     int deleteLiveAfterSalesItemByIds(Long[] ids);
+
+    @Select("select * from live_after_sales_item where after_sales_id=#{afterId}")
+    List<LiveAfterSalesItem> selectLiveAfterSalesItemByAfterId(@Param("afterId") Long afterId);
 }

+ 5 - 0
fs-service-system/src/main/java/com/fs/live/mapper/LiveAfterSalesLogsMapper.java

@@ -3,6 +3,8 @@ package com.fs.live.mapper;
 import java.util.List;
 
 import com.fs.live.domain.LiveAfterSalesLogs;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * 售后订单操作Mapper接口
@@ -58,4 +60,7 @@ public interface LiveAfterSalesLogsMapper {
      * @return 结果
      */
     int deleteLiveAfterSalesLogsByLogsIds(Long[] logsIds);
+
+    @Select("select * from live_after_sales_logs where store_after_sales_id= #{afterId}")
+    List<LiveAfterSalesLogs> selectLiveAfterSalesLogsByAfterId(@Param("afterId") Long afterId);
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderItemMapper.java

@@ -79,4 +79,7 @@ public interface LiveOrderItemMapper {
 
     @Update("update live_order_item set order_code=#{orderCode} where order_id=#{orderId} ")
     int updateFsStoreOrderCode(@Param("orderId")Long orderId,@Param("orderSn") String orderSn);
+
+    @Select("select * from live_order_item where order_id= #{orderId}")
+    List<LiveOrderItem> selectCheckedByOrderId(@Param("orderId") Long orderId);
 }

+ 5 - 0
fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderLogsMapper.java

@@ -2,6 +2,8 @@ package com.fs.live.mapper;
 
 
 import com.fs.live.domain.LiveOrderLogs;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -59,4 +61,7 @@ public interface LiveOrderLogsMapper {
      * @return 结果
      */
     int deleteLiveOrderLogsByLogsIds(String[] logsIds);
+
+    @Select("select * from live_order_logs where order_id = #{orderId}")
+    List<LiveOrderLogs> selectLiveOrderLogsByOrderId(@Param("orderId") Long orderId);
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderMapper.java

@@ -107,4 +107,7 @@ public interface LiveOrderMapper {
 
     @Select("select * from live_order where extend_order_id is not null and `status`=2")
     List<LiveOrder> selectDeliverPenddingData();
+
+    @Select("select * from live_order where extend_order_id = #{extendOrderId}")
+    LiveOrder selectLiveOrderByExtendId(@Param("extendOrderId") String extendOrderId);
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderPaymentMapper.java

@@ -76,4 +76,7 @@ public interface LiveOrderPaymentMapper {
     List<LiveOrderPaymentVo> selectLiveOrderPaymentVoList(LiveOrderPaymentVo liveOrderPayment);
 
     LiveOrderPaymentVo selectLiveOrderPaymentByPaymentIdNew(@Param("paymentId") Long paymentId);
+
+    @Select("select * from live_order_payment where business_id= #{orderId}")
+    List<LiveOrderPayment> selectLiveOrderPaymentByOrderId(@Param("orderId") Long orderId);
 }

+ 9 - 7
fs-service-system/src/main/java/com/fs/live/service/ILiveAfterSalesItemService.java

@@ -6,14 +6,14 @@ import com.fs.live.domain.LiveAfterSalesItem;
 
 /**
  * 售后子Service接口
- * 
+ *
  * @author fs
  * @date 2025-07-08
  */
 public interface ILiveAfterSalesItemService {
     /**
      * 查询售后子
-     * 
+     *
      * @param id 售后子主键
      * @return 售后子
      */
@@ -21,7 +21,7 @@ public interface ILiveAfterSalesItemService {
 
     /**
      * 查询售后子列表
-     * 
+     *
      * @param liveAfterSalesItem 售后子
      * @return 售后子集合
      */
@@ -29,7 +29,7 @@ public interface ILiveAfterSalesItemService {
 
     /**
      * 新增售后子
-     * 
+     *
      * @param liveAfterSalesItem 售后子
      * @return 结果
      */
@@ -37,7 +37,7 @@ public interface ILiveAfterSalesItemService {
 
     /**
      * 修改售后子
-     * 
+     *
      * @param liveAfterSalesItem 售后子
      * @return 结果
      */
@@ -45,7 +45,7 @@ public interface ILiveAfterSalesItemService {
 
     /**
      * 批量删除售后子
-     * 
+     *
      * @param ids 需要删除的售后子主键集合
      * @return 结果
      */
@@ -53,9 +53,11 @@ public interface ILiveAfterSalesItemService {
 
     /**
      * 删除售后子信息
-     * 
+     *
      * @param id 售后子主键
      * @return 结果
      */
     int deleteLiveAfterSalesItemById(Long id);
+
+    List<LiveAfterSalesItem> selectLiveAfterSalesItemByAfterId(Long id);
 }

+ 9 - 7
fs-service-system/src/main/java/com/fs/live/service/ILiveAfterSalesLogsService.java

@@ -6,14 +6,14 @@ import com.fs.live.domain.LiveAfterSalesLogs;
 
 /**
  * 售后订单操作Service接口
- * 
+ *
  * @author fs
  * @date 2025-07-08
  */
 public interface ILiveAfterSalesLogsService {
     /**
      * 查询售后订单操作
-     * 
+     *
      * @param logsId 售后订单操作主键
      * @return 售后订单操作
      */
@@ -21,7 +21,7 @@ public interface ILiveAfterSalesLogsService {
 
     /**
      * 查询售后订单操作列表
-     * 
+     *
      * @param liveAfterSalesLogs 售后订单操作
      * @return 售后订单操作集合
      */
@@ -29,7 +29,7 @@ public interface ILiveAfterSalesLogsService {
 
     /**
      * 新增售后订单操作
-     * 
+     *
      * @param liveAfterSalesLogs 售后订单操作
      * @return 结果
      */
@@ -37,7 +37,7 @@ public interface ILiveAfterSalesLogsService {
 
     /**
      * 修改售后订单操作
-     * 
+     *
      * @param liveAfterSalesLogs 售后订单操作
      * @return 结果
      */
@@ -45,7 +45,7 @@ public interface ILiveAfterSalesLogsService {
 
     /**
      * 批量删除售后订单操作
-     * 
+     *
      * @param logsIds 需要删除的售后订单操作主键集合
      * @return 结果
      */
@@ -53,9 +53,11 @@ public interface ILiveAfterSalesLogsService {
 
     /**
      * 删除售后订单操作信息
-     * 
+     *
      * @param logsId 售后订单操作主键
      * @return 结果
      */
     int deleteLiveAfterSalesLogsByLogsId(Long logsId);
+
+    List<LiveAfterSalesLogs> selectLiveAfterSalesLogsByAfterId(Long id);
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/live/service/ILiveOrderItemService.java

@@ -67,4 +67,6 @@ public interface ILiveOrderItemService {
     List<LiveOrderItemListUVO> selectLiveOrderItemListUVOByOrderId(Long orderId);
 
     int updateFsStoreOrderCode(Long orderId, String orderSn);
+
+    List<LiveOrderItem> selectCheckedByOrderId(Long id);
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/live/service/ILiveOrderLogsService.java

@@ -3,6 +3,7 @@ package com.fs.live.service;
 import java.util.List;
 
 import com.fs.live.domain.LiveOrderLogs;
+import com.fs.store.domain.FsStoreOrderStatus;
 
 /**
  * 订单操作记录Service接口
@@ -60,4 +61,6 @@ public interface ILiveOrderLogsService {
     int deleteLiveOrderLogsByLogsId(String logsId);
 
     int create(Long orderId, String value, String desc);
+
+    List<LiveOrderLogs> selectLiveOrderLogsByOrderId(Long orderId);
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/live/service/ILiveOrderPaymentService.java

@@ -63,4 +63,6 @@ public interface ILiveOrderPaymentService {
     List<LiveOrderPaymentVo> selectLiveOrderPaymentVoList(LiveOrderPaymentVo liveOrderPayment);
 
     LiveOrderPaymentVo selectLiveOrderPaymentByPaymentIdNew(Long paymentId);
+
+    List<LiveOrderPayment> selectLiveOrderPaymentByOrderId(Long id);
 }

+ 11 - 0
fs-service-system/src/main/java/com/fs/live/service/ILiveOrderService.java

@@ -11,6 +11,7 @@ import com.fs.live.vo.LiveOrderVo;
 import com.fs.store.domain.FsStoreOrder;
 import com.fs.store.dto.FsStoreOrderComputeDTO;
 import com.fs.store.dto.LiveOrderComputeDTO;
+import com.fs.store.param.FsStoreOrderAddTuiMoneyParam;
 import com.fs.store.param.LiveOrderComputedParam;
 
 import java.text.ParseException;
@@ -179,4 +180,14 @@ public interface ILiveOrderService {
     LiveOrderComputeDTO computedOrder(long l, LiveOrderComputedParam param);
 
     LiveOrder selectOrderIdByOrderCode(String platformCode);
+
+    R auditPayRemain(Long orderId);
+
+    R addTuiMoney(FsStoreOrderAddTuiMoneyParam param);
+
+    R updateExpress(Long orderId);
+
+    LiveOrder selectLiveOrderByExtendId(String extendOrderId);
+
+    R editTuiMoney(Long orderId);
 }

+ 8 - 2
fs-service-system/src/main/java/com/fs/live/service/impl/LiveAfterSalesItemServiceImpl.java

@@ -7,6 +7,7 @@ import com.fs.live.service.ILiveAfterSalesItemService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -17,8 +18,8 @@ import java.util.List;
  */
 @Service
 public class LiveAfterSalesItemServiceImpl  implements ILiveAfterSalesItemService {
-    
-    @Autowired 
+
+    @Autowired
     private LiveAfterSalesItemMapper baseMapper;
 
     /**
@@ -92,4 +93,9 @@ public class LiveAfterSalesItemServiceImpl  implements ILiveAfterSalesItemServic
     {
         return baseMapper.deleteLiveAfterSalesItemById(id);
     }
+
+    @Override
+    public List<LiveAfterSalesItem> selectLiveAfterSalesItemByAfterId(Long afterId) {
+        return baseMapper.selectLiveAfterSalesItemByAfterId(afterId);
+    }
 }

+ 6 - 0
fs-service-system/src/main/java/com/fs/live/service/impl/LiveAfterSalesLogsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.live.service.impl;
 
+import java.util.Collections;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -90,4 +91,9 @@ public class LiveAfterSalesLogsServiceImpl implements ILiveAfterSalesLogsService
     {
         return baseMapper.deleteLiveAfterSalesLogsByLogsId(logsId);
     }
+
+    @Override
+    public List<LiveAfterSalesLogs> selectLiveAfterSalesLogsByAfterId(Long afterId) {
+        return baseMapper.selectLiveAfterSalesLogsByAfterId(afterId);
+    }
 }

+ 6 - 0
fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderItemServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.live.service.impl;
 
+import java.util.Collections;
 import java.util.List;
 
 import com.fs.live.domain.LiveOrder;
@@ -109,4 +110,9 @@ public class LiveOrderItemServiceImpl implements ILiveOrderItemService {
     public int updateFsStoreOrderCode(Long orderId, String orderSn) {
         return baseMapper.updateFsStoreOrderCode(orderId,orderSn);
     }
+
+    @Override
+    public List<LiveOrderItem> selectCheckedByOrderId(Long id) {
+        return baseMapper.selectCheckedByOrderId(id);
+    }
 }

+ 7 - 0
fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderLogsServiceImpl.java

@@ -1,8 +1,10 @@
 package com.fs.live.service.impl;
 
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 
+import com.fs.store.domain.FsStoreOrderStatus;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.live.mapper.LiveOrderLogsMapper;
@@ -101,4 +103,9 @@ public class LiveOrderLogsServiceImpl implements ILiveOrderLogsService {
         liveOrderLogs.setChangeTime(new Date());
         return baseMapper.insertLiveOrderLogs(liveOrderLogs);
     }
+
+    @Override
+    public List<LiveOrderLogs> selectLiveOrderLogsByOrderId(Long orderId) {
+        return baseMapper.selectLiveOrderLogsByOrderId(orderId);
+    }
 }

+ 5 - 0
fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderPaymentServiceImpl.java

@@ -57,6 +57,11 @@ public class LiveOrderPaymentServiceImpl implements ILiveOrderPaymentService {
         return baseMapper.selectLiveOrderPaymentByPaymentIdNew(paymentId);
     }
 
+    @Override
+    public List<LiveOrderPayment> selectLiveOrderPaymentByOrderId(Long id) {
+        return baseMapper.selectLiveOrderPaymentByOrderId(id);
+    }
+
     /**
      * 新增支付明细
      *

+ 151 - 0
fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java

@@ -34,7 +34,9 @@ import com.fs.common.utils.*;
 import com.fs.common.utils.ip.IpUtils;
 import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyDept;
+import com.fs.company.domain.CompanyMoneyLogs;
 import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyMoneyLogsMapper;
 import com.fs.company.service.ICompanyDeptService;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
@@ -71,6 +73,7 @@ import com.fs.store.mapper.FsStoreDeliversMapper;
 import com.fs.store.mapper.FsStoreProductAttrValueMapper;
 import com.fs.store.mapper.FsUserMapper;
 import com.fs.store.mapper.FsWarehousesMapper;
+import com.fs.store.param.FsStoreOrderAddTuiMoneyParam;
 import com.fs.store.param.LiveOrderComputedParam;
 import com.fs.store.service.*;
 import com.fs.store.service.channel.PaymentHandler;
@@ -215,6 +218,9 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
     @Autowired
     private ILiveUserFirstEntryService liveUserFirstEntryService;
 
+    @Autowired
+    private CompanyMoneyLogsMapper moneyLogsMapper;
+
 
     public LiveOrderServiceImpl(RedisCache redisCache) {
         this.redisCache = redisCache;
@@ -1333,6 +1339,151 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         return baseMapper.selectFsUserVipOrderByOrderCode(platformCode);
     }
 
+    @Override
+    public R auditPayRemain(Long orderId) {
+        return R.ok();
+//        LiveOrder order = liveOrderMapper.selectLiveOrderByOrderId(String.valueOf(orderId));
+//        if(order.getIsPayRemain()==1){
+//            FsStoreOrder storeOrder = new FsStoreOrder();
+//            storeOrder.setId(order.getId());
+//            storeOrder.setIsPayRemain(2);
+//            storeOrder.setPayType("1");
+//            storeOrder.setPayMoney(order.getPayPrice());
+//            storeOrder.setPayDelivery(new BigDecimal(0));
+//            fsStoreOrderMapper.updateFsStoreOrder(storeOrder);
+//            return R.ok("操作成功");
+//        }
+//        else{
+//            return R.error("非法操作");
+//        }
+//        return null;
+    }
+
+    @Override
+    public R addTuiMoney(FsStoreOrderAddTuiMoneyParam param) {
+        LiveOrder order = liveOrderMapper.selectLiveOrderByOrderId(String.valueOf(param.getOrderId()));
+        if(order.getStatus()!=OrderInfoEnum.STATUS_3.getValue()) {
+            return R.error("订单未完成,不能分佣金");
+        }
+        if (order.getCompanyId() != null && order.getCompanyId() > 0 && order.getPayDelivery().compareTo(new BigDecimal(0)) == 0) {
+            if (order.getTuiMoneyStatus() == null || order.getTuiMoneyStatus() != 1) {
+                companyService.addCompanyTuiLiveMoney(order);
+                return R.ok();
+            }
+            else{
+                return R.error("此订单已分佣,不能重复分佣");
+            }
+        }
+        else{
+            return R.error("此订单不能手动分佣");
+        }
+    }
+
+    @Override
+    public R updateExpress(Long orderId) {
+        LiveOrder order = liveOrderMapper.selectLiveOrderByOrderId(String.valueOf(orderId));
+        if(order.getStatus()!=1){
+            return R.error("只有待发货状态可以同步");
+        }
+        if(order.getExtendOrderId()==null){
+            return R.error("未生成管易云订单");
+        }
+        ErpOrderQueryRequert request = new ErpOrderQueryRequert();
+        request.setCode(order.getExtendOrderId());
+        // 根据仓库code找erp
+        if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
+        ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+        if(response.getOrders()!=null&&response.getOrders().size()>0){
+            for(ErpOrderQuery orderQuery : response.getOrders()){
+                if(orderQuery.getDeliverys()!=null&&orderQuery.getDeliverys().size()>0){
+                    for(ErpDeliverys delivery:orderQuery.getDeliverys()){
+                        if(delivery.getDelivery()&& StringUtils.isNotEmpty(delivery.getMail_no())){
+                            LiveOrder map=new LiveOrder();
+                            map.setStatus(OrderInfoEnum.STATUS_2.getValue());
+                            map.setOrderId(order.getOrderId());
+                            map.setDeliverySn(response.getOrders().get(0).getDeliverys().get(0).getMail_no());
+                            liveOrderMapper.updateLiveOrder(map);
+                            liveOrderLogsService.create(order.getOrderId(), OrderLogEnum.DELIVERY_GOODS.getValue(),
+                                    OrderLogEnum.DELIVERY_GOODS.getDesc());
+                            TemplateBean templateBean = TemplateBean.builder()
+                                    .orderId(order.getOrderId().toString())
+                                    .orderCode(order.getOrderCode().toString())
+                                    .deliveryId(order.getDeliverySn())
+                                    .deliveryName(order.getDeliveryName())
+                                    .userId(Long.valueOf(order.getUserId()))
+                                    .templateType(TemplateListenEnum.TYPE_2.getValue())
+                                    .build();
+                            publisher.publishEvent(new TemplateEvent(this, templateBean));
+                            return R.ok();
+                        }
+                    }
+
+                }
+            }
+        }
+        return R.error("未生成运单信息");
+    }
+
+    @Override
+    public LiveOrder selectLiveOrderByExtendId(String extendOrderId) {
+        return baseMapper.selectLiveOrderByExtendId(extendOrderId);
+    }
+
+    @Override
+    @Transactional
+    public R editTuiMoney(Long orderId) {
+        LiveOrder order= liveOrderMapper.selectLiveOrderByOrderId(String.valueOf(orderId));
+        if(order.getTuiMoney()!=null&&order.getTuiMoney().compareTo(new BigDecimal(0))==1){
+            if(order.getTuiMoneyStatus().equals(0)){
+                order.setTuiMoneyStatus(1);
+                liveOrderLogsService.create(order.getOrderId(), OrderLogEnum.UNLOCK_TUI_MONEY.getValue(),
+                        OrderLogEnum.UNLOCK_TUI_MONEY.getDesc());
+                //写入公司余额
+                Company company=companyService.selectCompanyById(order.getCompanyId());
+                company.setMoney(company.getMoney().add(order.getTuiMoney()));
+                companyService.updateCompany(company);
+                //写入日志
+                CompanyMoneyLogs log=new CompanyMoneyLogs();
+                log.setCompanyId(order.getCompanyId());
+                log.setRemark("订单佣金解冻");
+                log.setMoney(order.getTuiMoney());
+                log.setLogsType(4);
+                log.setBalance(company.getMoney());
+                log.setCreateTime(new Date());
+                log.setBusinessId(order.getOrderId().toString());
+                moneyLogsMapper.insertCompanyMoneyLogs(log);
+                liveOrderMapper.updateLiveOrder(order);
+                return R.ok("解冻成功");
+            }
+            else{
+                order.setTuiMoneyStatus(0);
+                //写入公司余额
+                Company company=companyService.selectCompanyById(order.getCompanyId());
+                company.setMoney(company.getMoney().subtract(order.getTuiMoney()));
+                companyService.updateCompany(company);
+                //写入日志
+                CompanyMoneyLogs log=new CompanyMoneyLogs();
+                log.setCompanyId(order.getCompanyId());
+                log.setRemark("订单佣金冻结");
+                log.setMoney(order.getTuiMoney().multiply(new BigDecimal(-1)));
+                log.setLogsType(5);
+                log.setBalance(company.getMoney());
+                log.setCreateTime(new Date());
+                log.setBusinessId(order.getOrderId().toString());
+                moneyLogsMapper.insertCompanyMoneyLogs(log);
+                liveOrderMapper.updateLiveOrder(order);
+                return R.ok("updateLiveOrder");
+            }
+
+        }
+        else {
+            return R.error("推广佣金不存在");
+        }
+    }
+
     private BigDecimal handleDeliveryMoney(Long cityId, FsStoreProduct fsStoreProduct, String totalNumSize) {
         BigDecimal storePostage = BigDecimal.ZERO;
         List<Long> citys = new ArrayList<>();

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/service/IFsExpressService.java

@@ -81,4 +81,6 @@ public interface IFsExpressService
     List<ExpressVO> getExpressInfoAPI(ExpressParam param);
 
     R getExpressByDeliverId(FsStoreOrderExpressParam param);
+
+    R getLiveExpressByDeliverId(FsStoreOrderExpressParam param);
 }

+ 37 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsExpressServiceImpl.java

@@ -21,6 +21,8 @@ import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.PhoneUtils;
 import com.fs.express.enums.TaskStatusEnum;
+import com.fs.live.domain.LiveOrder;
+import com.fs.live.mapper.LiveOrderMapper;
 import com.fs.store.domain.FsOrderExpressPush;
 import com.fs.store.domain.FsStoreDelivers;
 import com.fs.store.domain.FsStoreOrder;
@@ -76,6 +78,8 @@ public class FsExpressServiceImpl implements IFsExpressService
     private IFsExpressService expressService;
     @Autowired
     private FsStoreDeliversMapper fsStoreDeliversMapper;
+    @Autowired
+    private LiveOrderMapper liveOrderMapper;
 
 
     /**
@@ -351,6 +355,39 @@ public class FsExpressServiceImpl implements IFsExpressService
         return R.ok().put("data",dto);
     }
 
+    @Override
+    public R getLiveExpressByDeliverId(FsStoreOrderExpressParam param) {
+        // 添加日志 - 开始
+        Logger logger = LoggerFactory.getLogger(this.getClass());
+        logger.info("查询物流信息开始,参数:{}", param);
+        LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderId(String.valueOf(param.getOrderId()));
+        // 添加日志 - 订单信息
+        logger.info("查询到订单信息:{}", liveOrder);
+        //顺丰轨迹查询处理
+        String lastFourNumber = "";
+        if (StringUtils.equals(param.getDeliverSn(),ShipperCodeEnum.SF.getValue())) {
+            lastFourNumber = PhoneUtils.getLastFourNum(liveOrder.getUserPhone());
+            // 添加日志 - 顺丰单号
+            logger.info("顺丰单号处理,获取用户手机号后四位:{}", lastFourNumber);
+        }
+        ExpressInfoDTO dto = null;
+        try {
+            dto = expressService.getExpressInfo(liveOrder.getOrderCode(),
+                    param.getDeliverSn(),
+                    param.getDeliverId(),
+                    lastFourNumber);
+            // 添加日志 - 成功获取物流信息
+            logger.info("成功获取物流信息,订单号:{},物流单号:{}, 快递公司ID:{}, 返回数据:{}", liveOrder.getOrderCode(), param.getDeliverSn(),param.getDeliverId(), dto);
+        } catch (Exception e) {
+            // 添加日志 - 异常
+            logger.error("获取物流信息异常,订单号:{},物流单号:{},快递公司ID:{}", liveOrder.getOrderCode(), param.getDeliverSn(), param.getDeliverId(), e);
+        }
+        // 添加日志 - 结束
+        logger.info("查询物流信息结束,订单号:{}", param.getOrderId());
+
+        return R.ok().put("data",dto);
+    }
+
     /**
      * Sign签名生成
      *

+ 7 - 3
fs-service-system/src/main/resources/mapper/live/LiveOrderMapper.xml

@@ -76,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="productIntroduce"    column="product_introduce"    />
         <result property="companyUserName"    column="company_user_name"    />
         <result property="companyName"    column="company_name"    />
+        <result property="customerId"    column="customer_id"    />
     </resultMap>
 
     <sql id="selectLiveOrderVo">
@@ -90,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             a.pay_remain,	a.delivery_status,	a.delivery_pay_status,	a.delivery_pay_time,	a.delivery_type,
             a.delivery_pay_money,	a.delivery_import_time,	a.delivery_send_time,	a.is_after_sales,	a.dept_id,
             a.channel,	a.source,	a.bill_price,	a.total_postage,	a.pay_postage,	a.gain_integral,
-            a.use_integral,	a.pay_integral,	a.back_integral,	a.is_edit_money,	b.product_info as product_introduce
+            a.use_integral,	a.pay_integral,	a.back_integral,	a.is_edit_money,	b.product_info as product_introduce,a.customer_id
         FROM
             live_order a LEFT JOIN fs_store_product b ON a.product_id = b.product_id
     </sql>
@@ -107,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         a.pay_remain,	a.delivery_status,	a.delivery_pay_status,	a.delivery_pay_time,	a.delivery_type,
         a.delivery_pay_money,	a.delivery_import_time,	a.delivery_send_time,	a.is_after_sales,	a.dept_id,
         a.channel,	a.source,	a.bill_price,	a.total_postage,	a.pay_postage,	a.gain_integral,
-        a.use_integral,	a.pay_integral,	a.back_integral,	a.is_edit_money,	b.product_info as product_introduce
+        a.use_integral,	a.pay_integral,	a.back_integral,	a.is_edit_money,	b.product_info as product_introduce,a.customer_id
         FROM
         live_order a LEFT JOIN fs_store_product b ON a.product_id = b.product_id
         left join company_user cu on a.company_user_id = cu.user_id
@@ -193,7 +194,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             a.pay_remain,	a.delivery_status,	a.delivery_pay_status,	a.delivery_pay_time,	a.delivery_type,
             a.delivery_pay_money,	a.delivery_import_time,	a.delivery_send_time,	a.is_after_sales,	a.dept_id,
             a.channel,	a.source,	a.bill_price,	a.total_postage,	a.pay_postage,	a.gain_integral,
-            a.use_integral,	a.pay_integral,	a.back_integral,	a.is_edit_money,	b.product_info as product_introduce
+            a.use_integral,	a.pay_integral,	a.back_integral,	a.is_edit_money,	b.product_info as product_introduce,a.customer_id
         FROM
             live_order a LEFT JOIN fs_store_product b ON a.product_id = b.product_id
                          left join company_user cu on a.company_user_id = cu.user_id
@@ -272,6 +273,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="backIntegral != null">back_integral,</if>
             <if test="isEditMoney != null">is_edit_money,</if>
             <if test="productId != null">product_id,</if>
+            <if test="customerId != null">customer_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="liveId != null">#{liveId},</if>
@@ -341,6 +343,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="backIntegral != null">#{backIntegral},</if>
             <if test="isEditMoney != null">#{isEditMoney},</if>
             <if test="productId != null">#{productId},</if>
+            <if test="customerId != null">#{customerId},</if>
          </trim>
     </insert>
 
@@ -413,6 +416,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="payIntegral != null">pay_integral = #{payIntegral},</if>
             <if test="backIntegral != null">back_integral = #{backIntegral},</if>
             <if test="isEditMoney != null">is_edit_money = #{isEditMoney},</if>
+            <if test="customerId != null">customer_id = #{customerId},</if>
         </trim>
         where order_id = #{orderId}
     </update>