2021与蓝度共同重构项目,服务端
liuhaonan
2022-10-26 c7be2ef037c5aebb0cd8f1f33e5fa934389e6083
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AdminController.java
@@ -3,6 +3,7 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.map.MapUtil;
import cn.hutool.extra.servlet.ServletUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.enums.AdminStatusStatus;
@@ -13,7 +14,6 @@
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.redis.RedisService;
import com.sandu.common.security.LoginUserInfo;
import com.sandu.common.security.annotation.AnonymousAccess;
import com.sandu.common.security.config.SecurityProperties;
import com.sandu.common.security.token.TokenProvider;
import com.sandu.common.util.IpUtil;
@@ -22,7 +22,6 @@
import com.sandu.ximon.admin.security.PermissionConfig;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.service.*;
import com.sandu.ximon.admin.utils.IPUtils;
import com.sandu.ximon.admin.utils.RedisUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.dao.bo.MenuNode;
@@ -70,10 +69,7 @@
    private PermissionConfig permissionConfig;
    private final RedisService redisService;
    @Log("后台用户登录")
    @AnonymousAccess
    @PostMapping(value = "/login")
    public ResponseVO<Object> login(HttpServletRequest request, @RequestBody AdminLoginParam loginParam) {
    public ResponseVO<Object> login(HttpServletRequest request, AdminLoginParam loginParam) {
        Admin admin = adminService.getOne(Wrappers.lambdaQuery(Admin.class).eq(Admin::getUsername, loginParam.getUsername()).last("limit 1"));
        if (admin == null) {
            return ResponseUtil.error(ResponseStatusEnums.BAD_CREDENTIALS.getCode(), ResponseStatusEnums.BAD_CREDENTIALS.getMessage());
@@ -123,7 +119,8 @@
        // 返回 token 与 用户信息
        Map<String, Object> authInfo = new HashMap<String, Object>(2) {{
            put("token", properties.getTokenStartWith() + token);
            put("user", admin);
            put("admin", admin);
            put("client", null);
        }};
@@ -134,12 +131,12 @@
        Browser browser = userAgent.getBrowser();
        OperatingSystem os = userAgent.getOperatingSystem();
        String content = "用户ID:" + admin.getId()
                + "用户名:" + admin.getUsername()
                + "用户类型:管理员"
                + " 登录IP地址:" + IPUtils.getPublicIp()
                + ",用户名:" + admin.getUsername()
                + ",用户类型:管理员"
                + ",登录IP地址:" + ServletUtil.getClientIP(request)
                + ",操作系统:" + os
                + ",浏览器:" + browser;
        StoreOperationRecordsUtils.storeOperationData(null, null, "用户登录", content);
        StoreOperationRecordsUtils.storeOperationLoginData(admin.getId(), admin.getUsername(), "管理员登录", content);
        /**
         * 登录信息日志记录结束
         */
@@ -191,7 +188,7 @@
    @GetMapping(value = "/logout")
    public ResponseVO<Object> LogOut() {
        String content = "用户名:" + SecurityUtils.getUsername();
        StoreOperationRecordsUtils.storeOperationData(null, null, "用户退出登录", content);
        StoreOperationRecordsUtils.storeOperationData(null, null, "用管理员退出登录", content);
        String key = String.format("%d_%d", SecurityUtils.getUserDetails().getUserId(), SecurityUtils.getUserDetails().getAdministratorType());
        redisService.set(key, null);
        return ResponseUtil.success("退出登录成功");
@@ -209,11 +206,14 @@
    @Log("后台用户列表")
    @GetMapping(value = "/list")
    public ResponseVO<Object> listAdmin(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) {
    public ResponseVO<Object> listAdmin(BaseConditionVO baseConditionVO,
                                        @RequestParam(value = "keyword", required = false) String keyword,
                                        @RequestParam(value = "order", required = false) Integer order,
                                        @RequestParam(value = "seq", required = false) Integer seq) {
        if (!permissionConfig.check(MenuEnum.ADMIN_LIST.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.successPage(adminService.listAdmin(baseConditionVO, keyword));
        return ResponseUtil.successPage(adminService.listAdmin(baseConditionVO, keyword, order, seq));
    }
    @Log("后台用户注册")
@@ -287,17 +287,16 @@
        }
    }
    @Log("后台用户删除")
    @PostMapping("/del/{adminId}")
    @GetMapping("/del/{adminId}")
    public ResponseVO<Object> deleteAdmin(@PathVariable Long adminId) {
        if (!permissionConfig.check(MenuEnum.ADMIN_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        boolean result = adminService.deleteAdmin(adminId);
        if (result) {
            return ResponseUtil.success("修改成功");
            return ResponseUtil.success("删除管理员成功!");
        } else {
            return ResponseUtil.fail("修改失败");
            return ResponseUtil.fail("删除管理员失败!");
        }
    }
@@ -340,4 +339,14 @@
        return ResponseUtil.success(userPermissionList);
    }
    @GetMapping("/creatUserKey")
    public ResponseVO<Object> creatUserKey(@RequestParam(required = false, value = "userId") Long userId,
                                           @RequestParam(required = false, value = "requstType") Integer requstType) {
        if (!AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getAdministratorIdentity())) {
            throw new BusinessException("非超级管理员无法操作!");
        }
        return ResponseUtil.success(adminService.creatUserKey(userId, requstType));
    }
}