| | |
| | | package com.ots.project.exam.controller; |
| | | |
| | | import com.ots.common.constant.UserConstants; |
| | | import com.ots.common.enums.SenderType; |
| | | import com.ots.common.enums.TestPackageStatusEnum; |
| | |
| | | import org.springframework.ui.ModelMap; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.text.MessageFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.ots.common.enums.UserTypeEnum.SYS_USER; |
| | | |
| | | /** |
| | | * 批量导入测试人员名单Controller |
| | | * |
| | | * @author Shawn |
| | | * @date 2019-11-22 |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/exam/testMember") |
| | | @Slf4j |
| | | public class EntTestMemberController extends BaseController { |
| | | private String prefix = "exam/testMember"; |
| | | |
| | | @Autowired |
| | | private IEntTestMemberService entTestMemberService; |
| | | |
| | | @Autowired |
| | | private IEntTestPackageService entTestPackageService; |
| | | |
| | | @Autowired |
| | | private IEntTestSendtaskService iEntTestSendtaskService; |
| | | |
| | | @Autowired |
| | | private ISysUserExtendService sysUserExtendService; |
| | | |
| | | @Autowired |
| | | private ITExamPaperService itExamPaperService; |
| | | @Autowired |
| | | private VueConfig vueConfig; |
| | | |
| | | @RequiresPermissions("exam:testMember:view") |
| | | @GetMapping() |
| | | public String testMember(ModelMap mmap) { |
| | | memberParam(null, mmap); |
| | | return prefix + "/testMember"; |
| | | } |
| | | |
| | | @GetMapping("/memberQuery") |
| | | public String testMemberQuery(String queryType, String queryValue, ModelMap mmap) { |
| | | memberParam(null, mmap); |
| | | if (Objects.nonNull(queryType)) { |
| | | if (Objects.nonNull(queryValue)) { |
| | | if (Objects.equals("2", queryType)) { |
| | | if (Objects.equals("2", queryType)) {//按姓名搜索测试用户 |
| | | mmap.put("memberNameSend", queryValue); |
| | | } else if (Objects.equals("3", queryType)) { |
| | | } else if (Objects.equals("3", queryType)) {//按邮箱搜索测试用户 |
| | | mmap.put("memberEmailSend", queryValue); |
| | | } else if (Objects.equals("4", queryType)) { |
| | | } else if (Objects.equals("4", queryType)) {//按手机号码搜索测试用户 |
| | | mmap.put("memberPhoneSend", queryValue); |
| | | } else if (Objects.equals("5", queryType)) { |
| | | } else if (Objects.equals("5", queryType)) {//按密码搜索测试用户 |
| | | mmap.put("tokenSend", queryValue); |
| | | } |
| | | } |
| | | } |
| | | return prefix + "/testMemberQuery"; |
| | | } |
| | | |
| | | |
| | | @GetMapping("/memberDetailVerify/{testId}") |
| | | @ResponseBody |
| | | public AjaxResult memberDetailVerify(@PathVariable Long testId) { |
| | | EntTestPackage entTestPackage = entTestPackageService.selectEntTestPackageById(testId); |
| | | TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(entTestPackage.getProdId()); |
| | | if (Objects.isNull(tExamPaper)) { |
| | | |
| | | // 无效的产品包,请重新选择测试包的产品包 |
| | | return AjaxResult.error(MessageUtils.message("jsp.exam.member.invalidProductPackage")); |
| | | } |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | /** |
| | | * 查询评测人员详情 |
| | | */ |
| | | @GetMapping("/memberDetail/{testId}") |
| | | public String testMemberDetail(@PathVariable Long testId, ModelMap mmap) { |
| | | memberParam(testId, mmap); |
| | | return prefix + "/testMember"; |
| | | } |
| | | |
| | | public void memberParam(Long testId, ModelMap mmap) { |
| | | User sysUser = ShiroUtils.getSysUser(); |
| | | Long userId = sysUser.getUserId(); |
| | |
| | | mmap.put("testPackages", entTestPackageService.selectEntTestPackageListByIdAndStatusIn(userId, Arrays.asList(status))); |
| | | } |
| | | |
| | | /** |
| | | * 查询批量导入测试人员名单列表 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:list") |
| | | @PostMapping("/list") |
| | | @ResponseBody |
| | |
| | | List<EntTestMember> list = entTestMemberService.selectEntTestMemberList(entTestMember); |
| | | return getDataTable(list); |
| | | } |
| | | |
| | | @PostMapping("/listTopAnswering") |
| | | @ResponseBody |
| | | public TableDataInfo listTopAnswering(EntTestMember entTestMember) { |
| | |
| | | } |
| | | return getDataTable(entTestMemberService.selectEntTestMemberTopList(entTestMember)); |
| | | } |
| | | |
| | | @PostMapping("/queryList") |
| | | @ResponseBody |
| | | public TableDataInfo queryList(EntTestMember entTestMember) { |
| | | startPage(); |
| | | |
| | | User sysUser = ShiroUtils.getSysUser(); |
| | | String userType = sysUser.getUserType(); |
| | | |
| | | List<Long> userIds = new ArrayList<>(); |
| | | userIds.add(sysUser.getUserId()); |
| | | |
| | | //分销商可以看到分销商下的企业信息 |
| | | if (UserTypeEnum.DIS_USER.getUserType().equals(userType)) { |
| | | SysUserExtend sysUserExtend = new SysUserExtend(); |
| | | sysUserExtend.setParentUserId(sysUser.getUserId()); |
| | |
| | | userIds.add(extend.getUserId()); |
| | | } |
| | | } |
| | | |
| | | List<EntTestMember> list; |
| | | if (!SYS_USER.getUserType().equals(userType)) { |
| | | entTestMember.setUserList(userIds); |
| | |
| | | return getDataTable(list); |
| | | } |
| | | |
| | | /** |
| | | * 导出批量导入测试人员名单列表 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:export") |
| | | @PostMapping("/export") |
| | | @ResponseBody |
| | |
| | | return util.exportExcel(list, "测试用户链接(Test Taker URLs)"); |
| | | } |
| | | |
| | | /** |
| | | * 一键导出测试包里所有成员的测试连接 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:export") |
| | | @PostMapping("/exportLinkTest") |
| | | @ResponseBody |
| | |
| | | return util.exportExcel(collect, "测试用户链接(Test Taker URLs)"); |
| | | } |
| | | |
| | | /** |
| | | * 新增批量导入测试人员名单 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:batchimport") |
| | | @GetMapping("/add/{testId}") |
| | | public String add(@PathVariable Long testId, ModelMap mmap) { |
| | |
| | | return prefix + "/add"; |
| | | } |
| | | |
| | | /** |
| | | * 新增保存批量导入测试人员名单 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:add") |
| | | @Log(title = "批量导入测试人员名单", businessType = BusinessType.INSERT) |
| | | @PostMapping("/add") |
| | |
| | | return toAjax(entTestMemberService.insertEntTestMember(entTestMember)); |
| | | } |
| | | |
| | | /** |
| | | * 新增邀请用户邮件发送列表 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:add") |
| | | @Log(title = "记录邀请用户发送列表", businessType = BusinessType.INSERT) |
| | | @PostMapping("/addSendTask") |
| | |
| | | return toAjax(iEntTestSendtaskService.insertEntTestSendtaskFromMemberIds(sendTask)); |
| | | } |
| | | |
| | | /** |
| | | * 修改批量导入测试人员名单 |
| | | */ |
| | | @GetMapping("/edit/{memberId}") |
| | | public String edit(@PathVariable("memberId") Long memberId, ModelMap mmap) { |
| | | EntTestMember entTestMember = entTestMemberService.selectEntTestMemberById(memberId); |
| | | mmap.put("entTestMember", entTestMember); |
| | | return prefix + "/edit"; |
| | | } |
| | | |
| | | @GetMapping("/send/sendSms/{memberIds}/{testId}") |
| | | public String sendSms(@PathVariable("memberIds") String memberIds, @PathVariable("testId") Long testId, ModelMap mmap) { |
| | | StringBuilder builder = new StringBuilder(); |
| | |
| | | processParams(memberIds, testId, mmap, builder.toString(), type); |
| | | return prefix + "/sendSms"; |
| | | } |
| | | |
| | | @GetMapping("/send/sendEmail/{memberIds}/{testId}") |
| | | public String sendEmail(@PathVariable("memberIds") String memberIds, @PathVariable("testId") Long testId, ModelMap mmap) { |
| | | |
| | | // String defaultTemplate = "欢迎您参加“工作行为问卷!”链接地址: <a href='{url}' target='_blank'>{url}</a>\n如果不能直接访问,请复制地址到浏览器中直接打开。如有疑问,请和XX联系。"; |
| | | String langType = LocaleContextHolder.getLocale().toString(); |
| | | StringBuilder builder = new StringBuilder(); |
| | | |
| | | builder.append("亲爱的{FullName},").append("\n<br>"); |
| | | builder.append("Dear {FullName},").append("\n<br>"); |
| | | builder.append("เรียน {FullName},").append("\n<br>"); |
| | | builder.append("\n<br>"); |
| | | |
| | | builder.append("{Company} 邀请您完成一份测试,大概需要20-25分钟时间。您可以直接点击下面的链接开始该测试。如果不能直接访问,请复制地址到浏览器中直接打开。").append("\n<br>"); |
| | | builder.append("You've been invited to take an assessment by {Company}, which shall take about 20-25 minutes to complete. Please click the link below, or copy the link to your browser, to begin the assessment.").append("\n<br>"); |
| | | builder.append("คุณได้รับเชิญให้ทำแบบประเมินจาก {Company} กรุณาใช้ลิงค์ด้านล่างเพื่อเริ่มดำเนินการ โดยคุณสามารถคลิกที่ลิงค์ด้านล่างโดยตรง หรือจะคัดลอกแล้วนำลิงค์ไปวางบนเบราว์เซอร์ของคุณก็ได้").append("\n<br>"); |
| | | |
| | | |
| | | builder.append("链接地址是:").append("\n<br>"); |
| | | builder.append("The link is:").append("\n<br>"); |
| | | builder.append("ตามลิงค์นี้:").append("\n<br>"); |
| | | builder.append("<a href='{url}' target='_blank'>{url}</a>").append("\n<br>"); |
| | | builder.append("\n<br>"); |
| | | |
| | | builder.append("如有疑问,请与客服联系,邮箱是:support@tai-online.com。").append("\n<br>"); |
| | | builder.append("Should you have problem assessing the above link, please contact our customer service at support@tai-online.com.").append("\n<br>"); |
| | | builder.append("หากคุณมีปัญหาในการเข้าสู่ลิงค์ข้างต้น โปรดติดต่อฝ่ายบริการลูกค้าของเราที่ support@tai-online.com").append("\n<br>"); |
| | | builder.append("\n<br>"); |
| | | builder.append("\n<br>"); |
| | | |
| | | builder.append("谢谢!").append("\n<br>"); |
| | | builder.append("All the best,").append("\n<br>"); |
| | | builder.append("ด้วยความเคารพ").append("\n<br>"); |
| | | builder.append("\n<br>"); |
| | | |
| | | builder.append("{Company}").append("\n<br>"); |
| | | |
| | | String type = SenderType.email.getType(); |
| | | processParams(memberIds, testId, mmap, builder.toString(), type); |
| | | return prefix + "/sendEmail"; |
| | | } |
| | | |
| | | private void processParams(@PathVariable("memberIds") String memberIds, @PathVariable("testId") Long testId, ModelMap mmap, String defaultTemplate, String type) { |
| | | mmap.put("memberIds", memberIds); |
| | | mmap.put("size", memberIds.split(",").length); |
| | |
| | | mmap.put("testName", entTestPackage.getTestName() + "邀请邮件"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 修改保存批量导入测试人员名单 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:edit") |
| | | @Log(title = "批量导入测试人员名单", businessType = BusinessType.UPDATE) |
| | | @PostMapping("/edit") |
| | |
| | | return toAjax(entTestMemberService.updateEntTestMember(entTestMember)); |
| | | } |
| | | |
| | | /** |
| | | * 删除批量导入测试人员名单 |
| | | */ |
| | | @RequiresPermissions("exam:testMember:remove") |
| | | @Log(title = "批量导入测试人员名单", businessType = BusinessType.DELETE) |
| | | @PostMapping("/remove") |
| | |
| | | return toAjax(entTestMemberService.deleteEntTestMemberByIds(ids)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 批量导入测试人员名单 |
| | | */ |
| | | // @RequiresPermissions("enterprise:testMember:import") |
| | | @PostMapping("/importData/{testId}") |
| | | @ResponseBody |
| | | public AjaxResult importData(MultipartFile file, boolean updateSupport, @PathVariable Long testId) throws Exception { |
| | |
| | | return AjaxResult.success(message); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 批量导入测试人员名单模板下载 |
| | | */ |
| | | @GetMapping("/importTemplate") |
| | | @ResponseBody |
| | | public AjaxResult importTemplate() { |
| | | ExcelUtil<EntTestMember> util = new ExcelUtil<EntTestMember>(EntTestMember.class); |
| | | return util.importTemplateExcel("测试用户(Test-Takers)"); |
| | | } |
| | | |
| | | } |