Huanyi 1 неделя назад
Родитель
Сommit
b470bf7598
20 измененных файлов с 380 добавлено и 31 удалено
  1. 5 0
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/WechatAppletAuthStrategy.java
  2. 23 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysComplaintController.java
  3. 27 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysCustomerController.java
  4. 18 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysComplaint.java
  5. 6 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCustomer.java
  6. 18 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysComplaintBo.java
  7. 8 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysCustomerBo.java
  8. 33 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysComplaintVo.java
  9. 23 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysCustomerVo.java
  10. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysComplaintService.java
  11. 12 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCustomerService.java
  12. 49 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysComplaintServiceImpl.java
  13. 81 17
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCustomerServiceImpl.java
  14. 14 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrder.java
  15. 10 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/bo/ErpOrderBo.java
  16. 10 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderVo.java
  17. 5 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpPackServiceImpl.java
  18. 6 0
      ruoyi-modules/yingpaipay-erp/src/main/resources/mapper/ErpOrderMapper.xml
  19. 13 1
      script/sql/sqlserver/v1/HS_ERP_Order-create.sql
  20. 8 0
      script/sql/sqlserver/v1/HTSail_CS-create.sql

+ 5 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/impl/WechatAppletAuthStrategy.java

@@ -77,6 +77,11 @@ public class WechatAppletAuthStrategy implements IAuthStrategy {
             return loginVo;
         }
 
+        // 检查客户账号状态,禁用则拒绝登录
+        if ("0".equals(customer.getStatus())) {
+            throw new ServiceException("您的账号已被封禁,请联系管理员");
+        }
+
         LoginVo loginVo = new LoginVo();
         loginVo.setAccessToken(generateToken(customer.getId(), client));
         loginVo.setExpireIn(StpUtil.getTokenTimeout());

+ 23 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysComplaintController.java

@@ -50,6 +50,29 @@ public class SysComplaintController extends BaseController {
         return toAjax(sysComplaintService.insertByBo(bo));
     }
 
+    /**
+     * 查询投诉建议详情
+     * @Author: Antigravity
+     */
+//     @SaCheckPermission("complaint:complaint:query")
+    @GetMapping("/detail/{id}")
+    public R<SysComplaintVo> detail(@PathVariable Long id) {
+        return R.ok(sysComplaintService.queryById(id));
+    }
+
+    /**
+     * 处理投诉建议
+     * @Author: Antigravity
+     */
+//     @SaCheckPermission("complaint:complaint:deal")
+    @Log(title = "投诉建议处理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping("/deal")
+    public R<Void> deal(@RequestBody SysComplaintBo bo) {
+        bo.setStatus("1");
+        return toAjax(sysComplaintService.updateByBo(bo));
+    }
+
     /**
      * 删除投诉建议(管理端)
      *

+ 27 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysCustomerController.java

@@ -41,7 +41,7 @@ public class SysCustomerController extends BaseController {
     @GetMapping("/getInfo")
     public R<SysCustomerVo> getMyInfo() {
         Long customerId = LoginHelper.getUserId();
-        return R.ok(sysCustomerService.queryById(customerId));
+        return R.ok(sysCustomerService.queryDetail(customerId));
     }
 
     /**
@@ -78,10 +78,19 @@ public class SysCustomerController extends BaseController {
     }
 
     /**
-     * 授权客户
+     * 获取客户详细信息(含授权客户详情列表)
+     * @Author: Antigravity
+     */
+    @GetMapping("/detail/{id}")
+    public R<SysCustomerVo> getDetail(@NotNull(message = "主键不能为空") @PathVariable Long id) {
+        return R.ok(sysCustomerService.queryDetail(id));
+    }
+
+    /**
+     * 授权客户(支持多个,逗号分隔)
      *
-     * @param id             客户ID
-     * @param authClientFRowID 授权客户 RowID
+     * @param id               客户ID
+     * @param authClientFRowIDs 授权客户 RowID 列表
      * @Author: Antigravity
      */
 //     @SaCheckPermission("customer:customer:auth")
@@ -89,10 +98,22 @@ public class SysCustomerController extends BaseController {
     @RepeatSubmit()
     @PutMapping("/auth")
     public R<Void> auth(@NotNull(message = "客户ID不能为空") Long id,
-                        @NotEmpty(message = "授权客户 RowID 不能为空") String authClientFRowID) {
+                        @NotEmpty(message = "授权客户 RowID 不能为空") String authClientFRowIDs) {
         SysCustomerBo bo = new SysCustomerBo();
         bo.setId(id);
-        bo.setAuthClientFRowID(authClientFRowID);
+        bo.setAuthClientFRowID(authClientFRowIDs);
         return toAjax(sysCustomerService.updateByBo(bo));
     }
+
+    /**
+     * 修改客户状态(启用/禁用)
+     * @Author: Antigravity
+     */
+//     @SaCheckPermission("customer:customer:changeStatus")
+    @Log(title = "客户管理", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@NotNull(message = "客户ID不能为空") Long id,
+                                @NotNull(message = "状态不能为空") String status) {
+        return toAjax(sysCustomerService.changeStatus(id, status));
+    }
 }

+ 18 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysComplaint.java

@@ -46,6 +46,24 @@ public class SysComplaint extends TenantEntity {
      */
     private Long customerId;
 
+    /**
+     * 状态(0-待处理 1-已处理)
+     * @Author: Antigravity
+     */
+    private String status;
+
+    /**
+     * 处理结果
+     * @Author: Antigravity
+     */
+    private String dealResult;
+
+    /**
+     * 处理凭证(图片OSS ID逗号分隔)
+     * @Author: Antigravity
+     */
+    private String dealImages;
+
     /**
      * 删除标志(0代表存在 1代表删除)
      */

+ 6 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCustomer.java

@@ -61,6 +61,12 @@ public class SysCustomer extends TenantEntity {
      */
     private Long avatar;
 
+    /**
+     * 账号状态(0-禁用 1-启用)
+     * @Author: Antigravity
+     */
+    private String status;
+
     /**
      * 删除标志(0代表存在 1代表删除)
      */

+ 18 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysComplaintBo.java

@@ -48,4 +48,22 @@ public class SysComplaintBo extends BaseEntity {
      */
     private String customerName;
 
+    /**
+     * 状态(0-待处理 1-已处理)
+     * @Author: Antigravity
+     */
+    private String status;
+
+    /**
+     * 处理结果
+     * @Author: Antigravity
+     */
+    private String dealResult;
+
+    /**
+     * 处理凭证(图片OSS ID逗号分隔)
+     * @Author: Antigravity
+     */
+    private String dealImages;
+
 }

+ 8 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysCustomerBo.java

@@ -50,9 +50,9 @@ public class SysCustomerBo extends BaseEntity {
     private String wechatUnionid;
 
     /**
-     * 授权客户ERP RowID
+     * 授权客户ERP RowID(多个逗号分隔)
+     * @Author: Antigravity
      */
-    @Size(min = 0, max = 100, message = "授权客户ERP RowID长度不能超过{max}个字符")
     private String authClientFRowID;
 
     /**
@@ -60,4 +60,10 @@ public class SysCustomerBo extends BaseEntity {
      */
     private Long avatar;
 
+    /**
+     * 账号状态(0-禁用 1-启用)
+     * @Author: Antigravity
+     */
+    private String status;
+
 }

+ 33 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysComplaintVo.java

@@ -65,6 +65,39 @@ public class SysComplaintVo implements Serializable {
     @Translation(type = TransConstant.CUSTOMER_ID_TO_NAME, mapper = "customerId")
     private String customerNickname;
 
+    /**
+     * 客户手机号
+     * @Author: Antigravity
+     */
+    private String customerPhone;
+
+    /**
+     * 状态(0-待处理 1-已处理)
+     * @Author: Antigravity
+     */
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    /**
+     * 处理结果
+     * @Author: Antigravity
+     */
+    @ExcelProperty(value = "处理结果")
+    private String dealResult;
+
+    /**
+     * 处理凭证图片OSS ID(逗号分隔)
+     * @Author: Antigravity
+     */
+    private String dealImages;
+
+    /**
+     * 处理凭证图片URL(逗号拼接,通过OSS ID翻译)
+     * @Author: Antigravity
+     */
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "dealImages")
+    private String dealImageUrls;
+
     /**
      * 创建时间
      */

+ 23 - 5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysCustomerVo.java

@@ -11,6 +11,7 @@ import org.dromara.system.domain.SysCustomer;
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 客户视图对象 sys_customer
@@ -54,28 +55,38 @@ public class SysCustomerVo implements Serializable {
     private String wechatUnionid;
 
     /**
-     * 授权客户类型
+     * 授权客户类型(多个逗号分隔)
+     * @Author: Antigravity
      */
     @ExcelProperty(value = "授权客户类型")
     private String authClientClass;
 
     /**
-     * 授权加入时间
+     * 授权加入时间(多个逗号分隔)
+     * @Author: Antigravity
      */
     @ExcelProperty(value = "授权加入时间")
-    private Date authClientEnterDate;
+    private String authClientEnterDate;
 
     /**
-     * 授权客户ERP RowID
+     * 授权客户ERP RowID(多个逗号分隔)
+     * @Author: Antigravity
      */
     private String authClientFRowID;
 
     /**
-     * 授权客户名称
+     * 授权客户名称(多个逗号分隔)
+     * @Author: Antigravity
      */
     @ExcelProperty(value = "授权客户名称")
     private String authClientName;
 
+    /**
+     * 授权客户详情列表(仅详情接口填充)
+     * @Author: Antigravity
+     */
+    private List<org.dromara.yingpaipay.api.erp.domain.vo.CommonErpClientVo> authClientList;
+
     /**
      * 头像OSS ID
      */
@@ -88,6 +99,13 @@ public class SysCustomerVo implements Serializable {
     @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "avatar")
     private String avatarUrl;
 
+    /**
+     * 账号状态(0-禁用 1-启用)
+     * @Author: Antigravity
+     */
+    @ExcelProperty(value = "账号状态")
+    private String status;
+
     /**
      * 注册时间
      */

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysComplaintService.java

@@ -9,6 +9,7 @@ import java.util.Collection;
 
 /**
  * 投诉建议 Service接口
+ * @Author: Antigravity
  */
 public interface ISysComplaintService {
 
@@ -17,11 +18,21 @@ public interface ISysComplaintService {
      */
     TableDataInfo<SysComplaintVo> queryPageList(SysComplaintBo bo, PageQuery pageQuery);
 
+    /**
+     * 根据ID查询投诉建议详情
+     */
+    SysComplaintVo queryById(Long id);
+
     /**
      * 新增投诉建议
      */
     Boolean insertByBo(SysComplaintBo bo);
 
+    /**
+     * 处理投诉建议
+     */
+    Boolean updateByBo(SysComplaintBo bo);
+
     /**
      * 批量删除投诉建议
      */

+ 12 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCustomerService.java

@@ -19,6 +19,12 @@ public interface ISysCustomerService {
      */
     SysCustomerVo queryById(Long id);
 
+    /**
+     * 查询客户详情(含授权客户完整信息列表)
+     * @Author: Antigravity
+     */
+    SysCustomerVo queryDetail(Long id);
+
     /**
      * 分页查询客户列表
      */
@@ -48,4 +54,10 @@ public interface ISysCustomerService {
      * 通过客户ID查询客户昵称
      */
     String selectUserNameById(Long customerId);
+
+    /**
+     * 修改客户状态(启用/禁用)
+     * @Author: Antigravity
+     */
+    Boolean changeStatus(Long id, String status);
 }

+ 49 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysComplaintServiceImpl.java

@@ -18,11 +18,14 @@ import org.dromara.system.service.ISysComplaintService;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
  * 投诉建议 Service业务层处理
+ * @Author: Antigravity
  */
 @RequiredArgsConstructor
 @Service
@@ -35,9 +38,37 @@ public class SysComplaintServiceImpl implements ISysComplaintService {
     public TableDataInfo<SysComplaintVo> queryPageList(SysComplaintBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<SysComplaint> lqw = buildQueryWrapper(bo);
         Page<SysComplaintVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        fillCustomerPhone(result.getRecords());
         return TableDataInfo.build(result);
     }
 
+    /**
+     * 批量填充客户手机号
+     */
+    private void fillCustomerPhone(List<SysComplaintVo> list) {
+        if (list == null || list.isEmpty()) {
+            return;
+        }
+        List<Long> customerIds = list.stream()
+            .map(SysComplaintVo::getCustomerId)
+            .filter(id -> id != null)
+            .distinct()
+            .collect(Collectors.toList());
+        if (customerIds.isEmpty()) {
+            return;
+        }
+        Map<Long, String> phoneMap = customerMapper.selectList(
+            Wrappers.lambdaQuery(SysCustomer.class)
+                .select(SysCustomer::getId, SysCustomer::getPhone)
+                .in(SysCustomer::getId, customerIds)
+        ).stream().collect(Collectors.toMap(SysCustomer::getId, SysCustomer::getPhone, (v1, v2) -> v2, HashMap::new));
+        list.forEach(vo -> {
+            if (vo.getCustomerId() != null) {
+                vo.setCustomerPhone(phoneMap.get(vo.getCustomerId()));
+            }
+        });
+    }
+
     private LambdaQueryWrapper<SysComplaint> buildQueryWrapper(SysComplaintBo bo) {
         LambdaQueryWrapper<SysComplaint> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getFeedbackType()), SysComplaint::getFeedbackType, bo.getFeedbackType());
@@ -56,12 +87,30 @@ public class SysComplaintServiceImpl implements ISysComplaintService {
         return lqw;
     }
 
+    @Override
+    public SysComplaintVo queryById(Long id) {
+        SysComplaintVo vo = baseMapper.selectVoById(id);
+        if (vo != null && vo.getCustomerId() != null) {
+            SysCustomer customer = customerMapper.selectById(vo.getCustomerId());
+            if (customer != null) {
+                vo.setCustomerPhone(customer.getPhone());
+            }
+        }
+        return vo;
+    }
+
     @Override
     public Boolean insertByBo(SysComplaintBo bo) {
         SysComplaint add = MapstructUtils.convert(bo, SysComplaint.class);
         return baseMapper.insert(add) > 0;
     }
 
+    @Override
+    public Boolean updateByBo(SysComplaintBo bo) {
+        SysComplaint update = MapstructUtils.convert(bo, SysComplaint.class);
+        return baseMapper.updateById(update) > 0;
+    }
+
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids) {
         return baseMapper.deleteByIds(ids) > 0;

+ 81 - 17
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCustomerServiceImpl.java

@@ -22,9 +22,12 @@ import org.springframework.stereotype.Service;
 
 import org.dromara.yingpaipay.api.erp.CommonErpClientService;
 
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 客户管理 Service业务层处理
@@ -60,45 +63,92 @@ public class SysCustomerServiceImpl implements ISysCustomerService, CustomerServ
     }
 
     /**
-     * 批量填充授权客户信息
+     * 查询客户详情(含授权客户完整信息列表)
+     * @Author: Antigravity
+     */
+    @Override
+    public SysCustomerVo queryDetail(Long id) {
+        SysCustomerVo vo = baseMapper.selectVoById(id);
+        fillAuthClientDetail(vo);
+        return vo;
+    }
+
+    /**
+     * 批量填充授权客户信息(列表用,逗号分隔拼接名称/类型/时间)
+     * @Author: Antigravity
      */
     private void fillAuthClientName(List<SysCustomerVo> list) {
         if (list == null || list.isEmpty()) {
             return;
         }
-        List<String> authClientFRowIDs = list.stream()
+        List<String> allIds = list.stream()
             .map(SysCustomerVo::getAuthClientFRowID)
             .filter(StringUtils::isNotBlank)
+            .flatMap(ids -> Arrays.stream(ids.split(",")))
+            .map(String::trim)
+            .filter(StringUtils::isNotBlank)
             .distinct()
-            .toList();
-        if (authClientFRowIDs.isEmpty()) {
+            .collect(Collectors.toList());
+        if (allIds.isEmpty()) {
             return;
         }
-        Map<String, CommonErpClientVo> infoMap = commonErpClientService.selectInfoByFRowIDs(authClientFRowIDs);
+        Map<String, CommonErpClientVo> infoMap = commonErpClientService.selectInfoByFRowIDs(allIds);
         list.forEach(vo -> {
-            CommonErpClientVo erpVo = infoMap.get(vo.getAuthClientFRowID());
-            if (erpVo != null) {
-                vo.setAuthClientName(erpVo.getName());
-                vo.setAuthClientClass(erpVo.getClientClass());
-                vo.setAuthClientEnterDate(erpVo.getEnterDate());
+            if (StringUtils.isBlank(vo.getAuthClientFRowID())) {
+                return;
             }
+            List<String> ids = Arrays.stream(vo.getAuthClientFRowID().split(","))
+                .map(String::trim)
+                .filter(StringUtils::isNotBlank)
+                .collect(Collectors.toList());
+            List<CommonErpClientVo> clients = ids.stream()
+                .map(infoMap::get)
+                .filter(c -> c != null)
+                .collect(Collectors.toList());
+            vo.setAuthClientName(clients.stream().map(CommonErpClientVo::getName)
+                .collect(Collectors.joining(" / ")));
+            vo.setAuthClientClass(clients.stream().map(CommonErpClientVo::getClientClass)
+                .collect(Collectors.joining(" / ")));
+            vo.setAuthClientEnterDate(clients.stream()
+                .map(c -> c.getEnterDate() != null ? c.getEnterDate().toString() : "")
+                .collect(Collectors.joining(" / ")));
         });
     }
 
     /**
-     * 单个填充授权客户信息
+     * 单个填充授权客户简要信息(兼容旧逻辑)
+     * @Author: Antigravity
      */
     private void fillAuthClientName(SysCustomerVo vo) {
         if (vo == null || StringUtils.isBlank(vo.getAuthClientFRowID())) {
             return;
         }
-        Map<String, CommonErpClientVo> infoMap = commonErpClientService.selectInfoByFRowIDs(List.of(vo.getAuthClientFRowID()));
-        CommonErpClientVo erpVo = infoMap.get(vo.getAuthClientFRowID());
-        if (erpVo != null) {
-            vo.setAuthClientName(erpVo.getName());
-            vo.setAuthClientClass(erpVo.getClientClass());
-            vo.setAuthClientEnterDate(erpVo.getEnterDate());
+        fillAuthClientName(Collections.singletonList(vo));
+    }
+
+    /**
+     * 填充授权客户完整详情列表(详情弹框用)
+     * @Author: Antigravity
+     */
+    private void fillAuthClientDetail(SysCustomerVo vo) {
+        if (vo == null || StringUtils.isBlank(vo.getAuthClientFRowID())) {
+            vo.setAuthClientList(Collections.emptyList());
+            return;
+        }
+        List<String> ids = Arrays.stream(vo.getAuthClientFRowID().split(","))
+            .map(String::trim)
+            .filter(StringUtils::isNotBlank)
+            .collect(Collectors.toList());
+        if (ids.isEmpty()) {
+            vo.setAuthClientList(Collections.emptyList());
+            return;
         }
+        Map<String, CommonErpClientVo> infoMap = commonErpClientService.selectInfoByFRowIDs(ids);
+        List<CommonErpClientVo> clients = ids.stream()
+            .map(infoMap::get)
+            .filter(c -> c != null)
+            .collect(Collectors.toList());
+        vo.setAuthClientList(clients);
     }
 
     private LambdaQueryWrapper<SysCustomer> buildQueryWrapper(SysCustomerBo bo) {
@@ -157,4 +207,18 @@ public class SysCustomerServiceImpl implements ISysCustomerService, CustomerServ
         );
         return customer != null ? customer.getUserName() : null;
     }
+
+    /**
+     * 修改客户状态(启用/禁用)
+     * @Author: Antigravity
+     */
+    @Override
+    public Boolean changeStatus(Long id, String status) {
+        SysCustomer customer = baseMapper.selectById(id);
+        if (customer == null) {
+            throw new org.dromara.common.core.exception.ServiceException("客户不存在");
+        }
+        customer.setStatus(status);
+        return baseMapper.updateById(customer) > 0;
+    }
 }

+ 14 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrder.java

@@ -62,6 +62,20 @@ public class ErpOrder implements Serializable {
     @TableField("FErpDocCode")
     private String docCode;
 
+    /**
+     * 下单客户ID
+     * @Author: Antigravity
+     */
+    @TableField("FClientID")
+    private String clientId;
+
+    /**
+     * 下单客户名称
+     * @Author: Antigravity
+     */
+    @TableField("FClientName")
+    private String clientName;
+
     /**
      * 创建部门
      */

+ 10 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/bo/ErpOrderBo.java

@@ -52,7 +52,17 @@ public class ErpOrderBo implements Serializable {
      */
     private String docCode;
 
+    /**
+     * 下单客户ID
+     * @Author: Antigravity
+     */
+    private String clientId;
 
+    /**
+     * 下单客户名称
+     * @Author: Antigravity
+     */
+    private String clientName;
 
     /**
      * 绑定的订单明细 ID 列表

+ 10 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderVo.java

@@ -67,7 +67,17 @@ public class ErpOrderVo implements Serializable {
      */
     private Date createTime;
 
+    /**
+     * 下单客户ID
+     * @Author: Antigravity
+     */
+    private String clientId;
 
+    /**
+     * 下单客户名称
+     * @Author: Antigravity
+     */
+    private String clientName;
 
     /**
      * 订单明细列表

+ 5 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpPackServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.erp.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -36,6 +37,10 @@ public class ErpPackServiceImpl implements IErpPackService {
     private LambdaQueryWrapper<ErpPack> buildQueryWrapper(ErpPackQuery query) {
         LambdaQueryWrapper<ErpPack> lqw = Wrappers.lambdaQuery();
         lqw.eq(ErpPack::getStopUse, 0);
+        if (query != null) {
+            lqw.like(StrUtil.isNotBlank(query.getNum()), ErpPack::getNum, query.getNum());
+            lqw.like(StrUtil.isNotBlank(query.getName()), ErpPack::getName, query.getName());
+        }
         lqw.orderByAsc(ErpPack::getNum);
         return lqw;
     }

+ 6 - 0
ruoyi-modules/yingpaipay-erp/src/main/resources/mapper/ErpOrderMapper.xml

@@ -18,6 +18,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             o.FIsConfirmed as isConfirmed,
             o.FErpDocCode as docCode,
             o.CreateTime as createTime,
+            o.FClientID as clientId,
+            o.FClientName as clientName,
             m.Finished as finished,
             m.ExFinished as exFinished,
             m.Reviewed as reviewed,
@@ -117,6 +119,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             o.FIsConfirmed as isConfirmed,
             o.FErpDocCode as docCode,
             o.CreateTime as createTime,
+            o.FClientID as clientId,
+            o.FClientName as clientName,
             m.Finished as finished,
             m.ExFinished as exFinished,
             m.Reviewed as reviewed,
@@ -216,6 +220,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             o.FIsConfirmed as isConfirmed,
             o.FErpDocCode as docCode,
             o.CreateTime as createTime,
+            o.FClientID as clientId,
+            o.FClientName as clientName,
             m.Finished as finished,
             m.ExFinished as exFinished,
             m.Reviewed as reviewed,

+ 13 - 1
script/sql/sqlserver/v1/HS_ERP_Order-create.sql

@@ -8,6 +8,9 @@ create table sys_complaint
     content         nvarchar(2000)    DEFAULT ('') NULL,
     images          nvarchar(2000)    NULL,
     customer_id     bigint            NULL,
+    status          nvarchar(20)      DEFAULT ('0') NULL,
+    deal_result     nvarchar(2000)    NULL,
+    deal_images     nvarchar(2000)    NULL,
     tenant_id       nvarchar(20)      DEFAULT ('000000') NULL,
     del_flag        char(1)           DEFAULT ('0') NULL,
     create_dept     bigint,
@@ -32,6 +35,12 @@ EXEC sys.sp_addextendedproperty 'MS_Description', N'图片OSS ID列表(JSON数
 GO
 EXEC sys.sp_addextendedproperty 'MS_Description', N'投诉客户ID', 'SCHEMA', N'dbo', 'TABLE', N'sys_complaint', 'COLUMN', N'customer_id'
 GO
+EXEC sys.sp_addextendedproperty 'MS_Description', N'状态(0-待处理 1-已处理)', 'SCHEMA', N'dbo', 'TABLE', N'sys_complaint', 'COLUMN', N'status'
+GO
+EXEC sys.sp_addextendedproperty 'MS_Description', N'处理结果', 'SCHEMA', N'dbo', 'TABLE', N'sys_complaint', 'COLUMN', N'deal_result'
+GO
+EXEC sys.sp_addextendedproperty 'MS_Description', N'处理凭证(图片OSS ID逗号分隔)', 'SCHEMA', N'dbo', 'TABLE', N'sys_complaint', 'COLUMN', N'deal_images'
+GO
 EXEC sys.sp_addextendedproperty 'MS_Description', N'租户编号', 'SCHEMA', N'dbo', 'TABLE', N'sys_complaint', 'COLUMN', N'tenant_id'
 GO
 EXEC sys.sp_addextendedproperty 'MS_Description', N'删除标志(0代表存在 1代表删除)', 'SCHEMA', N'dbo', 'TABLE', N'sys_complaint', 'COLUMN', N'del_flag'
@@ -91,8 +100,9 @@ create table sys_customer
     phone               nvarchar(20)      DEFAULT ('') NULL,
     wechat_openid       nvarchar(100)     DEFAULT ('') NULL,
     wechat_unionid      nvarchar(100)     DEFAULT ('') NULL,
-    auth_client_frowid  nvarchar(64)      NULL,
+    auth_client_frowid  nvarchar(max)     NULL,
     avatar              bigint            NULL,
+    status              char(1)           DEFAULT ('1') NULL,
     tenant_id           nvarchar(20)      DEFAULT ('000000') NULL,
     del_flag            char(1)           DEFAULT ('0') NULL,
     create_dept         bigint,
@@ -121,6 +131,8 @@ EXEC sys.sp_addextendedproperty 'MS_Description', N'授权客户ERP RowID', 'SCH
 GO
 EXEC sys.sp_addextendedproperty 'MS_Description', N'头像OSS ID', 'SCHEMA', N'dbo', 'TABLE', N'sys_customer', 'COLUMN', N'avatar'
 GO
+EXEC sys.sp_addextendedproperty 'MS_Description', N'账号状态(0-禁用 1-启用)', 'SCHEMA', N'dbo', 'TABLE', N'sys_customer', 'COLUMN', N'status'
+GO
 EXEC sys.sp_addextendedproperty 'MS_Description', N'租户编号', 'SCHEMA', N'dbo', 'TABLE', N'sys_customer', 'COLUMN', N'tenant_id'
 GO
 EXEC sys.sp_addextendedproperty 'MS_Description', N'删除标志(0代表存在 1代表删除)', 'SCHEMA', N'dbo', 'TABLE', N'sys_customer', 'COLUMN', N'del_flag'

+ 8 - 0
script/sql/sqlserver/v1/HTSail_CS-create.sql

@@ -10,6 +10,10 @@ CREATE TABLE [dbo].[t_Applet_Order] (
   [FIsConfirmed] int DEFAULT 0 NULL,
   [FErpDocCode] varchar(50) NULL,
 
+  -- 下单客户信息
+  [FClientID] varchar(50) NULL,
+  [FClientName] varchar(100) NULL,
+
   -- 常规审计字段
   [CreateDept] bigint NULL,
   [CreateBy] bigint NULL,
@@ -35,6 +39,10 @@ EXEC sp_addextendedproperty 'MS_Description', N'是否已确认', 'SCHEMA', N'db
 GO
 EXEC sp_addextendedproperty 'MS_Description', N'ERP单据编号', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FErpDocCode'
 GO
+EXEC sp_addextendedproperty 'MS_Description', N'下单客户ID', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FClientID'
+GO
+EXEC sp_addextendedproperty 'MS_Description', N'下单客户名称', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FClientName'
+GO
 EXEC sp_addextendedproperty 'MS_Description', N'创建部门', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'CreateDept'
 GO