添加用户登录相关功能

release_1.0.0
xueqingkun 10 months ago
parent 30ea11fc10
commit 4845c9717e

@ -0,0 +1,69 @@
package com.supervision.knowsub.controller.system;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.knowsub.domain.UserInfo;
import com.supervision.knowsub.exception.BusinessException;
import com.supervision.knowsub.model.SystemUser;
import com.supervision.knowsub.service.SystemUserService;
import com.supervision.knowsub.util.TokenUtil;
import com.supervision.knowsub.util.UserUtil;
import com.supervision.knowsub.vo.user.LoginReqVO;
import com.supervision.knowsub.vo.user.LoginResVO;
import com.supervision.knowsub.vo.user.UserInfoResVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Optional;
@Tag(name = "用户管理")
@RestController
@RequestMapping("user")
@RequiredArgsConstructor
public class UserController {
private final SystemUserService systemUserService;
@Operation(summary = "登录")
@PostMapping("login")
public LoginResVO login(@RequestBody LoginReqVO reqVO) {
if (!StrUtil.isAllNotBlank(reqVO.getUserAccount(), reqVO.getPassword())) {
throw new BusinessException("用户名不能为空");
}
Optional<SystemUser> user = systemUserService.lambdaQuery().eq(SystemUser::getAccount, reqVO.getUserAccount()).last("limit 1").oneOpt();
if (user.isEmpty() || !UserUtil.checkUserPassword(reqVO.getPassword(), user.get().getUserPd())) {
throw new BusinessException("用户名或密码有误!");
}
// 更新用户最近的登录时间
String token = TokenUtil.creatToken(JSONUtil.toJsonStr(user.get()));
LoginResVO loginResVO = BeanUtil.toBean(user.get(), LoginResVO.class);
loginResVO.setToken(token);
loginResVO.setUsername(user.get().getUsername());
loginResVO.setRoleId(user.get().getRoleId());
return loginResVO;
}
@Operation(summary = "查看账号信息")
@GetMapping("getUserAccountInfo")
public UserInfoResVo getUserAccountInfo() {
UserInfo user = UserUtil.getUser();
SystemUser systemUser = systemUserService.getById(user.getId());
if (ObjectUtil.isEmpty(systemUser)){
throw new BusinessException("用户信息不存在");
}
return BeanUtil.toBean(systemUser, UserInfoResVo.class);
}
}

@ -22,4 +22,8 @@ public class UserUtil {
return ThreadCache.USER.get();
}
public static boolean checkUserPassword(String password,String userPd){
return SM2Util.verify(password,userPd);
}
}

@ -35,7 +35,7 @@ public class SystemUser implements Serializable {
private String account;
/**
* pw
* pw
*/
private String userPd;

@ -0,0 +1,10 @@
package com.supervision.knowsub.vo.user;
import lombok.Data;
@Data
public class LoginReqVO {
private String userAccount;
private String password;
}

@ -0,0 +1,27 @@
package com.supervision.knowsub.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class LoginResVO {
@Schema(description = "主键")
private String id;
@Schema(description = "用户账户")
private String account;
@Schema(description = "用户名称")
private String username;
@Schema(description = "用户角色编码0管理员 1普通用户(学生) 2运营人员(配置)")
private String roleId;
@Schema(description = "token")
private String token;
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,28 @@
package com.supervision.knowsub.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class UserInfoResVo {
@Schema(description = "用户id")
private String id;
@Schema(description = "用户账户")
private String account;
@Schema(description = "用户名称")
private String username;
@Schema(description = "用户角色编码0管理员 1普通用户")
private String roleId;
@Schema(description = "人员所属部门ID")
private String deptId;
@Schema(description = "备注")
private String remark;
}
Loading…
Cancel
Save