Parcourir la source

feat(customer): 添加维保记录功能并优化客户模块

- 引入远程用户服务和Dubbo引用注解
- 修复投诉建议查询中的关联映射逻辑
- 优化客户联系人默认设置注释
- 激活客户注册中的验证码校验逻辑
- 重构订单交付服务中的用户部门名称回填逻辑
- 添加PC端维保信息控制器和相关接口
- 更新数据权限拦截器忽略表配置
- 添加设置主联系人功能接口
- 优化投诉建议列表查询参数传递
hurx il y a 2 semaines
Parent
commit
19d5901dc2

+ 2 - 1
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java

@@ -122,7 +122,8 @@ public class PlatformDataScopeInterceptor implements Interceptor {
         "statement_product",
         "statement_product",
         "invoice_info",
         "invoice_info",
         "sys_user_wechat",
         "sys_user_wechat",
-        "mini_page_set"
+        "mini_page_set",
+        "maintain_info"
         // 注意:前缀匹配需特殊处理(如 qrtz_),见 isIgnoreTable 方法
         // 注意:前缀匹配需特殊处理(如 qrtz_),见 isIgnoreTable 方法
     ));
     ));
 
 

+ 1 - 2
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/pc/PcComplaintsSuggestionsController.java

@@ -29,10 +29,9 @@ public class PcComplaintsSuggestionsController extends BaseController {
     private final IComplaintsSuggestionsService pcComplaintsSuggestionsService;
     private final IComplaintsSuggestionsService pcComplaintsSuggestionsService;
 
 
     @GetMapping("/list")
     @GetMapping("/list")
-    public TableDataInfo<ComplaintsSuggestionsVo> getComplaintsSuggestions(PageQuery pageQuery) {
+    public TableDataInfo<ComplaintsSuggestionsVo> getComplaintsSuggestions(ComplaintsSuggestionsBo bo,PageQuery pageQuery) {
         // 获取当前登录用户的企业ID
         // 获取当前登录用户的企业ID
         Long customerId = LoginHelper.getLoginUser().getCustomerId();
         Long customerId = LoginHelper.getLoginUser().getCustomerId();
-        ComplaintsSuggestionsBo bo = new ComplaintsSuggestionsBo();
         bo.setCustomerId(customerId);
         bo.setCustomerId(customerId);
         return pcComplaintsSuggestionsService.queryPageList(bo, pageQuery);
         return pcComplaintsSuggestionsService.queryPageList(bo, pageQuery);
     }
     }

+ 5 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/pc/PcContactController.java

@@ -161,4 +161,9 @@ public class PcContactController extends BaseController {
 
 
         return toAjax(customerContactService.deleteWithValidByIds(List.of(ids), true));
         return toAjax(customerContactService.deleteWithValidByIds(List.of(ids), true));
     }
     }
+    /*设置主联系人*/
+    @PutMapping("/changeIsPrimary")
+    public R<Void> changeIsPrimary(@RequestBody CustomerContactBo bo) {
+        return toAjax(customerContactService.changeIsPrimary(bo));
+    }
 }
 }

+ 45 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/pc/PcMaintainInfoController.java

@@ -0,0 +1,45 @@
+package org.dromara.customer.controller.pc;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.customer.domain.bo.MaintainInfoBo;
+import org.dromara.customer.service.IMaintainInfoService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pcMaintainInfo")
+public class PcMaintainInfoController extends BaseController {
+
+    private final IMaintainInfoService maintainInfoService;
+
+    /**
+     * 新增维保记录
+     */
+    @PostMapping()
+    public R<Void> add( @RequestBody MaintainInfoBo bo) {
+        Long customerId = LoginHelper.getLoginUser().getCustomerId();
+        bo.setCustomerId(customerId);
+        return toAjax(maintainInfoService.insertByBo(bo));
+    }
+
+    /**
+     * 修改维保记录
+     */
+    @PutMapping()
+    public R<Void> edit( @RequestBody MaintainInfoBo bo) {
+        Long customerId = LoginHelper.getLoginUser().getCustomerId();
+        bo.setCustomerId(customerId);
+        return toAjax(maintainInfoService.updateByBo(bo));
+    }
+}

+ 8 - 2
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/ComplaintsSuggestionsServiceImpl.java

@@ -2,6 +2,7 @@ package org.dromara.customer.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.redis.utils.SequenceUtils;
 import org.dromara.common.redis.utils.SequenceUtils;
 import org.dromara.customer.domain.CustomerContact;
 import org.dromara.customer.domain.CustomerContact;
 import org.dromara.customer.mapper.CustomerContactMapper;
 import org.dromara.customer.mapper.CustomerContactMapper;
+import org.dromara.system.api.RemoteUserService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.dromara.customer.domain.bo.ComplaintsSuggestionsBo;
 import org.dromara.customer.domain.bo.ComplaintsSuggestionsBo;
 import org.dromara.customer.domain.vo.ComplaintsSuggestionsVo;
 import org.dromara.customer.domain.vo.ComplaintsSuggestionsVo;
@@ -45,6 +47,9 @@ public class ComplaintsSuggestionsServiceImpl extends ServiceImpl<ComplaintsSugg
 
 
     private final CustomerContactMapper customerContactMapper;
     private final CustomerContactMapper customerContactMapper;
 
 
+    @DubboReference
+   private RemoteUserService remoteUserService;
+
     /**
     /**
      * 查询投诉与建议记录
      * 查询投诉与建议记录
      *
      *
@@ -70,8 +75,9 @@ public class ComplaintsSuggestionsServiceImpl extends ServiceImpl<ComplaintsSugg
         List<ComplaintsSuggestionsVo> records = result.getRecords();
         List<ComplaintsSuggestionsVo> records = result.getRecords();
         if (CollUtil.isNotEmpty(records)) {
         if (CollUtil.isNotEmpty(records)) {
             Set<Long> createByIds = records.stream().map(ComplaintsSuggestionsVo::getCreateBy).collect(Collectors.toSet());
             Set<Long> createByIds = records.stream().map(ComplaintsSuggestionsVo::getCreateBy).collect(Collectors.toSet());
-            List<CustomerContact> customerContacts = customerContactMapper.selectByIds(createByIds);
-            Map<Long, String> createByMap = customerContacts.stream().collect(Collectors.toMap(CustomerContact::getId, CustomerContact::getContactName));
+
+            List<CustomerContact> customerContacts = customerContactMapper.selectList(new LambdaQueryWrapper<CustomerContact>().in(CustomerContact::getUserId, createByIds));
+            Map<Long, String> createByMap = customerContacts.stream().collect(Collectors.toMap(CustomerContact::getUserId, CustomerContact::getContactName));
             records.forEach(r -> {
             records.forEach(r -> {
                 r.setCreateName(createByMap.get(r.getCreateBy()));
                 r.setCreateName(createByMap.get(r.getCreateBy()));
             });
             });

+ 1 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerContactServiceImpl.java

@@ -342,7 +342,7 @@ public class CustomerContactServiceImpl extends ServiceImpl<CustomerContactMappe
                     .eq(CustomerContact::getIsPrimary, SysPlatformYesNo.YES.getCode())
                     .eq(CustomerContact::getIsPrimary, SysPlatformYesNo.YES.getCode())
             );
             );
 
 
-            // 2. 设置当前地址为默认
+            // 2. 设置当前为默认
             CustomerContact current = new CustomerContact();
             CustomerContact current = new CustomerContact();
             current.setId(bo.getId());
             current.setId(bo.getId());
             current.setIsPrimary(SysPlatformYesNo.YES.getCode());
             current.setIsPrimary(SysPlatformYesNo.YES.getCode());

+ 7 - 7
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java

@@ -1215,13 +1215,13 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
     public Boolean register(CustomerRegisterBo bo) {
     public Boolean register(CustomerRegisterBo bo) {
         //先校验验证码是否正确
         //先校验验证码是否正确
         String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + bo.getPurchasePhone());
         String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + bo.getPurchasePhone());
-//        if (code == null) {
-//            throw new ServiceException("验证码已过期");
-//        }
-//
-//        if (!code.equals(bo.getCode())) {
-//            throw new ServiceException("验证码错误");
-//        }
+        if (code == null) {
+            throw new ServiceException("验证码已过期");
+        }
+
+        if (!code.equals(bo.getCode())) {
+            throw new ServiceException("验证码错误");
+        }
 
 
         //校验密码与确认密码是否一致
         //校验密码与确认密码是否一致
         if (!bo.getPassword().equals(bo.getConfirmPassword())) {
         if (!bo.getPassword().equals(bo.getConfirmPassword())) {

+ 12 - 5
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderDeliverServiceImpl.java

@@ -13,7 +13,6 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.enums.OrderStatus;
 import org.dromara.common.core.enums.OrderStatus;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.ObjectUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -25,10 +24,8 @@ import org.dromara.order.domain.OrderMain;
 import org.dromara.order.domain.OrderStatusLog;
 import org.dromara.order.domain.OrderStatusLog;
 import org.dromara.order.domain.bo.OrderDeliverBo;
 import org.dromara.order.domain.bo.OrderDeliverBo;
 import org.dromara.order.domain.bo.OrderDeliverProductBo;
 import org.dromara.order.domain.bo.OrderDeliverProductBo;
-import org.dromara.order.domain.bo.OrderStatusLogBo;
 import org.dromara.order.domain.vo.OrderDeliverProductVo;
 import org.dromara.order.domain.vo.OrderDeliverProductVo;
 import org.dromara.order.domain.vo.OrderDeliverVo;
 import org.dromara.order.domain.vo.OrderDeliverVo;
-import org.dromara.order.domain.vo.OrderMainVo;
 import org.dromara.order.domain.vo.OrderQuantitySummary;
 import org.dromara.order.domain.vo.OrderQuantitySummary;
 import org.dromara.order.mapper.*;
 import org.dromara.order.mapper.*;
 import org.dromara.order.service.IOrderDeliverService;
 import org.dromara.order.service.IOrderDeliverService;
@@ -505,12 +502,22 @@ public class OrderDeliverServiceImpl extends ServiceImpl<OrderDeliverMapper, Ord
                         BigDecimal::add
                         BigDecimal::add
                     )
                     )
                 ));
                 ));
+            Map<Long, Long> OrderIdAndCreateUserId = orderMainList.stream()
+                .collect(Collectors.toMap(
+                    OrderMain::getId,
+                    OrderMain::getCreateBy
+                ));
+            Map<Long, Long> OrderIdAndDeptId = orderMainList.stream()
+                .collect(Collectors.toMap(
+                    OrderMain::getId,
+                    OrderMain::getCreateDept
+                ));
 
 
             // 4. 回填 totalAmount 和其他字段
             // 4. 回填 totalAmount 和其他字段
             for (OrderDeliverVo record : records) {
             for (OrderDeliverVo record : records) {
                 record.setTotalAmount(deliverIdToTotalAmount.getOrDefault(record.getId(), BigDecimal.ZERO));
                 record.setTotalAmount(deliverIdToTotalAmount.getOrDefault(record.getId(), BigDecimal.ZERO));
-                record.setCreateName(userMap.getOrDefault(record.getCreateBy(), "未知用户"));
-                record.setCreateDeptName(deptMap.getOrDefault(record.getCreateDept(), "未知部门"));
+                record.setCreateName(userMap.get(OrderIdAndCreateUserId.get(record.getOrderId())));
+                record.setCreateDeptName(deptMap.get(OrderIdAndDeptId.get(record.getOrderId())));
                 record.setOrderTime(orderIdToorderTimeMap.get(record.getOrderId()));
                 record.setOrderTime(orderIdToorderTimeMap.get(record.getOrderId()));
             }
             }
         }
         }