diff --git a/file-common/pom.xml b/file-common/pom.xml index 225a69b..8abd588 100644 --- a/file-common/pom.xml +++ b/file-common/pom.xml @@ -73,6 +73,11 @@ aliyun-sdk-oss 3.10.2 + + io.jsonwebtoken + jjwt + 0.6.0 + diff --git a/file-common/src/main/java/com/qiwenshare/common/util/JjwtUtil.java b/file-common/src/main/java/com/qiwenshare/common/util/JjwtUtil.java new file mode 100644 index 0000000..44fd5ec --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/util/JjwtUtil.java @@ -0,0 +1,94 @@ +package com.qiwenshare.common.util; + +import com.alibaba.fastjson.JSON; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.JwtBuilder; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.apache.commons.net.util.Base64; + +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class JjwtUtil { + + // jti:jwt的唯一身份标识 + public static final String JWT_ID = UUID.randomUUID().toString(); + + // 加密密文,私钥 + public static final String JWT_SECRET = "jiamimiwen"; + + // 过期时间,单位毫秒 + public static final int EXPIRE_TIME = 60 * 60 * 1000; // 一个小时 +// public static final long EXPIRE_TIME = 7 * 24 * 3600 * 1000; // 一个星期 + + // 由字符串生成加密key + public static SecretKey generalKey() { + String secret = JWT_SECRET; + // 本地的密码解码 + byte[] encodedKey = Base64.decodeBase64(JWT_SECRET); + // 根据给定的字节数组使用AES加密算法构造一个密钥 + SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES"); + return key; + } + + // 创建jwt + public static String createJWT(String issuer, String audience, String subject) throws Exception { + // 设置头部信息 +// Map header = new HashMap(); +// header.put("typ", "JWT"); +// header.put("alg", "HS256"); + // 或 + // 指定header那部分签名的时候使用的签名算法,jjwt已经将这部分内容封装好了,只有{"alg":"HS256"} + SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; + // 创建payload的私有声明(根据特定的业务需要添加,如果要拿这个做验证,一般是需要和jwt的接收方提前沟通好验证的方式) + Map claims = new HashMap<>(); + claims.put("username", "admin"); + claims.put("password", "010203"); + // jti用户id,例如:20da39f8-b74e-4a9b-9a0f-a39f1f73fe64 + String jwtId = JWT_ID; + // 生成JWT的时间 + long nowTime = System.currentTimeMillis(); + Date issuedAt = new Date(nowTime); + // 生成签名的时候使用的秘钥secret,切记这个秘钥不能外露,是你服务端的私钥,在任何场景都不应该流露出去,一旦客户端得知这个secret,那就意味着客户端是可以自我签发jwt的 + SecretKey key = generalKey(); + // 为payload添加各种标准声明和私有声明 + JwtBuilder builder = Jwts.builder() // 表示new一个JwtBuilder,设置jwt的body +// .setHeader(header) // 设置头部信息 + .setClaims(claims) // 如果有私有声明,一定要先设置自己创建的这个私有声明,这是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明 + .setId(jwtId) // jti(JWT ID):jwt的唯一身份标识,根据业务需要,可以设置为一个不重复的值,主要用来作为一次性token,从而回避重放攻击 + .setIssuedAt(issuedAt) // iat(issuedAt):jwt的签发时间 + .setIssuer(issuer) // iss(issuer):jwt签发者 + .setSubject(subject) // sub(subject):jwt所面向的用户,放登录的用户名,一个json格式的字符串,可存放userid,roldid之类,作为用户的唯一标志 + .signWith(signatureAlgorithm, key); // 设置签名,使用的是签名算法和签名使用的秘钥 + // 设置过期时间 + long expTime = EXPIRE_TIME; + if (expTime >= 0) { + long exp = nowTime + expTime; + builder.setExpiration(new Date(exp)); + } + // 设置jwt接收者 + if (audience == null || "".equals(audience)) { + builder.setAudience("Tom"); + } else { + builder.setAudience(audience); + } + return builder.compact(); + } + + // 解密jwt + public static Claims parseJWT(String jwt) throws Exception { + SecretKey key = generalKey(); // 签名秘钥,和生成的签名的秘钥一模一样 + Claims claims = Jwts.parser() // 得到DefaultJwtParser + .setSigningKey(key) // 设置签名的秘钥 + .parseClaimsJws(jwt).getBody(); // 设置需要解析的jwt + return claims; + } + + +} \ No newline at end of file diff --git a/file-common/src/main/resources/rebel.xml b/file-common/src/main/resources/rebel.xml new file mode 100644 index 0000000..1184a4b --- /dev/null +++ b/file-common/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + file-common + + + + + + + diff --git a/file-web/pom.xml b/file-web/pom.xml index b64a300..6efc6d6 100644 --- a/file-web/pom.xml +++ b/file-web/pom.xml @@ -31,10 +31,6 @@ org.springframework.cloud spring-cloud-starter-openfeign - - - - org.springframework.boot diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java b/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java index 3a65d50..1e5dada 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java @@ -10,6 +10,9 @@ import java.util.List; public interface IUserService extends IService { + UserBean getUserBeanByToken(String token); + + /** * 用户注册 * diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java b/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java index 59fc73d..b231d57 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -11,6 +11,7 @@ import com.qiwenshare.common.util.PathUtil; import com.qiwenshare.file.api.IFileService; import com.qiwenshare.file.api.IFiletransferService; import com.qiwenshare.file.api.IRemoteUserService; +import com.qiwenshare.file.api.IUserService; import com.qiwenshare.file.config.QiwenFileConfig; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.TreeNode; @@ -33,6 +34,8 @@ public class FileController { @Resource IFileService fileService; + @Resource + IUserService userService; @Autowired IRemoteUserService remoteUserService; @Resource @@ -58,15 +61,7 @@ public class FileController { restResult.setSuccess(false); return restResult; } - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); fileBean.setUserId(sessionUserBean.getUserId()); @@ -89,15 +84,7 @@ public class FileController { if (!operationCheck(token).isSuccess()){ return operationCheck(token); } - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); fileBean.setUserId(sessionUserBean.getUserId()); fileBean.setUploadTime(DateUtil.getCurrentTime()); @@ -132,16 +119,7 @@ public class FileController { if(qiwenFileConfig.isShareMode()){ fileBean.setUserId(2L); }else { - //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); if (fileBean == null) { restResult.setSuccess(false); return restResult; @@ -169,15 +147,7 @@ public class FileController { if (!operationCheck(token).isSuccess()) { return operationCheck(token); } - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); List fileList = JSON.parseArray(fileBean.getFiles(), FileBean.class); for (FileBean file : fileList) { @@ -201,15 +171,7 @@ public class FileController { if (!operationCheck(token).isSuccess()){ return JSON.toJSONString(operationCheck(token)); } - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); fileService.deleteFile(fileBean, sessionUserBean); result.setSuccess(true); @@ -258,16 +220,7 @@ public class FileController { } List fileBeanList = new ArrayList<>(); - //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); for (int i = 0; i < fileEntryNameList.size(); i++){ String entryName = fileEntryNameList.get(i); String totalFileUrl = unzipUrl + entryName; @@ -356,16 +309,7 @@ public class FileController { public RestResult operationCheck(String token){ RestResult result = new RestResult(); - //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); if (sessionUserBean == null){ result.setSuccess(false); result.setErrorMessage("未登录"); @@ -391,16 +335,7 @@ public class FileController { @ResponseBody public RestResult> selectFileByFileType(FileBean fileBean, @RequestHeader("token") String token) { RestResult> result = new RestResult>(); - //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); long userId = sessionUserBean.getUserId(); if (qiwenFileConfig.isShareMode()){ userId = 2; @@ -420,16 +355,7 @@ public class FileController { public RestResult getFileTree(@RequestHeader("token") String token){ RestResult result = new RestResult(); FileBean fileBean = new FileBean(); - //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); if (qiwenFileConfig.isShareMode()){ fileBean.setUserId(2L); }else{ diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index e4643a4..bfec115 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -11,6 +11,7 @@ import com.qiwenshare.common.operation.ImageOperation; import com.qiwenshare.file.api.IFileService; import com.qiwenshare.file.api.IFiletransferService; import com.qiwenshare.file.api.IRemoteUserService; +import com.qiwenshare.file.api.IUserService; import com.qiwenshare.file.config.QiwenFileConfig; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.StorageBean; @@ -42,6 +43,8 @@ public class FiletransferController { QiwenFileConfig qiwenFileConfig; @Resource IFileService fileService; + @Resource + IUserService userService; /** * 上传文件 @@ -53,16 +56,7 @@ public class FiletransferController { @ResponseBody public String uploadFile(HttpServletRequest request, FileBean fileBean, @RequestHeader("token") String token) { RestResult restResult = new RestResult(); - //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); if (sessionUserBean == null){ restResult.setSuccess(false); restResult.setErrorMessage("未登录"); @@ -175,15 +169,7 @@ public class FiletransferController { public RestResult getStorage(@RequestHeader("token") String token) { RestResult restResult = new RestResult(); //UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - UserBean sessionUserBean = new UserBean(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - - RestResult restUserBean = remoteUserService.checkUserLoginInfo(token); - sessionUserBean = restUserBean.getData(); - } else { - sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - } + UserBean sessionUserBean = userService.getUserBeanByToken(token); StorageBean storageBean = new StorageBean(); if (qiwenFileConfig.isShareMode()){ storageBean.setUserId(2L); diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java b/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java index 4f12118..b144277 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java @@ -1,14 +1,21 @@ package com.qiwenshare.file.controller; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; +import com.qiwenshare.common.cbb.DateUtil; import com.qiwenshare.common.cbb.RestResult; import com.qiwenshare.common.domain.AliyunOSS; +import com.qiwenshare.common.util.JjwtUtil; import com.qiwenshare.file.api.IRemoteUserService; import com.qiwenshare.file.api.IUserService; import com.qiwenshare.file.config.QiwenFileConfig; import com.qiwenshare.file.domain.UserBean; +import com.qiwenshare.file.vo.user.UserLoginVo; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.crypto.hash.SimpleHash; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +31,7 @@ import java.util.Map; @RestController @RequestMapping("/user") public class UserController { + private static final Logger logger = LoggerFactory.getLogger(UserController.class); @Resource IUserService userService; @@ -47,12 +55,9 @@ public class UserController { @ResponseBody public RestResult addUser(@RequestBody UserBean userBean) { RestResult restResult = null; - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - restResult = remoteUserService.addUser(userBean); - } else { - restResult = userService.registerUser(userBean); - } + + restResult = userService.registerUser(userBean); + return restResult; } @@ -64,27 +69,31 @@ public class UserController { */ @RequestMapping("/userlogin") @ResponseBody - public RestResult userLogin(@RequestBody UserBean userBean) { - RestResult restResult = new RestResult(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - restResult = remoteUserService.userLogin(userBean); - } else { + public RestResult userLogin(@RequestBody UserBean userBean) { + RestResult restResult = new RestResult(); + UserBean saveUserBean = userService.findUserInfoByTelephone(userBean.getUsername()); + + String jwt = ""; + try { + jwt = JjwtUtil.createJWT("qiwenshare", "qiwen", JSON.toJSONString(saveUserBean)); + } catch (Exception e) { + logger.info("登录失败:{}", e); + restResult.setSuccess(false); + restResult.setErrorMessage("登录失败!"); + return restResult; + } + + String password = new SimpleHash("MD5", userBean.getPassword(), saveUserBean.getSalt(), 1024).toHex(); + if (password.equals(saveUserBean.getPassword())) { + + UserLoginVo userLoginVo = new UserLoginVo(); + BeanUtil.copyProperties(userBean, userLoginVo); + userLoginVo.setToken(jwt); + restResult.setData(userLoginVo); restResult.setSuccess(true); - try { - SecurityUtils.getSubject().login(new UsernamePasswordToken(userBean.getUsername(), userBean.getPassword())); - }catch (Exception e){ - restResult.setSuccess(false); - restResult.setErrorMessage("手机号或密码错误!"); - } - UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - if (sessionUserBean != null) { - restResult.setData(sessionUserBean); - restResult.setSuccess(true); - } else { - restResult.setSuccess(false); - restResult.setErrorMessage("手机号或密码错误!"); - } + } else { + restResult.setSuccess(false); + restResult.setErrorMessage("手机号或密码错误!"); } return restResult; @@ -119,29 +128,26 @@ public class UserController { @ResponseBody public RestResult checkUserLoginInfo(@RequestHeader("token") String token) { RestResult restResult = new RestResult(); - boolean isRemoteLogin = qiwenFileConfig.isRemoteLogin(); - if (isRemoteLogin) { - restResult = remoteUserService.checkUserLoginInfo(token); + UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean != null) { + + + restResult.setData(sessionUserBean); + restResult.setSuccess(true); + AliyunOSS oss = qiwenFileConfig.getAliyun().getOss(); + String domain = oss.getDomain(); + restResult.getData().setViewDomain(domain); + String bucketName = oss.getBucketName(); + String endPoint = oss.getEndpoint(); + restResult.getData().setDownloadDomain(bucketName + "." + endPoint); } else { - UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); - if (sessionUserBean != null) { - UserBean userInfo = userService.getUserInfoById(sessionUserBean.getUserId()); - - restResult.setData(userInfo); - restResult.setSuccess(true); - } else { - restResult.setSuccess(false); - restResult.setErrorMessage("用户暂未登录"); - } + restResult.setSuccess(false); + restResult.setErrorMessage("用户暂未登录"); } - AliyunOSS oss = qiwenFileConfig.getAliyun().getOss(); - String domain = oss.getDomain(); - restResult.getData().setViewDomain(domain); - String bucketName = oss.getBucketName(); - String endPoint = oss.getEndpoint(); - restResult.getData().setDownloadDomain(bucketName + "." + endPoint); + + return restResult; } diff --git a/file-web/src/main/java/com/qiwenshare/file/service/UserService.java b/file-web/src/main/java/com/qiwenshare/file/service/UserService.java index 3001e5a..3b21624 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/UserService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/UserService.java @@ -1,15 +1,20 @@ package com.qiwenshare.file.service; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qiwenshare.common.cbb.DateUtil; import com.qiwenshare.common.cbb.RestResult; import com.qiwenshare.common.domain.TableQueryBean; +import com.qiwenshare.common.util.JjwtUtil; import com.qiwenshare.common.util.PasswordUtil; import com.qiwenshare.file.api.IUserService; import com.qiwenshare.file.controller.UserController; import com.qiwenshare.file.domain.UserBean; import com.qiwenshare.file.mapper.UserMapper; +import io.jsonwebtoken.Claims; import org.apache.shiro.crypto.hash.SimpleHash; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -18,10 +23,39 @@ import java.util.regex.Pattern; @Service public class UserService extends ServiceImpl implements IUserService { - //private static final Logger log= Logger.getLogger(EssayService.class); + private static final Logger logger = LoggerFactory.getLogger(UserService.class); @Resource UserMapper userMapper; + @Override + public UserBean getUserBeanByToken(String token){ + Claims c = null; + try { + logger.info("token:" + token); + c = JjwtUtil.parseJWT(token); + } catch (Exception e) { + logger.error("解码异常"); + e.printStackTrace(); + return null; + } + if (c == null) { + logger.info("解码为空"); + + return null; + } + String subject = c.getSubject(); + logger.info("解析结果:" + subject); + UserBean tokenUserBean = JSON.parseObject(subject, UserBean.class); + + UserBean saveUserBean = findUserInfoByTelephone(tokenUserBean.getTelephone()); + if (tokenUserBean.getPassword().equals(saveUserBean.getPassword())) { + + return saveUserBean; + } else { + return null; + } + } + /** * 用户注册 */ diff --git a/file-web/src/main/java/com/qiwenshare/file/vo/user/UserLoginVo.java b/file-web/src/main/java/com/qiwenshare/file/vo/user/UserLoginVo.java new file mode 100644 index 0000000..31f7722 --- /dev/null +++ b/file-web/src/main/java/com/qiwenshare/file/vo/user/UserLoginVo.java @@ -0,0 +1,51 @@ +package com.qiwenshare.file.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + + +@Data +@Schema(name = "用户登录Vo",required = true) +public class UserLoginVo { + @Schema(description = "用户id", example = "1") + private long userId; + // @Schema(description = "openId", example = "") +// private String openId; + @Schema(description = "用户名", example = "奇文网盘") + private String username; + @Schema(description = "真实名", example = "张三") + private String realname; + @Schema(description = "qq用户名", example = "水晶之恋") + private String qqUsername; + @Schema(description = "qq用户头像", example = "https://thirdqq.qlogo.cn/g?b=oidb&k=qxLE4dibR9sic8kS7mHLxlLw&s=100&t=1557468980") + private String qqImageUrl; + @Schema(description = "手机号", example = "187****1817") + private String telephone; + @Schema(description = "邮箱", example = "116****483@qq.com") + private String email; + @Schema(description = "性别", example = "男") + private String sex; + @Schema(description = "生日", example = "1994-05-06") + private String birthday; + @Schema(description = "省", example = "陕西省") + private String addrProvince; + @Schema(description = "市", example = "西安市") + private String addrCity; + @Schema(description = "区", example = "雁塔区") + private String addrArea; + @Schema(description = "行业", example = "计算机行业") + private String industry; + @Schema(description = "职位", example = "java开发") + private String position; + @Schema(description = "个人介绍", example = "错把陈醋当成墨,写尽半生都是酸") + private String intro; + @Schema(description = "用户头像地址", example = "\\upload\\20200405\\93811586079860974.png") + private String imageUrl; + @Schema(description = "注册时间", example = "2019-12-23 14:21:52") + private String registerTime; + @Schema(description = "最后登录时间", example = "2019-12-23 14:21:52") + private String lastLoginTime; + @Schema(description = "Token 接口访问凭证") + private String token; + +} diff --git a/pom.xml b/pom.xml index d1ec6d0..55f938d 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,11 @@ mysql-connector-java runtime + + cn.hutool + hutool-all + 5.3.4 +