package com.ots.project.exam.controller; import com.ots.common.enums.UserTypeEnum; import com.ots.common.utils.StringUtils; import com.ots.common.utils.security.ShiroUtils; import com.ots.framework.web.controller.BaseController; import com.ots.framework.web.domain.AjaxResult; import com.ots.framework.web.page.TableDataInfo; import com.ots.project.exam.domain.SysUserExtend; import com.ots.project.exam.service.ISysUserExtendService; import com.ots.project.system.user.domain.User; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; import static com.ots.common.enums.UserTypeEnum.DIS_USER; @Controller @RequestMapping("/exam/distributor") public class DistributorController extends BaseController { private String prefix = "exam/distributor"; @Autowired private ISysUserExtendService sysUserExtendService; @RequiresPermissions("exam:distributor:view") @GetMapping() public String distributor() { return prefix + "/distributor"; } @PostMapping("/list") @ResponseBody public TableDataInfo list(SysUserExtend sysUserExtend) { startPage(); User sysUser = ShiroUtils.getSysUser(); if (DIS_USER.getUserType().equals(sysUser.getUserType())) { sysUserExtend.setParentUserId(sysUser.getUserId()); } else { sysUserExtend.setUserType(DIS_USER.getUserType()); } List list = sysUserExtendService.selectSysUserExtendList(sysUserExtend); return getDataTable(list); } @GetMapping("/add") public String add(ModelMap mmap) { List list = getSysUserExtends(); mmap.put("us", list); return prefix + "/add"; } List getSysUserExtends() { User sysUser = ShiroUtils.getSysUser(); SysUserExtend sysUserExtend = new SysUserExtend(); if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) { sysUserExtend.setParentUserId(sysUser.getUserId()); } else { sysUserExtend.setUserId(sysUser.getUserId()); } sysUserExtend.setFirstLevel("1"); List list = sysUserExtendService.selectSysUserExtendList(sysUserExtend); if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) { SysUserExtend userExtend = new SysUserExtend(); userExtend.setUserId(sysUser.getUserId()); userExtend.setUserName(sysUser.getUserName()); list.add(userExtend); } return list; } @GetMapping("/edit/{userId}") public String edit(@PathVariable("userId") Long userId, ModelMap mmap) { SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId); mmap.put("sysUserExtend", sysUserExtend); List list = getSysUserExtends(); if (StringUtils.isBlank(sysUserExtend.getFirstLevel())) { sysUserExtend.setFirstLevel("0"); } mmap.put("us", list); return prefix + "/edit"; } @RequiresPermissions("exam:distributor:remove") @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(sysUserExtendService.deleteSysUserExtendByIds(ids)); } @RequiresPermissions("exam:distributor:freelogin") @PostMapping("/freelogin") @ResponseBody public AjaxResult freeLogin(Long userId) { SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId); UsernamePasswordToken token = new UsernamePasswordToken(sysUserExtend.getLoginName(), "FREELOGIN", false); Subject subject = SecurityUtils.getSubject(); try { subject.login(token); return success(); } catch (AuthenticationException e) { String msg = "用户或密码错误"; if (StringUtils.isNotEmpty(e.getMessage())) { msg = e.getMessage(); } return error(msg); } } }