优化用户账号名称校验和错误码
This commit is contained in:
parent
e20ab5d933
commit
4dd58bdfeb
@ -24,9 +24,9 @@ public class LoginLogCreateReqDTO {
|
||||
@Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "2" )
|
||||
@NotNull(message = "用户类型不能为空")
|
||||
private Integer userType;
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@NotBlank(message = "用户账号不能为空")
|
||||
@Size(max = 30, message = "用户账号长度不能超过30个字符")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@NotBlank(message = "用户名称不能为空")
|
||||
@Size(max = 30, message = "用户名称长度不能超过30个字符")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "登录结果,参见 LoginResultEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
|
@ -34,7 +34,7 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_002_002_005, "标识【{}】不能使用");
|
||||
|
||||
// ========== 用户模块 1-002-003-000 ==========
|
||||
ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1_002_003_000, "用户账号已经存在");
|
||||
ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1_002_003_000, "用户名称已经存在");
|
||||
ErrorCode USER_MOBILE_EXISTS = new ErrorCode(1_002_003_001, "手机号已经存在");
|
||||
ErrorCode USER_EMAIL_EXISTS = new ErrorCode(1_002_003_002, "邮箱已经存在");
|
||||
ErrorCode USER_NOT_EXISTS = new ErrorCode(1_002_003_003, "用户不存在");
|
||||
|
@ -14,10 +14,10 @@ import javax.validation.constraints.Size;
|
||||
@Data
|
||||
public class AuthRegisterReqVO {
|
||||
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@NotBlank(message = "用户账号不能为空")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@NotBlank(message = "用户名称不能为空")
|
||||
@Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "用户名称由 数字、字母 组成")
|
||||
@Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符")
|
||||
@Size(min = 4, max = 30, message = "用户名称长度为 4-30 个字符")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
|
||||
|
@ -36,4 +36,7 @@ public class HouseAreaRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "地图库位节点ids")
|
||||
private List<Long> mapItemIds;
|
||||
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ public class LoginLogPageReqVO extends PageParam {
|
||||
@Schema(description = "用户 IP,模拟匹配", example = "127.0.0.1")
|
||||
private String userIp;
|
||||
|
||||
@Schema(description = "用户账号,模拟匹配", example = "芋道")
|
||||
@Schema(description = "用户名称,模拟匹配", example = "芋道")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "操作状态", example = "true")
|
||||
|
@ -33,8 +33,8 @@ public class LoginLogRespVO {
|
||||
@Schema(description = "链路追踪编号", example = "89aca178-a370-411c-ae02-3f0d672be4ab")
|
||||
private String traceId;
|
||||
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@ExcelProperty("用户账号")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@ExcelProperty("用户名称")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "登录结果,参见 LoginResultEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
|
@ -16,7 +16,7 @@ public class OAuth2UserInfoRespVO {
|
||||
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
|
||||
|
@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "管理后台 - 仓库点位地图")
|
||||
@RestController
|
||||
@RequestMapping("/system/position-map/")
|
||||
@RequestMapping("/system/position-map")
|
||||
@Validated
|
||||
public class PositionMapController {
|
||||
|
||||
|
@ -51,16 +51,16 @@ public class TenantSaveReqVO {
|
||||
|
||||
// ========== 仅【创建】时,需要传递的字段 ==========
|
||||
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "用户名称由 数字、字母 组成")
|
||||
@Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符")
|
||||
@Size(min = 4, max = 30, message = "用户名称长度为 4-30 个字符")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
|
||||
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
|
||||
private String password;
|
||||
|
||||
@AssertTrue(message = "用户账号、密码不能为空")
|
||||
@AssertTrue(message = "用户名称、密码不能为空")
|
||||
@JsonIgnore
|
||||
public boolean isUsernameValid() {
|
||||
return id != null // 修改时,不需要传递
|
||||
|
@ -16,7 +16,7 @@ public class UserProfileRespVO {
|
||||
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
|
||||
|
@ -19,7 +19,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class UserPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "用户账号,模糊匹配", example = "yudao")
|
||||
@Schema(description = "用户名称,模糊匹配", example = "yudao")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "手机号码,模糊匹配", example = "yudao")
|
||||
|
@ -20,7 +20,7 @@ public class UserRespVO{
|
||||
@ExcelProperty("用户编号")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@ExcelProperty("用户名称")
|
||||
private String username;
|
||||
|
||||
|
@ -21,11 +21,11 @@ public class UserSaveReqVO {
|
||||
@Schema(description = "用户编号", example = "1024")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@NotBlank(message = "用户账号不能为空")
|
||||
@Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
|
||||
@NotBlank(message = "用户名称不能为空")
|
||||
@Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "用户名称由 数字、字母 组成")
|
||||
@Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符")
|
||||
@DiffLogField(name = "用户账号")
|
||||
@Size(min = 4, max = 30, message = "用户名称长度为 4-30 个字符")
|
||||
@DiffLogField(name = "用户名称")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
|
||||
|
@ -1,12 +1,11 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.housearea;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库区 DO
|
||||
*
|
||||
@ -45,4 +44,9 @@ public class HouseAreaDO extends BaseDO {
|
||||
*/
|
||||
private String areaMsg;
|
||||
|
||||
/**
|
||||
* 地图库位节点ids
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private List<Long> mapItemIds;
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ public class LoginLogDO extends BaseDO {
|
||||
*/
|
||||
private Integer userType;
|
||||
/**
|
||||
* 用户账号
|
||||
* 用户名称
|
||||
*
|
||||
* 冗余,因为账号可以变更
|
||||
*/
|
||||
|
@ -34,7 +34,7 @@ public class AdminUserDO extends TenantBaseDO {
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 用户账号
|
||||
* 用户名称
|
||||
*/
|
||||
private String username;
|
||||
/**
|
||||
|
@ -28,6 +28,7 @@ import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
@ -89,7 +90,20 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
|
||||
|
||||
@Override
|
||||
public PageResult<HouseAreaDO> getHouseAreaPage(HouseAreaPageReqVO pageReqVO) {
|
||||
return houseAreaMapper.selectPage(pageReqVO);
|
||||
PageResult<HouseAreaDO> houseAreaDOPageResult = houseAreaMapper.selectPage(pageReqVO);
|
||||
if (CollUtil.isNotEmpty(houseAreaDOPageResult.getList())) {
|
||||
List<Long> ids = houseAreaDOPageResult.getList().stream().map(HouseAreaDO::getId).collect(Collectors.toList());
|
||||
List<PositionMapItemDO> list = positionMapItemService.list(new LambdaQueryWrapper<PositionMapItemDO>()
|
||||
.eq(PositionMapItemDO::getPositionMapId, pageReqVO.getPositionMapId())
|
||||
.in(PositionMapItemDO::getAreaId, ids));
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
Map<Long, List<Long>> map = CollectionUtils.convertMultiMap(list, PositionMapItemDO::getAreaId, PositionMapItemDO::getId);
|
||||
for (HouseAreaDO houseAreaDO : houseAreaDOPageResult.getList()) {
|
||||
houseAreaDO.setMapItemIds(map.getOrDefault(houseAreaDO.getId(), Collections.emptyList()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return houseAreaDOPageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -98,6 +112,7 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
|
||||
// 判断名称唯一
|
||||
Long count = houseAreaMapper.selectCount(
|
||||
new LambdaQueryWrapper<HouseAreaDO>()
|
||||
.eq(HouseAreaDO::getPositionMapId, createReqVO.getPositionMapId())
|
||||
.eq(HouseAreaDO::getAreaName, createReqVO.getAreaName())
|
||||
.ne(ObjectUtil.isNotNull(createReqVO.getId()), HouseAreaDO::getId, createReqVO.getId())
|
||||
);
|
||||
|
@ -27,6 +27,7 @@ import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
@ -63,7 +64,20 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
|
||||
|
||||
@Override
|
||||
public PageResult<WareHouseLaneDO> getHouseLanePage(WareHouseLanePageReqVO pageReqVO) {
|
||||
return houseLaneMapper.selectPage(pageReqVO);
|
||||
PageResult<WareHouseLaneDO> houseLaneDOPageResult = houseLaneMapper.selectPage(pageReqVO);
|
||||
if (CollUtil.isNotEmpty(houseLaneDOPageResult.getList())) {
|
||||
List<Long> ids = houseLaneDOPageResult.getList().stream().map(WareHouseLaneDO::getId).collect(Collectors.toList());
|
||||
List<PositionMapItemDO> list = positionMapItemService.list(new LambdaQueryWrapper<PositionMapItemDO>()
|
||||
.eq(PositionMapItemDO::getPositionMapId, pageReqVO.getPositionMapId())
|
||||
.in(PositionMapItemDO::getLaneId, ids));
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
Map<Long, List<Long>> map = CollectionUtils.convertMultiMap(list, PositionMapItemDO::getLaneId, PositionMapItemDO::getId);
|
||||
for (WareHouseLaneDO wareHouseLaneDO : houseLaneDOPageResult.getList()) {
|
||||
wareHouseLaneDO.setMapItemIds(map.getOrDefault(wareHouseLaneDO.getId(), Collections.emptyList()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return houseLaneDOPageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -73,6 +87,7 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
|
||||
Long num = houseLaneMapper.selectCount(
|
||||
new LambdaQueryWrapper<WareHouseLaneDO>()
|
||||
.eq(WareHouseLaneDO::getLaneName, createReqVO.getLaneName())
|
||||
.eq(WareHouseLaneDO::getPositionMapId, createReqVO.getPositionMapId())
|
||||
.ne(ObjectUtil.isNotNull(createReqVO.getId()), WareHouseLaneDO::getId, createReqVO.getId())
|
||||
);
|
||||
if (num > 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user