linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
src/main/java/com/ots/project/exam/controller/EntTestMemberController.java
@@ -1,4 +1,5 @@
package com.ots.project.exam.controller;
import com.ots.common.constant.UserConstants;
import com.ots.common.enums.SenderType;
import com.ots.common.enums.TestPackageStatusEnum;
@@ -25,72 +26,93 @@
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();
@@ -107,7 +129,10 @@
        String[] status = {TestPackageStatusEnum.enable.getCode(), TestPackageStatusEnum.pause.getCode(), TestPackageStatusEnum.ending.getCode(), TestPackageStatusEnum.invalid.getCode()};
        mmap.put("testPackages", entTestPackageService.selectEntTestPackageListByIdAndStatusIn(userId, Arrays.asList(status)));
    }
    /**
     * 查询批量导入测试人员名单列表
     */
    @RequiresPermissions("exam:testMember:list")
    @PostMapping("/list")
    @ResponseBody
@@ -129,6 +154,7 @@
        List<EntTestMember> list = entTestMemberService.selectEntTestMemberList(entTestMember);
        return getDataTable(list);
    }
    @PostMapping("/listTopAnswering")
    @ResponseBody
    public TableDataInfo listTopAnswering(EntTestMember entTestMember) {
@@ -139,15 +165,18 @@
        }
        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());
@@ -157,6 +186,7 @@
                userIds.add(extend.getUserId());
            }
        }
        List<EntTestMember> list;
        if (!SYS_USER.getUserType().equals(userType)) {
            entTestMember.setUserList(userIds);
@@ -164,7 +194,10 @@
        list = entTestMemberService.selectEntTestMemberQueryList(entTestMember);
        return getDataTable(list);
    }
    /**
     * 导出批量导入测试人员名单列表
     */
    @RequiresPermissions("exam:testMember:export")
    @PostMapping("/export")
    @ResponseBody
@@ -173,7 +206,10 @@
        ExcelUtil<EntTestMember> util = new ExcelUtil<EntTestMember>(EntTestMember.class);
        return util.exportExcel(list, "测试用户链接(Test Taker URLs)");
    }
    /**
     * 一键导出测试包里所有成员的测试连接
     */
    @RequiresPermissions("exam:testMember:export")
    @PostMapping("/exportLinkTest")
    @ResponseBody
@@ -191,7 +227,10 @@
        ExcelUtil<EntTestMemberOther> util = new ExcelUtil<>(EntTestMemberOther.class);
        return util.exportExcel(collect, "测试用户链接(Test Taker URLs)");
    }
    /**
     * 新增批量导入测试人员名单
     */
    @RequiresPermissions("exam:testMember:batchimport")
    @GetMapping("/add/{testId}")
    public String add(@PathVariable Long testId, ModelMap mmap) {
@@ -202,7 +241,10 @@
        mmap.put("testpkg", value);
        return prefix + "/add";
    }
    /**
     * 新增保存批量导入测试人员名单
     */
    @RequiresPermissions("exam:testMember:add")
    @Log(title = "批量导入测试人员名单", businessType = BusinessType.INSERT)
    @PostMapping("/add")
@@ -210,7 +252,10 @@
    public AjaxResult addSave(EntTestMember entTestMember) {
        return toAjax(entTestMemberService.insertEntTestMember(entTestMember));
    }
    /**
     * 新增邀请用户邮件发送列表
     */
    @RequiresPermissions("exam:testMember:add")
    @Log(title = "记录邀请用户发送列表", businessType = BusinessType.INSERT)
    @PostMapping("/addSendTask")
@@ -218,13 +263,17 @@
    public AjaxResult addSaveEmail(SendTask sendTask) {
        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();
@@ -242,37 +291,47 @@
        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);
@@ -286,7 +345,11 @@
        }
        mmap.put("testName", entTestPackage.getTestName() + "邀请邮件");
    }
    /**
     * 修改保存批量导入测试人员名单
     */
    @RequiresPermissions("exam:testMember:edit")
    @Log(title = "批量导入测试人员名单", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
@@ -294,7 +357,10 @@
    public AjaxResult editSave(EntTestMember entTestMember) {
        return toAjax(entTestMemberService.updateEntTestMember(entTestMember));
    }
    /**
     * 删除批量导入测试人员名单
     */
    @RequiresPermissions("exam:testMember:remove")
    @Log(title = "批量导入测试人员名单", businessType = BusinessType.DELETE)
    @PostMapping("/remove")
@@ -302,8 +368,11 @@
    public AjaxResult remove(String ids) {
        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 {
@@ -315,11 +384,16 @@
        String message = entTestMemberService.importEntTestMember(entTestMemberList, updateSupport);
        return AjaxResult.success(message);
    }
    /**
     * 批量导入测试人员名单模板下载
     */
    @GetMapping("/importTemplate")
    @ResponseBody
    public AjaxResult importTemplate() {
        ExcelUtil<EntTestMember> util = new ExcelUtil<EntTestMember>(EntTestMember.class);
        return util.importTemplateExcel("测试用户(Test-Takers)");
    }
}