用户的功能迁移

This commit is contained in:
YunaiV
2020-07-22 20:15:44 +08:00
parent 8edc49f4e7
commit ef1354478e
97 changed files with 859 additions and 1483 deletions

View File

@@ -46,12 +46,14 @@ public class PassportController {
return success(passportManager.getAdmin(AdminSecurityContextHolder.getAdminId()));
}
// TODO 优化点:迁移到 PermissionController
@GetMapping("/tree-admin-menu")
@ApiOperation("获得当前管理员的菜单树")
public CommonResult<List<PassportAdminMenuTreeNodeVO>> treeAdminMenu() {
return success(passportManager.treeAdminMenu(AdminSecurityContextHolder.getAdminId()));
}
// TODO 优化点:迁移到 PermissionController
@GetMapping("/list-admin-permission")
@ApiOperation("获得当前管理员的权限列表")
public CommonResult<Set<String>> listAdminPermission() {

View File

@@ -0,0 +1,68 @@
package cn.iocoder.mall.managementweb.controller.user;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.managementweb.controller.user.vo.UserPageReqVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserRespVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateInfoReqVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateStatusReqVO;
import cn.iocoder.mall.managementweb.manager.user.UserManager;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import static cn.iocoder.common.framework.vo.CommonResult.success;
/**
* 用户 Controller
*/
@RestController
@RequestMapping("/user")
@Api(tags = "用户")
@Validated
public class UserController {
@Autowired
private UserManager userManager;
@PostMapping("/update-info")
@ApiOperation("更新用户信息")
public CommonResult<Boolean> updateUserInfo(@Valid UserUpdateInfoReqVO updateInfoReqVO) {
userManager.updateUserInfo(updateInfoReqVO);
return success(true);
}
@PostMapping("/update-status")
@ApiOperation("更新用户信息")
public CommonResult<Boolean> updateUserStatus(@Valid UserUpdateStatusReqVO updateStatusReqVO) {
userManager.updateUserStatus(updateStatusReqVO);
return success(true);
}
@GetMapping("/get")
@ApiOperation("获得用户")
@ApiImplicitParam(name = "userId", value = "用户编号", required = true)
public CommonResult<UserRespVO> getUser(@RequestParam("userId") Integer userId) {
return success(userManager.getUser(userId));
}
@GetMapping("/list")
@ApiOperation("获得用户列表")
@ApiImplicitParam(name = "userIds", value = "用户编号列表", required = true)
public CommonResult<List<UserRespVO>> listUsers(@RequestParam("userIds") List<Integer> userIds) {
return success(userManager.listUsers(userIds));
}
@GetMapping("/page")
@ApiOperation("获得用户分页")
public CommonResult<PageResult<UserRespVO>> pageUser(UserPageReqVO pageVO) {
return success(userManager.pageUser(pageVO));
}
}

View File

@@ -1,29 +0,0 @@
package cn.iocoder.mall.managementweb.controller.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 管理员 - 用户信息 - 用户分页列表
*/
@ApiModel("用户分页列表Request")
@Data
@Accessors(chain = true)
public class AdminsUserPageRequest {
@ApiModelProperty(name = "nickname", value = "昵称,模糊匹配", example = "小王")
private String nickname;
@ApiModelProperty(name = "status", value = "状态。1 - 开启2 - 禁用", example = "0")
private Integer status;
@ApiModelProperty(name = "pageNo", value = "页码,从 1 开始", example = "1")
private Integer pageNo = 1;
@ApiModelProperty(name = "pageSize", value = "每页条数", required = true, example = "10")
private Integer pageSize = 10;
}

View File

@@ -1,28 +0,0 @@
package cn.iocoder.mall.managementweb.controller.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 管理员 - 用户信息 - 更新用户状态
*/
@ApiModel("更新用户状态Request")
@Data
@Accessors(chain = true)
public class AdminsUserUpdateStatusRequest {
@ApiModelProperty(name = "id", value = "用户编号", required = true, example = "1")
@NotNull(message = "用户编号不能为空")
private Integer id;
@ApiModelProperty(name = "status", value = "用户状态。1 - 开启2 - 禁用", required = true, example = "1")
@NotNull(message = "用户状态不能为空")
private Integer status;
}

View File

@@ -0,0 +1,19 @@
package cn.iocoder.mall.managementweb.controller.user.vo;
import cn.iocoder.common.framework.vo.PageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ApiModel("用户分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
public class UserPageReqVO extends PageParam {
@ApiModelProperty(value = "昵称", example = "丑艿艿", notes = "模糊匹配")
private String nickname;
@ApiModelProperty(value = "状态", example = "1", notes = "见 CommonStatusEnum 枚举")
private Integer status;
}

View File

@@ -0,0 +1,26 @@
package cn.iocoder.mall.managementweb.controller.user.vo;
import lombok.*;
import io.swagger.annotations.*;
import java.util.*;
@ApiModel("用户 Response VO")
@Data
public class UserRespVO {
@ApiModelProperty(value = "用户编号", required = true, example = "1")
private Integer id;
@ApiModelProperty(value = "昵称", example = "丑艿艿")
private String nickname;
@ApiModelProperty(value = "头像", example = "http://www.iocoder.cn/xxx.jpg")
private String avatar;
@ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 CommonStatusEnum 枚举")
private Integer status;
@ApiModelProperty(value = "手机号", required = true, example = "15601691399")
private String mobile;
@ApiModelProperty(value = "注册 IP", required = true, example = "127.0.0.1")
private String createIp;
@ApiModelProperty(value = "创建时间", required = true)
private Date createTime;
}

View File

@@ -0,0 +1,25 @@
package cn.iocoder.mall.managementweb.controller.user.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@ApiModel("用户更新信息 Request VO")
@Data
public class UserUpdateInfoReqVO {
@ApiModelProperty(value = "用户编号", required = true, example = "1")
@NotNull(message = "用户编号不能为空")
private Integer id;
@ApiModelProperty(value = "昵称", example = "臭艿艿")
private String nickname;
@ApiModelProperty(value = "头像", example = "http://www.iocoder.cn/nainainai.jpg")
private String avatar;
@ApiModelProperty(value = "手机号", example = "15601691300")
private String mobile;
@ApiModelProperty(value = "密码", example = "123456")
private String password;
}

View File

@@ -0,0 +1,23 @@
package cn.iocoder.mall.managementweb.controller.user.vo;
import cn.iocoder.common.framework.enums.CommonStatusEnum;
import cn.iocoder.common.framework.validator.InEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@ApiModel("用户更新状态 Request VO")
@Data
public class UserUpdateStatusReqVO {
@ApiModelProperty(value = "用户编号", required = true)
@NotNull(message = "用户编号不能为空")
private Integer id;
@ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 CommonStatusEnum 枚举")
@NotNull(message = "状态不能为空")
@InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
private Integer status;
}

View File

@@ -5,7 +5,7 @@ import cn.iocoder.mall.managementweb.controller.passport.vo.PassportAccessTokenV
import cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminVO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
import cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@@ -16,7 +16,7 @@ public interface AdminPassportConvert {
AdminVerifyPasswordDTO convert(PassportLoginDTO bean);
PassportAccessTokenVO convert(OAuth2AccessTokenVO bean);
PassportAccessTokenVO convert(OAuth2AccessTokenRespDTO bean);
PassportAdminVO convert(AdminVO bean);

View File

@@ -0,0 +1,33 @@
package cn.iocoder.mall.managementweb.convert.user;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.managementweb.controller.user.vo.UserPageReqVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserRespVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateInfoReqVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateStatusReqVO;
import cn.iocoder.mall.userservice.rpc.user.dto.UserPageReqDTO;
import cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO;
import cn.iocoder.mall.userservice.rpc.user.dto.UserUpdateReqDTO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface UserConvert {
UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);
UserUpdateReqDTO convert(UserUpdateInfoReqVO bean);
UserRespVO convert(UserRespDTO bean);
List<UserRespVO> convertList(List<UserRespDTO> list);
UserPageReqDTO convert(UserPageReqVO bean);
PageResult<UserRespVO> convertPage(PageResult<UserRespDTO> bean);
UserUpdateReqDTO convert(UserUpdateStatusReqVO bean);
}

View File

@@ -15,8 +15,8 @@ import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
import cn.iocoder.mall.systemservice.rpc.admin.AdminRpc;
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
import cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO;
import cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
import cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc;
import cn.iocoder.mall.systemservice.rpc.permission.RoleRpc;
import cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO;
@@ -45,8 +45,8 @@ public class PassportManager {
CommonResult<AdminVO> verifyPasswordResult = adminRpc.verifyPassword(AdminPassportConvert.INSTANCE.convert(loginDTO).setIp(ip));
verifyPasswordResult.checkError();
// 创建访问令牌
CommonResult<OAuth2AccessTokenVO> createAccessTokenResult = oauth2Rpc.createAccessToken(
new OAuth2CreateAccessTokenDTO().setUserId(verifyPasswordResult.getData().getId())
CommonResult<OAuth2AccessTokenRespDTO> createAccessTokenResult = oauth2Rpc.createAccessToken(
new OAuth2CreateAccessTokenReqDTO().setUserId(verifyPasswordResult.getData().getId())
.setUserType(UserTypeEnum.ADMIN.getValue()).setCreateIp(ip));
createAccessTokenResult.checkError();
// 返回

View File

@@ -0,0 +1,83 @@
package cn.iocoder.mall.managementweb.manager.user;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.managementweb.controller.user.vo.UserPageReqVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserRespVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateInfoReqVO;
import cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateStatusReqVO;
import cn.iocoder.mall.managementweb.convert.user.UserConvert;
import cn.iocoder.mall.userservice.rpc.user.UserRpc;
import cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 用户 Manager
*/
@Service
public class UserManager {
@Reference(version = "$ {dubbo.consumer.UserRpc.version}", validation = "false")
private UserRpc userRpc;
/**
* 更新用户信息
*
* @param updateInfoReqVO 更新用户信息 VO
*/
public void updateUserInfo(UserUpdateInfoReqVO updateInfoReqVO) {
CommonResult<Boolean> updateUserResult = userRpc.updateUser(UserConvert.INSTANCE.convert(updateInfoReqVO));
updateUserResult.checkError();
}
/**
* 更新用户状态
*
* @param updateStatusReqVO 更新用户状态 VO
*/
public void updateUserStatus(UserUpdateStatusReqVO updateStatusReqVO) {
CommonResult<Boolean> updateUserResult = userRpc.updateUser(UserConvert.INSTANCE.convert(updateStatusReqVO));
updateUserResult.checkError();
}
/**
* 获得用户
*
* @param userId 用户编号
* @return 用户
*/
public UserRespVO getUser(Integer userId) {
CommonResult<UserRespDTO> getUserResult = userRpc.getUser(userId);
getUserResult.checkError();
return UserConvert.INSTANCE.convert(getUserResult.getData());
}
/**
* 获得用户列表
*
* @param userIds 用户编号列表
* @return 用户列表
*/
public List<UserRespVO> listUsers(List<Integer> userIds) {
CommonResult<List<UserRespDTO>> listUserResult = userRpc.listUsers(userIds);
listUserResult.checkError();
return UserConvert.INSTANCE.convertList(listUserResult.getData());
}
/**
* 获得用户分页
*
* @param pageVO 用户分页查询
* @return 用户分页结果
*/
public PageResult<UserRespVO> pageUser(UserPageReqVO pageVO) {
CommonResult<PageResult<UserRespDTO>> pageUserResult = userRpc.pageUser(UserConvert.INSTANCE.convert(pageVO));
pageUserResult.checkError();
return UserConvert.INSTANCE.convertPage(pageUserResult.getData());
}
}