diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java index a931f13..4b429d3 100644 --- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java @@ -3,10 +3,8 @@ package com.muyu.common.system.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.annotation.Excel.ColumnType; -import com.muyu.common.core.web.domain.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; @@ -57,7 +55,8 @@ public class SysLogininfor { /** * 访问时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date accessTime; + } diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java index 1fc0491..1decb18 100644 --- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java @@ -1,8 +1,8 @@ package com.muyu.common.system.remote.factory; import com.muyu.common.core.domain.Result; -import com.muyu.common.system.remote.RemoteLogService; import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.common.system.remote.RemoteLogService; import com.muyu.common.system.domain.SysOperLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java index a4f2916..45181b9 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java @@ -12,9 +12,12 @@ import com.muyu.common.redis.service.RedisService; import com.muyu.common.security.annotation.InnerAuth; import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.system.domain.model.SysLogininforAddModel; import com.muyu.system.domain.model.SysLogininforExportModel; import com.muyu.system.domain.model.SysLogininforListModel; +import com.muyu.system.domain.rep.SysLogininforAddReq; import com.muyu.system.domain.rep.SysLogininforListReq; +import com.muyu.system.domain.resp.SysLogininforListResp; import com.muyu.system.service.SysLogininforService; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; @@ -38,10 +41,17 @@ public class SysLogininforController extends BaseController { @RequiresPermissions("system:logininfor:list") @PostMapping("/list") - public Result> list (@RequestBody SysLogininforListReq sysLogininforListReq) { - PageQueryModel pageQueryModel = logininforService.pageQuery(SysLogininforListModel.reqBuild(sysLogininforListReq)); + public Result> list (@RequestBody SysLogininforListReq sysLogininforListReq) { + PageQueryModel pageQueryModel = logininforService.pageQuery(SysLogininforListModel.reqBuild(sysLogininforListReq)); + DataPageResp sysLogininforListModelDataPageResp = DataPageResp.of(pageQueryModel); return Result.success( - DataPageResp.of(pageQueryModel) + DataPageResp.builder() + .rows(sysLogininforListModelDataPageResp.getRows() + .stream() + .map(SysLogininforListResp::buildSysLogininforResp) + .toList()) + .total(sysLogininforListModelDataPageResp.getTotal()) + .build() ); } @@ -80,8 +90,8 @@ public class SysLogininforController extends BaseController { @InnerAuth @PostMapping - public Result add (@RequestBody SysLogininfor logininfor) { - logininforService.insertLogininfor(logininfor); + public Result add (@RequestBody SysLogininforAddReq logininforAddReq) { + logininforService.insertLogininfor(SysLogininforAddModel.of(logininforAddReq)); return Result.success(); } } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java index bca363d..f5d6fd7 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java @@ -9,7 +9,10 @@ import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.common.security.utils.SecurityUtils; import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.model.SysMenuListModel; +import com.muyu.system.domain.rep.SysMenuListReq; import com.muyu.system.domain.resp.RoleMenuTreeResp; +import com.muyu.system.domain.resp.SysMenuListResp; import com.muyu.system.service.SysMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -33,10 +36,12 @@ public class SysMenuController extends BaseController { */ @RequiresPermissions("system:menu:list") @PostMapping("/list") - public Result list (@RequestBody SysMenu menu) { + public Result> list (@RequestBody SysMenuListReq sysMenuListReq) { Long userId = SecurityUtils.getUserId(); - List menus = menuService.selectMenuList(menu, userId); - return success(menus); + List menus = menuService.selectMenuList(SysMenuListModel.of(sysMenuListReq), userId); + return success(menus.stream() + .map(SysMenuListResp::buildSysMenuListResp) + .toList()); } /** @@ -52,10 +57,10 @@ public class SysMenuController extends BaseController { * 获取菜单下拉树列表 */ @GetMapping("/treeselect") - public Result treeselect (SysMenu menu) { + public Result treeselect (SysMenuListReq sysMenuListReq) { Long userId = SecurityUtils.getUserId(); - List menus = menuService.selectMenuList(menu, userId); - return success(menuService.buildMenuTreeSelect(menus)); + List sysMenus = menuService.selectMenuList(SysMenuListModel.of(sysMenuListReq), userId); + return success(menuService.buildMenuTreeSelect(sysMenus)); } /** @@ -64,7 +69,7 @@ public class SysMenuController extends BaseController { @GetMapping(value = "/roleMenuTreeselect/{roleId}") public Result roleMenuTreeselect (@PathVariable("roleId") Long roleId) { Long userId = SecurityUtils.getUserId(); - List menus = menuService.selectMenuList(userId); + List menus = menuService.selectMenuList(userId); return Result.success( RoleMenuTreeResp.builder() .menus(menuService.buildMenuTreeSelect(menus)) diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java index 736e81b..5a2f09f 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.system.domain.model.SysMenuListModel; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -155,4 +156,45 @@ public class SysMenu extends BaseEntity { return perms; } + public static SysMenu of(SysMenuListModel sysMenuListModel) { + return SysMenu.builder() + .menuId(sysMenuListModel.getMenuId()) + .menuName(sysMenuListModel.getMenuName()) + .parentName(sysMenuListModel.getParentName()) + .parentId(sysMenuListModel.getParentId()) + .orderNum(sysMenuListModel.getOrderNum()) + .path(sysMenuListModel.getPath()) + .component(sysMenuListModel.getComponent()) + .query(sysMenuListModel.getQuery()) + .isFrame(sysMenuListModel.getIsFrame()) + .isCache(sysMenuListModel.getIsCache()) + .menuType(sysMenuListModel.getMenuType()) + .visible(sysMenuListModel.getVisible()) + .status(sysMenuListModel.getStatus()) + .perms(sysMenuListModel.getPerms()) + .icon(sysMenuListModel.getIcon()) + .children(sysMenuListModel.getChildren()) + .build(); + } + + public static SysMenu buildSysMenu(SysMenuListModel sysMenuListModel) { + return SysMenu.builder() + .menuId(sysMenuListModel.getMenuId()) + .menuName(sysMenuListModel.getMenuName()) + .parentName(sysMenuListModel.getParentName()) + .parentId(sysMenuListModel.getParentId()) + .orderNum(sysMenuListModel.getOrderNum()) + .path(sysMenuListModel.getPath()) + .component(sysMenuListModel.getComponent()) + .query(sysMenuListModel.getQuery()) + .isFrame(sysMenuListModel.getIsFrame()) + .isCache(sysMenuListModel.getIsCache()) + .menuType(sysMenuListModel.getMenuType()) + .visible(sysMenuListModel.getVisible()) + .status(sysMenuListModel.getStatus()) + .perms(sysMenuListModel.getPerms()) + .icon(sysMenuListModel.getIcon()) + .children(sysMenuListModel.getChildren()) + .build(); + } } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysLogininforAddModel.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysLogininforAddModel.java new file mode 100644 index 0000000..3538822 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysLogininforAddModel.java @@ -0,0 +1,75 @@ +package com.muyu.system.domain.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.system.domain.rep.SysLogininforAddReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @description: 登录添加模型 + * @author yangchoashun + * @date 2025/2/23 17:24 + * @version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysLogininforAddModel { + /** + * 访问ID + */ + private Long infoId; + /** + * 用户账号 + */ + private String userName; + + /** + * 状态 0成功 1失败 + */ + private String status; + + /** + * 地址 + */ + private String ipaddr; + + /** + * 描述 + */ + private String msg; + + /** + * 访问时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date accessTime; + + public static SysLogininforAddModel of(SysLogininforAddReq sysLogininforAddReq) { + return SysLogininforAddModel.builder() + .infoId(sysLogininforAddReq.getInfoId()) + .userName(sysLogininforAddReq.getUserName()) + .status(sysLogininforAddReq.getStatus()) + .ipaddr(sysLogininforAddReq.getIpaddr()) + .msg(sysLogininforAddReq.getMsg()) + .accessTime(sysLogininforAddReq.getAccessTime()) + .build(); + } + + public static SysLogininfor of(SysLogininforAddModel sysLogininforAddModel) { + return SysLogininfor.builder() + .infoId(sysLogininforAddModel.getInfoId()) + .userName(sysLogininforAddModel.getUserName()) + .status(sysLogininforAddModel.getStatus()) + .ipaddr(sysLogininforAddModel.getIpaddr()) + .msg(sysLogininforAddModel.getMsg()) + .accessTime(sysLogininforAddModel.getAccessTime()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysLogininforListModel.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysLogininforListModel.java index eb86184..50748c4 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysLogininforListModel.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysLogininforListModel.java @@ -1,6 +1,8 @@ package com.muyu.system.domain.model; +import com.fasterxml.jackson.annotation.JsonFormat; import com.muyu.common.core.web.model.QueryModel; +import com.muyu.common.system.domain.SysLogininfor; import com.muyu.system.domain.rep.SysLogininforListReq; import lombok.AllArgsConstructor; import lombok.Data; @@ -17,6 +19,10 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor public class SysLogininforListModel extends QueryModel { + /** + * 访问ID + */ + private Long infoId; /** * IP地址 */ @@ -42,6 +48,16 @@ public class SysLogininforListModel extends QueryModel { */ private Date endTime; + /** + * 描述 + */ + private String msg; + + /** + * 访问时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date accessTime; public static SysLogininforListModel reqBuild(SysLogininforListReq req){ return SysLogininforListModel.builder() .ipaddr(req.getIpaddr()) @@ -51,4 +67,14 @@ public class SysLogininforListModel extends QueryModel { .build() .domainBuild(req); } + + public static SysLogininforListModel buildSysLogininforListModel(SysLogininfor sysLogininfor) { + return SysLogininforListModel.builder() + .ipaddr(sysLogininfor.getIpaddr()) + .userName(sysLogininfor.getUserName()) + .status(sysLogininfor.getStatus()) + .msg(sysLogininfor.getMsg()) + .accessTime(sysLogininfor.getAccessTime()) + .build(); + } } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysMenuListModel.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysMenuListModel.java new file mode 100644 index 0000000..4e4d7d8 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysMenuListModel.java @@ -0,0 +1,146 @@ +package com.muyu.system.domain.model; + +import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.rep.SysMenuAddReq; +import com.muyu.system.domain.rep.SysMenuListReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: 菜单添加模型 + * @author yangchoashun + * @date 2025/2/23 17:24 + * @version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysMenuListModel { + private Long menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 父菜单名称 + */ + private String parentName; + + /** + * 父菜单ID + */ + + private Long parentId; + + /** + * 显示顺序 + */ + + private Integer orderNum; + + /** + * 路由地址 + */ + + private String path; + + /** + * 组件路径 + */ + + private String component; + + /** + * 路由参数 + */ + private String query; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 类型(M目录 C菜单 F按钮) + */ + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + + /** + * 菜单状态(0正常 1停用) + */ + private String status; + + /** + * 权限字符串 + */ + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 子菜单 + */ + private List children = new ArrayList(); + public static SysMenuListModel of(SysMenuListReq sysMenuListReq) { + return SysMenuListModel.builder() + .menuId(sysMenuListReq.getMenuId()) + .menuName(sysMenuListReq.getMenuName()) + .parentName(sysMenuListReq.getParentName()) + .parentId(sysMenuListReq.getParentId()) + .orderNum(sysMenuListReq.getOrderNum()) + .path(sysMenuListReq.getPath()) + .component(sysMenuListReq.getComponent()) + .query(sysMenuListReq.getQuery()) + .isFrame(sysMenuListReq.getIsFrame()) + .isCache(sysMenuListReq.getIsCache()) + .menuType(sysMenuListReq.getMenuType()) + .visible(sysMenuListReq.getVisible()) + .status(sysMenuListReq.getStatus()) + .perms(sysMenuListReq.getPerms()) + .icon(sysMenuListReq.getIcon()) + .children(sysMenuListReq.getChildren()) + .build(); + } + + public static SysMenuListModel buildSysMenuListModel(SysMenu sysMenu) { + return SysMenuListModel.builder() + .menuId(sysMenu.getMenuId()) + .menuName(sysMenu.getMenuName()) + .parentName(sysMenu.getParentName()) + .parentId(sysMenu.getParentId()) + .orderNum(sysMenu.getOrderNum()) + .path(sysMenu.getPath()) + .component(sysMenu.getComponent()) + .query(sysMenu.getQuery()) + .isFrame(sysMenu.getIsFrame()) + .isCache(sysMenu.getIsCache()) + .menuType(sysMenu.getMenuType()) + .visible(sysMenu.getVisible()) + .status(sysMenu.getStatus()) + .perms(sysMenu.getPerms()) + .icon(sysMenu.getIcon()) + .children(sysMenu.getChildren()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysMenuPageQueryModel.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysMenuPageQueryModel.java index cbc9860..4f49885 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysMenuPageQueryModel.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/model/SysMenuPageQueryModel.java @@ -1,6 +1,7 @@ package com.muyu.system.domain.model; import com.muyu.common.core.web.model.QueryModel; +import com.muyu.system.domain.rep.SysMenuAddReq; import com.muyu.system.domain.rep.SysMenuListReq; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysLogininforAddReq.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysLogininforAddReq.java new file mode 100644 index 0000000..8de33b5 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysLogininforAddReq.java @@ -0,0 +1,52 @@ +package com.muyu.system.domain.rep; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @description: 登录添加请求 + * @author yangchoashun + * @date 2025/2/23 17:24 + * @version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysLogininforAddReq { + /** + * 访问ID + */ + private Long infoId; + /** + * 用户账号 + */ + private String userName; + + /** + * 状态 0成功 1失败 + */ + private String status; + + /** + * 地址 + */ + private String ipaddr; + + /** + * 描述 + */ + private String msg; + + /** + * 访问时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date accessTime; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysLogininforListReq.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysLogininforListReq.java index da808f9..11f03f7 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysLogininforListReq.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysLogininforListReq.java @@ -1,5 +1,6 @@ package com.muyu.system.domain.rep; +import com.fasterxml.jackson.annotation.JsonFormat; import com.muyu.common.core.web.page.PageReq; import lombok.AllArgsConstructor; import lombok.Data; @@ -34,10 +35,12 @@ public class SysLogininforListReq extends PageReq { /** * 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date beginTime; /** * 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysMenuAddReq.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysMenuAddReq.java new file mode 100644 index 0000000..89f951c --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysMenuAddReq.java @@ -0,0 +1,103 @@ +package com.muyu.system.domain.rep; + +import com.muyu.system.domain.SysMenu; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: 菜单添加请求 + * @author yangchoashun + * @date 2025/2/23 17:24 + * @version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysMenuAddReq { + private Long menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 父菜单名称 + */ + private String parentName; + + /** + * 父菜单ID + */ + + private Long parentId; + + /** + * 显示顺序 + */ + + private Integer orderNum; + + /** + * 路由地址 + */ + + private String path; + + /** + * 组件路径 + */ + + private String component; + + /** + * 路由参数 + */ + private String query; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 类型(M目录 C菜单 F按钮) + */ + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + + /** + * 菜单状态(0正常 1停用) + */ + private String status; + + /** + * 权限字符串 + */ + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 子菜单 + */ + private List children = new ArrayList(); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysMenuListReq.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysMenuListReq.java index 7cf9817..513e34f 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysMenuListReq.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/rep/SysMenuListReq.java @@ -1,12 +1,16 @@ package com.muyu.system.domain.rep; import com.muyu.common.core.web.page.PageReq; +import com.muyu.system.domain.SysMenu; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import java.util.ArrayList; +import java.util.List; + /** * 菜单信息请求列表查询对象 * @@ -21,12 +25,84 @@ import lombok.experimental.SuperBuilder; @AllArgsConstructor @EqualsAndHashCode(callSuper = true) public class SysMenuListReq extends PageReq { + private Long menuId; + /** * 菜单名称 */ private String menuName; + + /** + * 父菜单名称 + */ + private String parentName; + + /** + * 父菜单ID + */ + + private Long parentId; + + /** + * 显示顺序 + */ + + private Integer orderNum; + + /** + * 路由地址 + */ + + private String path; + + /** + * 组件路径 + */ + + private String component; + + /** + * 路由参数 + */ + private String query; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 类型(M目录 C菜单 F按钮) + */ + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + /** * 菜单状态(0正常 1停用) */ private String status; + + /** + * 权限字符串 + */ + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 子菜单 + */ + private List children = new ArrayList(); } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/SysLogininforListResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/SysLogininforListResp.java new file mode 100644 index 0000000..5565723 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/SysLogininforListResp.java @@ -0,0 +1,64 @@ +package com.muyu.system.domain.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.system.domain.model.SysLogininforListModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author yangchaoshun + * @version 1.0 + * @description: 登录信息返回对象 + * @date 2025/2/23 18:18 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysLogininforListResp { + /** + * ID + */ + private Long infoId; + + /** + * 用户账号 + */ + private String userName; + + /** + * 状态 0成功 1失败 + */ + private String status; + + /** + * 地址 + */ + private String ipaddr; + + /** + * 描述 + */ + private String msg; + + /** + * 访问时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date accessTime; + + public static SysLogininforListResp buildSysLogininforResp(SysLogininforListModel sysLogininforListModel) { + return SysLogininforListResp.builder() + .infoId(sysLogininforListModel.getInfoId()) + .userName(sysLogininforListModel.getUserName()) + .status(sysLogininforListModel.getStatus()) + .ipaddr(sysLogininforListModel.getIpaddr()) + .msg(sysLogininforListModel.getMsg()) + .accessTime(sysLogininforListModel.getAccessTime()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/SysMenuListResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/SysMenuListResp.java new file mode 100644 index 0000000..f7cdb17 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/SysMenuListResp.java @@ -0,0 +1,127 @@ +package com.muyu.system.domain.resp; + +import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.model.SysMenuListModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.ArrayList; +import java.util.List; + +/** + * 菜单信息请求列表查询对象 + * + * @ClassName SysMenuListReq + * @Author AnNan.Wang + * @Date 2024/12/16 10:55 + */ + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class SysMenuListResp { + private Long menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 父菜单名称 + */ + private String parentName; + + /** + * 父菜单ID + */ + + private Long parentId; + + /** + * 显示顺序 + */ + + private Integer orderNum; + + /** + * 路由地址 + */ + + private String path; + + /** + * 组件路径 + */ + + private String component; + + /** + * 路由参数 + */ + private String query; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 类型(M目录 C菜单 F按钮) + */ + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + + /** + * 菜单状态(0正常 1停用) + */ + private String status; + + /** + * 权限字符串 + */ + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 子菜单 + */ + private List children = new ArrayList(); + + public static SysMenuListResp buildSysMenuListResp(SysMenuListModel sysMenuListModel){ + return SysMenuListResp.builder() + .menuId(sysMenuListModel.getMenuId()) + .menuName(sysMenuListModel.getMenuName()) + .parentName(sysMenuListModel.getParentName()) + .parentId(sysMenuListModel.getParentId()) + .orderNum(sysMenuListModel.getOrderNum()) + .path(sysMenuListModel.getPath()) + .component(sysMenuListModel.getComponent()) + .query(sysMenuListModel.getQuery()) + .isFrame(sysMenuListModel.getIsFrame()) + .isCache(sysMenuListModel.getIsCache()) + .menuType(sysMenuListModel.getMenuType()) + .visible(sysMenuListModel.getVisible()) + .status(sysMenuListModel.getStatus()) + .perms(sysMenuListModel.getPerms()) + .icon(sysMenuListModel.getIcon()) + .children(sysMenuListModel.getChildren()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java index cedc60f..c0de73d 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java @@ -3,6 +3,7 @@ package com.muyu.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.common.core.web.page.PageQueryModel; import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.system.domain.model.SysLogininforAddModel; import com.muyu.system.domain.model.SysLogininforExportModel; import com.muyu.system.domain.model.SysLogininforListModel; @@ -17,9 +18,9 @@ public interface SysLogininforService extends IService { /** * 新增系统登录日志 * - * @param logininfor 访问日志对象 + * @param logininforAddModel 访问日志对象 */ - public void insertLogininfor (SysLogininfor logininfor); + public void insertLogininfor (SysLogininforAddModel logininforAddModel); /** * 查询系统登录日志集合 @@ -28,7 +29,7 @@ public interface SysLogininforService extends IService { * * @return 登录记录集合 */ - public PageQueryModel pageQuery(SysLogininforListModel sysLogininforListModel); + public PageQueryModel pageQuery(SysLogininforListModel sysLogininforListModel); /** * 批量删除系统登录日志 diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java index b6aaec4..cc0a9ef 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java @@ -2,6 +2,7 @@ package com.muyu.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.model.SysMenuListModel; import com.muyu.system.domain.vo.RouterVo; import com.muyu.system.domain.vo.TreeSelect; @@ -21,17 +22,17 @@ public interface SysMenuService extends IService { * * @return 菜单列表 */ - public List selectMenuList (Long userId); + public List selectMenuList (Long userId); /** * 根据用户查询系统菜单列表 * - * @param menu 菜单信息 + * @param sysMenuListModel 菜单信息 * @param userId 用户ID * * @return 菜单列表 */ - public List selectMenuList (SysMenu menu, Long userId); + public List selectMenuList (SysMenuListModel sysMenuListModel, Long userId); /** * 根据用户ID查询权限 @@ -94,7 +95,7 @@ public interface SysMenuService extends IService { * * @return 下拉树结构列表 */ - public List buildMenuTreeSelect (List menus); + public List buildMenuTreeSelect (List menus); /** * 根据菜单ID查询信息 diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java index c5a14e7..ed8580f 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.web.page.PageQueryModel; import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.system.domain.model.SysLogininforAddModel; import com.muyu.system.domain.model.SysLogininforExportModel; import com.muyu.system.domain.model.SysLogininforListModel; import com.muyu.system.mapper.SysLogininforMapper; @@ -30,10 +31,11 @@ public class SysLogininforServiceImpl extends ServiceImpl pageQuery(SysLogininforListModel pageQueryModel) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.like(StringUtils.isNotEmpty(pageQueryModel.getIpaddr()), SysLogininfor::getIpaddr, pageQueryModel.getIpaddr()); - queryWrapper.eq(StringUtils.isNotEmpty(pageQueryModel.getStatus()), SysLogininfor::getStatus, pageQueryModel.getStatus()); - queryWrapper.like(StringUtils.isNotEmpty(pageQueryModel.getUserName()), SysLogininfor::getUserName, pageQueryModel.getUserName()); - queryWrapper.between(!ObjectUtil.hasNull(pageQueryModel.getBeginTime(),pageQueryModel.getEndTime()), SysLogininfor::getAccessTime, pageQueryModel.getBeginTime(), pageQueryModel.getEndTime()); + public PageQueryModel pageQuery(SysLogininforListModel pageQueryModel) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .like(StringUtils.isNotEmpty(pageQueryModel.getIpaddr()), SysLogininfor::getIpaddr, pageQueryModel.getIpaddr()) + .eq(StringUtils.isNotEmpty(pageQueryModel.getStatus()), SysLogininfor::getStatus, pageQueryModel.getStatus()) + .like(StringUtils.isNotEmpty(pageQueryModel.getUserName()), SysLogininfor::getUserName, pageQueryModel.getUserName()) + .between(!ObjectUtil.hasNull(pageQueryModel.getBeginTime(),pageQueryModel.getEndTime()), SysLogininfor::getAccessTime, pageQueryModel.getBeginTime(), pageQueryModel.getEndTime()); Page page = this.page(pageQueryModel.buildPage(), queryWrapper); - return PageQueryModel.of(page); + return new PageQueryModel(){{ + setDataList(page.getRecords().stream() + .map(SysLogininforListModel::buildSysLogininforListModel) + .toList()); + setTotal(page.getTotal()); + }}; } /** diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java index 1cf8411..35e11a0 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java @@ -9,6 +9,7 @@ import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.system.domain.SysRole; import com.muyu.common.system.domain.SysUser; import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.model.SysMenuListModel; import com.muyu.system.domain.vo.MetaVo; import com.muyu.system.domain.vo.RouterVo; import com.muyu.system.domain.vo.TreeSelect; @@ -48,35 +49,39 @@ public class SysMenuServiceImpl extends ServiceImpl impl * @return 菜单列表 */ @Override - public List selectMenuList (Long userId) { - return selectMenuList(new SysMenu(), userId); + public List selectMenuList (Long userId) { + return selectMenuList(new SysMenuListModel(), userId); } /** * 查询系统菜单列表 * - * @param menu 菜单信息 + * @param sysMenuListModel 菜单信息 * * @return 菜单列表 */ @Override - public List selectMenuList (SysMenu menu, Long userId) { + public List selectMenuList (SysMenuListModel sysMenuListModel, Long userId) { List menuList = null; // 管理员显示所有菜单信息 if (SysUser.isAdmin(userId)) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()); - lambdaQueryWrapper.eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible()); - lambdaQueryWrapper.eq(StringUtils.isNotEmpty(menu.getStatus()), SysMenu::getStatus, menu.getStatus()); + lambdaQueryWrapper.like(StringUtils.isNotBlank(sysMenuListModel.getMenuName()), SysMenu::getMenuName, sysMenuListModel.getMenuName()); + lambdaQueryWrapper.eq(StringUtils.isNotBlank(sysMenuListModel.getVisible()), SysMenu::getVisible, sysMenuListModel.getVisible()); + lambdaQueryWrapper.eq(StringUtils.isNotEmpty(sysMenuListModel.getStatus()), SysMenu::getStatus, sysMenuListModel.getStatus()); lambdaQueryWrapper.orderByAsc( SysMenu::getParentId, SysMenu::getOrderNum ); menuList = this.list(lambdaQueryWrapper); } else { + SysMenu menu = SysMenu.of(sysMenuListModel); menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } - return menuList; + + return menuList.stream() + .map(SysMenuListModel::buildSysMenuListModel) + .toList(); } /** @@ -247,8 +252,8 @@ public class SysMenuServiceImpl extends ServiceImpl impl * @return 下拉树结构列表 */ @Override - public List buildMenuTreeSelect (List menus) { - List menuTrees = buildMenuTree(menus); + public List buildMenuTreeSelect (List menus) { + List menuTrees = buildMenuTree(menus.stream().map(SysMenu::buildSysMenu).collect(Collectors.toList())); return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml index ebdfaa2..b59c945 100644 --- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml @@ -12,6 +12,7 @@ nacos: spring: main: allow-bean-definition-overriding: true + allow-circular-references: true application: # 应用名称 name: cloud-system