فهرست منبع

feat(order): 优化订单分配和客户注册功能

- 在订单分配时同步父订单的支付状态到子订单
- 为市场平台(zc)添加特殊查询逻辑,处理assignee_type为空或zy类型的订单
- 集成SCM、DMS、SRM、BP平台的订单分配查询条件
- 客户注册时新增ERP销售信息记录
- 移除客户注册时的验证码验证逻辑
- 订单确认时设置确认时间字段
- 修复代码中的空格式问题
hurx 2 هفته پیش
والد
کامیت
3d4f5e40f9

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

@@ -33,10 +33,9 @@ import org.dromara.customer.utils.qcc.QccUtils;
 import org.dromara.customer.utils.qcc.domain.CompanyInfoResponse;
 import org.dromara.system.api.*;
 import org.dromara.system.api.domain.bo.RemoteUserBo;
+import org.dromara.system.api.domain.dto.AddressAreaDTO;
 import org.dromara.system.api.domain.vo.RemoteDeptVo;
-import org.dromara.system.api.domain.vo.RemoteComStaffVo;
 import org.dromara.system.api.domain.vo.RemoteDictDataVo;
-import org.dromara.system.api.domain.dto.AddressAreaDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -1203,13 +1202,13 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
     public Boolean register(CustomerRegisterBo bo) {
         //先校验验证码是否正确
         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())) {
@@ -1361,7 +1360,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
         remoteUserBo.setTenantId(LoginHelper.getTenantId());
         remoteUserBo.setStatus("0"); // 正常状态
         remoteUserBo.setSource(bo.getRegisterSource());
-        if (null!=bo.getOpenId()){
+        if (null != bo.getOpenId()) {
             remoteUserBo.setOpenId(bo.getOpenId());
         }
         Long userId = remoteUserService.addUser(remoteUserBo);
@@ -1396,6 +1395,11 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
             throw new ServiceException("客户联系人信息新增失败");
         }
 
+        // Erp销售信息
+        CustomerSalesInfo salesEntity = new CustomerSalesInfo();
+        salesEntity.setCustomerId(customerId);
+        customerSalesInfoMapper.insert(salesEntity);
+
         log.info("客户注册成功,客户ID:{},客户名称:{}", customerId, bo.getCustomerName());
 
         if (null != code) {

+ 1 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderAssignmentServiceImpl.java

@@ -531,6 +531,7 @@ public class OrderAssignmentServiceImpl extends ServiceImpl<OrderAssignmentMappe
         child.setAttachmentPath(parent.getAttachmentPath());
         child.setCreateBy(parent.getCreateBy());
         child.setCreateDept(parent.getCreateDept());
+        child.setPaymentStatus(parent.getPaymentStatus());
         // 新增分配字段
         child.setAssigneeId(assigneeId);
         child.setAssigneeType(assigneeType);

+ 25 - 1
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderMainServiceImpl.java

@@ -1,6 +1,7 @@
 package org.dromara.order.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.core.context.PlatformContext;
 import org.dromara.common.core.enums.AssigneeTypeConstants;
 import org.dromara.common.core.enums.OrderPayType;
 import org.dromara.common.core.enums.OrderStatus;
@@ -331,6 +333,28 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<OrderMain> lqw = Wrappers.lambdaQuery();
         lqw.orderByDesc(OrderMain::getId);
+        String platformCode = PlatformContext.getPlatform();
+        if (ObjectUtil.isNotEmpty(platformCode)) {
+            // 获取前端传过来的 assigneeType
+            String assigneeType = bo.getAssigneeType();
+            if ("market".equals(platformCode)) {
+                // 判断当前是否为 zy 类型
+                if ("zy".equals(assigneeType)) {
+                    // 使用 and 嵌套查询,实现 (assignee_type = 'zy' OR assignee_type IS NULL)
+                    lqw.and(wrapper -> wrapper
+                        .eq(OrderMain::getAssigneeType, "zy")
+                        .or()
+                        .isNull(OrderMain::getAssigneeType)
+                        .or()
+                        .eq(OrderMain::getAssigneeType, "")
+                    );
+                }
+            } else if ("scm".equals(platformCode) || "dms".equals(platformCode)) {
+                lqw.eq(StringUtils.isNotBlank(bo.getAssigneeType()), OrderMain::getAssigneeType, bo.getAssigneeType());
+            } else if ("srm".equals(platformCode) || "bp".equals(platformCode)) {
+                lqw.eq(StringUtils.isNotBlank(bo.getAssigneeType()), OrderMain::getAssigneeType, bo.getAssigneeType());
+            }
+        }
         lqw.like(StringUtils.isNotBlank(bo.getOrderNo()), OrderMain::getOrderNo, bo.getOrderNo());
         lqw.eq(StringUtils.isNotBlank(bo.getCustomerCode()), OrderMain::getCustomerCode, bo.getCustomerCode());
         lqw.eq(StringUtils.isNotBlank(bo.getShipmentNo()), OrderMain::getShipmentNo, bo.getShipmentNo());
@@ -368,7 +392,6 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
         lqw.eq(bo.getAfterSaleCompleted() != null, OrderMain::getAfterSaleCompleted, bo.getAfterSaleCompleted());
         lqw.eq(bo.getAfterSalePending() != null, OrderMain::getAfterSalePending, bo.getAfterSalePending());
         lqw.eq(StringUtils.isNotBlank(bo.getPushStatus()), OrderMain::getPushStatus, bo.getPushStatus());
-        lqw.eq(StringUtils.isNotBlank(bo.getAssigneeType()), OrderMain::getAssigneeType, bo.getAssigneeType());
         lqw.eq(StringUtils.isNotBlank(bo.getCheckStatus()), OrderMain::getCheckStatus, bo.getCheckStatus());
         lqw.eq(StringUtils.isNotBlank(bo.getDeliveryType()), OrderMain::getDeliveryType, bo.getDeliveryType());
         lqw.eq(StringUtils.isNotBlank(bo.getOrderCategory()), OrderMain::getOrderCategory, bo.getOrderCategory());
@@ -741,6 +764,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
         // 8. 更新主订单:仅更新 totalAmount、payableAmount 和 orderStatus
         existingOrder.setTotalAmount(newTotalAmount);
         existingOrder.setPayableAmount(newPayableAmount);
+        existingOrder.setConfirmTime(new Date());
         existingOrder.setOrderStatus(OrderStatus.PENDING_SHIPMENT.getCode()); // 待发货
 
         // 9. 执行更新