浏览代码

编写统一验证模块

JensionDzero 1 年之前
父节点
当前提交
a0db260fcc

+ 71 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/benyun/IUserinfoController.java

@@ -0,0 +1,71 @@
+package com.ruoyi.web.controller.benyun;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.domain.vo.OpenAccountVO;
+import com.ruoyi.system.service.AccountService;
+import com.ruoyi.system.service.IUserinfoService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+
+@RestController
+@RequiredArgsConstructor
+public class IUserinfoController {
+    @Autowired
+    private IUserinfoService iUserinfoService;
+
+    @Autowired
+    private AccountService accountService;
+
+
+    /**
+     * 创建管理员
+     * @param openAccountVO
+     * @return
+     */
+    @PostMapping("/createAdmin")
+    public R createAdmin(@RequestBody OpenAccountVO openAccountVO) {
+        ArrayList<Integer> integers = new ArrayList<>();
+        integers.add(1);
+        openAccountVO.setRoles(integers);
+        iUserinfoService.createAdmin(openAccountVO);
+        return R.ok();
+    }
+
+    /**
+     * 创建用户
+     * @param openAccountVO
+     * @return
+     */
+    @PostMapping("/createUser")
+    public R createUser(@RequestBody OpenAccountVO openAccountVO) {
+        openAccountVO.setRoles(null);
+        iUserinfoService.createUser(openAccountVO);
+        return R.ok();
+    }
+
+
+    @PostMapping("/disableUser")
+    public R disableUser(@RequestBody OpenAccountVO openAccountVO) {
+        iUserinfoService.disableUser(openAccountVO);
+        return R.ok();
+    }
+
+
+    /**
+     * uId免密登录
+     * @Author Yyz
+     * @Date 2020/12/1 13:58
+     */
+    @SaIgnore
+    @PostMapping("/loginByUId")
+    public R login(String uId)  {
+        return R.ok(accountService.login(uId));
+    }
+
+}

+ 0 - 18
ruoyi-admin/src/main/java/com/ruoyi/web/controller/benyun/TestController.java

@@ -1,18 +0,0 @@
-package com.ruoyi.web.controller.benyun;
-
-
-import com.ruoyi.common.core.domain.R;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-@RequiredArgsConstructor
-@RequestMapping("/test")
-public class TestController {
-
-
-    @RequestMapping("/test2")
-    public R test2(){
-        return R.ok("test2");
-    }
-
-}

+ 194 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/OpenAccount.java

@@ -0,0 +1,194 @@
+package com.ruoyi.system.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ruoyi.common.annotation.Sensitive;
+import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.enums.SensitiveStrategy;
+import com.ruoyi.common.xss.Xss;
+import com.ruoyi.system.domain.vo.OpenAccountVO;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.*;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@TableName("sys_user")
+public class OpenAccount {
+    /**
+     * 统一用户id
+     */
+    @TableField("u_id")
+    private Long uId;
+
+    /**
+     * 用户账号
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 用户Id
+     */
+    @TableId(value = "user_id",type = IdType.ASSIGN_ID)
+    private Long userId;
+
+    /**
+     * 用户昵称
+     */
+    @TableField("nick_name")
+    private String nickName;
+
+    /**
+     *
+     */
+
+    /**
+     * 手机号码
+     */
+
+    @TableField("phonenumber")
+    private String phonenumber;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    @TableField("status")
+    private String status;
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableField("del_flag")
+    private String delFlag;
+
+
+    /**
+     * 创建人uId
+     */
+    @TableField("create_by")
+    private String createBy;
+
+    /**
+     * 密码
+     */
+    @TableField("password")
+    private String password;
+
+    /**
+     * 角色列表
+     */
+    //private List<Integer> roles;
+
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+
+
+
+    /**
+     * 用户类型(sys_user系统用户)
+     */
+    private String userType;
+
+    /**
+     * 用户邮箱
+     */
+    @Sensitive(strategy = SensitiveStrategy.EMAIL)
+    @Email(message = "邮箱格式不正确")
+    @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符")
+    private String email;
+
+
+    /**
+     * 用户性别
+     */
+    private String sex;
+
+    /**
+     * 用户头像
+     */
+    private String avatar;
+
+
+
+    @JsonIgnore
+    @JsonProperty
+    public String getPassword() {
+        return password;
+    }
+
+
+
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+
+    /**
+     * 最后登录时间
+     */
+    private Date loginDate;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 部门对象
+     */
+    @TableField(exist = false)
+    private SysDept dept;
+
+    /**
+     * 角色对象
+     */
+    @TableField(exist = false)
+    private List<SysRole> roles;
+
+    /**
+     * 角色组
+     */
+    @TableField(exist = false)
+    private Long[] roleIds;
+
+    /**
+     * 岗位组
+     */
+    @TableField(exist = false)
+    private Long[] postIds;
+
+    /**
+     * 数据权限 当前角色ID
+     */
+    @TableField(exist = false)
+    private Long roleId;
+
+    public OpenAccount(Long userId) {
+        this.userId = userId;
+    }
+
+    public boolean isAdmin() {
+        return UserConstants.ADMIN_ID.equals(this.userId);
+    }
+
+    public OpenAccount(OpenAccountVO openAccountVO) {
+        this.uId = openAccountVO.getUId();
+        this.userName = openAccountVO.getUserName();
+        this.nickName = openAccountVO.getNickName();
+        this.phonenumber = openAccountVO.getPhonenumber();
+        this.status = openAccountVO.getStatus();
+        this.delFlag = openAccountVO.getDelFlag();
+        this.createBy = openAccountVO.getCreateBy();
+        this.password = openAccountVO.getPassword();
+    }
+}

+ 64 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/OpenAccountVO.java

@@ -0,0 +1,64 @@
+package com.ruoyi.system.domain.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class OpenAccountVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 统一用户id
+     */
+    private Long uId;
+
+    /**
+     * 用户账号
+     */
+    @NotBlank(message = "用户账号不能为空")
+    @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
+    private String userName;
+
+    /**
+     * 用户昵称
+     */
+    @NotBlank(message = "用户昵称不能为空")
+    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
+    private String nickName;
+
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private String status;
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 创建人uId
+     */
+    private String createBy;
+
+    /**
+     * 密码
+     */
+    @NotBlank(message = "密码不能为空")
+    private String password;
+    /**
+     * 角色列表
+     */
+    private List<Integer> roles;
+}

+ 9 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/IUserinfoMapper.java

@@ -0,0 +1,9 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.domain.OpenAccount;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface IUserinfoMapper extends BaseMapper<OpenAccount> {
+}

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/AccountService.java

@@ -0,0 +1,5 @@
+package com.ruoyi.system.service;
+
+public interface AccountService {
+    String login(String uId);
+}

+ 9 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IUserinfoService.java

@@ -0,0 +1,9 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.vo.OpenAccountVO;
+
+public interface IUserinfoService {
+    void createAdmin(OpenAccountVO openAccountVO);
+    void createUser(OpenAccountVO openAccountVO);
+    void disableUser(OpenAccountVO openAccountVO);
+}

+ 13 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java

@@ -330,4 +330,17 @@ public class SysLoginService {
         // 登录成功 清空错误次数
         RedisUtils.deleteObject(errorKey);
     }
+
+    public String UIdLogin(String username) {
+        // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
+        SysUser user = loadUserByUsername(username);
+        // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
+        LoginUser loginUser = buildLoginUser(user);
+        // 生成token
+        LoginHelper.loginByDevice(loginUser, DeviceType.PC);
+
+        recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
+        recordLoginInfo(user.getUserId(), username);
+        return StpUtil.getTokenValue();
+    }
 }

+ 60 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AccountServiceImpl.java

@@ -0,0 +1,60 @@
+package com.ruoyi.system.service.impl;
+
+import cn.dev33.satoken.context.SaHolder;
+import cn.dev33.satoken.context.model.SaStorage;
+import cn.dev33.satoken.stp.SaLoginModel;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.dto.RoleDTO;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.enums.DeviceType;
+import com.ruoyi.common.enums.UserStatus;
+import com.ruoyi.common.exception.user.UserException;
+import com.ruoyi.common.helper.LoginHelper;
+import com.ruoyi.common.utils.MessageUtils;
+import com.ruoyi.system.domain.OpenAccount;
+import com.ruoyi.system.mapper.IUserinfoMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.service.AccountService;
+import com.ruoyi.system.service.IUserinfoService;
+import com.ruoyi.system.service.SysLoginService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@RequiredArgsConstructor
+@Service
+@Slf4j
+public class AccountServiceImpl implements AccountService {
+
+    @Autowired
+    IUserinfoMapper iUserinfoMapper;
+
+    private final SysUserMapper userMapper;
+
+    private final SysLoginService sysLoginService;
+
+    @Override
+    public String login(String uId) {
+        QueryWrapper<OpenAccount> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("u_id",uId);
+        OpenAccount openAccount = iUserinfoMapper.selectOne(queryWrapper);
+        System.out.println(uId);
+        System.out.println(openAccount);
+        if (openAccount != null){
+            //登录
+            String token = sysLoginService.UIdLogin(openAccount.getUserName());
+            return token;
+        }
+        return null;
+    }
+}

+ 52 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IUserinfoServiceImpl.java

@@ -0,0 +1,52 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.ruoyi.system.domain.OpenAccount;
+import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.system.domain.vo.OpenAccountVO;
+import com.ruoyi.system.mapper.IUserinfoMapper;
+import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.service.IUserinfoService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@RequiredArgsConstructor
+@Transactional
+public class IUserinfoServiceImpl implements IUserinfoService {
+
+    private final IUserinfoMapper iUserinfoMapper;
+    private final SysUserRoleMapper userRoleMapper;
+
+
+    @Override
+    public void createAdmin(OpenAccountVO openAccountVO) {
+        //注册用户
+        OpenAccount openAccount = new OpenAccount(openAccountVO);
+        iUserinfoMapper.insert(openAccount);
+        //设置权限
+        for (Integer role : openAccountVO.getRoles()) {
+            SysUserRole sysUserRole = new SysUserRole();
+            sysUserRole.setUserId(openAccount.getUserId());
+            sysUserRole.setRoleId(Long.valueOf(role));
+            userRoleMapper.insert(sysUserRole);
+        }
+
+    }
+
+    @Override
+    public void createUser(OpenAccountVO openAccountVO) {
+        OpenAccount openAccount = new OpenAccount(openAccountVO);
+        iUserinfoMapper.insert(openAccount);
+    }
+
+    @Override
+    public void disableUser(OpenAccountVO openAccountVO) {
+        UpdateWrapper<OpenAccount> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("u_id",openAccountVO.getUId());
+        updateWrapper.set("delFlag",2);
+        iUserinfoMapper.update(null,updateWrapper);
+    }
+}

+ 2 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -289,7 +289,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
     public boolean registerUser(SysUser user) {
         user.setCreateBy(user.getUserName());
         user.setUpdateBy(user.getUserName());
-        return baseMapper.insert(user) > 0;
+        //return baseMapper.insert(user) > 0;
+        return false;
     }
 
     /**