package com.huaxu.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huaxu.common.FileUploadUtil; import com.huaxu.dto.UserListDto; import com.huaxu.entity.App; import com.huaxu.entity.MenuEntity; import com.huaxu.entity.UserTagEntity; import com.huaxu.logAdvice.LogAnnotation; import com.huaxu.model.AjaxMessage; import com.huaxu.model.LoginUser; import com.huaxu.model.Pagination; import com.huaxu.model.ResultStatus; import com.huaxu.service.MenuService; import com.huaxu.service.UserTagService; import com.huaxu.util.UserUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; import org.springframework.ui.ModelMap; import java.util.*; import java.io.IOException; import org.springframework.web.bind.annotation.*; import com.huaxu.entity.UserEntity; import com.huaxu.service.UserService; import org.springframework.web.multipart.MultipartFile; /** * 用户页面控制器 * @author WYY * @date 2020-10-22 17:35 */ @RestController @RequestMapping("/user") @Api(tags = "用户管理") public class UserController { @Autowired private UserService userService; @Autowired private MenuService menuService; @Value("${UMIS.sys_config_path}") private String baseDir; @ApiOperation(value = "分页查询用户信息(按参数)") @RequestMapping(value = "/selectPageByParm", method = RequestMethod.POST) public AjaxMessage> list(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam(value = "contion", required = false) String contion, @RequestParam(value = "deptId", required = false) Long deptId) { IPage iPage = new Page<>(pageNum, pageSize); UserEntity userEntity = new UserEntity(); if (contion != null && contion != "") { userEntity.setUsername(contion.trim()); userEntity.setPhone(contion.trim()); } userEntity.setCompanyOrgId(deptId); userEntity.setDeptOrgId(deptId); iPage = userService.findPage(iPage, userEntity); Pagination pages = new Pagination<>(iPage); return new AjaxMessage<>(ResultStatus.OK, pages); } @ApiOperation(value = "分页查询用户信息") @RequestMapping(value = "/selectPage", method = RequestMethod.POST) public AjaxMessage> selectPageByParm(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @ApiParam(value = "", required = false) @RequestBody UserEntity userEntity) { IPage iPage = new Page<>(pageNum, pageSize); iPage = userService.findPage(iPage, userEntity); Pagination pages = new Pagination<>(iPage); return new AjaxMessage<>(ResultStatus.OK, pages); } /** * 查询 */ @ApiOperation(value = "获取当前登录用户信息") @RequestMapping(value = "/findLoginUserById", method = RequestMethod.POST) public AjaxMessage findLoginUserById() { LoginUser currentUser = UserUtil.getCurrentUser(); UserEntity userEntity = userService.findUserById(Long.valueOf(currentUser.getId())); return new AjaxMessage<>(ResultStatus.OK, userEntity); } /** * 查询 */ @ApiOperation(value = "按ID查询用户信息") @RequestMapping(value = "/findUserById", method = RequestMethod.POST) public AjaxMessage findUserById(@ApiParam(value = "用户ID", required = true) @RequestParam Long id) { UserEntity userEntity = userService.findUserById(id); return new AjaxMessage<>(ResultStatus.OK, userEntity); } /** * 按用户查询一级菜单信息(入口菜单) */ @ApiOperation(value = "查询用户一级菜单信息(入口菜单-用户)") @RequestMapping(value = "/findUserFirstMenu", method = RequestMethod.GET) public AjaxMessage> findUserFirstMenu() { List menuEntityList = menuService.findUserFirstMenu(); return new AjaxMessage<>(ResultStatus.OK, menuEntityList); } /** * 按应用查询菜单信息(系统菜单-用户) */ @ApiOperation(value = "查询应用菜单信息") @RequestMapping(value = "/findUserMenu", method = RequestMethod.GET) public AjaxMessage> findUserMenu(@ApiParam(value = "应用ID", required = true) @RequestParam String appId) { List menuEntityList = menuService.findUserMenu(appId); return new AjaxMessage<>(ResultStatus.OK, menuEntityList); } /** * 按应用查询菜单信息(所有租户菜单:isTenant=1) */ @ApiOperation(value = "查询所有菜单信息") @RequestMapping(value = "/findTenantMenu", method = RequestMethod.GET) public AjaxMessage> findTenantMenu() { List menuEntityList = menuService.findTenantMenu(); return new AjaxMessage<>(ResultStatus.OK, menuEntityList); } /** * 新增 */ @ApiOperation(value = "用户头像") @RequestMapping(value = "addUserPhoto", method = RequestMethod.POST) public AjaxMessage addUserPhoto(@ApiParam(value = "用户头像", required = true) @RequestParam("avatarfile") MultipartFile file) { String avatar = ""; if (!file.isEmpty()) { try { avatar = FileUploadUtil.uploadWeb(baseDir, file); } catch (IOException e) { return new AjaxMessage<>(ResultStatus.ERROR, e.getMessage()); } } return new AjaxMessage<>(ResultStatus.OK, avatar); } /** * 新增 */ @LogAnnotation(module = "【用户管理】新增") @ApiOperation(value = "新增用户信息") @RequestMapping(value = "addUser", method = RequestMethod.POST) public AjaxMessage addUser(@ApiParam(value = "用户信息", required = true) @RequestBody UserEntity user) { if (user.getPhone() != null) { boolean isExsit = userService.checkMobileUnique(user.getPhone()); if (isExsit) { return new AjaxMessage<>(ResultStatus.MEMBER_TELPHONE_ALREADY_EXISTS, 0); } } LoginUser currentUser = UserUtil.getCurrentUser(); if (currentUser != null) { user.setUpdateBy(currentUser.getUsername()); user.setCreateBy(currentUser.getUsername()); user.setDateCreate(new Date()); user.setDateUpdate(new Date()); user.setTenantId(currentUser.getTenantId()); } user.setStatus(1); if (user.getDeptOrgId() != null && user.getDeptOrgId() == 0) { user.setDeptOrgId(null); } int result = userService.addUser(user) ? 1 : 0; return new AjaxMessage<>(ResultStatus.OK, result); } /** * 修改保存用户 */ @LogAnnotation(module = "【用户管理】修改") @ApiOperation(value = "更新用户信息") @RequestMapping(value = "/updateUserById", method = RequestMethod.POST) public AjaxMessage editUser(@ApiParam(value = "用户信息", required = true) @RequestBody UserEntity user) { if (user.getPhone() != null) { boolean isExsit = userService.checkMobileUnique(user); if (isExsit) { return new AjaxMessage<>(ResultStatus.MEMBER_TELPHONE_ALREADY_EXISTS, 0); } } LoginUser currentUser = UserUtil.getCurrentUser(); if (currentUser != null) { user.setUpdateBy(currentUser.getUsername()); user.setDateUpdate(new Date()); user.setTenantId(currentUser.getTenantId()); } int result = userService.updateUserById(user) ? 1 : 0; return new AjaxMessage<>(ResultStatus.OK, result); } /** * 删除 */ @LogAnnotation(module = "【用户管理】批量删除") @ApiOperation(value = "按ID进行批量删除") @RequestMapping(value = "/deleteUserByIds", method = RequestMethod.POST) public AjaxMessage deleteUserByIds(@ApiParam(value = "用户ID", required = true) @RequestBody Long[] ids) { LoginUser currentUser = UserUtil.getCurrentUser(); Integer userId = currentUser.getId(); boolean isOk = true; for (Long id : ids) { if (userId.toString().equals(id.toString())) { isOk = false; } } //租户管理员不能删除限制 // boolean isDelete = true; // for (Long id : ids) { // UserEntity userEntity = userService.findUserById(id); // if (userEntity.getUserType().equals("-999")) { // isDelete = false; // } // } if (!isOk) { return new AjaxMessage<>(ResultStatus.EXSIT_IS_ACCOUNT_ERROR, 0); } // if (!isDelete) { // return new AjaxMessage<>(ResultStatus.DELETE_IS_ACCOUNT_ERROR, 0); // } int result = userService.delUserByIds(ids) ? 1 : 0; return new AjaxMessage<>(ResultStatus.OK, result); } /** * 删除 */ @LogAnnotation(module = "【用户管理】单条删除") @ApiOperation(value = "按ID进行单个删除") @RequestMapping(value = "/deleteUserById", method = RequestMethod.POST) public AjaxMessage deleteUserById(@ApiParam(value = "用户ID", required = true) @RequestParam Long id) { LoginUser currentUser = UserUtil.getCurrentUser(); Integer userId = currentUser.getId(); System.out.println("userId" + userId); if (userId.toString().equals(id.toString())) { return new AjaxMessage<>(ResultStatus.EXSIT_IS_ACCOUNT_ERROR, 0); } //租户管理员不能删除限制 // UserEntity userEntity = userService.findUserById(id); // if (userEntity.getUserType().equals("-999")) { // return new AjaxMessage<>(ResultStatus.DELETE_IS_ACCOUNT_ERROR, 0); // } int result = userService.delUserById(id) ? 1 : 0; return new AjaxMessage<>(ResultStatus.OK, result); } @RequestMapping(value = "/getUserIdsByOrgId", method = RequestMethod.POST) public ListgetUserIdsByOrgId(String ids) { List list = JSONObject.parseObject(ids, List.class); List result = userService.getUserIdsByOrgId(list); return result; } @RequestMapping(value = "/findUserIdsByOrgId", method = RequestMethod.GET) public AjaxMessage> findUserIdsByOrgId(String ids) { List list = JSONObject.parseObject(ids, List.class); List result = userService.findUserIdsByOrgId(list); return new AjaxMessage<>(ResultStatus.OK,result); } @RequestMapping(value = "/findUserList", method = RequestMethod.GET) public AjaxMessage> findUserList(Integer type) { List userList = userService.findUserList(type); return new AjaxMessage<>(ResultStatus.OK,userList); } /** * 查询运维人员信息 * @return */ @RequestMapping(value = "/findUserListByType", method = RequestMethod.GET) public AjaxMessage> findUserListByType() { List userList = userService.findUserListBytype(3); return new AjaxMessage<>(ResultStatus.OK, userList); } @RequestMapping(value = "/findUserIdsByUserIds", method = RequestMethod.POST) public List findUserIdsByUserIds(Long[] ids) { List list = Arrays.asList(ids.clone()); List result = userService.findUserIdsByUserIds(list); return result; } @ApiOperation(value = "获取登录用户所属机构及其上级机构用户信息") @RequestMapping(value = "/findUserIdsForOrg", method = RequestMethod.GET) public List findUserIdsForOrg() { List ids = new ArrayList<>(); List result = userService.findUserIdsForOrg(); for (UserEntity item : result) { ids.add(item.getId()); } return ids; } @ApiOperation(value = "查询拥有此机构权限的用户") @RequestMapping(value = "/findUserIdsByPermissonOrg", method = RequestMethod.POST) public List findUserIdsByPermissonOrg( @RequestParam(value = "tenantId", required = false) String tenantId, @RequestParam(value = "companyOrgId", required = false)Integer companyOrgId, @RequestParam(value = "deptOrgId", required = false)Integer deptOrgId){ return userService.findUserIdsByPermissonOrg(tenantId,companyOrgId,deptOrgId); } }