package com.ots.project.exam.controller; import com.ots.common.utils.StringUtils; import com.ots.common.utils.security.ShiroUtils; import com.ots.framework.aspectj.lang.annotation.Log; import com.ots.framework.aspectj.lang.enums.BusinessType; 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.EntTestPackage; import com.ots.project.exam.domain.NumberOfUsersByCompany; import com.ots.project.exam.domain.NumberOfUsersByPackage; import com.ots.project.exam.domain.SysUserExtend; import com.ots.project.exam.service.CountCalculateService; 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.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; /** * @Created with IntelliJ IDEA. * @User: liguosheng * @Date: 2019/11/22 * @Time: 10:40 * @description: 企业用户 */ @Controller @RequestMapping("/exam/enterprise") public class EnterpriseController extends BaseController { private String prefix = "exam/enterprise"; @Autowired private ISysUserExtendService sysUserExtendService; @Autowired private CountCalculateService calculate; @RequiresPermissions("exam:enterprise:view") @GetMapping() public String enterprise(String parentUserId, String userName, ModelMap mmap) { mmap.put("parentUserId", parentUserId == null ? "" : parentUserId); SysUserExtend sysUserExtend = new SysUserExtend(); User sysUser = ShiroUtils.getSysUser(); if ("01".equals(sysUser.getUserType())) { sysUserExtend.setUserId(sysUser.getUserId()); } else { sysUserExtend.setUserType("01"); } if (Objects.nonNull(userName)) { mmap.put("userNameSend", userName); } List list = sysUserExtendService.selectSysUserExtendList(sysUserExtend); mmap.put("us", list); return prefix + "/enterprise"; } /** * 查询用户信息扩展列表 */ @RequiresPermissions("exam:enterprise:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(SysUserExtend sysUserExtend) { startPage(); User sysUser = ShiroUtils.getSysUser(); if ("01".equals(sysUser.getUserType())) { sysUserExtend.setParentUserId(sysUser.getUserId()); } else if ("02".equals(sysUser.getUserType())) { sysUserExtend.setUserId(sysUser.getUserId()); } List list = sysUserExtendService.selectSysUserExtendList(sysUserExtend); return getDataTable(list); } /** * 新增用户信息扩展 */ @GetMapping("/add") public String add(ModelMap mmap) { User sysUser = ShiroUtils.getSysUser(); SysUserExtend sysUserExtend = new SysUserExtend(); if ("01".equals(sysUser.getUserType())) { sysUserExtend.setUserId(sysUser.getUserId()); } else { sysUserExtend.setUserType("01"); } List list = sysUserExtendService.selectSysUserExtendList(sysUserExtend); mmap.put("us", list); return prefix + "/add"; } /** * 修改用户信息扩展 */ @GetMapping("/edit/{userId}") public String edit(@PathVariable("userId") Long userId, ModelMap mmap) { SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId); mmap.put("sysUserExtend", sysUserExtend); SysUserExtend sysUserExtendc = new SysUserExtend(); User sysUser = ShiroUtils.getSysUser(); if ("01".equals(sysUser.getUserType())) { sysUserExtendc.setUserId(sysUser.getUserId()); } else { sysUserExtendc.setUserType("01"); } List list = sysUserExtendService.selectSysUserExtendList(sysUserExtendc); mmap.put("us", list); return prefix + "/edit"; } /** * 测试人数设置 */ @RequiresPermissions("exam:enterprise:editUserTimes") @GetMapping("/operUseTimes/{userId}") public String operUseTimes(@PathVariable("userId") Long userId, ModelMap mmap) { SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId); mmap.put("sysUserExtend", sysUserExtend); EntTestPackage entTestPackage = new EntTestPackage(); entTestPackage.setUserId(userId); NumberOfUsersByCompany numberOfUsersByCompany = calculate.calculateProductPackagesMemberCount(entTestPackage); Integer systemScore = numberOfUsersByCompany.getTestNum(); List list = new ArrayList(); Map testPackageUsageTimesMap = numberOfUsersByCompany.getTestPackageUsageTimesMap(); if (Objects.nonNull(testPackageUsageTimesMap)) { testPackageUsageTimesMap.forEach((key, value) -> { list.add(value.getTestNum()); }); systemScore = list.stream().mapToInt(p -> p.intValue()).sum(); } mmap.put("totalNumberOfTesters", systemScore); // 显示该企业可用测试人数,总测试人数 return prefix + "/operUseTimes"; } /** * 充值测试人数 */ @RequiresPermissions("exam:enterprise:editUserTimes") @Log(title = "充值测试人数", businessType = BusinessType.UPDATE) @PostMapping("/operUseTimes/edit/{userId}/{addNum}") @ResponseBody public AjaxResult editSave(@PathVariable("userId") Long userId, @PathVariable("addNum") Long addNum) { return toAjax(sysUserExtendService.updateTestNum(userId, addNum)); } @RequiresPermissions("exam:enterprise:remove") @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(sysUserExtendService.deleteSysUserExtendByIds(ids)); } // 免密登录 @RequiresPermissions("exam:enterprise: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); } } @PostMapping("/freeloginback") @ResponseBody public AjaxResult freeLoginBack(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); } } // @RequiresPermissions("exam:extend:resetpwd") @Log(title = "用户重置密码", businessType = BusinessType.UPDATE) @PostMapping("/resetpwd") @ResponseBody public AjaxResult resetpwd(User user) { return toAjax(sysUserExtendService.resetpwd(user)); } }