package com.whyc.controller;
|
|
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.api.R;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.whyc.dto.Response;
|
import com.whyc.pojo.Dept;
|
import com.whyc.pojo.Job;
|
import com.whyc.pojo.User;
|
import com.whyc.service.DeptService;
|
import com.whyc.service.JobService;
|
import com.whyc.service.LoginService;
|
import com.whyc.service.UserService;
|
import com.whyc.util.UserExcelVerify;
|
import io.swagger.annotations.*;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.shiro.authz.annotation.Logical;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@RestController
|
@RequestMapping("user")
|
@Api(tags = "用户")
|
@Slf4j
|
public class UserController {
|
|
@Resource
|
private UserService userService;
|
|
@Resource
|
private DeptService deptService;
|
|
@Resource
|
private JobService jobService;
|
|
@Resource
|
private UserExcelVerify userExcelVerify;
|
|
@PostMapping
|
@ApiOperation(value = "添加用户")
|
//@RequiresPermissions(value = {"user:add","user:update"},logical = Logical.OR)
|
public Response add(@RequestBody User user){
|
return userService.add(user);
|
}
|
|
@GetMapping
|
@ApiOperation(value = "查询用户byId")
|
@RequiresPermissions(value = {"user:get"})
|
public Response getById(@RequestParam int id){
|
User user = userService.getById(id);
|
if (user==null){
|
return new Response().set(0,null,"此用户不存在");
|
}
|
return new Response().set(1,user);
|
}
|
|
@GetMapping("/all")
|
@ApiOperation(value = "查询所有用户")
|
//@RequiresPermissions(value = {"user:get"})
|
public List<User> getAll(){
|
return userService.getAll();
|
}
|
|
@GetMapping("/page")
|
@ApiOperation(value = "查询用户分页")
|
//@RequiresPermissions(value = {"user:get"})
|
public IPage<User> getPage(@RequestParam int pageNum,@RequestParam int pageSize){
|
Page<Object> page = new Page<>(pageNum, pageSize);
|
return userService.getAllWithPage(page);
|
}
|
@PostMapping("/search")
|
@ApiOperation(value = "查询用户分页-根据筛选条件")
|
//@RequiresPermissions(value = {"user:get"})
|
public Response<IPage<User>> getPageByCondition(@RequestParam int pageNum,@RequestParam int pageSize,@RequestBody User user){
|
return userService.getPageByCondition(pageNum,pageSize,user);
|
}
|
|
@PutMapping
|
@ApiOperation(value = "编辑用户")
|
//@RequiresPermissions(value = {"user:update"})
|
public Response update(@RequestBody User user){
|
return userService.update(user);
|
}
|
|
@PutMapping("freezeUser")
|
@ApiOperation(value = "启动/冻结用户")
|
//@RequiresPermissions(value = {"user:update"})
|
public Response updateUserFreeze(@RequestParam int id,@RequestParam int state){
|
return userService.updateUserFreeze(id,state);
|
}
|
|
@PutMapping("deleteUser")
|
@ApiOperation(value = "删除用户")
|
//@RequiresPermissions(value = {"user:delete"})
|
public Response delete(@RequestParam int id){
|
return userService.delete(id);
|
}
|
|
/**
|
* 验证是否已经在其他地方登录
|
*/
|
@GetMapping("loginCheck")
|
@ApiOperation(value = "单用户登录检测",notes = "登录后前端再调用,否则会报错;\n response:true表示已经在其他地方登录")
|
public boolean loginCheck(HttpServletRequest request){
|
return userService.loginCheck(request);
|
}
|
|
|
|
@GetMapping("/getDepts")
|
@ApiOperation(value = "获取部门")
|
public List<Dept> getDepts(){
|
return deptService.getAll();
|
}
|
@PostMapping("addDept")
|
@ApiOperation(value = "添加部门")
|
public Response addDept(@RequestBody Dept dept){
|
return deptService.add(dept);
|
}
|
|
@PutMapping("updateDept")
|
@ApiOperation(value = "编辑部门")
|
public Response update(@RequestBody Dept dept){
|
return deptService.update(dept);
|
}
|
|
@DeleteMapping("deleteDept")
|
@ApiOperation(value = "删除部门")
|
public Response deleteDept(@RequestParam int id){
|
return deptService.delete(id);
|
}
|
|
|
@GetMapping("/getJobs")
|
@ApiOperation(value = "获取职务")
|
public List<Job> getJobs(){
|
return jobService.getAll();
|
}
|
|
@PostMapping("addJob")
|
@ApiOperation(value = "添加职务")
|
public Response addJob(@RequestBody Job job){
|
return jobService.add(job);
|
}
|
@PutMapping("updateJob")
|
@ApiOperation(value = "编辑职务")
|
public Response update(@RequestBody Job job){
|
return jobService.update(job);
|
}
|
|
@DeleteMapping("deleteJob")
|
@ApiOperation(value = "删除职务")
|
public Response deleteJob(@RequestParam int id){
|
return jobService.delete(id);
|
}
|
|
|
@SuppressWarnings("AlibabaRemoveCommentedCode")
|
@PostMapping("/importUserExcel")
|
@ApiOperation(value = "导入用户数据")
|
public Response importExcel2(@RequestParam("file") MultipartFile file) {
|
Response response = new Response();
|
ImportParams importParams = new ImportParams();
|
// 数据处理
|
//设置标题第1行开始
|
importParams.setTitleRows(0);
|
//设置开始行从第2行开始
|
importParams.setHeadRows(1);
|
// 需要验证
|
importParams.setNeedVerify(true);
|
//设及一个自定义校验 (自定义校验名字不可重复) 使用注解注入
|
//UserExcelVerify userExcelVerify = new UserExcelVerify();
|
importParams.setVerifyHandler(userExcelVerify);
|
try {
|
ExcelImportResult<User> result = ExcelImportUtil.importExcelMore(file.getInputStream(), User.class,
|
importParams);
|
List<User> successList = result.getList();
|
//失败结果集
|
List<User> failList = result.getFailList();
|
/*failList.forEach(user -> {
|
System.out.println("验证失败的信息:"+user+userExcelVerify.verifyHandler(user).getMsg());
|
});
|
successList.forEach(x->{
|
System.out.println("通过验证的数据:"+x.toString());
|
});*/
|
String msg = "";
|
for (User entity : result.getFailList()) {
|
msg += "第" + entity.getRowNum() + "行的错误是:" + entity.getErrorMsg()+";\n";
|
//System.out.println(msg);
|
}
|
if (!successList.isEmpty()){
|
boolean success = userService.addBatch(successList);
|
if (success && failList.isEmpty()){
|
response.set(1,"成功导入"+successList.size()+"条数据;");
|
}
|
}else{
|
response.set(1,failList,"成功导入"+successList.size()+"条数据"+";导入失败"+failList.size()+"条数据;\n"+msg);
|
}
|
|
|
} catch (IOException e) {
|
e.printStackTrace();
|
response.setMsg(0,"导入失败");
|
} catch (Exception e) {
|
e.printStackTrace();
|
response.setMsg(0,"导入失败");
|
}
|
return response;
|
}
|
|
}
|