package com.huaheng.pc.system.user.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.huaheng.common.utils.Wrappers; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.poi.ExcelUtil; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.pc.config.company.domain.Company; import com.huaheng.pc.config.company.service.CompanyService; import com.huaheng.pc.config.warehouse.domain.Warehouse; import com.huaheng.pc.config.warehouse.mapper.WarehouseMapper; import com.huaheng.pc.config.warehouse.service.WarehouseService; import com.huaheng.pc.system.role.service.IRoleService; import com.huaheng.pc.system.user.domain.User; import com.huaheng.pc.system.user.service.IUserService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * 用户信息 * * @author huaheng */ @Controller @RequestMapping("/system/user") public class UserController extends BaseController { private String prefix = "system/user"; @Autowired private IUserService userService; @Autowired private IRoleService roleService; @Autowired private CompanyService companyService; @Autowired private WarehouseService warehouseService; @Resource private WarehouseMapper warehouseMapper; @RequiresPermissions("system:user:view") @GetMapping() public String user() { return prefix + "/user"; } @RequiresPermissions("system:user:list") @Log(title = "系统管理-用户管理", operating = "查看用户列表", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(User user) { startPage(); List<User> list = userService.selectUserList(user); return getDataTable(list); } @Log(title = "系统管理-用户管理", operating = "导出用户", action = BusinessType.EXPORT) @RequiresPermissions("system:user:export") @PostMapping("/export") @ResponseBody public AjaxResult export(User user) { try { List<User> list = userService.selectUserList(user); ExcelUtil<User> util = new ExcelUtil<User>(User.class); return util.exportExcel(list, "user"); } catch (Exception e) { return error("导出Excel失败,请联系网站管理员!"); } } /** * 新增用户 */ @GetMapping("/add") public String add(ModelMap mmap) { mmap.put("roles", roleService.selectRoleAll()); //只能看到当前仓库的货主 LambdaQueryWrapper<Company> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(Company::getWarehouseCode,ShiroUtils.getWarehouseCode()); List<Company> companys = companyService.list(lambdaQueryWrapper); mmap.put("companys", companys); mmap.put("warehouseList",warehouseService.getWarehouseMap()); return prefix + "/add"; } /** * 新增保存用户 */ @RequiresPermissions("system:user:add") @Log(title = "系统管理-用户管理", operating = "新增用户", action = BusinessType.INSERT) @PostMapping("/add") @Transactional(rollbackFor = Exception.class) @ResponseBody public AjaxResult addSave(User user) { if (StringUtils.isNotNull(user.getId()) && User.unAdmin(user.getId())) { return error("不允许修改超级管理员用户"); } List<Integer> roleList = user.getRoleIds(); if(roleList != null && roleList.size() > 1) { return error("一个用户不允许有多个角色"); } AjaxResult ajaxResult = toAjax(userService.insertUser(user)); return ajaxResult; } /** * 修改用户 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { mmap.put("user", userService.selectUserById(id)); mmap.put("roles", roleService.selectRolesByUserId(id)); mmap.put("companyList", companyService.selectCompanyByUserId(id)); mmap.put("warehouseList", warehouseService.selectWarehouseByUserId(id)); return prefix + "/edit"; } /** * 修改保存用户 */ @RequiresPermissions("system:user:edit") @Log(title = "系统管理-用户管理", operating = "修改用户", action = BusinessType.UPDATE) @PostMapping("/edit") @Transactional(rollbackFor = Exception.class) @ResponseBody public AjaxResult editSave(User user) { if (StringUtils.isNotNull(user.getId()) && User.unAdmin(user.getId())) { return error("不允许修改超级管理员用户"); } List<Integer> roleList = user.getRoleIds(); if(roleList != null && roleList.size() > 1) { return error("一个用户不允许有多个角色"); } AjaxResult ajaxResult = toAjax(userService.updateUser(user)); if (ShiroUtils.getLoginName().equals(user.getUserName())) { ShiroUtils.logout(); } return ajaxResult; } @RequiresPermissions("system:user:resetPwd") @Log(title = "系统管理-用户管理", operating = "重置密码", action = BusinessType.UPDATE) @GetMapping("/resetPwd/{id}") public String resetPwd(@PathVariable("id") Integer userId, ModelMap mmap) { mmap.put("user", userService.selectUserById(userId)); return prefix + "/resetPwd"; } @RequiresPermissions("system:user:resetPwd") @Log(title = "系统管理-用户管理", operating = "重置密码", action = BusinessType.UPDATE) @PostMapping("/resetPwd") @ResponseBody public AjaxResult resetPwd(User user) { return toAjax(userService.resetUserPwd(user)); } @RequiresPermissions("system:user:remove") @Log(title = "系统管理-用户管理", operating = "删除用户", action = BusinessType.DELETE) @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { try { return toAjax(userService.deleteUserByIds(ids)); } catch (Exception e) { return error(e.getMessage()); } } /** * 校验用户名 */ @PostMapping("/checkLoginNameUnique") @ResponseBody public String checkLoginNameUnique(User user) { String uniqueFlag = "0"; if (StringUtils.isNotNull(user)) { uniqueFlag = userService.checkLoginNameUnique(user.getLoginName()); } return uniqueFlag; } /** * 校验手机号码 */ @PostMapping("/checkPhoneUnique") @ResponseBody public String checkPhoneUnique(User user) { String uniqueFlag = "0"; if (StringUtils.isNotNull(user)) { uniqueFlag = userService.checkPhoneUnique(user); } return uniqueFlag; } /** * 校验email邮箱 */ @PostMapping("/checkEmailUnique") @ResponseBody public String checkEmailUnique(User user) { String uniqueFlag = "0"; if (StringUtils.isNotNull(user)) { uniqueFlag = userService.checkEmailUnique(user); } return uniqueFlag; } }