Переглянути джерело

feat(system): 添加用户手机号重置功能

- 在 ChangeUserPwdBo 中添加新手机号码字段
- 实现 resetUserPhonenumber 方法用于重置用户手机号
- 添加 PC 端修改手机号接口,集成验证码校验机制
- 完善用户服务层手机号重置业务逻辑

feat(order): 增加订单退货状态更新功能

- 在 IOrderReturnService 中添加 updateStatus 方法
- 实现 OrderReturnServiceImpl 的 updateStatus 业务逻辑
- 添加 Controller 层 changeStatus 接口支持撤回申请
chore(common): 扩展平台数据范围拦截器配置
- 在 PlatformDataScopeInterceptor 中添加 ns_diy_ 表前缀支持
- 更新 isIgnoreTable 方法支持新的表前缀匹配规则

feat(bill): 实现发票状态变更联动订单状态更新

- 优化 StatementInvoiceServiceImpl 中的发票状态更新逻辑
- 添加发票状态变更时同步更新关联订单开票状态的功能
- 实现发票与订单状态的联动更新机制

feat(external): 完善第三方系统接口字段定义
- 重构 ThirdpartyAfterOrder 相关 BO 和 DTO 类字段命名
- 添加 ThirdpartyOrderAddBo 订单新增参数类
- 完善 ThirdpartyTracking 和物流跟踪相关字段定义
- 添加数据验证注解确保关键字段不为空
hurx 1 місяць тому
батько
коміт
b4be852bf6
25 змінених файлів з 307 додано та 31 видалено
  1. 21 3
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderAddBo.java
  2. 7 1
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderBo.java
  3. 7 2
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderListBo.java
  4. 74 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderAddBo.java
  5. 16 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderProductBo.java
  6. 2 2
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartySetAfterStateBo.java
  7. 1 1
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartySetOrderPayStateBo.java
  8. 20 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyTrackingBo.java
  9. 10 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyTrackingStatusBo.java
  10. 7 2
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyAfterOrderStatusDto.java
  11. 7 2
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyOrderPayStateDto.java
  12. 7 2
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyTrackingDto.java
  13. 5 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyTrackingStatusDto.java
  14. 3 1
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java
  15. 19 4
      ruoyi-modules/ruoyi-bill/src/main/java/org/dromara/bill/service/impl/StatementInvoiceServiceImpl.java
  16. 4 1
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/thirdparty/ThirdpartyController.java
  17. 10 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/controller/OrderReturnController.java
  18. 9 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/controller/pc/PcOrderReturnController.java
  19. 1 1
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/OrderReturn.java
  20. 7 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/IOrderReturnService.java
  21. 8 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderReturnServiceImpl.java
  22. 23 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/pc/PcSysUserController.java
  23. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ChangeUserPwdBo.java
  24. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
  25. 23 9
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

+ 21 - 3
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderAddBo.java

@@ -1,6 +1,9 @@
 package org.dromara.external.api.thirdparty.domain.bo;
 
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -20,9 +23,15 @@ public class ThirdpartyAfterOrderAddBo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-     * 售后单号
+     * 订单ID
      */
-    private String orderID;
+    private Long orderId;
+
+    /**
+     * 订单编号
+     */
+    @NotNull(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String orderNo;
 
     /**
      * 售后金额
@@ -39,14 +48,23 @@ public class ThirdpartyAfterOrderAddBo implements Serializable {
      */
     private Integer state;
 
+    /**
+     * 售后类型 1退换货 4 仅退款
+     */
+    @NotNull(message = "售后类型不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String serviceType;
+
+
     /**
      * 售后原因
      */
-    private String reason;
+    @NotNull(message = "售后原因", groups = {AddGroup.class, EditGroup.class})
+    private Long return_reason_id;
 
     /**
      * 售后描述
      */
+    @NotNull(message = "售后描述", groups = {AddGroup.class, EditGroup.class})
     private String desc;
 
     /**

+ 7 - 1
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderBo.java

@@ -19,5 +19,11 @@ public class ThirdpartyAfterOrderBo implements Serializable {
     /**
      * 售后订单号
      */
-    private String orderID;
+    private String orderNo;
+
+
+    /**
+     * 退货单号
+     */
+    private String returnNo;
 }

+ 7 - 2
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderListBo.java

@@ -34,7 +34,7 @@ public class ThirdpartyAfterOrderListBo implements Serializable {
     /**
      * 售后单号
      */
-    private String orderID;
+    private String returnNo;
 
     /**
      * 订单状态
@@ -84,10 +84,15 @@ public class ThirdpartyAfterOrderListBo implements Serializable {
     /**
      * 物流状态
      */
-    private Integer logisticstatus;
+    private Integer logisticsStatus;
 
     /**
      * 发货状态
      */
     private Integer deliverystatus;
+
+    /**
+     * 退货原因id
+     */
+    private Long returnReasonId;
 }

+ 74 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderAddBo.java

@@ -0,0 +1,74 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ThirdpartyOrderAddBo {
+
+    /**
+     * 所属公司
+     */
+    @NotNull(message = "所属公司不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Long companyId;
+
+    /**
+     * 客户ID(关联客户主表)
+     */
+    @NotNull(message = "客户ID(关联客户主表)不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Long customerId;
+
+    /**
+     * 收货地址ID
+     */
+    @NotNull(message = "收货地址ID不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Long shippingAddressId;
+
+    /**
+     * 采购事由
+     */
+    @NotNull(message = "采购事由不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String purchaseReason;
+
+    /**
+     * 支付方式
+     */
+    @NotBlank(message = "支付方式不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String payType;
+
+    /**
+     * 发货仓库
+     */
+    @NotNull(message = "发货仓库不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Long warehouseId;
+
+    /**
+     * 预计送达时间
+     */
+    @NotNull(message = "预计送达时间不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Date expectedDeliveryTime;
+
+    /**
+     * 费用类型
+     */
+    @NotBlank(message = "费用类型不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String expenseType;
+
+    /**
+     * 订单附件文件路径
+     */
+    private String attachmentPath;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    List<ThirdpartyOrderProductBo> orderProductList;
+}

+ 16 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderProductBo.java

@@ -0,0 +1,16 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class ThirdpartyOrderProductBo {
+    /**
+     * 产品编号
+     */
+    private String productNo;
+
+    /**
+     * 数量
+     */
+    private Integer orderQuantity;
+}

+ 2 - 2
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartySetAfterStateBo.java

@@ -22,7 +22,7 @@ public class ThirdpartySetAfterStateBo implements Serializable {
     private String orderID;
 
     /**
-     * 订单状态0-申请 1-已确认、2-已取消、3-售后中、4-售后完成、5-拒绝售后
+     * 售后订单状态
      */
-    private Integer state;
+    private String returnState;
 }

+ 1 - 1
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartySetOrderPayStateBo.java

@@ -24,5 +24,5 @@ public class ThirdpartySetOrderPayStateBo implements Serializable {
     /**
      * 支付状态  0-待支付 1-已支付
      */
-    private Integer paystatus;
+    private Integer payStatus;
 }

+ 20 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyTrackingBo.java

@@ -25,4 +25,24 @@ public class ThirdpartyTrackingBo implements Serializable {
      * 订单编号
      */
     private String orderID;
+
+    /**
+     * 物流包裹号
+     */
+    private String logisticPackNo;
+
+    /**
+     * 承运物流公司
+     */
+    private Long logisticsCompanyId;
+
+    /**
+     * 收货人电话
+     */
+    private String consigneePhone;
+
+    /**
+     * 客户编号
+     */
+    private String customerNo;
 }

+ 10 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyTrackingStatusBo.java

@@ -20,4 +20,14 @@ public class ThirdpartyTrackingStatusBo implements Serializable {
      * 物流单号
      */
     private String logisticsNo;
+
+    /**
+     * 订单ID (关联订单主表)
+     */
+    private Long orderId;
+
+    /**
+     * 客户ID (关联客户主表)
+     */
+    private Long customerId;
 }

+ 7 - 2
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyAfterOrderStatusDto.java

@@ -16,13 +16,18 @@ public class ThirdpartyAfterOrderStatusDto implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 售后订单id
+     */
+    private Long id;
+
     /**
      * 售后订单号
      */
-    private String orderID;
+    private String orderNo;
 
     /**
      * 状态
      */
-    private Integer state;
+    private Integer returnStatus;
 }

+ 7 - 2
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyOrderPayStateDto.java

@@ -16,13 +16,18 @@ public class ThirdpartyOrderPayStateDto implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 订单id
+     */
+    private Long orderId;
+
     /**
      * 订单编号
      */
-    private String orderID;
+    private String orderNo;
 
     /**
      * 支付状态  0-待支付 1-已支付
      */
-    private Integer paystate;
+    private Integer payState;
 }

+ 7 - 2
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyTrackingDto.java

@@ -35,7 +35,7 @@ public class ThirdpartyTrackingDto implements Serializable {
     /**
      * 物流单号
      */
-    private String logisticsNo;
+    private String logisticsNos;
 
     /**
      * 发货时间系统时间
@@ -45,13 +45,18 @@ public class ThirdpartyTrackingDto implements Serializable {
     /**
      * 0自有物流,1第三方物流
      */
-    private Integer type;
+    private Integer deliverMethod;
 
     /**
      * 物流状态0-待发货、1-发货中、2-已签收、3-拒签(只有当 type =0时此字段才有效)
      */
     private Integer logisticsStates;
 
+    /**
+     * 物流状态名称
+     */
+    private String statesName;
+
     /**
      * 订单商品信息
      */

+ 5 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/dto/ThirdpartyTrackingStatusDto.java

@@ -30,4 +30,9 @@ public class ThirdpartyTrackingStatusDto implements Serializable {
      * 物流状态:0-待发货、1-发货中、2-已签收、3-拒签
      */
     private Integer LogisticsStatus;
+
+    /**
+     * 状态名称
+     */
+    private String statusName;
 }

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

@@ -113,7 +113,8 @@ public class PlatformDataScopeInterceptor implements Interceptor {
         "erp_staff",
         "partner_prepared",
         "partner_prepared_product",
-        "protocol_"
+        "protocol_",
+        "ns_diy_"
         // 注意:前缀匹配需特殊处理(如 qrtz_),见 isIgnoreTable 方法
     ));
 
@@ -235,6 +236,7 @@ public class PlatformDataScopeInterceptor implements Interceptor {
             || tableName.startsWith("order_")
             || tableName.startsWith("external_")
             || tableName.startsWith("protocol_")
+            || tableName.startsWith("ns_diy_")
             ;
     }
 

+ 19 - 4
ruoyi-modules/ruoyi-bill/src/main/java/org/dromara/bill/service/impl/StatementInvoiceServiceImpl.java

@@ -12,14 +12,12 @@ import org.dromara.bill.domain.bo.InvoiceInfoBo;
 import org.dromara.bill.domain.bo.StatementInvoiceBo;
 import org.dromara.bill.domain.bo.StatementInvoiceDetailBo;
 import org.dromara.bill.domain.bo.StatementInvoiceProductBo;
-import org.dromara.bill.domain.vo.InvoiceInfoVo;
-import org.dromara.bill.domain.vo.StatementInvoiceDetailVo;
-import org.dromara.bill.domain.vo.StatementInvoiceProductVo;
-import org.dromara.bill.domain.vo.StatementInvoiceVo;
+import org.dromara.bill.domain.vo.*;
 import org.dromara.bill.mapper.*;
 import org.dromara.bill.service.IStatementInvoiceService;
 import org.dromara.common.core.enums.InvoiceStatus;
 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.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -419,6 +417,23 @@ public class StatementInvoiceServiceImpl extends ServiceImpl<StatementInvoiceMap
         StatementInvoice invoice = new StatementInvoice();
         invoice.setId(bo.getId());
         invoice.setInvoiceStatus(bo.getInvoiceStatus());
+        if (baseMapper.updateById(invoice)>0){
+            StatementInvoiceVo invoiceVo = baseMapper.selectVoById(invoice.getId());
+            if (ObjectUtils.isNotEmpty(invoiceVo)){
+                List<StatementInvoiceDetail> statementInvoiceDetails = statementInvoiceDetailMapper.selectList(new LambdaQueryWrapper<StatementInvoiceDetail>().eq(StatementInvoiceDetail::getStatementInvoiceId, invoiceVo.getId()));
+                if (CollectionUtil.isNotEmpty(statementInvoiceDetails)){
+                    for (StatementInvoiceDetail statementInvoiceDetail : statementInvoiceDetails) {
+                        StatementOrder statementOrder = statementOrderMapper.selectById(statementInvoiceDetail.getStatementOrderId());
+                        if (ObjectUtils.isNotEmpty(statementOrder)){
+                            StatementOrder update = new StatementOrder();
+                            update.setId(statementOrder.getId());
+                            update.setIsInvoiceStatus("1");//将是否已开票的状态改为已开票
+                            statementOrderMapper.updateById(update);
+                        }
+                    }
+                }
+            }
+        }
         return baseMapper.updateById(invoice);
     }
 

+ 4 - 1
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/thirdparty/ThirdpartyController.java

@@ -130,8 +130,9 @@ public class ThirdpartyController {
      * 订单新增
      */
     @PostMapping("/order/addOrder")
-    public R<ThirdpartyOrderDto> addOrder(@RequestBody ThirdpartyOrderBo bo) {
+    public R<String> addOrder(@RequestBody ThirdpartyOrderAddBo bo) {
         // TODO: 实现订单新增逻辑
+       //订单新增时 api传商品id跟数量 后台需要根据商品id查询返回商品价格
         return R.ok();
     }
 
@@ -180,6 +181,8 @@ public class ThirdpartyController {
         return R.ok();
     }
 
+
+
     /**
      * 订单支付状态查询
      */

+ 10 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/controller/OrderReturnController.java

@@ -112,4 +112,14 @@ public class OrderReturnController extends BaseController {
     public R<Void> changeReturnStatus(@RequestBody OrderReturnBo bo) {
         return toAjax(orderReturnService.updateReturnStatus(bo));
     }
+
+
+    /**
+     * 撤回申请
+     */
+    @Log(title = "退货主", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody OrderReturnBo bo) {
+        return toAjax(orderReturnService.updateStatus(bo));
+    }
 }

+ 9 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/controller/pc/PcOrderReturnController.java

@@ -142,4 +142,13 @@ public class PcOrderReturnController extends BaseController {
 
         return toAjax(orderReturnService.deleteWithValidByIds(List.of(ids), true));
     }
+
+    /**
+     * 撤回申请
+     */
+    @Log(title = "退货主", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody OrderReturnBo bo) {
+        return toAjax(orderReturnService.updateStatus(bo));
+    }
 }

+ 1 - 1
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/OrderReturn.java

@@ -203,7 +203,7 @@ public class OrderReturn extends TenantEntity {
     private String logisticsNo;
 
     /**
-     * 状态(0正常 1停用
+     * 状态(0正常 1已撤回
      */
     private String status;
 

+ 7 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/IOrderReturnService.java

@@ -62,6 +62,13 @@ public interface IOrderReturnService extends IService<OrderReturn> {
     Boolean updateByBo(OrderReturnBo bo);
 
     int updateReturnStatus(OrderReturnBo bo);
+    /**
+     * 修改退货状态
+     *
+     * @param bo
+     * @return
+     */
+    int updateStatus(OrderReturnBo bo);
 
     /**
      * 校验并批量删除退货主信息

+ 8 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderReturnServiceImpl.java

@@ -319,6 +319,14 @@ public class OrderReturnServiceImpl extends ServiceImpl<OrderReturnMapper, Order
         return baseMapper.updateById(orderReturn);
     }
 
+    @Override
+    public int updateStatus(OrderReturnBo bo) {
+        OrderReturn orderReturn = new OrderReturn();
+        orderReturn.setId(bo.getId());
+        orderReturn.setStatus(bo.getStatus());
+        return baseMapper.updateById(orderReturn);
+    }
+
     /**
      * 保存前的数据校验
      */

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

@@ -87,4 +87,27 @@ public class PcSysUserController extends BaseController {
         user.setPassword(BCrypt.hashpw(user.getPassword()));
         return toAjax(sysUserService.resetUserPwd(user.getUserId(), user.getPassword()));
     }
+
+
+    /**
+     * 重置密码
+     */
+    @PutMapping("/changePhonenumber")
+    public R<Void> changePhonenumber(@RequestBody ChangeUserPwdBo user) {
+        Long userId = LoginHelper.getLoginUser().getUserId();
+        user.setUserId(userId);
+        //先校验验证码是否正确
+        String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + user.getPhonenumber());
+        if (code == null) {
+            throw new ServiceException("验证码已过期");
+        }
+
+        if (!code.equals(user.getCode())) {
+            throw new ServiceException("验证码错误");
+        }
+
+        sysUserService.checkUserAllowed(user.getUserId());
+        sysUserService.checkUserDataScope(user.getUserId());
+        return toAjax(sysUserService.resetUserPhonenumber(user.getUserId(), user.getNewPhonenumber()));
+    }
 }

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ChangeUserPwdBo.java

@@ -15,6 +15,11 @@ public class ChangeUserPwdBo {
      */
     private String phonenumber;
 
+    /**
+     * 新手机号码
+     */
+    private String newPhonenumber;
+
     /**
      * 验证码
      */

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

@@ -203,6 +203,17 @@ public interface ISysUserService {
      */
     int resetUserPwd(Long userId, String password);
 
+
+    /**
+     * 重置用户手机号
+     *
+     * @param userId      用户ID
+     * @param phonenumber 手机号
+     * @return 结果
+     */
+    int resetUserPhonenumber(Long userId, String phonenumber);
+
+
     /**
      * 通过用户ID删除用户
      *

+ 23 - 9
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -316,7 +316,7 @@ public class SysUserServiceImpl implements ISysUserService {
     @Transactional(rollbackFor = Exception.class)
     public int insertUser(SysUserBo user) {
         SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
-       // 1. 校验当前是否为总控平台(main),否则不能指定 platformCode
+        // 1. 校验当前是否为总控平台(main),否则不能指定 platformCode
         String currentPlatform = PlatformContext.getPlatform();
         String targetPlatform = currentPlatform;
         // 如果传入了 platformCode,优先使用传入的值
@@ -336,8 +336,8 @@ public class SysUserServiceImpl implements ISysUserService {
         // 后续操作(岗位、角色)是否也需要在 "main" 平台下执行?
         // 如果这些表也受 platform_code 控制,则同样需要包裹!
 
-            insertUserPost(user, false);
-            insertUserRole(user, false,targetPlatform);
+        insertUserPost(user, false);
+        insertUserRole(user, false, targetPlatform);
 
         return rows;
     }
@@ -375,7 +375,7 @@ public class SysUserServiceImpl implements ISysUserService {
         }
 
         // 新增用户与角色管理
-        insertUserRole(user, true,targetPlatform);
+        insertUserRole(user, true, targetPlatform);
         // 新增用户与岗位管理
         insertUserPost(user, true);
         SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
@@ -399,8 +399,8 @@ public class SysUserServiceImpl implements ISysUserService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void insertUserAuth(Long userId, Long[] roleIds,String platformCode) {
-        insertUserRole(userId, roleIds, true,platformCode);
+    public void insertUserAuth(Long userId, Long[] roleIds, String platformCode) {
+        insertUserRole(userId, roleIds, true, platformCode);
     }
 
     /**
@@ -466,14 +466,28 @@ public class SysUserServiceImpl implements ISysUserService {
                 .eq(SysUser::getUserId, userId));
     }
 
+    /**
+     * 更换用户手机号
+     *
+     * @param userId 用户ID
+     * @return 结果
+     */
+    @Override
+    public int resetUserPhonenumber(Long userId, String phonenumber) {
+        return baseMapper.update(null,
+            new LambdaUpdateWrapper<SysUser>()
+                .set(SysUser::getPhonenumber, phonenumber)
+                .eq(SysUser::getUserId, userId));
+    }
+
     /**
      * 新增用户角色信息
      *
      * @param user  用户对象
      * @param clear 清除已存在的关联数据
      */
-    private void insertUserRole(SysUserBo user, boolean clear,String platformCode) {
-        this.insertUserRole(user.getUserId(), user.getRoleIds(), clear,platformCode);
+    private void insertUserRole(SysUserBo user, boolean clear, String platformCode) {
+        this.insertUserRole(user.getUserId(), user.getRoleIds(), clear, platformCode);
     }
 
     /**
@@ -507,7 +521,7 @@ public class SysUserServiceImpl implements ISysUserService {
      * @param roleIds 角色组
      * @param clear   清除已存在的关联数据
      */
-    private void insertUserRole(Long userId, Long[] roleIds, boolean clear,String platformCode) {
+    private void insertUserRole(Long userId, Long[] roleIds, boolean clear, String platformCode) {
         if (ArrayUtil.isNotEmpty(roleIds)) {
             List<Long> roleList = new ArrayList<>(List.of(roleIds));
             if (!LoginHelper.isSuperAdmin(userId)) {