package com.stylefeng.guns.modular.system.controller.general; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.TEmail; import com.stylefeng.guns.modular.system.model.TSystemNotice; import com.stylefeng.guns.modular.system.model.TUser; import com.stylefeng.guns.modular.system.service.ITSystemNoticeService; import com.stylefeng.guns.modular.system.service.ITUserService; import com.stylefeng.guns.modular.system.service.TEmailService; import com.stylefeng.guns.modular.system.util.EmailUtil; import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestParam; import com.stylefeng.guns.modular.system.model.TComplaint; import com.stylefeng.guns.modular.system.service.ITComplaintService; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.util.Date; import java.util.Map; import static org.bouncycastle.asn1.x500.style.RFC4519Style.uid; /** * 投诉列表控制器 * * @author fengshuonan * @Date 2020-06-09 17:31:24 */ @Controller @RequestMapping("/tComplaint") public class TComplaintController extends BaseController { private String PREFIX = "/system/tComplaint/"; @Autowired private ITComplaintService tComplaintService; @Autowired private ITSystemNoticeService tSystemNoticeService; @Autowired private ITUserService userService; @Value("${spring.mail.template-path}") private String templatePath; @Autowired private TEmailService emailService; /** * 跳转到投诉列表首页 */ @RequestMapping("") public String index() { return PREFIX + "tComplaint.html"; } /** * 跳转到查看详情 */ @RequestMapping("/lookDetail/{id}/{type}") public String lookDetail(@PathVariable Integer id, @PathVariable Integer type, Model model) { TComplaint tComplaint = tComplaintService.selectById(id); String str = ""; if (1 == type){ str = tComplaint.getReason(); }else if (2 == type){ str = tComplaint.getDescription(); }else if (3 == type){ str = tComplaint.getHandleResult(); } model.addAttribute("str",str); return "/system/tComplaint/lookDetail.html"; } /** * 跳转到立即处理页面 */ @RequestMapping("/tComplaint_immediately/{tComplaintId}") public String tComplaintUpdate(@PathVariable Integer tComplaintId, Model model) { model.addAttribute("tComplaintId",tComplaintId); return PREFIX + "tComplaint_immediately.html"; } /** * 跳转到查看详情 */ @RequestMapping("/lookDetail/{str}") public String lookDetail(@PathVariable String str, Model model) { System.out.println(str); model.addAttribute("str",str); return PREFIX + "lookDetail.html"; } /** * 获取投诉列表列表 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String insertTime, String userName, String userPhone, String driverPhone, Integer isHandle) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(tComplaintService.getComplaintList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,userName,userPhone,driverPhone,isHandle)); return super.packForBT(page); } /** * 删除投诉列表 */ @RequestMapping(value = "/immediately") @ResponseBody public Object immediately(@RequestParam Integer id,@RequestParam String handleResult) { TComplaint tComplaint = tComplaintService.selectById(id); if(SinataUtil.isNotEmpty(tComplaint)){ tComplaint.setHandleResult(handleResult); tComplaint.setHandleUserId(ShiroKit.getUser().getId()); tComplaint.setIsHandle(1); tComplaint.setHandleTime(new Date()); tComplaintService.updateById(tComplaint); try { TUser tUser = userService.selectById(tComplaint.getUserId()); if(ToolUtil.isNotEmpty(tUser.getEmail())){ String path = templatePath + "user/complaintResult.html"; Document document = Jsoup.parse(new File(path), "UTF-8"); Integer language = tUser.getLanguage(); if(1 == language){ document.getElementById("english").remove(); document.getElementById("french").remove(); document.getElementsByTag("title").get(0).text("投诉反馈处理结果"); Element chinese_user = document.getElementById("chinese_user"); chinese_user.text("您好 " + tUser.getNickName() + ","); Element chinese_content = document.getElementById("chinese_content"); chinese_content.text(handleResult); EmailUtil.send(tUser.getEmail(), "投诉反馈处理结果", document.html()); } if(2 == language){ document.getElementById("chinese").remove(); document.getElementById("french").remove(); document.getElementsByTag("title").get(0).text("Solutions for complaints"); Element english_user = document.getElementById("english_user"); english_user.text("Hello " + tUser.getNickName() + ","); Element english_content = document.getElementById("english_content"); english_content.text(handleResult); EmailUtil.send(tUser.getEmail(), "Solutions for complaints", document.html()); } if(3 == language){ document.getElementById("chinese").remove(); document.getElementById("english").remove(); document.getElementsByTag("title").get(0).text("Solutions pour plaintes"); Element french_user = document.getElementById("french_user"); french_user.text("Bonjour " + tUser.getNickName() + ","); Element french_content = document.getElementById("french_content"); french_content.text(handleResult); EmailUtil.send(tUser.getEmail(), "Solutions pour plaintes", document.html()); } //开始生成pdf收据和html收据 File file = new File("/home/igotechgh/nginx/html/files/html/"); if(!file.exists()){ file.mkdirs(); } String randomString = ToolUtil.getRandomString(10); file = new File("/home/igotechgh/nginx/html/files/html/complaintResult_" + randomString + ".html"); if(!file.exists()){ file.createNewFile(); } FileWriter fileWriter = new FileWriter(file); fileWriter.write(document.html()); fileWriter.flush(); fileWriter.close(); String link ="https://igo.i-go.group/files/html/complaintResult_" + randomString + ".html"; TEmail tEmail = new TEmail(); tEmail.setLink(link); tEmail.setUserId(tUser.getId()); tEmail.setType(1); tEmail.setName(1 == language ? "投诉反馈处理结果" : 2 == language ? "Solutions for complaints" : "Solutions pour plaintes"); tEmail.setCreateTime(new Date()); int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; tEmail.setWeek(EmailUtil.getWeek(2,i)); boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); if(am){ tEmail.setAmOrPm("AM"); }else { tEmail.setAmOrPm("PM"); } emailService.insert(tEmail); } }catch (Exception e){ e.printStackTrace(); } //增加系统消息 TSystemNotice notice = new TSystemNotice(); notice.setType(2); notice.setUserType(1); notice.setContent(handleResult); notice.setUserId(tComplaint.getUserId()); notice.setInsertTime(new Date()); notice.setRead(1); tSystemNoticeService.insert(notice); } return SUCCESS_TIP; } /** * 删除投诉 */ @RequestMapping(value = "/delete") @ResponseBody public Object delete(Integer tComplaintId) { tComplaintService.deleteById(tComplaintId); return SUCCESS_TIP; } /** * 修改投诉列表 */ @RequestMapping(value = "/update") @ResponseBody public Object update(TComplaint tComplaint) { tComplaintService.updateById(tComplaint); return SUCCESS_TIP; } /** * 投诉列表详情 */ @RequestMapping(value = "/detail/{tComplaintId}") @ResponseBody public Object detail(@PathVariable("tComplaintId") Integer tComplaintId) { return tComplaintService.selectById(tComplaintId); } }