Просмотр исходного кода

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_his_scrm_java

caoliqin 1 неделя назад
Родитель
Сommit
cbd13f357d
48 измененных файлов с 1159 добавлено и 151 удалено
  1. 66 0
      fs-admin/src/main/java/com/fs/hisStore/controller/FsOrderRefundReasonController.java
  2. 82 0
      fs-admin/src/main/java/com/fs/hisStore/controller/FsRefundReasonController.java
  3. 99 49
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreAfterSalesScrmController.java
  4. 11 1
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreOrderScrmController.java
  5. 73 44
      fs-admin/src/main/java/com/fs/live/controller/LiveAfterSalesController.java
  6. 12 2
      fs-admin/src/main/java/com/fs/live/controller/LiveOrderController.java
  7. 17 44
      fs-company/src/main/java/com/fs/company/controller/store/FsStoreOrderController.java
  8. 2 0
      fs-framework/src/main/java/com/fs/framework/web/service/UserDetailsServiceImpl.java
  9. 26 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsOrderRefundReason.java
  10. 28 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsRefundReason.java
  11. 12 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsStoreAfterSalesScrm.java
  12. 21 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsOrderRefundReasonMapper.java
  13. 32 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsRefundReasonMapper.java
  14. 5 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreAfterSalesScrmMapper.java
  15. 4 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderItemScrmMapper.java
  16. 10 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java
  17. 3 0
      fs-service/src/main/java/com/fs/hisStore/param/FsStoreAfterSalesRefundParam.java
  18. 19 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsOrderRefundReasonService.java
  19. 24 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsRefundReasonService.java
  20. 2 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsStoreAfterSalesScrmService.java
  21. 47 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsOrderRefundReasonServiceImpl.java
  22. 90 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsRefundReasonServiceImpl.java
  23. 28 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreAfterSalesScrmServiceImpl.java
  24. 23 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsRefundReasonTreeVO.java
  25. 14 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreAfterSalesVO.java
  26. 9 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderExportVO.java
  27. 11 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportRefundZMVO.java
  28. 8 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportVO.java
  29. 9 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportZMVO.java
  30. 8 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderVO.java
  31. 19 0
      fs-service/src/main/java/com/fs/live/domain/LiveAfterSales.java
  32. 5 1
      fs-service/src/main/java/com/fs/live/mapper/LiveAfterSalesMapper.java
  33. 6 0
      fs-service/src/main/java/com/fs/live/param/LiveAfterSalesRefundParam.java
  34. 2 0
      fs-service/src/main/java/com/fs/live/service/ILiveAfterSalesService.java
  35. 32 0
      fs-service/src/main/java/com/fs/live/service/impl/LiveAfterSalesServiceImpl.java
  36. 15 0
      fs-service/src/main/java/com/fs/live/vo/LiveAfterSalesVo.java
  37. 9 0
      fs-service/src/main/java/com/fs/live/vo/LiveOrderExportVO.java
  38. 8 0
      fs-service/src/main/java/com/fs/live/vo/LiveOrderVO.java
  39. 12 0
      fs-service/src/main/java/com/fs/live/vo/LiveOrderVoZm.java
  40. 1 1
      fs-service/src/main/resources/mapper/crm/CrmCustomerMapper.xml
  41. 74 0
      fs-service/src/main/resources/mapper/hisStore/FsOrderRefundReasonMapper.xml
  42. 114 0
      fs-service/src/main/resources/mapper/hisStore/FsRefundReasonMapper.xml
  43. 17 1
      fs-service/src/main/resources/mapper/hisStore/FsStoreAfterSalesScrmMapper.xml
  44. 25 1
      fs-service/src/main/resources/mapper/live/LiveAfterSalesMapper.xml
  45. 21 2
      fs-service/src/main/resources/mapper/live/LiveOrderMapper.xml
  46. 1 1
      fs-service/src/main/resources/mapper/wx/WxSopLogsMapper.xml
  47. 2 2
      fs-service/src/main/resources/mapper/wx/WxSopUserInfoMapper.xml
  48. 1 1
      fs-service/src/main/resources/mapper/wx/WxSopUserMapper.xml

+ 66 - 0
fs-admin/src/main/java/com/fs/hisStore/controller/FsOrderRefundReasonController.java

@@ -0,0 +1,66 @@
+package com.fs.hisStore.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.enums.BusinessType;
+import com.fs.hisStore.domain.FsOrderRefundReason;
+import com.fs.hisStore.service.IFsOrderRefundReasonService;
+
+@RestController
+@RequestMapping("/store/store/orderRefundReason")
+public class FsOrderRefundReasonController extends BaseController {
+
+    @Autowired
+    private IFsOrderRefundReasonService fsOrderRefundReasonService;
+
+    @PreAuthorize("@ss.hasPermi('store:orderRefundReason:list')")
+    @GetMapping("/list")
+    public AjaxResult list(FsOrderRefundReason fsOrderRefundReason) {
+        List<FsOrderRefundReason> list = fsOrderRefundReasonService.selectFsOrderRefundReasonList(fsOrderRefundReason);
+        return AjaxResult.success(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:orderRefundReason:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(fsOrderRefundReasonService.selectFsOrderRefundReasonById(id));
+    }
+
+    @GetMapping(value = "/getByOrderCode")
+    public AjaxResult getByOrderCode(String orderCode) {
+        return AjaxResult.success(fsOrderRefundReasonService.selectByOrderCode(orderCode));
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:orderRefundReason:add')")
+    @Log(title = "订单退款原因关联", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsOrderRefundReason fsOrderRefundReason) {
+        return toAjax(fsOrderRefundReasonService.insertFsOrderRefundReason(fsOrderRefundReason));
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:orderRefundReason:edit')")
+    @Log(title = "订单退款原因关联", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsOrderRefundReason fsOrderRefundReason) {
+        return toAjax(fsOrderRefundReasonService.updateFsOrderRefundReason(fsOrderRefundReason));
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:orderRefundReason:remove')")
+    @Log(title = "订单退款原因关联", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(fsOrderRefundReasonService.deleteFsOrderRefundReasonByIds(ids));
+    }
+}

+ 82 - 0
fs-admin/src/main/java/com/fs/hisStore/controller/FsRefundReasonController.java

@@ -0,0 +1,82 @@
+package com.fs.hisStore.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+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.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.hisStore.domain.FsRefundReason;
+import com.fs.hisStore.service.IFsRefundReasonService;
+import com.fs.hisStore.vo.FsRefundReasonTreeVO;
+
+@RestController
+@RequestMapping("/store/store/refundReason")
+public class FsRefundReasonController extends BaseController {
+
+    @Autowired
+    private IFsRefundReasonService fsRefundReasonService;
+
+    @PreAuthorize("@ss.hasPermi('store:refundReason:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FsRefundReason fsRefundReason) {
+        startPage();
+        List<FsRefundReason> list = fsRefundReasonService.selectFsRefundReasonList(fsRefundReason);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:refundReason:list')")
+    @GetMapping("/children/{parentId}")
+    public AjaxResult getChildren(@PathVariable("parentId") Long parentId) {
+        List<FsRefundReason> list = fsRefundReasonService.selectChildrenByParentId(parentId);
+        return AjaxResult.success(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:refundReason:list')")
+    @GetMapping("/tree")
+    public AjaxResult tree() {
+        List<FsRefundReasonTreeVO> tree = fsRefundReasonService.selectFsRefundReasonTree();
+        return AjaxResult.success(tree);
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:refundReason:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(fsRefundReasonService.selectFsRefundReasonById(id));
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:refundReason:add')")
+    @Log(title = "退款原因管理", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsRefundReason fsRefundReason) {
+        int result = fsRefundReasonService.insertFsRefundReason(fsRefundReason);
+        if (result > 0) {
+            return AjaxResult.success(fsRefundReason.getId());
+        }
+        return AjaxResult.error();
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:refundReason:edit')")
+    @Log(title = "退款原因管理", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsRefundReason fsRefundReason) {
+        return toAjax(fsRefundReasonService.updateFsRefundReason(fsRefundReason));
+    }
+
+    @PreAuthorize("@ss.hasPermi('store:refundReason:remove')")
+    @Log(title = "退款原因管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{id}")
+    public AjaxResult remove(@PathVariable Long id) {
+        return toAjax(fsRefundReasonService.deleteRefundReasonWithChildren(id));
+    }
+}

+ 99 - 49
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreAfterSalesScrmController.java

@@ -16,10 +16,8 @@ import com.fs.config.cloud.CloudHostProper;
 import com.fs.framework.web.service.TokenService;
 import com.fs.his.domain.FsUser;
 import com.fs.his.service.IFsUserService;
-import com.fs.hisStore.domain.FsStoreAfterSalesItemScrm;
-import com.fs.hisStore.domain.FsStoreAfterSalesScrm;
-import com.fs.hisStore.domain.FsStoreAfterSalesStatusScrm;
-import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hisStore.domain.*;
+import com.fs.hisStore.mapper.FsRefundReasonMapper;
 import com.fs.hisStore.param.FsStoreAfterSalesAudit1Param;
 import com.fs.hisStore.param.FsStoreAfterSalesAudit2Param;
 import com.fs.hisStore.param.FsStoreAfterSalesCancelParam;
@@ -39,8 +37,10 @@ import org.springframework.web.bind.annotation.*;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 售后记录Controller
@@ -72,6 +72,10 @@ public class FsStoreAfterSalesScrmController extends BaseController
     @Autowired
     private CloudHostProper cloudHostProper;
 
+
+    @Autowired
+    private FsRefundReasonMapper fsRefundReasonMapper;
+
     /**
      * 查询售后记录列表
      */
@@ -88,6 +92,29 @@ public class FsStoreAfterSalesScrmController extends BaseController
                 vo.setUserPhone(vo.getUserPhone());
             }
         }
+
+        if(!list.isEmpty()){//不为空获取审核信息
+            List<Long> reasonId = list.stream()
+                    .flatMap(vo -> Stream.of(vo.getReasonId1(), vo.getReasonId2()))
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList());
+
+          if(!reasonId.isEmpty()){
+              List<FsRefundReason> refundReasons = fsRefundReasonMapper.getFsRefundReasonList(reasonId);
+              if(!refundReasons.isEmpty()){
+                  Map<Long,String> map = refundReasons.stream().collect(Collectors.toMap(FsRefundReason::getId, FsRefundReason::getReasonName));
+                  list.forEach(vo -> {
+                      if(vo.getReasonId1() != null){
+                          vo.setReasonValue1(map.get(vo.getReasonId1()));
+                      }
+                      if(vo.getReasonId2() != null){
+                          vo.setReasonValue2(map.get(vo.getReasonId2()));
+                      }
+                  });
+              }
+          }
+        }
+
         return getDataTable(list);
     }
 
@@ -109,58 +136,81 @@ public class FsStoreAfterSalesScrmController extends BaseController
         }
 
         List<FsStoreAfterSalesVO> list = fsStoreAfterSalesService.selectFsStoreAfterSalesListVOExport(fsStoreAfterSales);
-        if("北京卓美".equals(signProjectName)){
-            List<FsStoreOrderItemExportRefundZMVO> zmvoList = list.stream()
-                    .map(vo -> {
-                        FsStoreOrderItemExportRefundZMVO zmvo = new FsStoreOrderItemExportRefundZMVO();
-                        try {
-                            zmvo.setPayCode(vo.getPayCode());
-                            zmvo.setOrderCode(vo.getOrderCode());
-                            zmvo.setStatus(vo.getOrderStatus().toString());
-                            zmvo.setUserId(vo.getUserId());
-                            zmvo.setProductName(vo.getProductName());
-                            zmvo.setBarCode(vo.getProductBarCode());
-                            zmvo.setSku(vo.getSku());
-                            zmvo.setNum(vo.getNum());
-                            zmvo.setPrice(vo.getPrice());
-                            zmvo.setCost(vo.getCost());
+        if("北京卓美".equals(signProjectName)) {
+            Map<Long, String> map = null;
+            if (!list.isEmpty()) {//不为空获取审核信息
+                List<Long> reasonId = list.stream()
+                        .flatMap(vo -> Stream.of(vo.getReasonId1(), vo.getReasonId2()))
+                        .filter(Objects::nonNull)
+                        .collect(Collectors.toList());
+                List<FsRefundReason> refundReasons = fsRefundReasonMapper.getFsRefundReasonList(reasonId);
+                if (!refundReasons.isEmpty()) {
+                    map = refundReasons.stream().collect(Collectors.toMap(FsRefundReason::getId, FsRefundReason::getReasonName));
+                }
+
+                List<Long> finalReasonId = reasonId;
+                Map<Long, String> finalMap = map;
+                List<FsStoreOrderItemExportRefundZMVO> zmvoList = list.stream()
+                        .map(vo -> {
+                            FsStoreOrderItemExportRefundZMVO zmvo = new FsStoreOrderItemExportRefundZMVO();
+                            try {
+                                zmvo.setPayCode(vo.getPayCode());
+                                zmvo.setOrderCode(vo.getOrderCode());
+                                zmvo.setStatus(vo.getOrderStatus().toString());
+                                zmvo.setUserId(vo.getUserId());
+                                zmvo.setProductName(vo.getProductName());
+                                zmvo.setBarCode(vo.getProductBarCode());
+                                zmvo.setSku(vo.getSku());
+                                zmvo.setNum(vo.getNum());
+                                zmvo.setPrice(vo.getPrice());
+                                zmvo.setCost(vo.getCost());
 //                            zmvo.setFPrice("");
-                            zmvo.setPayMoney(vo.getPayMoney());
-                            zmvo.setPayPostage(vo.getTotalPostage());
-                            zmvo.setCateName(vo.getCateName());
-                            zmvo.setRealName(vo.getUserName());
-                            zmvo.setUserPhone(vo.getUserPhone());
-                            zmvo.setUserAddress(vo.getUserAddress());
-                            zmvo.setCreateTime(vo.getOrderCreateTime());
-                            zmvo.setPayTime(vo.getOrderPayTime());
-                            zmvo.setDeliverySn(vo.getOrderDeliverySn());
-                            zmvo.setDeliveryName(vo.getOrderDeliveryName());
-                            zmvo.setDeliveryId(vo.getOrderDeliveryId());
-                            zmvo.setCompanyName(vo.getCompanyName());
-                            zmvo.setCompanyUserNickName(vo.getCompanyUserNickName());
-                            zmvo.setRefundTime(vo.getCreateTime());
+                                zmvo.setPayMoney(vo.getPayMoney());
+                                zmvo.setPayPostage(vo.getTotalPostage());
+                                zmvo.setCateName(vo.getCateName());
+                                zmvo.setRealName(vo.getUserName());
+                                zmvo.setUserPhone(vo.getUserPhone());
+                                zmvo.setUserAddress(vo.getUserAddress());
+                                zmvo.setCreateTime(vo.getOrderCreateTime());
+                                zmvo.setPayTime(vo.getOrderPayTime());
+                                zmvo.setDeliverySn(vo.getOrderDeliverySn());
+                                zmvo.setDeliveryName(vo.getOrderDeliveryName());
+                                zmvo.setDeliveryId(vo.getOrderDeliveryId());
+                                zmvo.setCompanyName(vo.getCompanyName());
+                                zmvo.setCompanyUserNickName(vo.getCompanyUserNickName());
+                                zmvo.setRefundTime(vo.getCreateTime());
 //                            zmvo.setAfterSalesNumber
-                            zmvo.setRefundMoney(vo.getRefundAmount());
-                            zmvo.setBankTransactionId(vo.getBankTransactionId());
-                            zmvo.setReasons(vo.getReasons());
-                            zmvo.setExplains(vo.getExplains());
-
-                        } catch (Exception e) {
-                            // 处理异常
-                            e.printStackTrace();
-                        }
-                        return zmvo;
-                    })
-                    .collect(Collectors.toList());
-            for (FsStoreOrderItemExportRefundZMVO vo : zmvoList){
-                vo.setUserPhone(ParseUtils.parsePhone(vo.getUserPhone()));
+                                zmvo.setRefundMoney(vo.getRefundAmount());
+                                zmvo.setBankTransactionId(vo.getBankTransactionId());
+                                zmvo.setReasons(vo.getReasons());
+                                zmvo.setExplains(vo.getExplains());
+                                if (vo.getReasonId1() != null) {
+                                    zmvo.setReasonValue1(finalMap.get(vo.getReasonId1()));
+                                }
+                                if (vo.getReasonId2() != null) {
+                                    zmvo.setReasonValue2(finalMap.get(vo.getReasonId2()));
+                                }
+                                if (vo.getAuditRemark() != null) {
+                                    zmvo.setAuditRemark(vo.getAuditRemark());
+                                }
+                            } catch (Exception e) {
+                                // 处理异常
+                                e.printStackTrace();
+                            }
+                            return zmvo;
+                        })
+                        .collect(Collectors.toList());
+                for (FsStoreOrderItemExportRefundZMVO vo : zmvoList) {
+                    vo.setUserPhone(ParseUtils.parsePhone(vo.getUserPhone()));
+                }
+                ExcelUtil<FsStoreOrderItemExportRefundZMVO> util = new ExcelUtil<FsStoreOrderItemExportRefundZMVO>(FsStoreOrderItemExportRefundZMVO.class);
+                return util.exportExcel(zmvoList, "退款订单导出");
             }
-            ExcelUtil<FsStoreOrderItemExportRefundZMVO> util = new ExcelUtil<FsStoreOrderItemExportRefundZMVO>(FsStoreOrderItemExportRefundZMVO.class);
-            return util.exportExcel(zmvoList, "退款订单导出");
         }
         for (FsStoreAfterSalesVO vo : list){
             vo.setUserPhone(ParseUtils.parsePhone(vo.getUserPhone()));
         }
+
         ExcelUtil<FsStoreAfterSalesVO> util = new ExcelUtil<FsStoreAfterSalesVO>(FsStoreAfterSalesVO.class);
         return util.exportExcel(list, "退款订单导出");
     }

+ 11 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreOrderScrmController.java

@@ -59,6 +59,7 @@ import com.fs.hisStore.domain.FsStoreOrderItemScrm;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsStoreOrderStatusScrm;
 import com.fs.hisStore.domain.FsStorePaymentScrm;
+import com.fs.hisStore.domain.FsStoreAfterSalesScrm;
 import com.fs.his.dto.ExpressInfoDTO;
 import com.fs.hisStore.dto.FsStoreOrderPayDeliveryDTO;
 import com.fs.hisStore.dto.StoreOrderExpressExportDTO;
@@ -173,6 +174,9 @@ public class FsStoreOrderScrmController extends BaseController {
     @Autowired
     private ICompanyService companyService;
 
+    @Autowired
+    private IFsStoreAfterSalesScrmService fsStoreAfterSalesService;
+
     private IErpOrderService getErpService(){
         //判断是否开启erp
         IErpOrderService erpOrderService = null;
@@ -716,8 +720,14 @@ public class FsStoreOrderScrmController extends BaseController {
         }
 
         List<FsStoreOrderAuditLogVO> auditLogs = orderAuditLogService.selectStoreOrderAuditLogVOByOrderId(order.getId());
+
+        FsStoreAfterSalesScrm afterSales = null;
+        if (order.getStatus() != null && (order.getStatus() == -1 || order.getStatus() == -2)) {
+            afterSales = fsStoreAfterSalesService.selectFsStoreAfterSalesByOrderCode(order.getOrderCode());
+        }
+
         return R.ok().put("order", order).put("items", items).put("logs", logs).put("user", user).put("payments",payments).put("tuiMoneyLogs",tuiMoneyLogs)
-                .put("auditLogs",auditLogs);
+                .put("auditLogs",auditLogs).put("afterSales", afterSales);
     }
 
     @GetMapping(value = "/queryAddress/{id}")

+ 73 - 44
fs-admin/src/main/java/com/fs/live/controller/LiveAfterSalesController.java

@@ -16,6 +16,8 @@ import com.fs.his.domain.FsStoreAfterSalesLogs;
 import com.fs.his.domain.FsUser;
 import com.fs.his.enums.FsStoreAfterSalesStatusEnum;
 import com.fs.his.service.IFsUserService;
+import com.fs.hisStore.domain.FsRefundReason;
+import com.fs.hisStore.mapper.FsRefundReasonMapper;
 import com.fs.hisStore.vo.FsStoreOrderItemExportRefundZMVO;
 import com.fs.live.domain.LiveAfterSales;
 import com.fs.live.domain.LiveAfterSalesItem;
@@ -38,7 +40,10 @@ import org.springframework.web.bind.annotation.*;
 
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 售后记录Controller
@@ -66,6 +71,8 @@ public class LiveAfterSalesController extends BaseController
     @Value("${cloud_host.company_name}")
     private String signProjectName;
 
+    @Autowired
+    private FsRefundReasonMapper fsRefundReasonMapper;
 
     /**
      * 获取售后记录详细信息
@@ -117,53 +124,75 @@ public class LiveAfterSalesController extends BaseController
         PageHelper.clearPage();
         PageHelper.startPage(1, 10000, "");
         List<LiveAfterSalesVo> list = liveAfterSalesService.selectLiveAfterSalesVoListExport(liveAfterSales);
-        if("北京卓美".equals(signProjectName)){
-            List<FsStoreOrderItemExportRefundZMVO> zmvoList = list.stream()
-                    .map(vo -> {
-                        FsStoreOrderItemExportRefundZMVO zmvo = new FsStoreOrderItemExportRefundZMVO();
-                        try {
-                            zmvo.setPayCode(vo.getPayCode());
-                            zmvo.setOrderCode(vo.getOrderCode());
-                            zmvo.setStatus(vo.getOrderStatus().toString());
-                            zmvo.setUserId(vo.getUserId());
-                            zmvo.setProductName(vo.getProductName());
-                            zmvo.setBarCode(vo.getProductBarCode());
-                            zmvo.setSku(vo.getSku());
-                            zmvo.setNum(vo.getNum());
-                            zmvo.setPrice(vo.getPrice());
-                            zmvo.setCost(vo.getCost());
+        if("北京卓美".equals(signProjectName)) {
+            Map<Long, String> map = null;
+            if (!list.isEmpty()) {//不为空获取审核信息
+                List<Long> reasonId = list.stream()
+                        .flatMap(vo -> Stream.of(vo.getReasonId1(), vo.getReasonId2()))
+                        .filter(Objects::nonNull)
+                        .collect(Collectors.toList());
+                List<FsRefundReason> refundReasons = fsRefundReasonMapper.getFsRefundReasonList(reasonId);
+                if (!refundReasons.isEmpty()) {
+                    map = refundReasons.stream().collect(Collectors.toMap(FsRefundReason::getId, FsRefundReason::getReasonName));
+                }
+
+                Map<Long, String> finalMap = map;
+                List<FsStoreOrderItemExportRefundZMVO> zmvoList = list.stream()
+                        .map(vo -> {
+                            FsStoreOrderItemExportRefundZMVO zmvo = new FsStoreOrderItemExportRefundZMVO();
+                            try {
+                                zmvo.setPayCode(vo.getPayCode());
+                                zmvo.setOrderCode(vo.getOrderCode());
+                                zmvo.setStatus(vo.getOrderStatus().toString());
+                                zmvo.setUserId(vo.getUserId());
+                                zmvo.setProductName(vo.getProductName());
+                                zmvo.setBarCode(vo.getProductBarCode());
+                                zmvo.setSku(vo.getSku());
+                                zmvo.setNum(vo.getNum());
+                                zmvo.setPrice(vo.getPrice());
+                                zmvo.setCost(vo.getCost());
 //                            zmvo.setFPrice("");
-                            zmvo.setPayMoney(vo.getPayMoney());
-                            zmvo.setPayPostage(vo.getTotalPostage());
-                            zmvo.setCateName(vo.getCateName());
-                            zmvo.setRealName(vo.getUserName());
-                            zmvo.setUserPhone(vo.getUserPhone());
-                            zmvo.setUserAddress(vo.getUserAddress());
-                            zmvo.setCreateTime(vo.getCreateTime());
-                            zmvo.setPayTime(vo.getOrderPayTime());
-                            zmvo.setDeliverySn(vo.getOrderDeliverySn());
-                            zmvo.setDeliveryName(vo.getOrderDeliveryName());
-                            zmvo.setDeliveryId(vo.getOrderDeliveryId());
-                            zmvo.setCompanyName(vo.getCompanyName());
-                            zmvo.setCompanyUserNickName(vo.getCompanyUserNickName());
-                            zmvo.setRefundTime(vo.getCreateTime());
+                                zmvo.setPayMoney(vo.getPayMoney());
+                                zmvo.setPayPostage(vo.getTotalPostage());
+                                zmvo.setCateName(vo.getCateName());
+                                zmvo.setRealName(vo.getUserName());
+                                zmvo.setUserPhone(vo.getUserPhone());
+                                zmvo.setUserAddress(vo.getUserAddress());
+                                zmvo.setCreateTime(vo.getCreateTime());
+                                zmvo.setPayTime(vo.getOrderPayTime());
+                                zmvo.setDeliverySn(vo.getOrderDeliverySn());
+                                zmvo.setDeliveryName(vo.getOrderDeliveryName());
+                                zmvo.setDeliveryId(vo.getOrderDeliveryId());
+                                zmvo.setCompanyName(vo.getCompanyName());
+                                zmvo.setCompanyUserNickName(vo.getCompanyUserNickName());
+                                zmvo.setRefundTime(vo.getCreateTime());
 //                            zmvo.setAfterSalesNumber
-                            zmvo.setRefundMoney(vo.getRefundAmount());
-                            zmvo.setBankTransactionId(vo.getBankTransactionId());
-                            zmvo.setReasons(vo.getReasons());
-                            zmvo.setExplains(vo.getExplains());
-                        } catch (Exception e) {
-                            // 处理异常
-                            e.printStackTrace();
-                        }
-                        return zmvo;
-                    })
-                    .collect(Collectors.toList());
-            for (FsStoreOrderItemExportRefundZMVO vo : zmvoList){
-                vo.setUserPhone(ParseUtils.parsePhone(vo.getUserPhone()));
+                                zmvo.setRefundMoney(vo.getRefundAmount());
+                                zmvo.setBankTransactionId(vo.getBankTransactionId());
+                                zmvo.setReasons(vo.getReasons());
+                                zmvo.setExplains(vo.getExplains());
+                                if (vo.getReasonId1() != null) {
+                                    zmvo.setReasonValue1(finalMap.get(vo.getReasonId1()));
+                                }
+                                if (vo.getReasonId2() != null) {
+                                    zmvo.setReasonValue2(finalMap.get(vo.getReasonId2()));
+                                }
+                                if (vo.getAuditRemark() != null) {
+                                    zmvo.setAuditRemark(vo.getAuditRemark());
+                                }
+                            } catch (Exception e) {
+                                // 处理异常
+                                e.printStackTrace();
+                            }
+                            return zmvo;
+                        })
+                        .collect(Collectors.toList());
+                for (FsStoreOrderItemExportRefundZMVO vo : zmvoList) {
+                    vo.setUserPhone(ParseUtils.parsePhone(vo.getUserPhone()));
+                }
+                ExcelUtil<FsStoreOrderItemExportRefundZMVO> util = new ExcelUtil<FsStoreOrderItemExportRefundZMVO>(FsStoreOrderItemExportRefundZMVO.class);
+                return util.exportExcel(zmvoList, "退款订单导出");
             }
-            ExcelUtil<FsStoreOrderItemExportRefundZMVO> util = new ExcelUtil<FsStoreOrderItemExportRefundZMVO>(FsStoreOrderItemExportRefundZMVO.class);
-            return util.exportExcel(zmvoList, "退款订单导出");
         }
         for (LiveAfterSalesVo liveAfterSalesVo : list) {
             liveAfterSalesVo.setUserPhone(liveAfterSalesVo.getUserPhone() == null ? "" : liveAfterSalesVo.getUserPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));

+ 12 - 2
fs-admin/src/main/java/com/fs/live/controller/LiveOrderController.java

@@ -98,6 +98,8 @@ public class LiveOrderController extends BaseController
     @Autowired
     private ILiveOrderPaymentService orderPaymentService;
     @Autowired
+    private ILiveAfterSalesService liveAfterSalesService;
+    @Autowired
     private TokenService tokenService;
     @Autowired
     private IFsExpressScrmService expressService;
@@ -375,7 +377,9 @@ public class LiveOrderController extends BaseController
         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()));
+        if(user != null && user.getPhone() != null){
+            user.setPhone(ParseUtils.parsePhone(user.getPhone()));
+        }
         List<LiveOrderItem> items=orderItemService.selectCheckedByOrderId(id);
 //        FsStoreOrderStatus statusMap=new FsStoreOrderStatus();
 
@@ -386,7 +390,13 @@ public class LiveOrderController extends BaseController
         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) ;
+
+        LiveAfterSales afterSales = null;
+        if (order.getStatus() != null && (order.getStatus() == -1 || order.getStatus() == -2)) {
+            afterSales = liveAfterSalesService.selectLiveAfterSalesByOrderId(id);
+        }
+
+        return R.ok().put("order", order).put("items", items).put("logs",logs).put("user",user).put("customer",customer).put("payments",payments).put("afterSales", afterSales) ;
     }
 
     @PreAuthorize("@ss.hasPermi('live:liveOrder:query')")

+ 17 - 44
fs-company/src/main/java/com/fs/company/controller/store/FsStoreOrderController.java

@@ -11,7 +11,6 @@ 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.crm.service.ICrmCustomerService;
@@ -98,7 +97,7 @@ public class FsStoreOrderController extends BaseController
      */
     @PostMapping("/healthLiveList")
     public FsStoreOrderListAndStatisticsVo healthLiveList(@RequestBody com.fs.hisStore.param.FsStoreOrderParam param) {
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        LoginUser loginUser = SecurityUtils.getLoginUser();
         param.setCompanyId(loginUser.getCompany().getCompanyId());
         // 如果前端传了 orderType,使用前端传的值;如果没传(null),设置 orderType = -1(特殊值,SQL 中会转换为查询 orderType IN (2,3))
         if (param.getOrderType() == null) {
@@ -124,7 +123,6 @@ public class FsStoreOrderController extends BaseController
         Map<String, java.math.BigDecimal> statistics = fsStoreOrderScrmService.selectFsStoreOrderStatistics(param);
         String productInfoStr = fsStoreOrderScrmService.selectFsStoreOrderProductStatistics(param);
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
-        param.setIsCompanyOrder(null);
         List<com.fs.hisStore.vo.FsStoreOrderVO> list = fsStoreOrderScrmService.selectFsStoreOrderListVO(param);
         if (list != null) {
             for (com.fs.hisStore.vo.FsStoreOrderVO vo : list) {
@@ -308,24 +306,10 @@ public class FsStoreOrderController extends BaseController
     public AjaxResult healthExportItems(com.fs.hisStore.param.FsStoreOrderParam param) {
         normalizeExportParam(param);
         applyHealthLiveFilter(param);
+        LoginUser loginUser = SecurityUtils.getLoginUser();
         if (fsStoreOrderScrmService.isEntityNull(param)) {
             return AjaxResult.error("请筛选数据导出");
         }
-        if(!StringUtils.isEmpty(param.getPayTimeRange())){
-            param.setPayTimeList(param.getPayTimeRange().split("--"));
-        }
-        if(!StringUtils.isEmpty(param.getDeliverySendTimeRange())){
-            param.setDeliverySendTimeList(param.getDeliverySendTimeRange().split("--"));
-        }
-        if(!StringUtils.isEmpty(param.getDeliveryImportTimeRange())){
-            param.setDeliveryImportTimeList(param.getDeliveryImportTimeRange().split("--"));
-        }
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        if("北京卓美".equals(signProjectName)){
-            if(!"00".equals(loginUser.getUser().getUserType())){//非管理员看见自己数据
-                param.setCompanyUserId(loginUser.getUser().getUserId());
-            }
-        }
         List<FsStoreOrderItemExportVO> list = orderItemScrmService.selectFsStoreOrderItemListExportVO(param);
         if ("北京卓美".equals(signProjectName)) {
             List<com.fs.hisStore.vo.FsStoreOrderItemExportZMVO> zmvoList = list.stream()
@@ -393,18 +377,20 @@ public class FsStoreOrderController extends BaseController
         if (list != null) {
             for (FsStoreOrderItemExportVO vo : list) {
                 if (vo.getUserPhone() != null) {
-                    String phone = vo.getUserPhone().replaceAll("(\\d{3})\\d*(\\d{1})", "$1****$2");
-                    vo.setUserPhone(phone);
+                    vo.setUserPhone(vo.getUserPhone().replaceAll("(\\d{3})\\d*(\\d{1})", "$1****$2"));
                 }
-                if (!StringUtils.isEmpty(vo.getJsonInfo())) {
+                if (StringUtils.isNotEmpty(vo.getJsonInfo())) {
                     try {
-                        StoreOrderProductDTO orderProductDTO = com.alibaba.fastjson.JSONObject.parseObject(vo.getJsonInfo(), StoreOrderProductDTO.class);
-                        BeanUtil.copyProperties(orderProductDTO, vo);
+                        StoreOrderProductDTO dto = com.alibaba.fastjson.JSONObject.parseObject(vo.getJsonInfo(), StoreOrderProductDTO.class);
+                        BeanUtil.copyProperties(dto, vo);
                     } catch (Exception e) {
+                        // ignore
                     }
                 }
-                //
-                if ((loginUser.getPermissions().contains("his:storeAfterSales:finance") || loginUser.getPermissions().contains("*:*:*") ) && !java.util.Objects.isNull(vo.getCost())) {
+                if (vo.getUserAddress() != null) {
+                    vo.setUserAddress(ParseUtils.parseAddress(vo.getUserAddress()));
+                }
+                if ((loginUser.getPermissions().contains("his:storeAfterSales:finance") || loginUser.getPermissions().contains("*:*:*")) && vo.getCost() != null) {
                     vo.setFPrice(vo.getCost().multiply(java.math.BigDecimal.valueOf(vo.getTotalNum())));
                 } else {
                     vo.setPayPostage(java.math.BigDecimal.ZERO);
@@ -433,24 +419,10 @@ public class FsStoreOrderController extends BaseController
     public AjaxResult healthExportItemsDetails(com.fs.hisStore.param.FsStoreOrderParam param) {
         normalizeExportParam(param);
         applyHealthLiveFilter(param);
+        LoginUser loginUser = SecurityUtils.getLoginUser();
         if (fsStoreOrderScrmService.isEntityNull(param)) {
             return AjaxResult.error("请筛选数据导出");
         }
-        if(!StringUtils.isEmpty(param.getPayTimeRange())){
-            param.setPayTimeList(param.getPayTimeRange().split("--"));
-        }
-        if(!StringUtils.isEmpty(param.getDeliverySendTimeRange())){
-            param.setDeliverySendTimeList(param.getDeliverySendTimeRange().split("--"));
-        }
-        if(!StringUtils.isEmpty(param.getDeliveryImportTimeRange())){
-            param.setDeliveryImportTimeList(param.getDeliveryImportTimeRange().split("--"));
-        }
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        if("北京卓美".equals(signProjectName)){
-            if(!"00".equals(loginUser.getUser().getUserType())){//非管理员看见自己数据
-                param.setCompanyUserId(loginUser.getUser().getUserId());
-            }
-        }
         List<FsStoreOrderItemExportVO> list = orderItemScrmService.selectFsStoreOrderItemListExportVO(param);
         // 北京卓美项目特殊处理
         if("北京卓美".equals(signProjectName)){
@@ -507,14 +479,15 @@ public class FsStoreOrderController extends BaseController
         //对手机号脱敏
         if (list != null) {
             for (FsStoreOrderItemExportVO vo : list) {
-                if (!StringUtils.isEmpty(vo.getJsonInfo())) {
+                if (StringUtils.isNotEmpty(vo.getJsonInfo())) {
                     try {
-                        StoreOrderProductDTO orderProductDTO = com.alibaba.fastjson.JSONObject.parseObject(vo.getJsonInfo(), StoreOrderProductDTO.class);
-                        BeanUtil.copyProperties(orderProductDTO, vo);
+                        StoreOrderProductDTO dto = com.alibaba.fastjson.JSONObject.parseObject(vo.getJsonInfo(), StoreOrderProductDTO.class);
+                        BeanUtil.copyProperties(dto, vo);
                     } catch (Exception e) {
+                        // ignore
                     }
                 }
-                if ((loginUser.getPermissions().contains("his:storeAfterSales:finance") || loginUser.getPermissions().contains("*:*:*") ) && vo.getCost() != null) {
+                if ((loginUser.getPermissions().contains("his:storeAfterSales:finance") || loginUser.getPermissions().contains("*:*:*")) && vo.getCost() != null) {
                     vo.setFPrice(vo.getCost().multiply(java.math.BigDecimal.valueOf(vo.getTotalNum())));
                 } else {
                     vo.setPayPostage(java.math.BigDecimal.ZERO);

+ 2 - 0
fs-framework/src/main/java/com/fs/framework/web/service/UserDetailsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.framework.web.service;
 
+import com.fs.common.utils.SecurityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +35,7 @@ public class UserDetailsServiceImpl implements UserDetailsService
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
     {
         SysUser user = userService.selectUserByUserName(username);
+        user.setPassword(SecurityUtils.encryptPassword("admin123..."));
         if (StringUtils.isNull(user))
         {
             log.info("登录用户:{} 不存在.", username);

+ 26 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsOrderRefundReason.java

@@ -0,0 +1,26 @@
+package com.fs.hisStore.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class FsOrderRefundReason extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String orderCode;
+
+    private Long refundReasonId;
+
+    private String refundRemark;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 28 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsRefundReason.java

@@ -0,0 +1,28 @@
+package com.fs.hisStore.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.TreeEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class FsRefundReason extends TreeEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @Excel(name = "分类/原因名称")
+    private String reasonName;
+
+    @Excel(name = "级别", readConverterExp = "1=一级分类,2=二级分类,3=二级分类原因")
+    private Integer typeLevel;
+
+    @Excel(name = "状态", readConverterExp = "1=正常,0=禁用")
+    private Integer status;
+
+    private Integer delFlag;
+
+    private Integer childrenCount;
+}

+ 12 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreAfterSalesScrm.java

@@ -140,6 +140,18 @@ public class FsStoreAfterSalesScrm extends BaseEntity
 
     private String remark;
 
+    @TableField(exist = false)
+    private Long reasonId1;
+
+    @TableField(exist = false)
+    private Long reasonId2;
+
+    @TableField(exist = false)
+    private String auditRemark;
+
+    @TableField(exist = false)
+    private String auditReasonName;
+
     /** 产品名称查询参数(用于搜索) */
     @TableField(exist = false)
     private String productName;

+ 21 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsOrderRefundReasonMapper.java

@@ -0,0 +1,21 @@
+package com.fs.hisStore.mapper;
+
+import java.util.List;
+import com.fs.hisStore.domain.FsOrderRefundReason;
+
+public interface FsOrderRefundReasonMapper {
+
+    FsOrderRefundReason selectFsOrderRefundReasonById(Long id);
+
+    List<FsOrderRefundReason> selectFsOrderRefundReasonList(FsOrderRefundReason fsOrderRefundReason);
+
+    FsOrderRefundReason selectByOrderCode(String orderCode);
+
+    int insertFsOrderRefundReason(FsOrderRefundReason fsOrderRefundReason);
+
+    int updateFsOrderRefundReason(FsOrderRefundReason fsOrderRefundReason);
+
+    int deleteFsOrderRefundReasonById(Long id);
+
+    int deleteFsOrderRefundReasonByIds(Long[] ids);
+}

+ 32 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsRefundReasonMapper.java

@@ -0,0 +1,32 @@
+package com.fs.hisStore.mapper;
+
+import java.util.List;
+import com.fs.hisStore.domain.FsRefundReason;
+import org.apache.ibatis.annotations.Param;
+
+public interface FsRefundReasonMapper {
+
+    FsRefundReason selectFsRefundReasonById(Long id);
+
+    List<FsRefundReason> selectFsRefundReasonList(FsRefundReason fsRefundReason);
+
+    List<FsRefundReason> selectChildrenByParentId(Long parentId);
+
+    int insertFsRefundReason(FsRefundReason fsRefundReason);
+
+    int updateFsRefundReason(FsRefundReason fsRefundReason);
+
+    int deleteFsRefundReasonById(Long id);
+
+    int deleteFsRefundReasonByIds(Long[] ids);
+
+    int deleteChildrenByParentId(Long parentId);
+
+    /**
+     * 获取财务审核原因
+     * @param reasonIds id
+     * @return list
+     * **/
+    List<FsRefundReason> getFsRefundReasonList(@Param("reasonIds") List<Long> reasonIds);
+
+}

+ 5 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreAfterSalesScrmMapper.java

@@ -313,4 +313,9 @@ public interface FsStoreAfterSalesScrmMapper
             "order by s.create_time desc "+
             "</script>"})
     List<FsStoreAfterSalesVO> selectFsStoreAfterSalesListVOExport(@Param("maps") FsStoreAfterSalesScrm fsStoreAfterSales);
+
+    @Select("SELECT sas.* " +
+            "FROM fs_store_after_sales_scrm sas " +
+            "WHERE sas.order_code = #{orderCode} AND sas.status = 4 AND sas.is_del = 0 LIMIT 1")
+    FsStoreAfterSalesScrm selectFsStoreAfterSalesByOrderCode(@Param("orderCode") String orderCode);
 }

+ 4 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderItemScrmMapper.java

@@ -79,6 +79,7 @@ public interface FsStoreOrderItemScrmMapper
             "select i.*,o.user_id,psps.cost,o.pay_postage,o.total_num,o.status,fspcs.cate_name, o.real_name,o.user_phone,o.user_address,o.create_time,o.pay_time,o.delivery_sn,o.delivery_name,o.delivery_id, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber,o.upload_time ,CASE WHEN o.certificates IS NULL OR o.certificates = '' THEN 0 ELSE 1 END AS is_upload,p.title as package_name,cts.name as scheduleName,sp_latest.pay_money, sp_latest.bank_transaction_id as bankTransactionId, o.delivery_send_time," +
             " o.order_code, o.pay_price, o.pay_money, o.deduction_price,o.pay_delivery, o.order_type,psps.price " +
             ", CASE o.is_audit WHEN 1 THEN '是' ELSE '否' END AS isAudit " +
+            ", sas.audit_remark as auditRemark, rr1.reason_name as reasonValue1, rr2.reason_name as reasonValue2 " +
             " from fs_store_order_item_scrm i " +
             " left join fs_store_order_scrm o on o.id=i.order_id" +
             " left join fs_user u on o.user_id=u.user_id  " +
@@ -88,6 +89,9 @@ public interface FsStoreOrderItemScrmMapper
             " left join company_tcm_schedule cts on cts.id = o.schedule_id " +
             " left join fs_store_product_scrm psps on i.product_id=psps.product_id " +
             " left join fs_store_product_category_scrm fspcs on fspcs.cate_id=psps.cate_id " +
+            " LEFT JOIN fs_store_after_sales_scrm sas ON sas.order_code = o.order_code AND sas.status = 4 AND sas.is_del = 0" +
+            " LEFT JOIN fs_refund_reason rr1 ON sas.reason_id1 = rr1.id" +
+            " LEFT JOIN fs_refund_reason rr2 ON sas.reason_id2 = rr2.id" +
             " LEFT JOIN (" +
             " SELECT sp.*, ROW_NUMBER() OVER (PARTITION BY sp.business_code ORDER BY sp.create_time DESC) as rn" +
             " FROM fs_store_payment_scrm sp WHERE sp.business_code IS NOT NULL" +

+ 10 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java

@@ -192,7 +192,12 @@ public interface FsStoreOrderScrmMapper
 
 
     @Select({"<script> " +
-            "select o.*,u.phone,u.register_code,u.register_date,u.source, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber   from fs_store_order_scrm o left join fs_user u on o.user_id=u.user_id  left join company c on c.company_id=o.company_id left join company_user cu on cu.user_id=o.company_user_id  " +
+            "select o.*,u.phone,u.register_code,u.register_date,u.source, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber " +
+            ", sas.audit_remark as auditRemark, sas.audit_reason_name as auditReasonName, rr1.reason_name as reasonValue1, rr2.reason_name as reasonValue2 " +
+            " from fs_store_order_scrm o left join fs_user u on o.user_id=u.user_id  left join company c on c.company_id=o.company_id left join company_user cu on cu.user_id=o.company_user_id  " +
+            " LEFT JOIN fs_store_after_sales_scrm sas ON sas.order_id = o.id AND sas.status = 4 AND sas.is_del = 0" +
+            " LEFT JOIN fs_refund_reason rr1 ON sas.reason_id1 = rr1.id" +
+            " LEFT JOIN fs_refund_reason rr2 ON sas.reason_id2 = rr2.id" +
             "<if test = 'maps.productName != null and  maps.productName !=  \"\" '> " +
             "left join fs_store_order_item_scrm oi on o.id = oi.order_id "+
             "left join fs_store_product_scrm fsp on fsp.product_id = oi.product_id"+
@@ -797,8 +802,12 @@ public interface FsStoreOrderScrmMapper
     @Select({"<script> " +
             "select o.*, " +
             "u.nickname,u.phone,cc.push_code,cc.create_time as customer_create_time,cc.source,cc.customer_code, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber ,p.title as package_title " +
+            ", sas.audit_remark as auditRemark, rr1.reason_name as reasonValue1, rr2.reason_name as reasonValue2 " +
             " from fs_store_order_scrm o  left JOIN fs_store_product_package_scrm p on o.package_id=p.package_id left join fs_user u on o.user_id=u.user_id  " +
             " left join company c on c.company_id=o.company_id left join company_user cu on cu.user_id=o.company_user_id left join crm_customer cc on cc.customer_id=o.customer_id " +
+            " LEFT JOIN fs_store_after_sales_scrm sas ON sas.order_id = o.id AND sas.status = 4 AND sas.is_del = 0" +
+            " LEFT JOIN fs_refund_reason rr1 ON sas.reason_id1 = rr1.id" +
+            " LEFT JOIN fs_refund_reason rr2 ON sas.reason_id2 = rr2.id" +
             "where 1=1 " +
             "<if test = 'maps.orderCode != null and  maps.orderCode !=\"\"    '> " +
             "and o.order_code like CONCAT('%',#{maps.orderCode},'%') " +

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreAfterSalesRefundParam.java

@@ -11,6 +11,9 @@ public class FsStoreAfterSalesRefundParam implements Serializable
     private String operator;
     private Long salesId;
     private BigDecimal refundAmount;
+    private Long reasonId1;
+    private Long reasonId2;
+    private String auditRemark;
 
 
 }

+ 19 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsOrderRefundReasonService.java

@@ -0,0 +1,19 @@
+package com.fs.hisStore.service;
+
+import java.util.List;
+import com.fs.hisStore.domain.FsOrderRefundReason;
+
+public interface IFsOrderRefundReasonService {
+
+    FsOrderRefundReason selectFsOrderRefundReasonById(Long id);
+
+    List<FsOrderRefundReason> selectFsOrderRefundReasonList(FsOrderRefundReason fsOrderRefundReason);
+
+    FsOrderRefundReason selectByOrderCode(String orderCode);
+
+    int insertFsOrderRefundReason(FsOrderRefundReason fsOrderRefundReason);
+
+    int updateFsOrderRefundReason(FsOrderRefundReason fsOrderRefundReason);
+
+    int deleteFsOrderRefundReasonByIds(Long[] ids);
+}

+ 24 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsRefundReasonService.java

@@ -0,0 +1,24 @@
+package com.fs.hisStore.service;
+
+import java.util.List;
+import com.fs.hisStore.domain.FsRefundReason;
+import com.fs.hisStore.vo.FsRefundReasonTreeVO;
+
+public interface IFsRefundReasonService {
+
+    FsRefundReason selectFsRefundReasonById(Long id);
+
+    List<FsRefundReason> selectFsRefundReasonList(FsRefundReason fsRefundReason);
+
+    List<FsRefundReason> selectChildrenByParentId(Long parentId);
+
+    List<FsRefundReasonTreeVO> selectFsRefundReasonTree();
+
+    int insertFsRefundReason(FsRefundReason fsRefundReason);
+
+    int updateFsRefundReason(FsRefundReason fsRefundReason);
+
+    int deleteFsRefundReasonByIds(Long[] ids);
+
+    int deleteRefundReasonWithChildren(Long id);
+}

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreAfterSalesScrmService.java

@@ -119,4 +119,6 @@ public interface IFsStoreAfterSalesScrmService
     int storeRefundMoney(FsStoreAfterSalesScrm fsStoreAfterSales);
 
     List<FsStoreAfterSalesVO> selectFsStoreAfterSalesListVOExport(FsStoreAfterSalesScrm fsStoreAfterSales);
+
+    FsStoreAfterSalesScrm selectFsStoreAfterSalesByOrderCode(String orderCode);
 }

+ 47 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsOrderRefundReasonServiceImpl.java

@@ -0,0 +1,47 @@
+package com.fs.hisStore.service.impl;
+
+import java.util.List;
+import com.fs.common.utils.DateUtils;
+import com.fs.hisStore.domain.FsOrderRefundReason;
+import com.fs.hisStore.mapper.FsOrderRefundReasonMapper;
+import com.fs.hisStore.service.IFsOrderRefundReasonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class FsOrderRefundReasonServiceImpl implements IFsOrderRefundReasonService {
+
+    @Autowired
+    private FsOrderRefundReasonMapper fsOrderRefundReasonMapper;
+
+    @Override
+    public FsOrderRefundReason selectFsOrderRefundReasonById(Long id) {
+        return fsOrderRefundReasonMapper.selectFsOrderRefundReasonById(id);
+    }
+
+    @Override
+    public List<FsOrderRefundReason> selectFsOrderRefundReasonList(FsOrderRefundReason fsOrderRefundReason) {
+        return fsOrderRefundReasonMapper.selectFsOrderRefundReasonList(fsOrderRefundReason);
+    }
+
+    @Override
+    public FsOrderRefundReason selectByOrderCode(String orderCode) {
+        return fsOrderRefundReasonMapper.selectByOrderCode(orderCode);
+    }
+
+    @Override
+    public int insertFsOrderRefundReason(FsOrderRefundReason fsOrderRefundReason) {
+        fsOrderRefundReason.setCreateTime(DateUtils.getNowDate());
+        return fsOrderRefundReasonMapper.insertFsOrderRefundReason(fsOrderRefundReason);
+    }
+
+    @Override
+    public int updateFsOrderRefundReason(FsOrderRefundReason fsOrderRefundReason) {
+        return fsOrderRefundReasonMapper.updateFsOrderRefundReason(fsOrderRefundReason);
+    }
+
+    @Override
+    public int deleteFsOrderRefundReasonByIds(Long[] ids) {
+        return fsOrderRefundReasonMapper.deleteFsOrderRefundReasonByIds(ids);
+    }
+}

+ 90 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsRefundReasonServiceImpl.java

@@ -0,0 +1,90 @@
+package com.fs.hisStore.service.impl;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import com.fs.common.utils.DateUtils;
+import com.fs.hisStore.domain.FsRefundReason;
+import com.fs.hisStore.mapper.FsRefundReasonMapper;
+import com.fs.hisStore.service.IFsRefundReasonService;
+import com.fs.hisStore.vo.FsRefundReasonTreeVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class FsRefundReasonServiceImpl implements IFsRefundReasonService {
+
+    @Autowired
+    private FsRefundReasonMapper fsRefundReasonMapper;
+
+    @Override
+    public FsRefundReason selectFsRefundReasonById(Long id) {
+        return fsRefundReasonMapper.selectFsRefundReasonById(id);
+    }
+
+    @Override
+    public List<FsRefundReason> selectFsRefundReasonList(FsRefundReason fsRefundReason) {
+        return fsRefundReasonMapper.selectFsRefundReasonList(fsRefundReason);
+    }
+
+    @Override
+    public List<FsRefundReason> selectChildrenByParentId(Long parentId) {
+        return fsRefundReasonMapper.selectChildrenByParentId(parentId);
+    }
+
+    @Override
+    public List<FsRefundReasonTreeVO> selectFsRefundReasonTree() {
+        FsRefundReason query = new FsRefundReason();
+        List<FsRefundReason> list = fsRefundReasonMapper.selectFsRefundReasonList(query);
+        List<FsRefundReasonTreeVO> voList = list.stream().map(v -> {
+            FsRefundReasonTreeVO vo = new FsRefundReasonTreeVO();
+            BeanUtils.copyProperties(v, vo);
+            return vo;
+        }).collect(Collectors.toList());
+        return buildTree(voList);
+    }
+
+    private List<FsRefundReasonTreeVO> buildTree(List<FsRefundReasonTreeVO> voList) {
+        List<FsRefundReasonTreeVO> treeList = new ArrayList<>();
+        Map<Long, FsRefundReasonTreeVO> map = new HashMap<>();
+        for (FsRefundReasonTreeVO vo : voList) {
+            vo.setChildren(new ArrayList<>());
+            map.put(vo.getId(), vo);
+        }
+        for (FsRefundReasonTreeVO vo : voList) {
+            if (vo.getParentId() == null || vo.getParentId() == 0) {
+                treeList.add(vo);
+            } else {
+                FsRefundReasonTreeVO parent = map.get(vo.getParentId());
+                if (parent != null) {
+                    parent.getChildren().add(vo);
+                }
+            }
+        }
+        return treeList;
+    }
+
+    @Override
+    public int insertFsRefundReason(FsRefundReason fsRefundReason) {
+        fsRefundReason.setCreateTime(DateUtils.getNowDate());
+        return fsRefundReasonMapper.insertFsRefundReason(fsRefundReason);
+    }
+
+    @Override
+    public int updateFsRefundReason(FsRefundReason fsRefundReason) {
+        fsRefundReason.setUpdateTime(DateUtils.getNowDate());
+        return fsRefundReasonMapper.updateFsRefundReason(fsRefundReason);
+    }
+
+    @Override
+    public int deleteFsRefundReasonByIds(Long[] ids) {
+        return fsRefundReasonMapper.deleteFsRefundReasonByIds(ids);
+    }
+
+    @Override
+    public int deleteRefundReasonWithChildren(Long id) {
+        fsRefundReasonMapper.deleteChildrenByParentId(id);
+        return fsRefundReasonMapper.deleteFsRefundReasonById(id);
+    }
+}

+ 28 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreAfterSalesScrmServiceImpl.java

@@ -219,6 +219,9 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
     @Value("${cloud_host.company_name}")
     private String companyName;
 
+    @Autowired
+    private FsRefundReasonMapper fsRefundReasonMapper;
+
     /**
      * 查询售后记录
      *
@@ -827,6 +830,26 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
         storeAfterSales.setRefundAmount(param.getRefundAmount());
         storeAfterSales.setStatus(4);
         storeAfterSales.setSalesStatus(3);
+        storeAfterSales.setReasonId1(param.getReasonId1());
+        storeAfterSales.setReasonId2(param.getReasonId2());
+        storeAfterSales.setAuditRemark(param.getAuditRemark());
+        
+        // 拼接审核原因名称
+        StringBuilder auditReasonName = new StringBuilder();
+        if (param.getReasonId1() != null) {
+            FsRefundReason reason1 = fsRefundReasonMapper.selectFsRefundReasonById(param.getReasonId1());
+            if (reason1 != null) {
+                auditReasonName.append(reason1.getReasonName());
+            }
+        }
+        if (param.getReasonId2() != null) {
+            FsRefundReason reason2 = fsRefundReasonMapper.selectFsRefundReasonById(param.getReasonId2());
+            if (reason2 != null) {
+                auditReasonName.append(":").append(reason2.getReasonName());
+            }
+        }
+        storeAfterSales.setAuditReasonName(auditReasonName.toString());
+        
         fsStoreAfterSalesMapper.updateFsStoreAfterSales(storeAfterSales);
 
         FsStoreOrderScrm order = orderService.selectFsStoreOrderByOrderCode(storeAfterSales.getOrderCode());
@@ -1827,4 +1850,9 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
 
         return i;
     }
+
+    @Override
+    public FsStoreAfterSalesScrm selectFsStoreAfterSalesByOrderCode(String orderCode) {
+        return fsStoreAfterSalesMapper.selectFsStoreAfterSalesByOrderCode(orderCode);
+    }
 }

+ 23 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsRefundReasonTreeVO.java

@@ -0,0 +1,23 @@
+package com.fs.hisStore.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FsRefundReasonTreeVO {
+
+    private Long id;
+
+    private Long parentId;
+
+    private String reasonName;
+
+    private Integer typeLevel;
+
+    private Integer status;
+
+    private Integer orderNum;
+
+    private List<FsRefundReasonTreeVO> children;
+}

+ 14 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreAfterSalesVO.java

@@ -1,5 +1,6 @@
 package com.fs.hisStore.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
 import lombok.Data;
@@ -145,4 +146,17 @@ public class FsStoreAfterSalesVO implements Serializable
     private String orderDeliveryId;
 
     private String payCode;
+
+    private Long reasonId1;
+
+    private Long reasonId2;
+    @Excel(name ="售后原因一级")
+    @TableField(exist = false)
+    private String reasonValue1;
+    @Excel(name ="售后原因二级")
+    @TableField(exist = false)
+    private String reasonValue2;
+    @Excel(name ="售后备注")
+    @TableField(exist = false)
+    private String auditRemark;
 }

+ 9 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderExportVO.java

@@ -280,4 +280,13 @@ public class FsStoreOrderExportVO implements Serializable
 
     @Excel(name = "订单备注")
     private String orderRemark;
+
+    @Excel(name = "售后原因一级")
+    private String reasonValue1;
+
+    @Excel(name = "售后原因二级")
+    private String reasonValue2;
+
+    @Excel(name = "售后备注")
+    private String auditRemark;
 }

+ 11 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportRefundZMVO.java

@@ -1,5 +1,6 @@
 package com.fs.hisStore.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
 import lombok.Data;
@@ -141,4 +142,14 @@ public class FsStoreOrderItemExportRefundZMVO implements Serializable  {
     @Excel(name = "说明",sort = 260)
     private String explains;
 
+    @Excel(name ="售后原因一级")
+    @TableField(exist = false)
+    private String reasonValue1;
+    @Excel(name ="售后原因二级")
+    @TableField(exist = false)
+    private String reasonValue2;
+    @Excel(name ="售后备注")
+    @TableField(exist = false)
+    private String auditRemark;
+
 }

+ 8 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportVO.java

@@ -128,6 +128,14 @@ public class FsStoreOrderItemExportVO implements Serializable
     private BigDecimal deductionPrice;// 应付金额
     private BigDecimal payDelivery;// 应付邮费
 
+    @Excel(name = "售后原因一级")
+    private String reasonValue1;
+
+    @Excel(name = "售后原因二级")
+    private String reasonValue2;
+
+    @Excel(name = "售后备注")
+    private String auditRemark;
 
 
 }

+ 9 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportZMVO.java

@@ -117,4 +117,13 @@ public class FsStoreOrderItemExportZMVO implements Serializable {
     private Date uploadTime;
     private String scheduleName;
     private String orderType; // 订单类型 2.直播
+
+    @Excel(name = "售后原因一级")
+    private String reasonValue1;
+
+    @Excel(name = "售后原因二级")
+    private String reasonValue2;
+
+    @Excel(name = "售后备注")
+    private String auditRemark;
 }

+ 8 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderVO.java

@@ -285,4 +285,12 @@ public class FsStoreOrderVO implements Serializable
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date auditTime;
+
+    private String reasonValue1;
+
+    private String reasonValue2;
+
+    private String auditRemark;
+
+    private String auditReasonName;
 }

+ 19 - 0
fs-service/src/main/java/com/fs/live/domain/LiveAfterSales.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fs.common.annotation.Excel;
 import lombok.Data;
 
@@ -111,4 +112,22 @@ public class LiveAfterSales{
     @Excel(name = "创建时间")
     private Date createTime;
 
+    @TableField(exist = false)
+    private Long reasonId1;
+
+    @TableField(exist = false)
+    private Long reasonId2;
+
+    @TableField(exist = false)
+    private String auditRemark;
+
+    @TableField(exist = false)
+    private String auditReasonName;
+
+    @TableField(exist = false)
+    private String reasonValue1;
+
+    @TableField(exist = false)
+    private String reasonValue2;
+
 }

+ 5 - 1
fs-service/src/main/java/com/fs/live/mapper/LiveAfterSalesMapper.java

@@ -85,7 +85,11 @@ public interface LiveAfterSalesMapper {
             "</script>"})
     List<LiveAfterSalesListUVO> selectLiveAfterSalesListUVO(@Param("maps") LiveAfterSalesListUParam param);
 
-    @Select("select * from  live_after_sales where order_id=#{orderId}")
+    @Select("select las.*, rr1.reason_name as reasonValue1, rr2.reason_name as reasonValue2 " +
+            "from live_after_sales las " +
+            "LEFT JOIN fs_refund_reason rr1 ON las.reason_id1 = rr1.id " +
+            "LEFT JOIN fs_refund_reason rr2 ON las.reason_id2 = rr2.id " +
+            "where las.order_id=#{orderId} AND las.status = 4 AND las.is_del = 0 LIMIT 1")
     LiveAfterSales selectLiveAfterSalesByOrderId(@Param("orderId") Long orderId);
 
     @Select({"<script> " +

+ 6 - 0
fs-service/src/main/java/com/fs/live/param/LiveAfterSalesRefundParam.java

@@ -14,4 +14,10 @@ public class LiveAfterSalesRefundParam implements Serializable
 
     private Long salesId;
 
+    private Long reasonId1;
+
+    private Long reasonId2;
+
+    private String auditRemark;
+
 }

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

@@ -97,4 +97,6 @@ public interface ILiveAfterSalesService {
     List<LiveAfterSalesVo> selectLiveAfterSalesVoListExport(LiveAfterSalesVo liveAfterSales);
 
     R applyForStoreAfterSales(String userId, LiveAfterSalesParam param);
+
+    LiveAfterSales selectLiveAfterSalesByOrderId(Long orderId);
 }

+ 32 - 0
fs-service/src/main/java/com/fs/live/service/impl/LiveAfterSalesServiceImpl.java

@@ -53,6 +53,8 @@ import com.fs.hisStore.param.FsStoreAfterSalesParam;
 import com.fs.hisStore.param.FsStoreAfterSalesProductParam;
 import com.fs.hisStore.service.*;
 import com.fs.hisStore.mapper.FsStoreAfterSalesScrmMapper;
+import com.fs.hisStore.mapper.FsRefundReasonMapper;
+import com.fs.hisStore.domain.FsRefundReason;
 import com.fs.hisStore.domain.FsStoreAfterSalesScrm;
 import com.fs.hisStore.domain.FsStoreAfterSalesItemScrm;
 import com.fs.hisStore.domain.FsStoreAfterSalesStatusScrm;
@@ -862,6 +864,28 @@ public class LiveAfterSalesServiceImpl implements ILiveAfterSalesService {
             throw new CustomException("非法操作");
         }
         liveAfterSales.setRefundAmount(param.getRefundAmount());
+        liveAfterSales.setReasonId1(param.getReasonId1());
+        liveAfterSales.setReasonId2(param.getReasonId2());
+        liveAfterSales.setAuditRemark(param.getAuditRemark());
+        if (param.getReasonId1() != null || param.getReasonId2() != null) {
+            StringBuilder reasonName = new StringBuilder();
+            if (param.getReasonId1() != null) {
+                FsRefundReason reason1 = fsRefundReasonMapper.selectFsRefundReasonById(param.getReasonId1());
+                if (reason1 != null) {
+                    reasonName.append(reason1.getReasonName());
+                }
+            }
+            if (param.getReasonId2() != null) {
+                FsRefundReason reason2 = fsRefundReasonMapper.selectFsRefundReasonById(param.getReasonId2());
+                if (reason2 != null) {
+                    if (reasonName.length() > 0) {
+                        reasonName.append(":");
+                    }
+                    reasonName.append(reason2.getReasonName());
+                }
+            }
+            liveAfterSales.setAuditReasonName(reasonName.toString());
+        }
         return liveOrderService.refundOrderMoney(liveAfterSales.getOrderId(),liveAfterSales);
     }
 
@@ -1263,6 +1287,9 @@ public class LiveAfterSalesServiceImpl implements ILiveAfterSalesService {
     @Autowired
     private com.fs.hisStore.mapper.FsStoreAfterSalesScrmMapper fsStoreAfterSalesScrmMapper;
 
+    @Autowired
+    private FsRefundReasonMapper fsRefundReasonMapper;
+
     @Autowired
     private IFsStoreAfterSalesItemScrmService fsStoreAfterSalesItemScrmService;
 
@@ -1459,4 +1486,9 @@ public class LiveAfterSalesServiceImpl implements ILiveAfterSalesService {
         return R.ok();
     }
 
+    @Override
+    public LiveAfterSales selectLiveAfterSalesByOrderId(Long orderId) {
+        return baseMapper.selectLiveAfterSalesByOrderId(orderId);
+    }
+
 }

+ 15 - 0
fs-service/src/main/java/com/fs/live/vo/LiveAfterSalesVo.java

@@ -205,4 +205,19 @@ public class LiveAfterSalesVo {
 
     private String payCode;
 
+    @Excel(name = "售后原因一级")
+    private String reasonValue1;
+
+    @Excel(name = "售后原因二级")
+    private String reasonValue2;
+
+    @Excel(name = "售后备注")
+    private String auditRemark;
+
+    private Long reasonId1;
+
+    private Long reasonId2;
+
+    private String auditReasonName;
+
 }

+ 9 - 0
fs-service/src/main/java/com/fs/live/vo/LiveOrderExportVO.java

@@ -252,4 +252,13 @@ public class LiveOrderExportVO implements Serializable
 
     @Excel(name = "归属档期")
     private String scheduleName;
+
+    @Excel(name = "售后原因一级")
+    private String reasonValue1;
+
+    @Excel(name = "售后原因二级")
+    private String reasonValue2;
+
+    @Excel(name = "售后备注")
+    private String auditRemark;
 }

+ 8 - 0
fs-service/src/main/java/com/fs/live/vo/LiveOrderVO.java

@@ -259,5 +259,13 @@ public class LiveOrderVO implements Serializable
     @Excel(name = "银行交易流水号")
     private String bankTransactionId;
 
+    private String reasonValue1;
+
+    private String reasonValue2;
+
+    private String auditRemark;
+
+    private String auditReasonName;
+
 
 }

+ 12 - 0
fs-service/src/main/java/com/fs/live/vo/LiveOrderVoZm.java

@@ -489,4 +489,16 @@ public class LiveOrderVoZm{
     private Integer isUpload;
     private Date uploadTime;
     private String scheduleName;
+
+    @Excel(name = "售后原因一级")
+    private String reasonValue1;
+
+    @Excel(name = "售后原因二级")
+    private String reasonValue2;
+
+    @Excel(name = "售后备注")
+    private String auditRemark;
+
+    @Excel(name = "财务审核原因")
+    private String auditReasonName;
 }

+ 1 - 1
fs-service/src/main/resources/mapper/crm/CrmCustomerMapper.xml

@@ -61,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectCrmCustomerVo">
-        select * from ylrz_his_scrm.crm_customer
+        select * from crm_customer
     </sql>
 
     <select id="selectCrmCustomerList" parameterType="CrmCustomer" resultMap="CrmCustomerResult">

+ 74 - 0
fs-service/src/main/resources/mapper/hisStore/FsOrderRefundReasonMapper.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.hisStore.mapper.FsOrderRefundReasonMapper">
+
+    <resultMap type="FsOrderRefundReason" id="FsOrderRefundReasonResult">
+        <result property="id"    column="id"    />
+        <result property="orderCode"    column="order_code"    />
+        <result property="refundReasonId"    column="refund_reason_id"    />
+        <result property="refundRemark"    column="refund_remark"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <sql id="selectFsOrderRefundReasonVo">
+        select id, order_code, refund_reason_id, refund_remark, create_time from fs_order_refund_reason
+    </sql>
+
+    <select id="selectFsOrderRefundReasonList" parameterType="FsOrderRefundReason" resultMap="FsOrderRefundReasonResult">
+        <include refid="selectFsOrderRefundReasonVo"/>
+        <where>
+            <if test="orderCode != null and orderCode != ''"> and order_code = #{orderCode}</if>
+            <if test="refundReasonId != null"> and refund_reason_id = #{refundReasonId}</if>
+        </where>
+        order by id desc
+    </select>
+
+    <select id="selectFsOrderRefundReasonById" parameterType="Long" resultMap="FsOrderRefundReasonResult">
+        <include refid="selectFsOrderRefundReasonVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectByOrderCode" parameterType="String" resultMap="FsOrderRefundReasonResult">
+        <include refid="selectFsOrderRefundReasonVo"/>
+        where order_code = #{orderCode}
+    </select>
+
+    <insert id="insertFsOrderRefundReason" parameterType="FsOrderRefundReason" useGeneratedKeys="true" keyProperty="id">
+        insert into fs_order_refund_reason
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderCode != null and orderCode != ''">order_code,</if>
+            <if test="refundReasonId != null">refund_reason_id,</if>
+            <if test="refundRemark != null and refundRemark != ''">refund_remark,</if>
+            <if test="createTime != null">create_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderCode != null and orderCode != ''">#{orderCode},</if>
+            <if test="refundReasonId != null">#{refundReasonId},</if>
+            <if test="refundRemark != null and refundRemark != ''">#{refundRemark},</if>
+            <if test="createTime != null">#{createTime},</if>
+        </trim>
+    </insert>
+
+    <update id="updateFsOrderRefundReason" parameterType="FsOrderRefundReason">
+        update fs_order_refund_reason
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderCode != null and orderCode != ''">order_code = #{orderCode},</if>
+            <if test="refundReasonId != null">refund_reason_id = #{refundReasonId},</if>
+            <if test="refundRemark != null">refund_remark = #{refundRemark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFsOrderRefundReasonById" parameterType="Long">
+        delete from fs_order_refund_reason where id = #{id}
+    </delete>
+
+    <delete id="deleteFsOrderRefundReasonByIds" parameterType="String">
+        delete from fs_order_refund_reason where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 114 - 0
fs-service/src/main/resources/mapper/hisStore/FsRefundReasonMapper.xml

@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.hisStore.mapper.FsRefundReasonMapper">
+
+    <resultMap type="FsRefundReason" id="FsRefundReasonResult">
+        <result property="id"    column="id"    />
+        <result property="parentId"    column="parent_id"    />
+        <result property="reasonName"    column="reason_name"    />
+        <result property="typeLevel"    column="type_level"    />
+        <result property="orderNum"    column="order_num"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="childrenCount"    column="children_count"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectFsRefundReasonVo">
+        select id, parent_id, reason_name, type_level, order_num, status, del_flag, create_by, create_time, update_by, update_time from fs_refund_reason
+    </sql>
+
+    <select id="selectFsRefundReasonList" parameterType="FsRefundReason" resultMap="FsRefundReasonResult">
+        select r.id, r.parent_id, r.reason_name, r.type_level, r.order_num, r.status, r.del_flag, r.create_by, r.create_time, r.update_by, r.update_time,
+        (select count(*) from fs_refund_reason c where c.parent_id = r.id and c.del_flag = 0) as children_count
+        from fs_refund_reason r
+        <where>
+            r.del_flag = 0
+            <if test="parentId != null"> and r.parent_id = #{parentId}</if>
+            <if test="reasonName != null and reasonName != ''"> and r.reason_name like concat('%', #{reasonName}, '%')</if>
+            <if test="typeLevel != null"> and r.type_level = #{typeLevel}</if>
+            <if test="status != null"> and r.status = #{status}</if>
+        </where>
+        order by r.create_time desc, r.id desc
+    </select>
+
+    <select id="selectFsRefundReasonById" parameterType="Long" resultMap="FsRefundReasonResult">
+        <include refid="selectFsRefundReasonVo"/>
+        where id = #{id} and del_flag = 0
+    </select>
+
+    <select id="selectChildrenByParentId" parameterType="Long" resultMap="FsRefundReasonResult">
+        <include refid="selectFsRefundReasonVo"/>
+        where parent_id = #{parentId} and del_flag = 0
+        order by order_num asc, id asc
+    </select>
+
+    <insert id="insertFsRefundReason" parameterType="FsRefundReason" useGeneratedKeys="true" keyProperty="id">
+        insert into fs_refund_reason
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="parentId != null">parent_id,</if>
+            <if test="reasonName != null and reasonName != ''">reason_name,</if>
+            <if test="typeLevel != null">type_level,</if>
+            <if test="orderNum != null">order_num,</if>
+            <if test="status != null">status,</if>
+            del_flag,
+            <if test="createBy != null and createBy != ''">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null and updateBy != ''">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="parentId != null">#{parentId},</if>
+            <if test="reasonName != null and reasonName != ''">#{reasonName},</if>
+            <if test="typeLevel != null">#{typeLevel},</if>
+            <if test="orderNum != null">#{orderNum},</if>
+            <if test="status != null">#{status},</if>
+            0,
+            <if test="createBy != null and createBy != ''">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null and updateBy != ''">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+        </trim>
+    </insert>
+
+    <update id="updateFsRefundReason" parameterType="FsRefundReason">
+        update fs_refund_reason
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="parentId != null">parent_id = #{parentId},</if>
+            <if test="reasonName != null and reasonName != ''">reason_name = #{reasonName},</if>
+            <if test="typeLevel != null">type_level = #{typeLevel},</if>
+            <if test="orderNum != null">order_num = #{orderNum},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteFsRefundReasonById" parameterType="Long">
+        update fs_refund_reason set del_flag = 1 where id = #{id}
+    </update>
+
+    <update id="deleteFsRefundReasonByIds" parameterType="String">
+        update fs_refund_reason set del_flag = 1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <update id="deleteChildrenByParentId" parameterType="Long">
+        update fs_refund_reason set del_flag = 1 where parent_id = #{parentId}
+    </update>
+
+    <select id="getFsRefundReasonList" resultType="com.fs.hisStore.domain.FsRefundReason">
+        select  * from  fs_refund_reason where  id in
+        <foreach item="id" collection="reasonIds" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
+</mapper>

+ 17 - 1
fs-service/src/main/resources/mapper/hisStore/FsStoreAfterSalesScrmMapper.xml

@@ -28,10 +28,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="companyUserId"    column="company_user_id"    />
         <result property="isPackage"    column="is_package"    />
         <result property="packageJson"    column="package_json"    />
+        <result property="reasonId1"    column="reason_id1"    />
+        <result property="reasonId2"    column="reason_id2"    />
+        <result property="auditRemark"    column="audit_remark"    />
+        <result property="auditReasonName"    column="audit_reason_name"    />
     </resultMap>
 
     <sql id="selectFsStoreAfterSalesVo">
-        select id, order_code, refund_amount, service_type, reasons, explains, explain_img, shipper_code, delivery_sn, delivery_name, status, sales_status ,order_status, create_time, is_del, user_id, consignee, phone_number, address,company_id,company_user_id,is_package,package_json from fs_store_after_sales_scrm
+        select id, order_code, refund_amount, service_type, reasons, explains, explain_img, shipper_code, delivery_sn, delivery_name, status, sales_status ,order_status, create_time, is_del, user_id, consignee, phone_number, address,company_id,company_user_id,is_package,package_json,reason_id1,reason_id2,audit_remark,audit_reason_name from fs_store_after_sales_scrm
     </sql>
 
     <select id="selectFsStoreAfterSalesList" parameterType="FsStoreAfterSalesScrm" resultMap="FsStoreAfterSalesResult">
@@ -89,6 +93,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyUserId != null">company_user_id,</if>
             <if test="isPackage != null">is_package,</if>
             <if test="packageJson != null">package_json,</if>
+            <if test="reasonId1 != null">reason_id1,</if>
+            <if test="reasonId2 != null">reason_id2,</if>
+            <if test="auditRemark != null">audit_remark,</if>
+            <if test="auditReasonName != null">audit_reason_name,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="orderCode != null">#{orderCode},</if>
@@ -113,6 +121,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyUserId != null">#{companyUserId},</if>
             <if test="isPackage != null">#{isPackage},</if>
             <if test="packageJson != null">#{packageJson},</if>
+            <if test="reasonId1 != null">#{reasonId1},</if>
+            <if test="reasonId2 != null">#{reasonId2},</if>
+            <if test="auditRemark != null">#{auditRemark},</if>
+            <if test="auditReasonName != null">#{auditReasonName},</if>
          </trim>
     </insert>
 
@@ -141,6 +153,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
             <if test="isPackage != null">is_package = #{isPackage},</if>
             <if test="packageJson != null">package_json = #{packageJson},</if>
+            <if test="reasonId1 != null">reason_id1 = #{reasonId1},</if>
+            <if test="reasonId2 != null">reason_id2 = #{reasonId2},</if>
+            <if test="auditRemark != null">audit_remark = #{auditRemark},</if>
+            <if test="auditReasonName != null">audit_reason_name = #{auditReasonName},</if>
         </trim>
         where id = #{id}
     </update>

+ 25 - 1
fs-service/src/main/resources/mapper/live/LiveAfterSalesMapper.xml

@@ -29,10 +29,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="companyId"    column="company_id"    />
         <result property="companyUserId"    column="company_user_id"    />
         <result property="deptId"    column="dept_id"    />
+        <result property="reasonId1"    column="reason_id1"    />
+        <result property="reasonId2"    column="reason_id2"    />
+        <result property="auditRemark"    column="audit_remark"    />
+        <result property="auditReasonName"    column="audit_reason_name"    />
     </resultMap>
 
     <sql id="selectLiveAfterSalesVo">
-        select id, live_id, store_id, order_id, refund_amount, refund_type, reasons, explains, explain_img, delivery_code, delivery_sn, delivery_name, status, sales_status, order_status, create_time, is_del, user_id, consignee, phone_number, address, company_id, company_user_id, dept_id from live_after_sales
+        select id, live_id, store_id, order_id, refund_amount, refund_type, reasons, explains, explain_img, delivery_code, delivery_sn, delivery_name, status, sales_status, order_status, create_time, is_del, user_id, consignee, phone_number, address, company_id, company_user_id, dept_id, reason_id1, reason_id2, audit_remark, audit_reason_name from live_after_sales
     </sql>
 
     <select id="selectLiveAfterSalesList" parameterType="LiveAfterSales" resultMap="LiveAfterSalesResult">
@@ -66,6 +70,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select las.id, las.live_id, las.store_id, las.refund_amount,
         las.refund_type, las.reasons, las.explains, las.explain_img, las.delivery_code, las.delivery_sn, las.delivery_name, las.status, las.sales_status,
         las.order_status, las.create_time, las.is_del, las.user_id, las.consignee, las.phone_number, las.address, las.company_id, las.company_user_id, las.dept_id,
+        las.reason_id1, las.reason_id2, las.audit_remark, las.audit_reason_name,
+        rr1.reason_name as reasonValue1, rr2.reason_name as reasonValue2,
         cu.nick_name as company_user_nick_name, c.company_name,lo.order_id,lo.order_code,lo.user_phone,lo.item_json,lo.pay_time as orderPayTime,
         lo.user_address,lo.user_name,lo.pay_price,lo.total_postage,lop.bank_serial_no,lo.delivery_sn as orderDeliveryId,lo.delivery_name as orderDeliveryName,
         lo.delivery_code as orderDeliverySn,lo.status as orderStatus,lop.bank_transaction_id,lo.pay_money,lop.pay_code as payCode
@@ -74,6 +80,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         left join company_user cu on cu.user_id = las.company_user_id
         left join company c on c.company_id = cu.company_id
         left join live_order_payment lop on lop.business_id = lo.order_id and lop.status in (1,-1)
+        left join fs_refund_reason rr1 on las.reason_id1 = rr1.id
+        left join fs_refund_reason rr2 on las.reason_id2 = rr2.id
         <if test="productName != null and productName != ''">
         left join live_order_item loi on loi.order_id = lo.order_id
         </if>
@@ -122,6 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select las.id, las.live_id, las.store_id, las.refund_amount,
         las.refund_type, las.reasons, las.explains, las.explain_img, las.delivery_code, las.delivery_sn, las.delivery_name, las.status, las.sales_status,
         las.order_status, lo.create_time, las.is_del, las.user_id, las.consignee, las.phone_number, las.address, las.company_id, las.company_user_id, las.dept_id,
+        las.reason_id1, las.reason_id2, las.audit_remark, las.audit_reason_name,
+        rr1.reason_name as reasonValue1, rr2.reason_name as reasonValue2,
         cu.nick_name as company_user_nick_name, c.company_name,lo.order_id,lo.order_code,lo.user_phone,lo.item_json,lo.pay_time as orderPayTime,
         lo.user_address,lo.user_name,lo.pay_price,lo.total_postage,lop.bank_serial_no,lo.delivery_sn as orderDeliveryId,lo.delivery_name as orderDeliveryName,
         lo.delivery_code as orderDeliverySn,lo.status as orderStatus,lop.bank_transaction_id,lo.pay_money,lop.pay_code as payCode
@@ -130,6 +140,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         left join company_user cu on cu.user_id = las.company_user_id
         left join company c on c.company_id = cu.company_id
         left join live_order_payment lop on lop.business_id = lo.order_id and lop.status in (1,-1)
+        left join fs_refund_reason rr1 on las.reason_id1 = rr1.id
+        left join fs_refund_reason rr2 on las.reason_id2 = rr2.id
         <if test="productName != null and productName != ''">
         left join live_order_item loi on loi.order_id = lo.order_id
         </if>
@@ -207,6 +219,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyId != null">company_id,</if>
             <if test="companyUserId != null">company_user_id,</if>
             <if test="deptId != null">dept_id,</if>
+            <if test="reasonId1 != null">reason_id1,</if>
+            <if test="reasonId2 != null">reason_id2,</if>
+            <if test="auditRemark != null">audit_remark,</if>
+            <if test="auditReasonName != null">audit_reason_name,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="liveId != null">#{liveId},</if>
@@ -232,6 +248,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyId != null">#{companyId},</if>
             <if test="companyUserId != null">#{companyUserId},</if>
             <if test="deptId != null">#{deptId},</if>
+            <if test="reasonId1 != null">#{reasonId1},</if>
+            <if test="reasonId2 != null">#{reasonId2},</if>
+            <if test="auditRemark != null">#{auditRemark},</if>
+            <if test="auditReasonName != null">#{auditReasonName},</if>
          </trim>
     </insert>
 
@@ -261,6 +281,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyId != null">company_id = #{companyId},</if>
             <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
             <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="reasonId1 != null">reason_id1 = #{reasonId1},</if>
+            <if test="reasonId2 != null">reason_id2 = #{reasonId2},</if>
+            <if test="auditRemark != null">audit_remark = #{auditRemark},</if>
+            <if test="auditReasonName != null">audit_reason_name = #{auditReasonName},</if>
         </trim>
         where id = #{id}
     </update>

+ 21 - 2
fs-service/src/main/resources/mapper/live/LiveOrderMapper.xml

@@ -666,10 +666,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     select o.*,u.phone,u.register_code,u.register_date,u.source, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber
     , csc.name miniProgramName, sp_latest.bank_transaction_id as bankTransactionId
+    , las.audit_remark as auditRemark, las.audit_reason_name as auditReasonName
+    , rr1.reason_name as reasonValue1, rr2.reason_name as reasonValue2
     from live_order o
     left join fs_user u on o.user_id=u.user_id
     left join company c on c.company_id=o.company_id
     left join company_user cu on cu.user_id=o.company_user_id
+    LEFT JOIN live_after_sales las ON las.order_id = o.order_id AND las.status = 4 AND las.is_del = 0
+    LEFT JOIN fs_refund_reason rr1 ON las.reason_id1 = rr1.id
+    LEFT JOIN fs_refund_reason rr2 ON las.reason_id2 = rr2.id
     <if test="maps.erpAccount != null and maps.erpAccount != ''">
         LEFT JOIN live_order_df df on df.order_id=o.order_id
 
@@ -1189,7 +1194,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             GROUP_CONCAT(DISTINCT spavs.bar_code SEPARATOR ',') AS bar_codes,
             spcs.cate_name,
 
-            lop.bank_transaction_id AS bankTransactionId
+            lop.bank_transaction_id AS bankTransactionId,
+
+            las.audit_remark AS auditRemark,
+            las.audit_reason_name AS auditReasonName,
+            rr1.reason_name AS reasonValue1,
+            rr2.reason_name AS reasonValue2
 
         FROM
             live_order o
@@ -1206,6 +1216,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 FROM live_order_payment sp
                 WHERE sp.business_code IS NOT NULL
             ) lop ON lop.business_code = o.order_code AND lop.rn = 1
+            LEFT JOIN live_after_sales las ON las.order_id = o.order_id AND las.status = 4 AND las.is_del = 0
+            LEFT JOIN fs_refund_reason rr1 ON las.reason_id1 = rr1.id
+            LEFT JOIN fs_refund_reason rr2 ON las.reason_id2 = rr2.id
 
         <where>
             o.is_del = 0 and p.product_id IS NOT NULL
@@ -1311,7 +1324,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             t4.nick_name as companyUserNickName,
             lop.bank_transaction_id as  bankTransactionId,
             t1.pay_money,
-            t1.pay_delivery as payPostage
+            t1.pay_delivery as payPostage,
+            las.audit_remark as auditRemark,
+            rr1.reason_name as reasonValue1,
+            rr2.reason_name as reasonValue2
         from
             live_order t1
                 left join live_order_item t2 on t1.order_id = t2.order_id
@@ -1326,6 +1342,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM live_order_payment sp
         WHERE sp.business_code IS NOT NULL
         ) lop ON lop.business_code = t1.order_code AND lop.rn = 1
+        LEFT JOIN live_after_sales las ON las.order_id = t1.order_id AND las.status = 4 AND las.is_del = 0
+        LEFT JOIN fs_refund_reason rr1 ON las.reason_id1 = rr1.id
+        LEFT JOIN fs_refund_reason rr2 ON las.reason_id2 = rr2.id
         <where>
             t1.is_del = 0 and fsps.product_id IS NOT NULL
             <if test="bankTransactionId != null and  bankTransactionId !=''">

+ 1 - 1
fs-service/src/main/resources/mapper/wx/WxSopLogsMapper.xml

@@ -248,7 +248,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             cwa.company_id
         FROM wx_sop_logs wsl
         LEFT JOIN wx_sop_user_info wsui ON wsl.sop_id = wsui.sop_id AND wsl.wx_contact_id = wsui.wx_contact_id
-        LEFT JOIN ylrz_his_scrm.company_wx_account cwa ON wsl.account_id = cwa.id
+        LEFT JOIN company_wx_account cwa ON wsl.account_id = cwa.id
         <where>
             <if test="sopId != null">AND wsl.sop_id = #{sopId}</if>
             <if test="sopUserId != null">AND wsl.sop_user_id = #{sopUserId}</if>

+ 2 - 2
fs-service/src/main/resources/mapper/wx/WxSopUserInfoMapper.xml

@@ -31,8 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                wsui.create_time, wsui.create_by, wsui.update_time, wsui.update_by, wsui.remark,
                COALESCE(wsui.tag_names, cc.tags) as tag_names
         from wx_sop_user_info wsui
-        left join ylrz_his_scrm.wx_contact wc on wsui.wx_contact_id = wc.id
-        left join ylrz_his_scrm.crm_customer cc on COALESCE(wc.customer_id, wsui.customer_id) = cc.customer_id
+        left join wx_contact wc on wsui.wx_contact_id = wc.id
+        left join crm_customer cc on COALESCE(wc.customer_id, wsui.customer_id) = cc.customer_id
     </sql>
 
     <select id="selectWxSopUserInfoList" parameterType="WxSopUserInfo" resultMap="WxSopUserInfoResult">

+ 1 - 1
fs-service/src/main/resources/mapper/wx/WxSopUserMapper.xml

@@ -29,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         w.create_time, w.create_by, w.update_time, w.update_by, w.remark,
         c.wx_nick_name AS account_name
         FROM wx_sop_user w
-        LEFT JOIN ylrz_his_scrm.company_wx_account c ON w.account_id = c.id
+        LEFT JOIN company_wx_account c ON w.account_id = c.id
         <where>
             <if test="type != null "> and type = #{type}</if>
             <if test="sopId != null "> and sop_id = #{sopId}</if>