Commit 557de1f6 by Lizh

refactor: VO/DTO 按业务域分包 + 规范对齐

- 移动 8 个已有 VO 到 vo/system/ 和 vo/warehouse/ 子包
- 新建 5 个 VO:SysRoleVO/SysMenuVO/SysPostVO/SysComposeServerVO/SysComposeServerLogVO
- 新建 20 个 DTO:LoginDTO + 各模块 SaveDTO/UpdateDTO/StatusDTO
- 10 个 Controller 全部改用 VO/DTO(不再暴露 Entity 到前端)
- 8 个 AppService 增加 DTOEntity、EntityVO 转换(BeanMapper)
- HttpMethod 修正:ComposeServer deleteById GET→DELETE, updateStatusById GET→PUT
- 所有新建文件含完整中文字段注释和 @Schema/@JsonProperty 注解

Co-Authored-By: Claude <noreply@anthropic.com>
parent 9f3e14a2
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 登录请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "登录请求")
public class LoginDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@NotBlank(message = "用户名不能为空")
@Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED)
private String username;
@NotBlank(message = "密码不能为空")
@Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
private String password;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 新增服务器请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "新增服务器请求")
public class SysComposeServerSaveDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "服务器名称")
private String title;
@Schema(description = "服务器地址")
private String host;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改服务器请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改服务器请求")
public class SysComposeServerUpdateDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "服务器ID")
private Long id;
@Schema(description = "服务器名称")
private String title;
@Schema(description = "服务器地址")
private String host;
@Schema(description = "备注")
private String remark;
@Schema(description = "状态(0停用 1正常)")
private Integer status;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 新增部门请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "新增部门请求")
public class SysDeptSaveDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "父部门ID")
private Long parentId;
@Schema(description = "部门名称")
private String deptName;
@Schema(description = "排序号")
private Integer orderNum;
@Schema(description = "负责人")
private String leader;
@Schema(description = "联系电话")
private String phone;
@Schema(description = "邮箱")
private String email;
@Schema(description = "部门状态(0正常 1停用)")
private String status;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改部门请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改部门请求")
public class SysDeptUpdateDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "部门ID")
private Long deptId;
@Schema(description = "父部门ID")
private Long parentId;
@Schema(description = "部门名称")
private String deptName;
@Schema(description = "排序号")
private Integer orderNum;
@Schema(description = "负责人")
private String leader;
@Schema(description = "联系电话")
private String phone;
@Schema(description = "邮箱")
private String email;
@Schema(description = "部门状态(0正常 1停用)")
private String status;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 新增菜单请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "新增菜单请求")
public class SysMenuSaveDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "菜单名称")
private String menuName;
@Schema(description = "父菜单ID")
private Long parentId;
@Schema(description = "排序号")
private Integer orderNum;
@Schema(description = "路由地址")
private String path;
@Schema(description = "组件路径")
private String component;
@Schema(description = "路由参数")
private String query;
@Schema(description = "路由名称")
private String routeName;
@Schema(description = "是否为外链(0是 1否)")
private Integer isFrame;
@Schema(description = "是否缓存(0缓存 1不缓存)")
private Integer isCache;
@Schema(description = "菜单类型(M目录 C菜单 F按钮)")
private String menuType;
@Schema(description = "显示状态(0显示 1隐藏)")
private String visible;
@Schema(description = "菜单状态(0正常 1停用)")
private String status;
@Schema(description = "权限标识")
private String perms;
@Schema(description = "菜单图标")
private String icon;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改菜单请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改菜单请求")
public class SysMenuUpdateDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "菜单ID")
private Long menuId;
@Schema(description = "菜单名称")
private String menuName;
@Schema(description = "父菜单ID")
private Long parentId;
@Schema(description = "排序号")
private Integer orderNum;
@Schema(description = "路由地址")
private String path;
@Schema(description = "组件路径")
private String component;
@Schema(description = "路由参数")
private String query;
@Schema(description = "路由名称")
private String routeName;
@Schema(description = "是否为外链(0是 1否)")
private Integer isFrame;
@Schema(description = "是否缓存(0缓存 1不缓存)")
private Integer isCache;
@Schema(description = "菜单类型(M目录 C菜单 F按钮)")
private String menuType;
@Schema(description = "显示状态(0显示 1隐藏)")
private String visible;
@Schema(description = "菜单状态(0正常 1停用)")
private String status;
@Schema(description = "权限标识")
private String perms;
@Schema(description = "菜单图标")
private String icon;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 新增岗位请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "新增岗位请求")
public class SysPostSaveDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "岗位编码")
private String postCode;
@Schema(description = "岗位名称")
private String postName;
@Schema(description = "排序号")
private Integer postSort;
@Schema(description = "状态(0正常 1停用)")
private String status;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改岗位请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改岗位请求")
public class SysPostUpdateDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "岗位ID")
private Long postId;
@Schema(description = "岗位编码")
private String postCode;
@Schema(description = "岗位名称")
private String postName;
@Schema(description = "排序号")
private Integer postSort;
@Schema(description = "状态(0正常 1停用)")
private String status;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 角色数据权限请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "角色数据权限请求")
public class SysRoleDataScopeDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "角色ID")
private Long roleId;
@Schema(description = "数据权限范围")
private String dataScope;
@Schema(description = "部门ID列表")
private Long[] deptIds;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 新增角色请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "新增角色请求")
public class SysRoleSaveDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "角色名称")
private String roleName;
@Schema(description = "角色权限字符串")
private String roleKey;
@Schema(description = "排序号")
private Integer roleSort;
@Schema(description = "角色状态(0正常 1停用)")
private String status;
@Schema(description = "数据权限范围")
private String dataScope;
@Schema(description = "菜单树选择项是否关联显示")
private Boolean menuCheckStrictly;
@Schema(description = "部门树选择项是否关联显示")
private Boolean deptCheckStrictly;
@Schema(description = "菜单ID列表")
private Long[] menuIds;
@Schema(description = "部门ID列表(数据权限)")
private Long[] deptIds;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改角色状态请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改角色状态请求")
public class SysRoleStatusDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "角色ID")
private Long roleId;
@Schema(description = "角色状态(0正常 1停用)")
private String status;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改角色请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改角色请求")
public class SysRoleUpdateDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "角色ID")
private Long roleId;
@Schema(description = "角色名称")
private String roleName;
@Schema(description = "角色权限字符串")
private String roleKey;
@Schema(description = "排序号")
private Integer roleSort;
@Schema(description = "角色状态(0正常 1停用)")
private String status;
@Schema(description = "数据权限范围")
private String dataScope;
@Schema(description = "菜单树选择项是否关联显示")
private Boolean menuCheckStrictly;
@Schema(description = "部门树选择项是否关联显示")
private Boolean deptCheckStrictly;
@Schema(description = "菜单ID列表")
private Long[] menuIds;
@Schema(description = "部门ID列表(数据权限)")
private Long[] deptIds;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改用户状态请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改用户状态请求")
public class SysUserChangeStatusDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "用户ID")
private Long userId;
@Schema(description = "状态(0正常 1停用)")
private String status;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 重置密码请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "重置密码请求")
public class SysUserResetPwdDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "用户ID")
private Long userId;
@Schema(description = "新密码")
private String password;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 新增用户请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "新增用户请求")
public class SysUserSaveDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "用户名")
private String userName;
@Schema(description = "昵称")
private String nickName;
@Schema(description = "密码")
private String password;
@Schema(description = "部门ID")
private Long deptId;
@Schema(description = "邮箱")
private String email;
@Schema(description = "手机号码")
private String phonenumber;
@Schema(description = "性别(0男 1女 2未知)")
private String sex;
@Schema(description = "状态(0正常 1停用)")
private String status;
@Schema(description = "角色ID列表")
private Long[] roleIds;
@Schema(description = "岗位ID列表")
private Long[] postIds;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改用户请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改用户请求")
public class SysUserUpdateDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "用户ID")
private Long userId;
@Schema(description = "昵称")
private String nickName;
@Schema(description = "部门ID")
private Long deptId;
@Schema(description = "邮箱")
private String email;
@Schema(description = "手机号码")
private String phonenumber;
@Schema(description = "性别(0男 1女 2未知)")
private String sex;
@Schema(description = "状态(0正常 1停用)")
private String status;
@Schema(description = "角色ID列表")
private Long[] roleIds;
@Schema(description = "岗位ID列表")
private Long[] postIds;
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.dto.system;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改密码请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改密码请求")
public class SysUserUpdatePwdDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "旧密码")
private String oldPassword;
@Schema(description = "新密码")
private String newPassword;
}
package com.jomalls.custom.app.dto.warehouse;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 新增仓库请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "新增仓库请求")
public class CustomWarehouseInfoSaveDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "仓库名称")
private String warehouseName;
@Schema(description = "仓库编码")
private String warehouseCode;
@Schema(description = "统筹物流")
private Boolean overallLogistics;
@Schema(description = "超级工厂")
private Integer superFactory;
@Schema(description = "系统物流")
private Boolean systemLogistics;
@Schema(description = "统筹物流覆盖范围")
private String overallLogisticsScope;
@Schema(description = "联系人姓名")
private String contactName;
@Schema(description = "联系人电话")
private String contactPhone;
@Schema(description = "联系人邮箱")
private String contactEmail;
@Schema(description = "国家代码")
private String countryCode;
@Schema(description = "国家名称")
private String countryName;
@Schema(description = "州省")
private String province;
@Schema(description = "州省 code")
private String provinceCode;
@Schema(description = "州省简称")
private String provinceAbb;
@Schema(description = "城市")
private String city;
@Schema(description = "城市编码")
private String cityCode;
@Schema(description = "区县")
private String district;
@Schema(description = "街道")
private String street;
@Schema(description = "邮编")
private String postcode;
@Schema(description = "公司名称")
private String companyName;
@Schema(description = "社会信用代码")
private String socialCreditCode;
@Schema(description = "备注")
private String remarks;
@Schema(description = "联系人姓名(中文)")
private String contactNameCn;
@Schema(description = "国家名称(中文)")
private String countryNameCn;
@Schema(description = "洲省(中文)")
private String provinceCn;
@Schema(description = "城市(中文)")
private String cityCn;
@Schema(description = "区县(中文)")
private String districtCn;
@Schema(description = "街道(中文)")
private String streetCn;
@Schema(description = "公司名称(中文)")
private String companyNameCn;
@Schema(description = "币种")
private String settlementCurrency;
@Schema(description = "是否为正式仓库")
private Boolean formal;
}
package com.jomalls.custom.app.dto.warehouse;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 修改仓库请求 DTO
*
* @author Lizh
*/
@Data
@Schema(description = "修改仓库请求")
public class CustomWarehouseInfoUpdateDTO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@Schema(description = "仓库ID")
private Long id;
@Schema(description = "仓库名称")
private String warehouseName;
@Schema(description = "仓库编码")
private String warehouseCode;
@Schema(description = "统筹物流")
private Boolean overallLogistics;
@Schema(description = "超级工厂")
private Integer superFactory;
@Schema(description = "系统物流")
private Boolean systemLogistics;
@Schema(description = "统筹物流覆盖范围")
private String overallLogisticsScope;
@Schema(description = "联系人姓名")
private String contactName;
@Schema(description = "联系人电话")
private String contactPhone;
@Schema(description = "联系人邮箱")
private String contactEmail;
@Schema(description = "国家代码")
private String countryCode;
@Schema(description = "国家名称")
private String countryName;
@Schema(description = "州省")
private String province;
@Schema(description = "州省 code")
private String provinceCode;
@Schema(description = "州省简称")
private String provinceAbb;
@Schema(description = "城市")
private String city;
@Schema(description = "城市编码")
private String cityCode;
@Schema(description = "区县")
private String district;
@Schema(description = "街道")
private String street;
@Schema(description = "邮编")
private String postcode;
@Schema(description = "公司名称")
private String companyName;
@Schema(description = "社会信用代码")
private String socialCreditCode;
@Schema(description = "备注")
private String remarks;
@Schema(description = "联系人姓名(中文)")
private String contactNameCn;
@Schema(description = "国家名称(中文)")
private String countryNameCn;
@Schema(description = "洲省(中文)")
private String provinceCn;
@Schema(description = "城市(中文)")
private String cityCn;
@Schema(description = "区县(中文)")
private String districtCn;
@Schema(description = "街道(中文)")
private String streetCn;
@Schema(description = "公司名称(中文)")
private String companyNameCn;
@Schema(description = "币种")
private String settlementCurrency;
@Schema(description = "是否为正式仓库")
private Boolean formal;
}
......@@ -16,6 +16,7 @@ import com.jomalls.custom.app.service.product.SysBillRuleService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.utils.CustomAsserts;
import com.jomalls.custom.app.vo.*;
import com.jomalls.custom.app.vo.warehouse.CustomWarehouseInfoSnakeVO;
import com.jomalls.custom.dal.entity.*;
import com.jomalls.custom.domain.service.product.CustomProductBlacklistDomainService;
import com.jomalls.custom.domain.service.product.CustomProductCnRemarkDomainService;
......
package com.jomalls.custom.app.service.system;
import com.jomalls.custom.app.vo.BaseCountryCodeVO;
import com.jomalls.custom.app.vo.system.BaseCountryCodeVO;
import java.util.List;
import java.util.Map;
......
......@@ -2,7 +2,7 @@ package com.jomalls.custom.app.service.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.dal.entity.SysComposeServerLogEntity;
import com.jomalls.custom.app.vo.system.SysComposeServerLogVO;
import java.util.List;
......@@ -21,15 +21,15 @@ public interface SysComposeServerLogService {
* @param page 分页参数
* @return 分页结果
*/
IPage<SysComposeServerLogEntity> pageList(SysComposeServerLogEntity log, Page<SysComposeServerLogEntity> page);
IPage<SysComposeServerLogVO> pageList(SysComposeServerLogVO log, Page<SysComposeServerLogVO> page);
/**
* 根据ID查询日志详情
*
* @param id 日志id
* @return 日志详情
* @return 日志详情 VO
*/
SysComposeServerLogEntity getById(Long id);
SysComposeServerLogVO getById(Long id);
/**
* 批量删除日志
......
......@@ -2,7 +2,9 @@ package com.jomalls.custom.app.service.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.dal.entity.SysComposeServerEntity;
import com.jomalls.custom.app.dto.system.SysComposeServerSaveDTO;
import com.jomalls.custom.app.dto.system.SysComposeServerUpdateDTO;
import com.jomalls.custom.app.vo.system.SysComposeServerVO;
import java.util.List;
......@@ -21,28 +23,28 @@ public interface SysComposeServerService {
* @param page 分页参数
* @return 分页结果
*/
IPage<SysComposeServerEntity> pageList(SysComposeServerEntity server, Page<SysComposeServerEntity> page);
IPage<SysComposeServerVO> pageList(SysComposeServerVO server, Page<SysComposeServerVO> page);
/**
* 查询所有启用的服务器主机地址
*
* @return 服务器列表
* @return 服务器列表 VO
*/
List<SysComposeServerEntity> getAllServerHost();
List<SysComposeServerVO> getAllServerHost();
/**
* 新增服务器
*
* @param server 服务器信息
* @param dto 新增服务器请求
*/
void add(SysComposeServerEntity server);
void add(SysComposeServerSaveDTO dto);
/**
* 修改服务器
*
* @param server 服务器信息
* @param dto 修改服务器请求
*/
void updateById(SysComposeServerEntity server);
void updateById(SysComposeServerUpdateDTO dto);
/**
* 更新服务器状态
......
package com.jomalls.custom.app.service.system;
import com.jomalls.custom.dal.entity.SysDeptEntity;
import com.jomalls.custom.app.dto.system.SysDeptSaveDTO;
import com.jomalls.custom.app.dto.system.SysDeptUpdateDTO;
import com.jomalls.custom.app.vo.system.SysDeptVO;
import java.util.List;
......@@ -15,39 +17,39 @@ public interface SysDeptService {
* 查询部门列表(树结构)
*
* @param dept 查询条件
* @return 部门树
* @return 部门树 VO
*/
List<SysDeptEntity> selectDeptList(SysDeptEntity dept);
List<SysDeptVO> selectDeptList(SysDeptVO dept);
/**
* 查询部门列表(排除指定子部门)
*
* @param deptId 部门ID
* @return 部门列表
* @return 部门列表 VO
*/
List<SysDeptEntity> selectDeptListExcludeChild(Long deptId);
List<SysDeptVO> selectDeptListExcludeChild(Long deptId);
/**
* 根据ID查询部门
*
* @param deptId 部门ID
* @return 部门信息
* @return 部门 VO
*/
SysDeptEntity getById(Long deptId);
SysDeptVO getById(Long deptId);
/**
* 新增部门
*
* @param dept 部门信息
* @param dto 新增部门请求
*/
void add(SysDeptEntity dept);
void add(SysDeptSaveDTO dto);
/**
* 修改部门
*
* @param dept 部门信息
* @param dto 修改部门请求
*/
void edit(SysDeptEntity dept);
void edit(SysDeptUpdateDTO dto);
/**
* 删除部门
......
package com.jomalls.custom.app.service.system;
import com.jomalls.custom.app.vo.LoginUserInfoVO;
import com.jomalls.custom.app.vo.RouterVO;
import com.jomalls.custom.app.vo.system.LoginUserInfoVO;
import com.jomalls.custom.app.vo.system.RouterVO;
import java.util.List;
......
package com.jomalls.custom.app.service.system;
import com.jomalls.custom.app.vo.TreeSelectVO;
import com.jomalls.custom.dal.entity.SysMenuEntity;
import com.jomalls.custom.app.dto.system.SysMenuSaveDTO;
import com.jomalls.custom.app.dto.system.SysMenuUpdateDTO;
import com.jomalls.custom.app.vo.system.SysMenuVO;
import com.jomalls.custom.app.vo.system.TreeSelectVO;
import java.util.List;
import java.util.Map;
......@@ -17,17 +19,17 @@ public interface SysMenuService {
* 查询菜单列表(树结构)
*
* @param menu 查询条件
* @return 菜单
* @return 菜单 VO 列表
*/
List<SysMenuEntity> selectMenuList(SysMenuEntity menu);
List<SysMenuVO> selectMenuList(SysMenuVO menu);
/**
* 根据ID查询菜单
*
* @param menuId 菜单ID
* @return 菜单信息
* @return 菜单 VO
*/
SysMenuEntity getById(Long menuId);
SysMenuVO getById(Long menuId);
/**
* 查询菜单树下拉列表
......@@ -47,16 +49,16 @@ public interface SysMenuService {
/**
* 新增菜单
*
* @param menu 菜单信息
* @param dto 新增菜单请求
*/
void add(SysMenuEntity menu);
void add(SysMenuSaveDTO dto);
/**
* 修改菜单
*
* @param menu 菜单信息
* @param dto 修改菜单请求
*/
void edit(SysMenuEntity menu);
void edit(SysMenuUpdateDTO dto);
/**
* 删除菜单
......
......@@ -2,7 +2,9 @@ package com.jomalls.custom.app.service.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.dal.entity.SysPostEntity;
import com.jomalls.custom.app.dto.system.SysPostSaveDTO;
import com.jomalls.custom.app.dto.system.SysPostUpdateDTO;
import com.jomalls.custom.app.vo.system.SysPostVO;
/**
* 岗位管理 App Service 接口
......@@ -18,29 +20,29 @@ public interface SysPostService {
* @param page 分页参数
* @return 分页结果
*/
IPage<SysPostEntity> pageList(SysPostEntity post, Page<SysPostEntity> page);
IPage<SysPostVO> pageList(SysPostVO post, Page<SysPostVO> page);
/**
* 根据ID查询岗位
*
* @param postId 岗位ID
* @return 岗位信息
* @return 岗位 VO
*/
SysPostEntity getById(Long postId);
SysPostVO getById(Long postId);
/**
* 新增岗位
*
* @param post 岗位信息
* @param dto 新增岗位请求
*/
void add(SysPostEntity post);
void add(SysPostSaveDTO dto);
/**
* 修改岗位
*
* @param post 岗位信息
* @param dto 修改岗位请求
*/
void edit(SysPostEntity post);
void edit(SysPostUpdateDTO dto);
/**
* 批量删除岗位
......
......@@ -2,11 +2,13 @@ package com.jomalls.custom.app.service.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.dal.entity.SysDeptEntity;
import com.jomalls.custom.dal.entity.SysRoleEntity;
import com.jomalls.custom.dal.entity.SysUserEntity;
import com.jomalls.custom.app.dto.system.*;
import com.jomalls.custom.app.vo.system.SysDeptVO;
import com.jomalls.custom.app.vo.system.SysRoleVO;
import com.jomalls.custom.app.vo.system.SysUserVO;
import java.util.List;
import java.util.Map;
/**
* 角色管理 App Service 接口
......@@ -22,44 +24,43 @@ public interface SysRoleService {
* @param page 分页参数
* @return 分页结果
*/
IPage<SysRoleEntity> pageList(SysRoleEntity role, Page<SysRoleEntity> page);
IPage<SysRoleVO> pageList(SysRoleVO role, Page<SysRoleVO> page);
/**
* 根据ID查询角色
*
* @param roleId 角色ID
* @return 角色信息
* @return 角色 VO
*/
SysRoleEntity getById(Long roleId);
SysRoleVO getById(Long roleId);
/**
* 新增角色
*
* @param role 角色信息
* @param dto 新增角色请求
*/
void add(SysRoleEntity role);
void add(SysRoleSaveDTO dto);
/**
* 修改角色
*
* @param role 角色信息
* @param dto 修改角色请求
*/
void edit(SysRoleEntity role);
void edit(SysRoleUpdateDTO dto);
/**
* 修改角色数据权限
*
* @param role 角色信息(含deptIds)
* @param dto 角色数据权限请求
*/
void dataScope(SysRoleEntity role);
void dataScope(SysRoleDataScopeDTO dto);
/**
* 修改角色状态
*
* @param roleId 角色ID
* @param status 状态
* @param dto 修改角色状态请求
*/
void changeStatus(Long roleId, String status);
void changeStatus(SysRoleStatusDTO dto);
/**
* 批量删除角色
......@@ -75,7 +76,7 @@ public interface SysRoleService {
* @param page 分页参数
* @return 分页结果
*/
IPage<SysUserEntity> allocatedList(SysUserEntity user, Page<SysUserEntity> page);
IPage<SysUserVO> allocatedList(SysUserVO user, Page<SysUserVO> page);
/**
* 分页查询未分配用户
......@@ -84,7 +85,7 @@ public interface SysRoleService {
* @param page 分页参数
* @return 分页结果
*/
IPage<SysUserEntity> unallocatedList(SysUserEntity user, Page<SysUserEntity> page);
IPage<SysUserVO> unallocatedList(SysUserVO user, Page<SysUserVO> page);
/**
* 取消授权用户
......@@ -114,7 +115,7 @@ public interface SysRoleService {
* 查询部门树(含角色已选部门ID)
*
* @param roleId 角色ID
* @return 部门树
* @return 部门树 VO
*/
List<SysDeptEntity> deptTree(Long roleId);
List<SysDeptVO> deptTree(Long roleId);
}
......@@ -2,8 +2,9 @@ package com.jomalls.custom.app.service.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.dal.entity.SysDeptEntity;
import com.jomalls.custom.dal.entity.SysUserEntity;
import com.jomalls.custom.app.dto.system.*;
import com.jomalls.custom.app.vo.system.SysDeptVO;
import com.jomalls.custom.app.vo.system.SysUserVO;
import java.util.List;
import java.util.Map;
......@@ -18,33 +19,33 @@ public interface SysUserService {
/**
* 分页查询用户列表
*
* @param user 查询条件
* @param user 查询条件(使用 DTO 中的字段作为查询条件)
* @param page 分页参数
* @return 分页结果
* @return 分页结果(含 VO)
*/
IPage<SysUserEntity> pageList(SysUserEntity user, Page<SysUserEntity> page);
IPage<SysUserVO> pageList(SysUserVO user, Page<SysUserVO> page);
/**
* 查询用户详情(含角色列表、岗位ID)
*
* @param userId 用户ID
* @return 包含 user、roles、postIds 的Map
* @return 包含 userVO、roles、postIds 的Map
*/
Map<String, Object> getInfo(Long userId);
/**
* 新增用户
*
* @param user 用户信息
* @param dto 新增用户请求
*/
void add(SysUserEntity user);
void add(SysUserSaveDTO dto);
/**
* 修改用户
*
* @param user 用户信息
* @param dto 修改用户请求
*/
void edit(SysUserEntity user);
void edit(SysUserUpdateDTO dto);
/**
* 批量删除用户(逻辑删除)
......@@ -56,40 +57,37 @@ public interface SysUserService {
/**
* 重置密码
*
* @param userId 用户ID
* @param password 新密码
* @param dto 重置密码请求
*/
void resetPwd(Long userId, String password);
void resetPwd(SysUserResetPwdDTO dto);
/**
* 修改用户状态
*
* @param userId 用户ID
* @param status 状态
* @param dto 修改用户状态请求
*/
void changeStatus(Long userId, String status);
void changeStatus(SysUserChangeStatusDTO dto);
/**
* 获取当前登录用户信息
*
* @return 当前登录用户
* @return 当前登录用户 VO
*/
SysUserEntity getProfile();
SysUserVO getProfile();
/**
* 更新当前登录用户信息
*
* @param user 用户信息
* @param user 用户信息(使用 VO 作为接收对象)
*/
void updateProfile(SysUserEntity user);
void updateProfile(SysUserVO user);
/**
* 修改当前登录用户密码
*
* @param oldPassword 旧密码
* @param newPassword 新密码
* @param dto 修改密码请求
*/
void updatePwd(String oldPassword, String newPassword);
void updatePwd(SysUserUpdatePwdDTO dto);
/**
* 查询用户已分配的角色ID列表
......@@ -110,7 +108,7 @@ public interface SysUserService {
/**
* 查询部门树
*
* @return 部门树
* @return 部门树 VO
*/
List<SysDeptEntity> deptTree();
List<SysDeptVO> deptTree();
}
package com.jomalls.custom.app.service.system.impl;
import com.jomalls.custom.app.service.system.BaseCountryCodeService;
import com.jomalls.custom.app.vo.BaseCountryCodeVO;
import com.jomalls.custom.app.vo.system.BaseCountryCodeVO;
import com.jomalls.custom.integrate.model.BaseCountryCodeModel;
import com.jomalls.custom.integrate.service.SaasAdminService;
import lombok.RequiredArgsConstructor;
......
......@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.service.system.SysComposeServerLogService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.system.SysComposeServerLogVO;
import com.jomalls.custom.dal.entity.SysComposeServerLogEntity;
import com.jomalls.custom.dal.mapper.SysComposeServerLogMapper;
import com.jomalls.custom.domain.service.misc.SysComposeServerLogDomainService;
......@@ -29,7 +31,7 @@ public class SysComposeServerLogServiceImpl implements SysComposeServerLogServic
private final SysComposeServerLogDomainService sysComposeServerLogDomainService;
@Override
public IPage<SysComposeServerLogEntity> pageList(SysComposeServerLogEntity log, Page<SysComposeServerLogEntity> page) {
public IPage<SysComposeServerLogVO> pageList(SysComposeServerLogVO log, Page<SysComposeServerLogVO> page) {
// 分页查询
LambdaQueryWrapper<SysComposeServerLogEntity> wrapper = new LambdaQueryWrapper<>();
if (log.getComposeServerId() != null) {
......@@ -42,12 +44,18 @@ public class SysComposeServerLogServiceImpl implements SysComposeServerLogServic
wrapper.like(SysComposeServerLogEntity::getBatchNumber, log.getBatchNumber());
}
wrapper.orderByDesc(SysComposeServerLogEntity::getCreateTime);
return sysComposeServerLogDomainService.page(page, wrapper);
IPage<SysComposeServerLogEntity> entityPage = sysComposeServerLogDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// Entity → VO 转换
IPage<SysComposeServerLogVO> voPage = new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
voPage.setRecords(BeanMapper.mapper().convertList(entityPage.getRecords(), SysComposeServerLogVO.class));
return voPage;
}
@Override
public SysComposeServerLogEntity getById(Long id) {
return sysComposeServerLogMapper.selectLogById(id);
public SysComposeServerLogVO getById(Long id) {
SysComposeServerLogEntity entity = sysComposeServerLogMapper.selectLogById(id);
return BeanMapper.mapper().convert(entity, SysComposeServerLogVO.class);
}
@Override
......
......@@ -3,8 +3,12 @@ package com.jomalls.custom.app.service.system.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.dto.system.SysComposeServerSaveDTO;
import com.jomalls.custom.app.dto.system.SysComposeServerUpdateDTO;
import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.system.SysComposeServerService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.system.SysComposeServerVO;
import com.jomalls.custom.dal.entity.SysComposeServerEntity;
import com.jomalls.custom.dal.entity.SysComposeServerLogEntity;
import com.jomalls.custom.domain.service.misc.SysComposeServerDomainService;
......@@ -33,14 +37,15 @@ public class SysComposeServerServiceImpl implements SysComposeServerService {
private final SysComposeServerLogDomainService sysComposeServerLogDomainService;
@Override
public IPage<SysComposeServerEntity> pageList(SysComposeServerEntity server, Page<SysComposeServerEntity> page) {
public IPage<SysComposeServerVO> pageList(SysComposeServerVO server, Page<SysComposeServerVO> page) {
// 分页查询
LambdaQueryWrapper<SysComposeServerEntity> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(server.getTitle())) {
wrapper.like(SysComposeServerEntity::getTitle, server.getTitle());
}
wrapper.orderByDesc(SysComposeServerEntity::getCreateTime);
IPage<SysComposeServerEntity> result = sysComposeServerDomainService.page(page, wrapper);
IPage<SysComposeServerEntity> result = sysComposeServerDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// 统计每个服务器的日志数量
List<SysComposeServerEntity> records = result.getRecords();
......@@ -56,24 +61,29 @@ public class SysComposeServerServiceImpl implements SysComposeServerService {
}
}
return result;
// Entity → VO 转换
IPage<SysComposeServerVO> voPage = new Page<>(result.getCurrent(), result.getSize(), result.getTotal());
voPage.setRecords(BeanMapper.mapper().convertList(result.getRecords(), SysComposeServerVO.class));
return voPage;
}
@Override
public List<SysComposeServerEntity> getAllServerHost() {
return sysComposeServerDomainService.list(new LambdaQueryWrapper<SysComposeServerEntity>()
public List<SysComposeServerVO> getAllServerHost() {
List<SysComposeServerEntity> list = sysComposeServerDomainService.list(new LambdaQueryWrapper<SysComposeServerEntity>()
.eq(SysComposeServerEntity::getStatus, 1)
.select(SysComposeServerEntity::getId, SysComposeServerEntity::getHost));
return BeanMapper.mapper().convertList(list, SysComposeServerVO.class);
}
@Override
public void add(SysComposeServerEntity server) {
if (!StringUtils.hasText(server.getTitle())) {
public void add(SysComposeServerSaveDTO dto) {
if (!StringUtils.hasText(dto.getTitle())) {
throw new ServiceException("服务器标题不能为空");
}
if (!StringUtils.hasText(server.getHost())) {
if (!StringUtils.hasText(dto.getHost())) {
throw new ServiceException("服务器地址不能为空");
}
SysComposeServerEntity server = BeanMapper.mapper().convert(dto, SysComposeServerEntity.class);
server.setStatus(1);
boolean saved = sysComposeServerDomainService.save(server);
if (saved) {
......@@ -82,7 +92,8 @@ public class SysComposeServerServiceImpl implements SysComposeServerService {
}
@Override
public void updateById(SysComposeServerEntity server) {
public void updateById(SysComposeServerUpdateDTO dto) {
SysComposeServerEntity server = BeanMapper.mapper().convert(dto, SysComposeServerEntity.class);
sysComposeServerDomainService.updateById(server);
log.info("修改服务器成功: id={}", server.getId());
}
......
package com.jomalls.custom.app.service.system.impl;
import com.jomalls.custom.app.dto.system.SysDeptSaveDTO;
import com.jomalls.custom.app.dto.system.SysDeptUpdateDTO;
import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.system.SysDeptService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.system.SysDeptVO;
import com.jomalls.custom.dal.entity.SysDeptEntity;
import com.jomalls.custom.domain.service.system.SysDeptDomainService;
import lombok.RequiredArgsConstructor;
......@@ -23,25 +27,30 @@ public class SysDeptServiceImpl implements SysDeptService {
private final SysDeptDomainService sysDeptDomainService;
@Override
public List<SysDeptEntity> selectDeptList(SysDeptEntity dept) {
public List<SysDeptVO> selectDeptList(SysDeptVO dept) {
SysDeptEntity query = BeanMapper.mapper().convert(dept, SysDeptEntity.class);
// 查询扁平部门列表
List<SysDeptEntity> deptList = sysDeptDomainService.selectDeptList(dept);
List<SysDeptEntity> deptList = sysDeptDomainService.selectDeptList(query);
// 构建部门树
return sysDeptDomainService.buildDeptTree(deptList);
List<SysDeptEntity> tree = sysDeptDomainService.buildDeptTree(deptList);
return BeanMapper.mapper().convertList(tree, SysDeptVO.class);
}
@Override
public List<SysDeptEntity> selectDeptListExcludeChild(Long deptId) {
return sysDeptDomainService.selectDeptListExcludeChild(deptId);
public List<SysDeptVO> selectDeptListExcludeChild(Long deptId) {
List<SysDeptEntity> deptList = sysDeptDomainService.selectDeptListExcludeChild(deptId);
return BeanMapper.mapper().convertList(deptList, SysDeptVO.class);
}
@Override
public SysDeptEntity getById(Long deptId) {
return sysDeptDomainService.getById(deptId);
public SysDeptVO getById(Long deptId) {
SysDeptEntity entity = sysDeptDomainService.getById(deptId);
return BeanMapper.mapper().convert(entity, SysDeptVO.class);
}
@Override
public void add(SysDeptEntity dept) {
public void add(SysDeptSaveDTO dto) {
SysDeptEntity dept = BeanMapper.mapper().convert(dto, SysDeptEntity.class);
// 设置祖级列表
if (dept.getParentId() == null || dept.getParentId() == 0L) {
dept.setAncestors("0");
......@@ -59,7 +68,8 @@ public class SysDeptServiceImpl implements SysDeptService {
}
@Override
public void edit(SysDeptEntity dept) {
public void edit(SysDeptUpdateDTO dto) {
SysDeptEntity dept = BeanMapper.mapper().convert(dto, SysDeptEntity.class);
sysDeptDomainService.updateById(dept);
log.info("修改部门成功: deptId={}", dept.getDeptId());
}
......
......@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.system.SysLoginService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.*;
import com.jomalls.custom.app.vo.system.*;
import com.jomalls.custom.dal.entity.SysMenuEntity;
import com.jomalls.custom.dal.entity.SysUserEntity;
import com.jomalls.custom.domain.service.system.SysMenuDomainService;
......
package com.jomalls.custom.app.service.system.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jomalls.custom.app.dto.system.SysMenuSaveDTO;
import com.jomalls.custom.app.dto.system.SysMenuUpdateDTO;
import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.system.SysMenuService;
import com.jomalls.custom.app.vo.TreeSelectVO;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.system.SysMenuVO;
import com.jomalls.custom.app.vo.system.TreeSelectVO;
import com.jomalls.custom.dal.entity.SysMenuEntity;
import com.jomalls.custom.dal.entity.SysRoleMenuEntity;
import com.jomalls.custom.domain.service.system.SysMenuDomainService;
......@@ -30,7 +34,7 @@ public class SysMenuServiceImpl implements SysMenuService {
private final SysRoleMenuDomainService sysRoleMenuDomainService;
@Override
public List<SysMenuEntity> selectMenuList(SysMenuEntity menu) {
public List<SysMenuVO> selectMenuList(SysMenuVO menu) {
LambdaQueryWrapper<SysMenuEntity> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(menu.getMenuName())) {
wrapper.like(SysMenuEntity::getMenuName, menu.getMenuName());
......@@ -40,12 +44,14 @@ public class SysMenuServiceImpl implements SysMenuService {
}
wrapper.eq(SysMenuEntity::getDelFlag, "0");
wrapper.orderByAsc(SysMenuEntity::getParentId, SysMenuEntity::getOrderNum);
return sysMenuDomainService.list(wrapper);
List<SysMenuEntity> entities = sysMenuDomainService.list(wrapper);
return BeanMapper.mapper().convertList(entities, SysMenuVO.class);
}
@Override
public SysMenuEntity getById(Long menuId) {
return sysMenuDomainService.getById(menuId);
public SysMenuVO getById(Long menuId) {
SysMenuEntity entity = sysMenuDomainService.getById(menuId);
return BeanMapper.mapper().convert(entity, SysMenuVO.class);
}
@Override
......@@ -73,14 +79,16 @@ public class SysMenuServiceImpl implements SysMenuService {
}
@Override
public void add(SysMenuEntity menu) {
public void add(SysMenuSaveDTO dto) {
SysMenuEntity menu = BeanMapper.mapper().convert(dto, SysMenuEntity.class);
menu.setCreateTime(new Date());
sysMenuDomainService.save(menu);
log.info("新增菜单成功: menuName={}", menu.getMenuName());
}
@Override
public void edit(SysMenuEntity menu) {
public void edit(SysMenuUpdateDTO dto) {
SysMenuEntity menu = BeanMapper.mapper().convert(dto, SysMenuEntity.class);
menu.setUpdateTime(new Date());
sysMenuDomainService.updateById(menu);
log.info("修改菜单成功: menuId={}", menu.getMenuId());
......
......@@ -3,8 +3,12 @@ package com.jomalls.custom.app.service.system.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.dto.system.SysPostSaveDTO;
import com.jomalls.custom.app.dto.system.SysPostUpdateDTO;
import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.system.SysPostService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.system.SysPostVO;
import com.jomalls.custom.dal.entity.SysPostEntity;
import com.jomalls.custom.domain.service.system.SysPostDomainService;
import lombok.RequiredArgsConstructor;
......@@ -25,7 +29,7 @@ public class SysPostServiceImpl implements SysPostService {
private final SysPostDomainService sysPostDomainService;
@Override
public IPage<SysPostEntity> pageList(SysPostEntity post, Page<SysPostEntity> page) {
public IPage<SysPostVO> pageList(SysPostVO post, Page<SysPostVO> page) {
LambdaQueryWrapper<SysPostEntity> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(post.getPostCode())) {
wrapper.like(SysPostEntity::getPostCode, post.getPostCode());
......@@ -37,16 +41,23 @@ public class SysPostServiceImpl implements SysPostService {
wrapper.eq(SysPostEntity::getStatus, post.getStatus());
}
wrapper.orderByAsc(SysPostEntity::getPostSort);
return sysPostDomainService.page(page, wrapper);
IPage<SysPostEntity> entityPage = sysPostDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// Entity → VO 转换
IPage<SysPostVO> voPage = new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
voPage.setRecords(BeanMapper.mapper().convertList(entityPage.getRecords(), SysPostVO.class));
return voPage;
}
@Override
public SysPostEntity getById(Long postId) {
return sysPostDomainService.getById(postId);
public SysPostVO getById(Long postId) {
SysPostEntity entity = sysPostDomainService.getById(postId);
return BeanMapper.mapper().convert(entity, SysPostVO.class);
}
@Override
public void add(SysPostEntity post) {
public void add(SysPostSaveDTO dto) {
SysPostEntity post = BeanMapper.mapper().convert(dto, SysPostEntity.class);
// 检查岗位编码唯一性
long count = sysPostDomainService.count(
new LambdaQueryWrapper<SysPostEntity>().eq(SysPostEntity::getPostCode, post.getPostCode()));
......@@ -60,7 +71,8 @@ public class SysPostServiceImpl implements SysPostService {
}
@Override
public void edit(SysPostEntity post) {
public void edit(SysPostUpdateDTO dto) {
SysPostEntity post = BeanMapper.mapper().convert(dto, SysPostEntity.class);
// 检查岗位编码唯一性(排除自身)
long count = sysPostDomainService.count(
new LambdaQueryWrapper<SysPostEntity>()
......
......@@ -3,8 +3,16 @@ package com.jomalls.custom.app.service.system.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.dto.system.SysRoleDataScopeDTO;
import com.jomalls.custom.app.dto.system.SysRoleSaveDTO;
import com.jomalls.custom.app.dto.system.SysRoleStatusDTO;
import com.jomalls.custom.app.dto.system.SysRoleUpdateDTO;
import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.system.SysRoleService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.system.SysDeptVO;
import com.jomalls.custom.app.vo.system.SysRoleVO;
import com.jomalls.custom.app.vo.system.SysUserVO;
import com.jomalls.custom.dal.entity.*;
import com.jomalls.custom.domain.service.system.*;
import lombok.RequiredArgsConstructor;
......@@ -33,7 +41,7 @@ public class SysRoleServiceImpl implements SysRoleService {
private final SysDeptDomainService sysDeptDomainService;
@Override
public IPage<SysRoleEntity> pageList(SysRoleEntity role, Page<SysRoleEntity> page) {
public IPage<SysRoleVO> pageList(SysRoleVO role, Page<SysRoleVO> page) {
LambdaQueryWrapper<SysRoleEntity> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(role.getRoleName())) {
wrapper.like(SysRoleEntity::getRoleName, role.getRoleName());
......@@ -46,16 +54,23 @@ public class SysRoleServiceImpl implements SysRoleService {
}
wrapper.eq(SysRoleEntity::getDelFlag, "0");
wrapper.orderByAsc(SysRoleEntity::getRoleSort);
return sysRoleDomainService.page(page, wrapper);
IPage<SysRoleEntity> entityPage = sysRoleDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// Entity → VO 转换
IPage<SysRoleVO> voPage = new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
voPage.setRecords(BeanMapper.mapper().convertList(entityPage.getRecords(), SysRoleVO.class));
return voPage;
}
@Override
public SysRoleEntity getById(Long roleId) {
return sysRoleDomainService.getById(roleId);
public SysRoleVO getById(Long roleId) {
SysRoleEntity entity = sysRoleDomainService.getById(roleId);
return BeanMapper.mapper().convert(entity, SysRoleVO.class);
}
@Override
public void add(SysRoleEntity role) {
public void add(SysRoleSaveDTO dto) {
SysRoleEntity role = BeanMapper.mapper().convert(dto, SysRoleEntity.class);
// 检查角色名称唯一性
long countByName = sysRoleDomainService.count(
new LambdaQueryWrapper<SysRoleEntity>().eq(SysRoleEntity::getRoleName, role.getRoleName()));
......@@ -73,8 +88,8 @@ public class SysRoleServiceImpl implements SysRoleService {
sysRoleDomainService.save(role);
Long roleId = role.getRoleId();
// 保存角色菜单关联
if (role.getMenuIds() != null) {
for (Long menuId : role.getMenuIds()) {
if (dto.getMenuIds() != null) {
for (Long menuId : dto.getMenuIds()) {
SysRoleMenuEntity roleMenu = new SysRoleMenuEntity();
roleMenu.setRoleId(roleId);
roleMenu.setMenuId(menuId);
......@@ -85,7 +100,8 @@ public class SysRoleServiceImpl implements SysRoleService {
}
@Override
public void edit(SysRoleEntity role) {
public void edit(SysRoleUpdateDTO dto) {
SysRoleEntity role = BeanMapper.mapper().convert(dto, SysRoleEntity.class);
// 检查角色名称唯一性(排除自身)
long countByName = sysRoleDomainService.count(
new LambdaQueryWrapper<SysRoleEntity>()
......@@ -106,10 +122,10 @@ public class SysRoleServiceImpl implements SysRoleService {
// 更新角色
sysRoleDomainService.updateById(role);
// 同步角色菜单关联
if (role.getMenuIds() != null) {
if (dto.getMenuIds() != null) {
sysRoleMenuDomainService.remove(
new LambdaQueryWrapper<SysRoleMenuEntity>().eq(SysRoleMenuEntity::getRoleId, role.getRoleId()));
for (Long menuId : role.getMenuIds()) {
for (Long menuId : dto.getMenuIds()) {
SysRoleMenuEntity roleMenu = new SysRoleMenuEntity();
roleMenu.setRoleId(role.getRoleId());
roleMenu.setMenuId(menuId);
......@@ -120,33 +136,36 @@ public class SysRoleServiceImpl implements SysRoleService {
}
@Override
public void dataScope(SysRoleEntity role) {
public void dataScope(SysRoleDataScopeDTO dto) {
SysRoleEntity role = new SysRoleEntity();
role.setRoleId(dto.getRoleId());
role.setDataScope(dto.getDataScope());
// 更新角色信息
sysRoleDomainService.updateById(role);
// 删除旧的部门关联
sysRoleDeptDomainService.remove(
new LambdaQueryWrapper<SysRoleDeptEntity>().eq(SysRoleDeptEntity::getRoleId, role.getRoleId()));
// 插入新的部门关联
if (role.getDeptIds() != null) {
for (Long deptId : role.getDeptIds()) {
if (dto.getDeptIds() != null) {
for (Long deptId : dto.getDeptIds()) {
SysRoleDeptEntity roleDept = new SysRoleDeptEntity();
roleDept.setRoleId(role.getRoleId());
roleDept.setDeptId(deptId);
sysRoleDeptDomainService.save(roleDept);
}
}
log.info("角色数据权限已更新: roleId={}", role.getRoleId());
log.info("角色数据权限已更新: roleId={}", dto.getRoleId());
}
@Override
public void changeStatus(Long roleId, String status) {
SysRoleEntity role = sysRoleDomainService.getById(roleId);
public void changeStatus(SysRoleStatusDTO dto) {
SysRoleEntity role = sysRoleDomainService.getById(dto.getRoleId());
if (role == null) {
throw new ServiceException("角色不存在");
}
role.setStatus(status);
role.setStatus(dto.getStatus());
sysRoleDomainService.updateById(role);
log.info("角色状态已修改: roleId={}, status={}", roleId, status);
log.info("角色状态已修改: roleId={}, status={}", dto.getRoleId(), dto.getStatus());
}
@Override
......@@ -168,15 +187,12 @@ public class SysRoleServiceImpl implements SysRoleService {
}
@Override
public IPage<SysUserEntity> allocatedList(SysUserEntity user, Page<SysUserEntity> page) {
Long roleId = user.getRoleId();
if (roleId == null) {
return new Page<>(page.getCurrent(), page.getSize());
}
// 使用子查询筛选已分配指定角色的用户
public IPage<SysUserVO> allocatedList(SysUserVO user, Page<SysUserVO> page) {
LambdaQueryWrapper<SysUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.inSql(SysUserEntity::getUserId,
"SELECT user_id FROM sys_user_role WHERE role_id = " + roleId);
if (user.getRoleId() != null) {
wrapper.inSql(SysUserEntity::getUserId,
"SELECT user_id FROM sys_user_role WHERE role_id = " + user.getRoleId());
}
if (StringUtils.hasText(user.getUserName())) {
wrapper.like(SysUserEntity::getUserName, user.getUserName());
}
......@@ -184,18 +200,20 @@ public class SysRoleServiceImpl implements SysRoleService {
wrapper.like(SysUserEntity::getPhonenumber, user.getPhonenumber());
}
wrapper.eq(SysUserEntity::getDelFlag, "0");
return sysUserDomainService.page(page, wrapper);
IPage<SysUserEntity> entityPage = sysUserDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// Entity → VO 转换
IPage<SysUserVO> voPage = new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
voPage.setRecords(BeanMapper.mapper().convertList(entityPage.getRecords(), SysUserVO.class));
return voPage;
}
@Override
public IPage<SysUserEntity> unallocatedList(SysUserEntity user, Page<SysUserEntity> page) {
Long roleId = user.getRoleId();
if (roleId == null) {
return new Page<>(page.getCurrent(), page.getSize());
}
// 使用子查询筛选未分配指定角色的用户
public IPage<SysUserVO> unallocatedList(SysUserVO user, Page<SysUserVO> page) {
LambdaQueryWrapper<SysUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.apply("user_id NOT IN (SELECT user_id FROM sys_user_role WHERE role_id = {0})", roleId);
if (user.getRoleId() != null) {
wrapper.apply("user_id NOT IN (SELECT user_id FROM sys_user_role WHERE role_id = {0})", user.getRoleId());
}
if (StringUtils.hasText(user.getUserName())) {
wrapper.like(SysUserEntity::getUserName, user.getUserName());
}
......@@ -203,7 +221,12 @@ public class SysRoleServiceImpl implements SysRoleService {
wrapper.like(SysUserEntity::getPhonenumber, user.getPhonenumber());
}
wrapper.eq(SysUserEntity::getDelFlag, "0");
return sysUserDomainService.page(page, wrapper);
IPage<SysUserEntity> entityPage = sysUserDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// Entity → VO 转换
IPage<SysUserVO> voPage = new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
voPage.setRecords(BeanMapper.mapper().convertList(entityPage.getRecords(), SysUserVO.class));
return voPage;
}
@Override
......@@ -245,9 +268,10 @@ public class SysRoleServiceImpl implements SysRoleService {
}
@Override
public List<SysDeptEntity> deptTree(Long roleId) {
public List<SysDeptVO> deptTree(Long roleId) {
// 查询全部部门
List<SysDeptEntity> allDepts = sysDeptDomainService.selectDeptList(new SysDeptEntity());
return sysDeptDomainService.buildDeptTree(allDepts);
List<SysDeptEntity> tree = sysDeptDomainService.buildDeptTree(allDepts);
return BeanMapper.mapper().convertList(tree, SysDeptVO.class);
}
}
......@@ -3,8 +3,12 @@ package com.jomalls.custom.app.service.system.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.dto.system.*;
import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.system.SysUserService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.system.SysDeptVO;
import com.jomalls.custom.app.vo.system.SysUserVO;
import com.jomalls.custom.dal.entity.*;
import com.jomalls.custom.domain.service.system.*;
import com.jomalls.custom.security.LoginUser;
......@@ -36,7 +40,7 @@ public class SysUserServiceImpl implements SysUserService {
private final PasswordEncoder passwordEncoder;
@Override
public IPage<SysUserEntity> pageList(SysUserEntity user, Page<SysUserEntity> page) {
public IPage<SysUserVO> pageList(SysUserVO user, Page<SysUserVO> page) {
LambdaQueryWrapper<SysUserEntity> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(user.getUserName())) {
wrapper.like(SysUserEntity::getUserName, user.getUserName());
......@@ -52,7 +56,12 @@ public class SysUserServiceImpl implements SysUserService {
}
wrapper.eq(SysUserEntity::getDelFlag, "0");
wrapper.orderByAsc(SysUserEntity::getUserId);
return sysUserDomainService.page(page, wrapper);
IPage<SysUserEntity> entityPage = sysUserDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// Entity → VO 转换
IPage<SysUserVO> voPage = new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
voPage.setRecords(BeanMapper.mapper().convertList(entityPage.getRecords(), SysUserVO.class));
return voPage;
}
@Override
......@@ -61,6 +70,8 @@ public class SysUserServiceImpl implements SysUserService {
if (user == null) {
throw new ServiceException("用户不存在");
}
// Entity → VO
SysUserVO userVO = BeanMapper.mapper().convert(user, SysUserVO.class);
// 查询角色列表
List<SysRoleEntity> roles = sysRoleDomainService.selectRoleListByUserId(userId);
// 查询岗位ID列表
......@@ -71,14 +82,16 @@ public class SysUserServiceImpl implements SysUserService {
.collect(Collectors.toList());
Map<String, Object> result = new HashMap<>();
result.put("user", user);
result.put("user", userVO);
result.put("roles", roles != null ? roles : Collections.emptyList());
result.put("postIds", postIds);
return result;
}
@Override
public void add(SysUserEntity user) {
public void add(SysUserSaveDTO dto) {
// DTO → Entity
SysUserEntity user = BeanMapper.mapper().convert(dto, SysUserEntity.class);
// 检查用户名唯一性
long count = sysUserDomainService.count(
new LambdaQueryWrapper<SysUserEntity>().eq(SysUserEntity::getUserName, user.getUserName()));
......@@ -93,8 +106,8 @@ public class SysUserServiceImpl implements SysUserService {
sysUserDomainService.save(user);
Long userId = user.getUserId();
// 保存用户角色关联
if (user.getRoleIds() != null) {
for (Long roleId : user.getRoleIds()) {
if (dto.getRoleIds() != null) {
for (Long roleId : dto.getRoleIds()) {
SysUserRoleEntity userRole = new SysUserRoleEntity();
userRole.setUserId(userId);
userRole.setRoleId(roleId);
......@@ -102,8 +115,8 @@ public class SysUserServiceImpl implements SysUserService {
}
}
// 保存用户岗位关联
if (user.getPostIds() != null) {
for (Long postId : user.getPostIds()) {
if (dto.getPostIds() != null) {
for (Long postId : dto.getPostIds()) {
SysUserPostEntity userPost = new SysUserPostEntity();
userPost.setUserId(userId);
userPost.setPostId(postId);
......@@ -114,21 +127,23 @@ public class SysUserServiceImpl implements SysUserService {
}
@Override
public void edit(SysUserEntity user) {
public void edit(SysUserUpdateDTO dto) {
// 检查用户是否存在
SysUserEntity existing = sysUserDomainService.getById(user.getUserId());
SysUserEntity existing = sysUserDomainService.getById(dto.getUserId());
if (existing == null) {
throw new ServiceException("用户不存在");
}
// DTO → Entity
SysUserEntity user = BeanMapper.mapper().convert(dto, SysUserEntity.class);
// 更新用户信息
user.setUpdateBy(SecurityUtils.getUsername());
user.setUpdateTime(new Date());
sysUserDomainService.updateById(user);
// 同步角色关联
if (user.getRoleIds() != null) {
if (dto.getRoleIds() != null) {
sysUserRoleDomainService.remove(
new LambdaQueryWrapper<SysUserRoleEntity>().eq(SysUserRoleEntity::getUserId, user.getUserId()));
for (Long roleId : user.getRoleIds()) {
for (Long roleId : dto.getRoleIds()) {
SysUserRoleEntity userRole = new SysUserRoleEntity();
userRole.setUserId(user.getUserId());
userRole.setRoleId(roleId);
......@@ -136,10 +151,10 @@ public class SysUserServiceImpl implements SysUserService {
}
}
// 同步岗位关联
if (user.getPostIds() != null) {
if (dto.getPostIds() != null) {
sysUserPostDomainService.remove(
new LambdaQueryWrapper<SysUserPostEntity>().eq(SysUserPostEntity::getUserId, user.getUserId()));
for (Long postId : user.getPostIds()) {
for (Long postId : dto.getPostIds()) {
SysUserPostEntity userPost = new SysUserPostEntity();
userPost.setUserId(user.getUserId());
userPost.setPostId(postId);
......@@ -163,50 +178,52 @@ public class SysUserServiceImpl implements SysUserService {
}
@Override
public void resetPwd(Long userId, String password) {
SysUserEntity user = sysUserDomainService.getById(userId);
public void resetPwd(SysUserResetPwdDTO dto) {
SysUserEntity user = sysUserDomainService.getById(dto.getUserId());
if (user == null) {
throw new ServiceException("用户不存在");
}
user.setPassword(passwordEncoder.encode(password));
user.setPassword(passwordEncoder.encode(dto.getPassword()));
sysUserDomainService.updateById(user);
log.info("用户密码已重置: userId={}", userId);
log.info("用户密码已重置: userId={}", dto.getUserId());
}
@Override
public void changeStatus(Long userId, String status) {
SysUserEntity user = sysUserDomainService.getById(userId);
public void changeStatus(SysUserChangeStatusDTO dto) {
SysUserEntity user = sysUserDomainService.getById(dto.getUserId());
if (user == null) {
throw new ServiceException("用户不存在");
}
user.setStatus(status);
user.setStatus(dto.getStatus());
sysUserDomainService.updateById(user);
log.info("用户状态已修改: userId={}, status={}", userId, status);
log.info("用户状态已修改: userId={}, status={}", dto.getUserId(), dto.getStatus());
}
@Override
public SysUserEntity getProfile() {
public SysUserVO getProfile() {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null) {
throw new ServiceException("未登录");
}
return sysUserDomainService.getById(loginUser.getUserId());
SysUserEntity user = sysUserDomainService.getById(loginUser.getUserId());
return BeanMapper.mapper().convert(user, SysUserVO.class);
}
@Override
public void updateProfile(SysUserEntity user) {
public void updateProfile(SysUserVO user) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null) {
throw new ServiceException("未登录");
}
user.setUserId(loginUser.getUserId());
user.setUpdateBy(loginUser.getUsername());
sysUserDomainService.updateById(user);
SysUserEntity entity = BeanMapper.mapper().convert(user, SysUserEntity.class);
entity.setUserId(loginUser.getUserId());
entity.setUpdateBy(loginUser.getUsername());
sysUserDomainService.updateById(entity);
log.info("用户信息已更新: userId={}", loginUser.getUserId());
}
@Override
public void updatePwd(String oldPassword, String newPassword) {
public void updatePwd(SysUserUpdatePwdDTO dto) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null) {
throw new ServiceException("未登录");
......@@ -216,10 +233,10 @@ public class SysUserServiceImpl implements SysUserService {
throw new ServiceException("用户不存在");
}
// 验证旧密码
if (!passwordEncoder.matches(oldPassword, user.getPassword())) {
if (!passwordEncoder.matches(dto.getOldPassword(), user.getPassword())) {
throw new ServiceException("旧密码错误");
}
user.setPassword(passwordEncoder.encode(newPassword));
user.setPassword(passwordEncoder.encode(dto.getNewPassword()));
sysUserDomainService.updateById(user);
log.info("用户密码已修改: userId={}", loginUser.getUserId());
}
......@@ -249,8 +266,9 @@ public class SysUserServiceImpl implements SysUserService {
}
@Override
public List<SysDeptEntity> deptTree() {
public List<SysDeptVO> deptTree() {
List<SysDeptEntity> allDepts = sysDeptDomainService.selectDeptList(new SysDeptEntity());
return sysDeptDomainService.buildDeptTree(allDepts);
List<SysDeptEntity> tree = sysDeptDomainService.buildDeptTree(allDepts);
return BeanMapper.mapper().convertList(tree, SysDeptVO.class);
}
}
......@@ -2,7 +2,9 @@ package com.jomalls.custom.app.service.warehouse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.dal.entity.CustomWarehouseInfoEntity;
import com.jomalls.custom.app.dto.warehouse.CustomWarehouseInfoSaveDTO;
import com.jomalls.custom.app.dto.warehouse.CustomWarehouseInfoUpdateDTO;
import com.jomalls.custom.app.vo.warehouse.CustomWarehouseInfoSnakeVO;
import java.util.List;
import java.util.Map;
......@@ -21,7 +23,7 @@ public interface CustomWarehouseInfoService {
* @param page 分页参数
* @return 分页结果
*/
IPage<CustomWarehouseInfoEntity> pageList(CustomWarehouseInfoEntity entity, Page<CustomWarehouseInfoEntity> page);
IPage<CustomWarehouseInfoSnakeVO> pageList(CustomWarehouseInfoSnakeVO entity, Page<CustomWarehouseInfoSnakeVO> page);
/**
* 获取仓库状态列表
......@@ -33,16 +35,16 @@ public interface CustomWarehouseInfoService {
/**
* 新增仓库
*
* @param entity 仓库信息
* @param dto 新增仓库请求
*/
void add(CustomWarehouseInfoEntity entity);
void add(CustomWarehouseInfoSaveDTO dto);
/**
* 修改仓库
*
* @param entity 仓库信息
* @param dto 修改仓库请求
*/
void edit(CustomWarehouseInfoEntity entity);
void edit(CustomWarehouseInfoUpdateDTO dto);
/**
* 删除仓库(支持批量,逗号分隔 ID)
......
......@@ -3,7 +3,11 @@ package com.jomalls.custom.app.service.warehouse.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.dto.warehouse.CustomWarehouseInfoSaveDTO;
import com.jomalls.custom.app.dto.warehouse.CustomWarehouseInfoUpdateDTO;
import com.jomalls.custom.app.service.warehouse.CustomWarehouseInfoService;
import com.jomalls.custom.app.utils.BeanMapper;
import com.jomalls.custom.app.vo.warehouse.CustomWarehouseInfoSnakeVO;
import com.jomalls.custom.dal.entity.CustomWarehouseInfoEntity;
import com.jomalls.custom.domain.service.warehouse.CustomWarehouseInfoDomainService;
import lombok.RequiredArgsConstructor;
......@@ -31,15 +35,15 @@ public class CustomWarehouseInfoServiceImpl implements CustomWarehouseInfoServic
private final CustomWarehouseInfoDomainService customWarehouseInfoDomainService;
@Override
public IPage<CustomWarehouseInfoEntity> pageList(CustomWarehouseInfoEntity entity, Page<CustomWarehouseInfoEntity> page) {
public IPage<CustomWarehouseInfoSnakeVO> pageList(CustomWarehouseInfoSnakeVO entity, Page<CustomWarehouseInfoSnakeVO> page) {
LambdaQueryWrapper<CustomWarehouseInfoEntity> wrapper = new LambdaQueryWrapper<>();
// 按仓库名称模糊搜索
if (StringUtils.hasText(entity.getWarehouseName())) {
wrapper.like(CustomWarehouseInfoEntity::getWarehouseName, entity.getWarehouseName());
if (StringUtils.hasText(entity.getWarehouse_name())) {
wrapper.like(CustomWarehouseInfoEntity::getWarehouseName, entity.getWarehouse_name());
}
// 按仓库编码模糊搜索
if (StringUtils.hasText(entity.getWarehouseCode())) {
wrapper.like(CustomWarehouseInfoEntity::getWarehouseCode, entity.getWarehouseCode());
if (StringUtils.hasText(entity.getWarehouse_code())) {
wrapper.like(CustomWarehouseInfoEntity::getWarehouseCode, entity.getWarehouse_code());
}
// 按状态查询
if (entity.getStatus() != null) {
......@@ -47,7 +51,12 @@ public class CustomWarehouseInfoServiceImpl implements CustomWarehouseInfoServic
}
// 按创建时间降序
wrapper.orderByDesc(CustomWarehouseInfoEntity::getCreateTime);
return customWarehouseInfoDomainService.page(page, wrapper);
IPage<CustomWarehouseInfoEntity> entityPage = customWarehouseInfoDomainService.page(
new Page<>(page.getCurrent(), page.getSize()), wrapper);
// Entity → VO 转换(使用 snakeCase mapper 处理蛇形字段)
IPage<CustomWarehouseInfoSnakeVO> voPage = new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
voPage.setRecords(BeanMapper.snakeCase().convertList(entityPage.getRecords(), CustomWarehouseInfoSnakeVO.class));
return voPage;
}
@Override
......@@ -65,13 +74,15 @@ public class CustomWarehouseInfoServiceImpl implements CustomWarehouseInfoServic
}
@Override
public void add(CustomWarehouseInfoEntity entity) {
public void add(CustomWarehouseInfoSaveDTO dto) {
CustomWarehouseInfoEntity entity = BeanMapper.mapper().convert(dto, CustomWarehouseInfoEntity.class);
customWarehouseInfoDomainService.save(entity);
log.info("新增仓库成功: warehouseName={}", entity.getWarehouseName());
}
@Override
public void edit(CustomWarehouseInfoEntity entity) {
public void edit(CustomWarehouseInfoUpdateDTO dto) {
CustomWarehouseInfoEntity entity = BeanMapper.mapper().convert(dto, CustomWarehouseInfoEntity.class);
customWarehouseInfoDomainService.updateById(entity);
log.info("修改仓库成功: id={}", entity.getId());
}
......
package com.jomalls.custom.app.vo;
import com.jomalls.custom.app.vo.warehouse.CustomWarehouseInfoSnakeVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
......
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
......
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
......
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
......
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
......
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
/**
* 组合服务器日志 VO
*
* @author Lizh
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "组合服务器日志信息")
public class SysComposeServerLogVO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@JsonProperty("id")
@Schema(description = "日志ID")
private Long id;
@JsonProperty("composeServerId")
@Schema(description = "关联服务器ID")
private Long composeServerId;
@JsonProperty("batchNumber")
@Schema(description = "批次号")
private String batchNumber;
@JsonProperty("subOrderNumbers")
@Schema(description = "子订单号")
private String subOrderNumbers;
@JsonProperty("status")
@Schema(description = "状态(0失败 1正常)")
private Integer status;
@JsonProperty("post")
@Schema(description = "请求参数")
private String post;
@JsonProperty("result")
@Schema(description = "返回结果")
private String result;
@JsonProperty("costTime")
@Schema(description = "耗时(毫秒)")
private Long costTime;
@JsonProperty("createTime")
@Schema(description = "创建时间")
private String createTime;
@JsonProperty("host")
@Schema(description = "关联服务器主机地址")
private String host;
}
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
/**
* 组合服务器 VO
*
* @author Lizh
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "组合服务器信息")
public class SysComposeServerVO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@JsonProperty("id")
@Schema(description = "服务器ID")
private Long id;
@JsonProperty("title")
@Schema(description = "服务器名称")
private String title;
@JsonProperty("host")
@Schema(description = "服务器地址")
private String host;
@JsonProperty("remark")
@Schema(description = "备注")
private String remark;
@JsonProperty("status")
@Schema(description = "状态(0停用 1正常)")
private Integer status;
@JsonProperty("createTime")
@Schema(description = "创建时间")
private String createTime;
@JsonProperty("status0Count")
@Schema(description = "失败日志数")
private Long status0Count;
@JsonProperty("status1Count")
@Schema(description = "成功日志数")
private Long status1Count;
}
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* 部门 VO
*
......@@ -14,6 +16,22 @@ import lombok.Data;
public class SysDeptVO {
@JsonProperty("deptId")
private Long deptId;
@JsonProperty("parentId")
private Long parentId;
@JsonProperty("deptName")
private String deptName;
@JsonProperty("orderNum")
private Integer orderNum;
@JsonProperty("leader")
private String leader;
@JsonProperty("phone")
private String phone;
@JsonProperty("email")
private String email;
@JsonProperty("status")
private String status;
@JsonProperty("createTime")
private String createTime;
@JsonProperty("children")
private List<SysDeptVO> children;
}
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 菜单 VO
*
* @author Lizh
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "菜单信息")
public class SysMenuVO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@JsonProperty("menuId")
@Schema(description = "菜单ID")
private Long menuId;
@JsonProperty("menuName")
@Schema(description = "菜单名称")
private String menuName;
@JsonProperty("parentId")
@Schema(description = "父菜单ID")
private Long parentId;
@JsonProperty("orderNum")
@Schema(description = "排序号")
private Integer orderNum;
@JsonProperty("path")
@Schema(description = "路由地址")
private String path;
@JsonProperty("component")
@Schema(description = "组件路径")
private String component;
@JsonProperty("query")
@Schema(description = "路由参数")
private String query;
@JsonProperty("routeName")
@Schema(description = "路由名称")
private String routeName;
@JsonProperty("isFrame")
@Schema(description = "是否为外链(0是 1否)")
private Integer isFrame;
@JsonProperty("isCache")
@Schema(description = "是否缓存(0缓存 1不缓存)")
private Integer isCache;
@JsonProperty("menuType")
@Schema(description = "菜单类型(M目录 C菜单 F按钮)")
private String menuType;
@JsonProperty("visible")
@Schema(description = "显示状态(0显示 1隐藏)")
private String visible;
@JsonProperty("status")
@Schema(description = "菜单状态(0正常 1停用)")
private String status;
@JsonProperty("perms")
@Schema(description = "权限标识")
private String perms;
@JsonProperty("icon")
@Schema(description = "菜单图标")
private String icon;
@JsonProperty("remark")
@Schema(description = "备注")
private String remark;
@JsonProperty("createTime")
@Schema(description = "创建时间")
private String createTime;
@JsonProperty("children")
@Schema(description = "子菜单列表")
private List<SysMenuVO> children;
}
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
/**
* 岗位 VO
*
* @author Lizh
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "岗位信息")
public class SysPostVO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@JsonProperty("postId")
@Schema(description = "岗位ID")
private Long postId;
@JsonProperty("postCode")
@Schema(description = "岗位编码")
private String postCode;
@JsonProperty("postName")
@Schema(description = "岗位名称")
private String postName;
@JsonProperty("postSort")
@Schema(description = "排序号")
private Integer postSort;
@JsonProperty("status")
@Schema(description = "状态(0正常 1停用)")
private String status;
@JsonProperty("createTime")
@Schema(description = "创建时间")
private String createTime;
@JsonProperty("remark")
@Schema(description = "备注")
private String remark;
}
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 角色 VO
*
* @author Lizh
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "角色信息")
public class SysRoleVO implements Serializable {
@Serial private static final long serialVersionUID = 1L;
@JsonProperty("roleId")
@Schema(description = "角色ID")
private Long roleId;
@JsonProperty("roleName")
@Schema(description = "角色名称")
private String roleName;
@JsonProperty("roleKey")
@Schema(description = "角色权限字符串")
private String roleKey;
@JsonProperty("roleSort")
@Schema(description = "排序号")
private Integer roleSort;
@JsonProperty("dataScope")
@Schema(description = "数据权限范围")
private String dataScope;
@JsonProperty("menuCheckStrictly")
@Schema(description = "菜单树选择项是否关联显示")
private Boolean menuCheckStrictly;
@JsonProperty("deptCheckStrictly")
@Schema(description = "部门树选择项是否关联显示")
private Boolean deptCheckStrictly;
@JsonProperty("status")
@Schema(description = "角色状态(0正常 1停用)")
private String status;
@JsonProperty("remark")
@Schema(description = "备注")
private String remark;
@JsonProperty("createTime")
@Schema(description = "创建时间")
private String createTime;
@JsonProperty("menuIds")
@Schema(description = "菜单ID列表")
private Long[] menuIds;
@JsonProperty("deptIds")
@Schema(description = "部门ID列表")
private Long[] deptIds;
}
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* 系统用户 VO
*
......@@ -40,5 +42,7 @@ public class SysUserVO {
private String createTime;
@JsonProperty("remark")
private String remark;
@JsonProperty("roleId")
private Long roleId;
private SysDeptVO dept;
}
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.system;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
......
package com.jomalls.custom.app.vo;
package com.jomalls.custom.app.vo.warehouse;
import com.jomalls.custom.app.vo.CustomProductWarehouseRelSnakeVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
......
package com.jomalls.custom.webapp.controller.system;
import com.jomalls.custom.app.service.system.BaseCountryCodeService;
import com.jomalls.custom.app.vo.BaseCountryCodeVO;
import com.jomalls.custom.app.vo.system.BaseCountryCodeVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......
......@@ -3,19 +3,16 @@ package com.jomalls.custom.webapp.controller.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.dto.system.SysComposeServerSaveDTO;
import com.jomalls.custom.app.dto.system.SysComposeServerUpdateDTO;
import com.jomalls.custom.app.service.system.SysComposeServerService;
import com.jomalls.custom.dal.entity.SysComposeServerEntity;
import com.jomalls.custom.app.vo.system.SysComposeServerVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -37,38 +34,38 @@ public class SysComposeServerController {
@Operation(summary = "分页查询服务器列表")
@RequiresPermissions("system:composeServer:list")
@PostMapping("/list")
public R<IPage<SysComposeServerEntity>> list(
public R<IPage<SysComposeServerVO>> list(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
SysComposeServerEntity server) {
Page<SysComposeServerEntity> page = new Page<>(pageNum, pageSize);
IPage<SysComposeServerEntity> result = sysComposeServerService.pageList(server, page);
SysComposeServerVO server) {
Page<SysComposeServerVO> page = new Page<>(pageNum, pageSize);
IPage<SysComposeServerVO> result = sysComposeServerService.pageList(server, page);
return R.ok(result);
}
@Operation(summary = "新增服务器")
@PostMapping("/add")
public R<Void> add(@RequestBody SysComposeServerEntity server) {
sysComposeServerService.add(server);
public R<Void> add(@RequestBody SysComposeServerSaveDTO dto) {
sysComposeServerService.add(dto);
return R.ok();
}
@Operation(summary = "修改服务器")
@PostMapping("/updateById")
public R<Void> updateById(@RequestBody SysComposeServerEntity server) {
sysComposeServerService.updateById(server);
public R<Void> updateById(@RequestBody SysComposeServerUpdateDTO dto) {
sysComposeServerService.updateById(dto);
return R.ok();
}
@Operation(summary = "删除服务器")
@GetMapping("/deleteById")
@DeleteMapping("/deleteById")
public R<Void> deleteById(@RequestParam Long id) {
sysComposeServerService.deleteById(id);
return R.ok();
}
@Operation(summary = "更新服务器状态")
@GetMapping("/updateStatusById")
@PutMapping("/updateStatusById")
public R<Void> updateStatusById(@RequestParam Long id, @RequestParam Integer status) {
sysComposeServerService.updateStatusById(id, status);
return R.ok();
......@@ -76,8 +73,8 @@ public class SysComposeServerController {
@Operation(summary = "获取所有启用的服务器主机地址")
@GetMapping("/getAllServerHost")
public R<List<SysComposeServerEntity>> getAllServerHost() {
List<SysComposeServerEntity> list = sysComposeServerService.getAllServerHost();
public R<List<SysComposeServerVO>> getAllServerHost() {
List<SysComposeServerVO> list = sysComposeServerService.getAllServerHost();
return R.ok(list);
}
}
......@@ -4,17 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.service.system.SysComposeServerLogService;
import com.jomalls.custom.dal.entity.SysComposeServerLogEntity;
import com.jomalls.custom.app.vo.system.SysComposeServerLogVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -36,12 +32,12 @@ public class SysComposeServerLogController {
@Operation(summary = "分页查询服务器日志列表")
@RequiresPermissions("system:composeServerLog:list")
@PostMapping("/list")
public R<IPage<SysComposeServerLogEntity>> list(
public R<IPage<SysComposeServerLogVO>> list(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
SysComposeServerLogEntity log) {
Page<SysComposeServerLogEntity> page = new Page<>(pageNum, pageSize);
IPage<SysComposeServerLogEntity> result = sysComposeServerLogService.pageList(log, page);
SysComposeServerLogVO log) {
Page<SysComposeServerLogVO> page = new Page<>(pageNum, pageSize);
IPage<SysComposeServerLogVO> result = sysComposeServerLogService.pageList(log, page);
return R.ok(result);
}
......
package com.jomalls.custom.webapp.controller.system;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.dto.system.SysDeptSaveDTO;
import com.jomalls.custom.app.dto.system.SysDeptUpdateDTO;
import com.jomalls.custom.app.service.system.SysDeptService;
import com.jomalls.custom.dal.entity.SysDeptEntity;
import com.jomalls.custom.app.vo.system.SysDeptVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -27,7 +29,7 @@ public class SysDeptController {
@Operation(summary = "查询部门列表")
@RequiresPermissions("system:dept:list")
@GetMapping("/list")
public R<Object> list(SysDeptEntity dept) {
public R<Object> list(SysDeptVO dept) {
return R.ok(sysDeptService.selectDeptList(dept));
}
......@@ -41,24 +43,24 @@ public class SysDeptController {
@Operation(summary = "根据ID查询部门")
@RequiresPermissions("system:dept:query")
@GetMapping("/{deptId}")
public R<SysDeptEntity> getById(@PathVariable Long deptId) {
SysDeptEntity dept = sysDeptService.getById(deptId);
public R<SysDeptVO> getById(@PathVariable Long deptId) {
SysDeptVO dept = sysDeptService.getById(deptId);
return R.ok(dept);
}
@Operation(summary = "新增部门")
@RequiresPermissions("system:dept:add")
@PostMapping
public R<Void> add(@RequestBody SysDeptEntity dept) {
sysDeptService.add(dept);
public R<Void> add(@RequestBody SysDeptSaveDTO dto) {
sysDeptService.add(dto);
return R.ok();
}
@Operation(summary = "修改部门")
@RequiresPermissions("system:dept:edit")
@PutMapping
public R<Void> edit(@RequestBody SysDeptEntity dept) {
sysDeptService.edit(dept);
public R<Void> edit(@RequestBody SysDeptUpdateDTO dto) {
sysDeptService.edit(dto);
return R.ok();
}
......
package com.jomalls.custom.webapp.controller.system;
import com.jomalls.custom.app.dto.system.LoginDTO;
import com.jomalls.custom.app.service.system.SysLoginService;
import com.jomalls.custom.app.vo.LoginUserInfoVO;
import com.jomalls.custom.app.vo.RouterVO;
import com.jomalls.custom.app.vo.system.LoginUserInfoVO;
import com.jomalls.custom.app.vo.system.RouterVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -32,9 +33,9 @@ public class SysLoginController {
*/
@PostMapping("/api/v2/login")
@Operation(summary = "用户登录")
public R<Map<String, String>> login(@RequestBody Map<String, String> body) {
String username = body.get("username");
String password = body.get("password");
public R<Map<String, String>> login(@RequestBody LoginDTO loginDTO) {
String username = loginDTO.getUsername();
String password = loginDTO.getPassword();
log.info("用户[{}]尝试登录", username);
String token = sysLoginService.login(username, password);
Map<String, String> result = new HashMap<>();
......
package com.jomalls.custom.webapp.controller.system;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.dto.system.SysMenuSaveDTO;
import com.jomalls.custom.app.dto.system.SysMenuUpdateDTO;
import com.jomalls.custom.app.service.system.SysMenuService;
import com.jomalls.custom.dal.entity.SysMenuEntity;
import com.jomalls.custom.app.vo.system.SysMenuVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -29,15 +31,16 @@ public class SysMenuController {
@Operation(summary = "查询菜单列表")
@RequiresPermissions("system:menu:list")
@GetMapping("/list")
public R<Object> list(SysMenuEntity menu) {
public R<Object> list(SysMenuVO menu) {
return R.ok(sysMenuService.selectMenuList(menu));
}
@Operation(summary = "根据ID查询菜单")
@RequiresPermissions("system:menu:query")
@GetMapping("/{menuId}")
public R<Object> getById(@PathVariable Long menuId) {
return R.ok(sysMenuService.getById(menuId));
public R<SysMenuVO> getById(@PathVariable Long menuId) {
SysMenuVO menu = sysMenuService.getById(menuId);
return R.ok(menu);
}
@Operation(summary = "查询菜单树下拉列表")
......@@ -56,16 +59,16 @@ public class SysMenuController {
@Operation(summary = "新增菜单")
@RequiresPermissions("system:menu:add")
@PostMapping
public R<Void> add(@RequestBody SysMenuEntity menu) {
sysMenuService.add(menu);
public R<Void> add(@RequestBody SysMenuSaveDTO dto) {
sysMenuService.add(dto);
return R.ok();
}
@Operation(summary = "修改菜单")
@RequiresPermissions("system:menu:edit")
@PutMapping
public R<Void> edit(@RequestBody SysMenuEntity menu) {
sysMenuService.edit(menu);
public R<Void> edit(@RequestBody SysMenuUpdateDTO dto) {
sysMenuService.edit(dto);
return R.ok();
}
......
......@@ -3,8 +3,10 @@ package com.jomalls.custom.webapp.controller.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.dto.system.SysPostSaveDTO;
import com.jomalls.custom.app.dto.system.SysPostUpdateDTO;
import com.jomalls.custom.app.service.system.SysPostService;
import com.jomalls.custom.dal.entity.SysPostEntity;
import com.jomalls.custom.app.vo.system.SysPostVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -29,36 +31,36 @@ public class SysPostController {
@Operation(summary = "分页查询岗位列表")
@RequiresPermissions("system:post:list")
@GetMapping("/list")
public R<IPage<SysPostEntity>> list(
public R<IPage<SysPostVO>> list(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
SysPostEntity post) {
Page<SysPostEntity> page = new Page<>(pageNum, pageSize);
IPage<SysPostEntity> result = sysPostService.pageList(post, page);
SysPostVO post) {
Page<SysPostVO> page = new Page<>(pageNum, pageSize);
IPage<SysPostVO> result = sysPostService.pageList(post, page);
return R.ok(result);
}
@Operation(summary = "根据ID查询岗位")
@RequiresPermissions("system:post:query")
@GetMapping("/{postId}")
public R<SysPostEntity> getById(@PathVariable Long postId) {
SysPostEntity post = sysPostService.getById(postId);
public R<SysPostVO> getById(@PathVariable Long postId) {
SysPostVO post = sysPostService.getById(postId);
return R.ok(post);
}
@Operation(summary = "新增岗位")
@RequiresPermissions("system:post:add")
@PostMapping
public R<Void> add(@RequestBody SysPostEntity post) {
sysPostService.add(post);
public R<Void> add(@RequestBody SysPostSaveDTO dto) {
sysPostService.add(dto);
return R.ok();
}
@Operation(summary = "修改岗位")
@RequiresPermissions("system:post:edit")
@PutMapping
public R<Void> edit(@RequestBody SysPostEntity post) {
sysPostService.edit(post);
public R<Void> edit(@RequestBody SysPostUpdateDTO dto) {
sysPostService.edit(dto);
return R.ok();
}
......
......@@ -3,9 +3,10 @@ package com.jomalls.custom.webapp.controller.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.dto.system.*;
import com.jomalls.custom.app.service.system.SysRoleService;
import com.jomalls.custom.dal.entity.SysRoleEntity;
import com.jomalls.custom.dal.entity.SysUserEntity;
import com.jomalls.custom.app.vo.system.SysRoleVO;
import com.jomalls.custom.app.vo.system.SysUserVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -32,52 +33,52 @@ public class SysRoleController {
@Operation(summary = "分页查询角色列表")
@RequiresPermissions("system:role:list")
@GetMapping("/list")
public R<IPage<SysRoleEntity>> list(
public R<IPage<SysRoleVO>> list(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
SysRoleEntity role) {
Page<SysRoleEntity> page = new Page<>(pageNum, pageSize);
IPage<SysRoleEntity> result = sysRoleService.pageList(role, page);
SysRoleVO role) {
Page<SysRoleVO> page = new Page<>(pageNum, pageSize);
IPage<SysRoleVO> result = sysRoleService.pageList(role, page);
return R.ok(result);
}
@Operation(summary = "根据ID查询角色")
@RequiresPermissions("system:role:query")
@GetMapping("/{roleId}")
public R<SysRoleEntity> getById(@PathVariable Long roleId) {
SysRoleEntity role = sysRoleService.getById(roleId);
public R<SysRoleVO> getById(@PathVariable Long roleId) {
SysRoleVO role = sysRoleService.getById(roleId);
return R.ok(role);
}
@Operation(summary = "新增角色")
@RequiresPermissions("system:role:add")
@PostMapping
public R<Void> add(@RequestBody SysRoleEntity role) {
sysRoleService.add(role);
public R<Void> add(@RequestBody SysRoleSaveDTO dto) {
sysRoleService.add(dto);
return R.ok();
}
@Operation(summary = "修改角色")
@RequiresPermissions("system:role:edit")
@PutMapping
public R<Void> edit(@RequestBody SysRoleEntity role) {
sysRoleService.edit(role);
public R<Void> edit(@RequestBody SysRoleUpdateDTO dto) {
sysRoleService.edit(dto);
return R.ok();
}
@Operation(summary = "修改角色数据权限")
@RequiresPermissions("system:role:edit")
@PutMapping("/dataScope")
public R<Void> dataScope(@RequestBody SysRoleEntity role) {
sysRoleService.dataScope(role);
public R<Void> dataScope(@RequestBody SysRoleDataScopeDTO dto) {
sysRoleService.dataScope(dto);
return R.ok();
}
@Operation(summary = "修改角色状态")
@RequiresPermissions("system:role:edit")
@PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysRoleEntity role) {
sysRoleService.changeStatus(role.getRoleId(), role.getStatus());
public R<Void> changeStatus(@RequestBody SysRoleStatusDTO dto) {
sysRoleService.changeStatus(dto);
return R.ok();
}
......@@ -92,24 +93,24 @@ public class SysRoleController {
@Operation(summary = "查询已分配用户(分页)")
@RequiresPermissions("system:role:list")
@GetMapping("/authUser/allocatedList")
public R<IPage<SysUserEntity>> allocatedList(
public R<IPage<SysUserVO>> allocatedList(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
SysUserEntity user) {
Page<SysUserEntity> page = new Page<>(pageNum, pageSize);
IPage<SysUserEntity> result = sysRoleService.allocatedList(user, page);
SysUserVO user) {
Page<SysUserVO> page = new Page<>(pageNum, pageSize);
IPage<SysUserVO> result = sysRoleService.allocatedList(user, page);
return R.ok(result);
}
@Operation(summary = "查询未分配用户(分页)")
@RequiresPermissions("system:role:list")
@GetMapping("/authUser/unallocatedList")
public R<IPage<SysUserEntity>> unallocatedList(
public R<IPage<SysUserVO>> unallocatedList(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
SysUserEntity user) {
Page<SysUserEntity> page = new Page<>(pageNum, pageSize);
IPage<SysUserEntity> result = sysRoleService.unallocatedList(user, page);
SysUserVO user) {
Page<SysUserVO> page = new Page<>(pageNum, pageSize);
IPage<SysUserVO> result = sysRoleService.unallocatedList(user, page);
return R.ok(result);
}
......
......@@ -3,8 +3,9 @@ package com.jomalls.custom.webapp.controller.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.dto.system.*;
import com.jomalls.custom.app.service.system.SysUserService;
import com.jomalls.custom.dal.entity.SysUserEntity;
import com.jomalls.custom.app.vo.system.SysUserVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -32,12 +33,12 @@ public class SysUserController {
@Operation(summary = "分页查询用户列表")
@RequiresPermissions("system:user:list")
@GetMapping("/list")
public R<IPage<SysUserEntity>> list(
public R<IPage<SysUserVO>> list(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
SysUserEntity user) {
Page<SysUserEntity> page = new Page<>(pageNum, pageSize);
IPage<SysUserEntity> result = sysUserService.pageList(user, page);
SysUserVO user) {
Page<SysUserVO> page = new Page<>(pageNum, pageSize);
IPage<SysUserVO> result = sysUserService.pageList(user, page);
return R.ok(result);
}
......@@ -52,16 +53,16 @@ public class SysUserController {
@Operation(summary = "新增用户")
@RequiresPermissions("system:user:add")
@PostMapping
public R<Void> add(@RequestBody SysUserEntity user) {
sysUserService.add(user);
public R<Void> add(@RequestBody SysUserSaveDTO dto) {
sysUserService.add(dto);
return R.ok();
}
@Operation(summary = "修改用户")
@RequiresPermissions("system:user:edit")
@PutMapping
public R<Void> edit(@RequestBody SysUserEntity user) {
sysUserService.edit(user);
public R<Void> edit(@RequestBody SysUserUpdateDTO dto) {
sysUserService.edit(dto);
return R.ok();
}
......@@ -76,39 +77,37 @@ public class SysUserController {
@Operation(summary = "重置密码")
@RequiresPermissions("system:user:resetPwd")
@PutMapping("/resetPwd")
public R<Void> resetPwd(@RequestBody SysUserEntity user) {
sysUserService.resetPwd(user.getUserId(), user.getPassword());
public R<Void> resetPwd(@RequestBody SysUserResetPwdDTO dto) {
sysUserService.resetPwd(dto);
return R.ok();
}
@Operation(summary = "修改用户状态")
@RequiresPermissions("system:user:edit")
@PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysUserEntity user) {
sysUserService.changeStatus(user.getUserId(), user.getStatus());
public R<Void> changeStatus(@RequestBody SysUserChangeStatusDTO dto) {
sysUserService.changeStatus(dto);
return R.ok();
}
@Operation(summary = "获取当前用户信息")
@GetMapping("/profile")
public R<SysUserEntity> profile() {
SysUserEntity user = sysUserService.getProfile();
public R<SysUserVO> profile() {
SysUserVO user = sysUserService.getProfile();
return R.ok(user);
}
@Operation(summary = "修改当前用户信息")
@PutMapping("/profile")
public R<Void> updateProfile(@RequestBody SysUserEntity user) {
public R<Void> updateProfile(@RequestBody SysUserVO user) {
sysUserService.updateProfile(user);
return R.ok();
}
@Operation(summary = "修改当前用户密码")
@PutMapping("/profile/updatePwd")
public R<Void> updatePwd(@RequestBody Map<String, String> body) {
String oldPassword = body.get("oldPassword");
String newPassword = body.get("newPassword");
sysUserService.updatePwd(oldPassword, newPassword);
public R<Void> updatePwd(@RequestBody SysUserUpdatePwdDTO dto) {
sysUserService.updatePwd(dto);
return R.ok();
}
......
......@@ -3,21 +3,16 @@ package com.jomalls.custom.webapp.controller.warehouse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.dto.warehouse.CustomWarehouseInfoSaveDTO;
import com.jomalls.custom.app.dto.warehouse.CustomWarehouseInfoUpdateDTO;
import com.jomalls.custom.app.service.warehouse.CustomWarehouseInfoService;
import com.jomalls.custom.dal.entity.CustomWarehouseInfoEntity;
import com.jomalls.custom.app.vo.warehouse.CustomWarehouseInfoSnakeVO;
import com.jomalls.custom.utils.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
......@@ -45,23 +40,23 @@ public class CustomWarehouseInfoController {
@Operation(summary = "分页查询仓库列表")
@RequiresPermissions("business:customWarehouse:list")
@GetMapping("/list")
public R<IPage<CustomWarehouseInfoEntity>> list(CustomWarehouseInfoEntity entity, Page<CustomWarehouseInfoEntity> page) {
public R<IPage<CustomWarehouseInfoSnakeVO>> list(CustomWarehouseInfoSnakeVO entity, Page<CustomWarehouseInfoSnakeVO> page) {
return R.ok(customWarehouseInfoService.pageList(entity, page));
}
@Operation(summary = "新增仓库")
@RequiresPermissions("business:customWarehouse:add")
@PostMapping
public R<Void> add(@RequestBody CustomWarehouseInfoEntity entity) {
customWarehouseInfoService.add(entity);
public R<Void> add(@RequestBody CustomWarehouseInfoSaveDTO dto) {
customWarehouseInfoService.add(dto);
return R.ok();
}
@Operation(summary = "修改仓库")
@RequiresPermissions("business:customWarehouse:edit")
@PutMapping
public R<Void> edit(@RequestBody CustomWarehouseInfoEntity entity) {
customWarehouseInfoService.edit(entity);
public R<Void> edit(@RequestBody CustomWarehouseInfoUpdateDTO dto) {
customWarehouseInfoService.edit(dto);
return R.ok();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment