/**
* Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springblade.system.user.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.PreAuth;
import org.springblade.core.secure.utils.SecureUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.excel.UserExcel;
import org.springblade.system.user.excel.UserImportListener;
import org.springblade.system.user.service.IUserService;
import org.springblade.system.user.vo.UserVO;
import org.springblade.system.user.wrapper.UserWrapper;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 控制器
*
* @author Chill
*/
@RestController
@RequestMapping
@AllArgsConstructor
public class UserController {
private IUserService userService;
/**
* 查询单条
*/
@ApiOperationSupport(order = 1)
@ApiOperation(value = "查看详情", notes = "传入id")
@GetMapping("/detail")
public R<UserVO> detail(User user) {
User detail = userService.getOne(Condition.getQueryWrapper(user));
return R.data(UserWrapper.build().entityVO(detail));
}
/**
* 查询单条
*/
@ApiOperationSupport(order =2)
@ApiOperation(value = "查看详情", notes = "传入id")
@GetMapping("/info")
public R<UserVO> info(BladeUser user) {
User detail = userService.getById(user.getUserId());
return R.data(UserWrapper.build().entityVO(detail));
}
/**
* 用户列表
*/
@GetMapping("/list")
@ApiImplicitParams({
@ApiImplicitParam(name = "account", value = "账号名", paramType = "query", dataType = "string"),
@ApiImplicitParam(name = "realName", value = "姓名", paramType = "query", dataType = "string")
})
@ApiOperationSupport(order = 3)
@ApiOperation(value = "列表", notes = "传入account和realName")
public R<IPage<UserVO>> list(@ApiIgnore @RequestParam Map<String, Object> user, Query query, BladeUser bladeUser) {
QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
IPage<User> pages = userService.page(Condition.getPage(query), (!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()) : queryWrapper);
return R.data(UserWrapper.build().pageVO(pages));
}
/**
* 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "新增或修改", notes = "传入User")
public R submit(@Valid @RequestBody User user) {
return R.status(userService.submit(user));
}
/**
* 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@ApiOperation(value = "修改", notes = "传入User")
public R update(@Valid @RequestBody User user) {
return R.status(userService.updateById(user));
}
/**
* 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 6)
@ApiOperation(value = "删除", notes = "传入地基和")
public R remove(@RequestParam String ids) {
return R.status(userService.deleteLogic(Func.toLongList(ids)));
}
/**
* 设置菜单权限
*
* @param userIds
* @param roleIds
* @return
*/
@PostMapping("/grant")
@ApiOperationSupport(order = 7)
@ApiOperation(value = "权限设置", notes = "传入roleId集合以及menuId集合")
public R grant(@ApiParam(value = "userId集合", required = true) @RequestParam String userIds,
@ApiParam(value = "roleId集合", required = true) @RequestParam String roleIds) {
boolean temp = userService.grant(userIds, roleIds);
return R.status(temp);
}
@PostMapping("/reset-password")
@ApiOperationSupport(order = 8)
@ApiOperation(value = "初始化密码", notes = "传入userId集合")
public R resetPassword(@ApiParam(value = "userId集合", required = true) @RequestParam String userIds) {
boolean temp = userService.resetPassword(userIds);
return R.status(temp);
}
/**
* 修改密码
*
* @param oldPassword
* @param newPassword
* @param newPassword1
* @return
*/
@PostMapping("/update-password")
@ApiOperationSupport(order = 9)
@ApiOperation(value = "修改密码", notes = "传入密码")
public R updatePassword(BladeUser user, @ApiParam(value = "旧密码", required = true) @RequestParam String oldPassword,
@ApiParam(value = "新密码", required = true) @RequestParam String newPassword,
@ApiParam(value = "新密码", required = true) @RequestParam String newPassword1) {
boolean temp = userService.updatePassword(user.getUserId(), oldPassword, newPassword, newPassword1);
return R.status(temp);
}
/**
* 用户列表
*
* @param user
* @return
*/
@GetMapping("/user-list")
@ApiOperationSupport(order = 10)
@ApiOperation(value = "用户列表", notes = "传入user")
public R<List<User>> userList(User user) {
List<User> list = userService.list(Condition.getQueryWrapper(user));
return R.data(list);
}
/**
* 导入用户
*/
@PostMapping("import-user")
@ApiOperationSupport(order = 12)
@ApiOperation(value = "导入用户", notes = "传入excel")
public R importUser(MultipartFile file, Integer isCovered) {
String filename = file.getOriginalFilename();
if (StringUtils.isEmpty(filename)) {
throw new RuntimeException("请上传文件!");
}
if ((!StringUtils.endsWithIgnoreCase(filename, ".xls") && !StringUtils.endsWithIgnoreCase(filename, ".xlsx"))) {
throw new RuntimeException("请上传正确的excel文件!");
}
InputStream inputStream;
try {
UserImportListener importListener = new UserImportListener(userService);
inputStream = new BufferedInputStream(file.getInputStream());
ExcelReaderBuilder builder = EasyExcel.read(inputStream, UserExcel.class, importListener);
builder.doReadAll();
} catch (IOException e) {
e.printStackTrace();
}
return R.success("操作成功");
}
/**
* 导出用户
*/
@SneakyThrows
@GetMapping("export-user")
@ApiOperationSupport(order = 13)
@ApiOperation(value = "导出用户", notes = "传入user")
@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
public void exportUser(@ApiIgnore @RequestParam Map<String, Object> user, BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<User> queryWrapper = Conditi
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本设计源码提供了一个基于Spring Boot和Spring Cloud的微服务架构。项目包含399个文件,主要使用Java、Shell和HTML编程语言。文件类型包括223个Java源代码文件、48个XML配置文件、36个YAML配置文件、35个PNG图片文件、7个YAML文件、6个SQL文件、5个Markdown文档、5个TXT文档、4个VM文件和3个LauncherService文件。该架构是一个商业级项目升级优化而来,采用Spring Boot 2.7和Spring Cloud 2021等核心技术构建,完全遵循阿里巴巴编码规范。它提供基于React和Vue的两个前端框架,用于快速搭建企业级的SaaS多租户微服务平台。适合用于学习和实践Java、Shell和HTML技术,以及开发微服务相关的企业级应用。
资源推荐
资源详情
资源评论
收起资源包目录
基于Spring Boot和Spring Cloud的微服务架构设计源码 (395个子文件)
service.cmd 18B
my.cnf 193B
nginx.conf 2KB
nginx.conf 1KB
Dockerfile 415B
Dockerfile 312B
Dockerfile 310B
Dockerfile 309B
Dockerfile 307B
Dockerfile 306B
Dockerfile 306B
Dockerfile 303B
Dockerfile 300B
Dockerfile 300B
Dockerfile 300B
Dockerfile 297B
.editorconfig 364B
.env 39B
.gitignore 215B
index.html 183B
UserController.java 9KB
DashBoardController.java 8KB
UserServiceImpl.java 7KB
MenuController.java 7KB
JwtCrypto.java 5KB
CodeController.java 5KB
MenuServiceImpl.java 5KB
RegionController.java 5KB
RoleController.java 5KB
TenantController.java 5KB
TenantServiceImpl.java 5KB
OssEndpoint.java 4KB
PostController.java 4KB
RoleServiceImpl.java 4KB
AuthFilter.java 4KB
DatasourceController.java 4KB
DictController.java 4KB
AuthController.java 4KB
TokenUtil.java 4KB
ISysClient.java 4KB
DataScopeController.java 4KB
DeptController.java 4KB
NoticeController.java 4KB
AuthClientController.java 4KB
DataScopeClient.java 4KB
NoticeController.java 4KB
ErrorExceptionHandler.java 3KB
RegionServiceImpl.java 3KB
SocialTokenGranter.java 3KB
ParamController.java 3KB
SysClient.java 3KB
SocialController.java 3KB
DeptServiceImpl.java 3KB
RouterFunctionConfiguration.java 3KB
DataScopeCache.java 3KB
Menu.java 3KB
Region.java 3KB
LogErrorController.java 3KB
CaptchaTokenGranter.java 3KB
LogUsualController.java 3KB
DictServiceImpl.java 3KB
LogApiController.java 3KB
IUserService.java 3KB
MenuWrapper.java 3KB
Code.java 3KB
AuthClient.java 3KB
JwtUtil.java 3KB
DataScope.java 3KB
CodeGenerator.java 2KB
Dept.java 2KB
MenuMapper.java 2KB
IUserClient.java 2KB
Dict.java 2KB
PasswordTokenGranter.java 2KB
IMenuService.java 2KB
UserOauth.java 2KB
RegionVO.java 2KB
Role.java 2KB
Tenant.java 2KB
Datasource.java 2KB
MenuVO.java 2KB
LogClient.java 2KB
IDataScopeClient.java 2KB
User.java 2KB
UserExcel.java 2KB
DictWrapper.java 2KB
DeptWrapper.java 2KB
RefreshTokenGranter.java 2KB
Post.java 2KB
RoleWrapper.java 2KB
UserWrapper.java 2KB
PostServiceImpl.java 2KB
ISysClientFallback.java 2KB
LauncherConstant.java 2KB
TokenGranterBuilder.java 2KB
DynamicController.java 2KB
Param.java 2KB
UserClient.java 2KB
Notice.java 2KB
UserMapper.java 2KB
共 395 条
- 1
- 2
- 3
- 4
资源评论
沐知全栈开发
- 粉丝: 4743
- 资源: 3374
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功