package com.nova.sankuai.controller.v1; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nova.sankuai.domain.dto.*; import com.nova.sankuai.domain.entity.SysUser; import com.nova.sankuai.domain.enums.UserTypeEnum; import com.nova.sankuai.domain.vo.WelcomePageHistory; import com.nova.sankuai.domain.vo.WelcomePageVo; import com.nova.sankuai.domain.vo.sysuser.AdminVo; import com.nova.sankuai.domain.vo.sysuser.MechanismConfigVo; import com.nova.sankuai.domain.vo.sysuser.MechanismVo; import com.nova.sankuai.domain.vo.sysuser.StaffVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.utils.*; import com.nova.sankuai.security.UserDetail; import com.nova.sankuai.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * @author weikangdi */ @Api(tags = "后台管理") @RestController @RequestMapping(value = "/api/v1/sysUser") @AllArgsConstructor public class SysUserController { private final ISysUserService sysUserService; private final ImageUtil imageUtil; @PostMapping(value = "/add") @ApiOperation(value = "新增机构用户") @PreAuthorize("hasAuthority('sysUser.add')") public ResultJson add(@RequestBody MechanismDto mechanismDto) { mechanismDto.setType(UserTypeEnum.USER.getCode()); SysUser sysUser = mechanismDto.parseUser(mechanismDto); sysUserService.add(sysUser); return ResultJson.success(); } @PutMapping(value = "/edit") @ApiOperation(value = "编辑机构") @PreAuthorize("hasAuthority('sysUser.edit')") public ResultJson edit(@RequestBody MechanismDto mechanismDto) { sysUserService.editMechanism(mechanismDto); return ResultJson.success(); } @GetMapping(value = "/invalidUser/{id}") @ApiOperation(value = "启用/禁用分配机构") @PreAuthorize("hasAuthority('sysUser.invalidUser')") public ResultJson invalidUser(@PathVariable("id") Long id, Integer status) { sysUserService.invalidUser(id, status); return ResultJson.success(); } @GetMapping(value = "/page") @ApiOperation(value = "分页查询机构") @PreAuthorize("hasAuthority('sysUser.page')") public ResultJson> page(SysUserPageDto sysUser, PageRequest pageRequest, @AuthenticationPrincipal UserDetail userDetail) { if (UserTypeEnum.USER.getCode().equals(userDetail.getType())) { sysUser.setId(userDetail.getId()); } IPage result = sysUserService.page(sysUser, pageRequest); return ResultJson.ok(result); } @GetMapping(value = "/{id}") @ApiOperation(value = "获取机构详情") @PreAuthorize("hasAuthority('sysUser.view')") public ResultJson getById(@PathVariable("id") Long id) { MechanismVo sysUser = sysUserService.selectOne(id); return ResultJson.ok(sysUser); } @GetMapping(value = "/welcomePage") @ApiOperation(value = "获取欢迎页信息") @PreAuthorize("hasAuthority('sysUser.welcomePage')") public ResultJson welcomePage(Long mechanismId, HttpServletRequest request) { if (mechanismId == null) { UserDetail user = UserUtil.getUser(request.getHeader("Authorization")); mechanismId = user.getId(); } WelcomePageVo welcomePage = sysUserService.welcomePage(mechanismId); return ResultJson.ok(welcomePage); } @GetMapping(value = "/welcomePageList") @ApiOperation(value = "获取欢迎页列表数据") @PreAuthorize("hasAuthority('sysUser.welcomePageList')") public ResultJson> welcomePageList(HttpServletRequest request, WelcomePageDto pageDto, PageRequest pageRequest) { UserDetail user = UserUtil.getUser(request.getHeader("Authorization")); IPage page = sysUserService.welcomePageList(user, pageDto, pageRequest); return ResultJson.ok(page); } @PostMapping("/uploadPublicFile") @ApiOperation(value = "上传公共图片") @PreAuthorize("hasAuthority('sysUser.uploadPublicFile')") public ResultJson uploadPublicFile(@RequestBody MultipartFile file) { String fileName = ""; Long len = file.getSize(); boolean isBig = ImageUtil.checkFileSize(len, 5); if (!isBig) { throw new CommonException("文件超出5M,请压缩后重试"); } try { if (file.getSize() != 0) { MultipartFile file1 = CompressImageUtil.imgThumb(file); fileName = imageUtil.uploadFile(file1, true); } } catch (Exception e) { throw new CommonException("上传失败"); } return ResultJson.ok(fileName); } @PostMapping(value = "/addStaff") @ApiOperation(value = "新增客服") @PreAuthorize("hasAuthority('sysUser.addStaff')") public ResultJson addStaff(@RequestBody StaffDto staffDto) { SysUser sysUser = staffDto.parseUser(staffDto); sysUser.setType(UserTypeEnum.STAFF.getCode()); sysUserService.add(sysUser); return ResultJson.success(); } @PostMapping(value = "/editStaff") @ApiOperation(value = "编辑客服") @PreAuthorize("hasAuthority('sysUser.editStaff')") public ResultJson editStaff(@RequestBody StaffDto staffDto) { SysUser sysUser = staffDto.parseUser(staffDto); sysUserService.edit(sysUser); return ResultJson.success(); } @PostMapping(value = "/addAdmin") @ApiOperation(value = "新增系统管理员") @PreAuthorize("hasAuthority('sysUser.addAdmin')") public ResultJson addAdmin(@RequestBody AdminDto adminDto) { SysUser sysUser = adminDto.parseUser(adminDto); sysUser.setType(UserTypeEnum.ADMIN.getCode()); sysUserService.add(sysUser); return ResultJson.success(); } @PostMapping(value = "/editAdmin") @ApiOperation(value = "编辑系统管理员") @PreAuthorize("hasAuthority('sysUser.editAdmin')") public ResultJson editAdmin(@RequestBody AdminDto adminDto) { SysUser sysUser = adminDto.parseUser(adminDto); sysUserService.edit(sysUser); return ResultJson.success(); } @GetMapping(value = "/pageStaff") @ApiOperation(value = "分页查询客服") @PreAuthorize("hasAuthority('sysUser.pageStaff')") public ResultJson> pageStaff(StaffDto staffDto, PageRequest pageRequest, @AuthenticationPrincipal UserDetail userDetail) { if (UserTypeEnum.USER.getCode().equals(userDetail.getType())) { return ResultJson.ok(new Page<>()); } else if (UserTypeEnum.STAFF.getCode().equals(userDetail.getType())) { staffDto.setId(userDetail.getId()); } IPage result = sysUserService.pageStaff(staffDto, pageRequest); return ResultJson.ok(result); } @GetMapping(value = "/pageAdmin") @ApiOperation(value = "分页查询系统管理员") @PreAuthorize("hasAuthority('sysUser.pageAdmin')") public ResultJson> pageAdmin(AdminDto adminDto, PageRequest pageRequest, @AuthenticationPrincipal UserDetail userDetail) { if (UserTypeEnum.ADMIN.getCode().equals(userDetail.getType())) { IPage result = sysUserService.pageAdmin(adminDto, pageRequest); return ResultJson.ok(result); } else { return ResultJson.ok(new Page<>()); } } @GetMapping(value = "/pageSysUser") @ApiOperation(value = "分页查询账号数据") @PreAuthorize("hasAuthority('sysUser.pageSysUser')") public ResultJson> pageSysUser(SysUserDto sysUserDto, PageRequest pageRequest) { IPage result = sysUserService.pageSysUser(sysUserDto, pageRequest); return ResultJson.ok(result); } @GetMapping(value = "/pageMechanismConfig") @ApiOperation(value = "分页查询机构配置信息") @PreAuthorize("hasAuthority('sysUser.pageMechanismConfig')") public ResultJson> pageMechanismConfig(MechanismConfigPageDto pageDto, PageRequest pageRequest, @AuthenticationPrincipal UserDetail userDetail) { if (UserTypeEnum.USER.getCode().equals(userDetail.getType())) { pageDto.setId(userDetail.getId()); } IPage result = sysUserService.pageMechanismConfig(pageDto, pageRequest); return ResultJson.ok(result); } @PostMapping(value = "/editMechanismConfig") @ApiOperation(value = "编辑机构配置信息") @PreAuthorize("hasAuthority('sysUser.editMechanismConfig')") public ResultJson editMechanismConfig(@RequestBody MechanismConfigVo configVo) { sysUserService.editMechanismConfig(configVo); return ResultJson.success(); } @GetMapping(value = "/getAssignableMechanism") @ApiOperation(value = "获取可分配机构列表") @PreAuthorize("hasAuthority('sysUser.getAssignableMechanism')") public ResultJson> getAssignableMechanism() { List result = sysUserService.getAssignableMechanism(); return ResultJson.ok(result); } @GetMapping(value = "/getMechanismById") @ApiOperation(value = "查询机构详情") @PreAuthorize("hasAuthority('sysUser.page')") public ResultJson getMechanismById(Long mechanismId) { MechanismVo result = sysUserService.getMechanismById(mechanismId); return ResultJson.ok(result); } }