123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859 |
- package com.qxgmat.service.extend;
- import com.alipay.api.domain.TransOrderDetail;
- import com.nuliji.tools.Transform;
- import com.nuliji.tools.exception.ParameterException;
- import com.qxgmat.data.constants.enums.*;
- import com.qxgmat.data.constants.enums.module.FeedbackModule;
- import com.qxgmat.data.constants.enums.module.ProductType;
- import com.qxgmat.data.constants.enums.status.AnswerStatus;
- import com.qxgmat.data.constants.enums.trade.RecordSource;
- import com.qxgmat.data.constants.enums.user.AskTarget;
- import com.qxgmat.data.constants.enums.user.DataType;
- import com.qxgmat.data.constants.enums.user.FeedbackTarget;
- import com.qxgmat.data.dao.entity.*;
- import com.qxgmat.help.MailHelp;
- import com.qxgmat.help.SmsHelp;
- import com.qxgmat.help.WechatHelp;
- import com.qxgmat.service.inline.*;
- import org.apache.logging.log4j.util.Strings;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import sun.plugin2.message.Message;
- import javax.annotation.Resource;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- public class MessageExtendService {
- @Resource
- private MailHelp mailHelp;
- @Resource
- private WechatHelp wechatHelp;
- @Resource
- private SmsHelp smsHelp;
- @Resource
- private UserMessageService userMessageService;
- @Resource
- private MessageTemplateService messageTemplateService;
- @Resource
- private CourseService courseService;
- @Resource
- private CourseNoService courseNoService;
- @Resource
- private CoursePackageService coursePackageService;
- @Resource
- private QuestionNoService questionNoService;
- @Resource
- private CourseDataService courseDataService;
- @Resource
- private ToolsService toolsService;
- @Value("${url.pc}")
- private String pcUrl;
- @Value("${url.h5}")
- private String h5Url;
- @Value("${info.wechat}")
- private String wechat;
- private void send(User user, MessageCategory category, Map<String, String>params, Integer relationId){
- List<MessageTemplate> templateList = messageTemplateService.listByCategory(category);
- for(MessageTemplate template : templateList){
- MessageMethod messageMethod = MessageMethod.ValueOf(template.getMessageMethod());
- String title = replaceBody(template.getTitle(), params);
- String content = replaceBody(template.getContent(), params);
- switch(messageMethod){
- case EMAIL:
- if(params.containsKey("link")){
- params.put("linkHtml", makeLink(params.get("link"), params.getOrDefault("linkTitle", category.linkTitle), relationId));
- }else if(category.link != null ){
- params.put("linkHtml", makeLink(category.link, category.linkTitle, relationId));
- }
- if (params.containsKey("linkSecond")){
- params.put("linkSecondHtml", makeLink(params.get("linkSecond"), params.getOrDefault("linkTitle", category.linkSecondTitle), relationId));
- }else if(category.linkSecond != null){
- params.put("linkSecondHtml", makeLink(category.linkSecond, category.linkSecondTitle, relationId));
- }
- sendEmail(params.getOrDefault("emails", user.getEmail()), title, content, params.get("attachment"), params.get("attachments"));
- break;
- case INSIDE:
- sendInside(user.getId(), title, content, relationId, params.getOrDefault("link", template.getLink()), params.getOrDefault("linkTitle", null), category);
- break;
- case WECHAT:
- sendWechat(user.getWechatOpenidWechat(), category, params);
- break;
- case SMS:
- sendSms(user.getArea(), user.getMobile(), category, params);
- break;
- default:
- throw new ParameterException("消息发送方式错误");
- }
- messageTemplateService.accumulation(template.getId(), 1);
- }
- }
- private UserMessage sendInside(Integer userId, String title, String content, Integer relationId, String link, String linkTitle, MessageCategory category){
-
- return userMessageService.add(UserMessage.builder()
- .userId(userId)
- .title(title)
- .content(content)
- .relationId(relationId)
- .link(link)
- .linkTitle(linkTitle)
- .type(MessageType.FromCategory(category).key)
- .isRead(0)
- .build());
- }
- private void sendEmail(String emails, String title, String body, String attachment, String attachments){
- if (attachment != null){
- mailHelp.sendAttachMail(emails, title, body, attachment);
- }else if(attachments != null){
- mailHelp.sendAttachMail(emails, title, body, Arrays.stream(attachments.split(";")).collect(Collectors.toList()));
- }
- mailHelp.sendBaseMail(emails, title, body);
- }
- private void sendWechat(String openId, MessageCategory category, Map<String, String> params){
- wechatHelp.sendMessage(openId, category, params);
- }
- private void sendSms(String area, String mobile, MessageCategory category, Map<String, String> params){
- String[] template;
- Map<String, String> smsParams = new HashMap<>();
- switch(category){
- case LOGIN_ABNORMAL:
- template = smsHelp.ABNORMAL_TEMPLATE;
-
- smsParams.put("time", params.get("time"));
- break;
- case TEXTBOOK_LIBRARY:
- template = smsHelp.LIBRARY_TEMPLATE;
-
-
-
-
-
- smsParams.put("zx_date", params.get("date"));
- smsParams.put("sc_date", params.get("prevDate"));
- smsParams.put("jgts", params.get("period"));
- smsParams.put("kcts", params.get("days"));
- smsParams.put("dyh", wechat);
- smsParams.put("jjdz", pcUrl+"/textbook");
- break;
- case COURSE_USE_EXPIRE:
- template = smsHelp.COURSE_USE_EXPIRE_TEMPLATE;
-
-
-
- smsParams.put("date", params.get("expireDate"));
- smsParams.put("yhnc", params.get("nickname"));
- smsParams.put("kcmc", params.get("title"));
- break;
- case COURSE_OPEN_EXPIRE:
- case TEXTBOOK_OPEN_EXPIRE:
- case QX_CAT_OPEN_EXPIRE:
- template = smsHelp.EXPIRE_TEMPLATE;
-
-
-
- smsParams.put("date", params.get("expireDate"));
- smsParams.put("yhnc", params.get("nickname"));
- smsParams.put("wktfw", params.get("title"));
- break;
- default:
-
- return;
- }
- smsHelp.send(area, mobile, template, smsParams);
- }
- public void refreshMessage(List<UserMessage> messageList){
- for(UserMessage message : messageList){
- if (message.getLink() != null && message.getLink() != null) continue;
- MessageCategory category = MessageCategory.ValueOf(message.getMessageCategory());
- if(category.emailLink) continue;
- if (category.link != null){
- message.setLink(replaceLink(category.link, "id", message.getRelationId()));
- message.setLinkTitle(category.linkTitle);
- }
- if (category.linkSecond != null){
- message.setLinkSecond(replaceLink(category.linkSecond, "id", message.getRelationId()));
- message.setLinkSecondTitle(category.linkSecondTitle);
- }
- }
- }
- public void sendCustom(User user, MessageTemplate template, Map<String, String>params){
- params.put("nickname", user.getNickname());
- MessageMethod messageMethod = MessageMethod.ValueOf(template.getMessageMethod());
- String title = replaceBody(template.getTitle(), params);
- String content = replaceBody(template.getContent(), params);
- switch(messageMethod){
- case EMAIL:
- sendEmail(user.getEmail(), title, content, null, null);
- break;
- case INSIDE:
- sendInside(user.getId(), title, content, 0, template.getLink(), null, MessageCategory.CUSTOM);
- break;
- default:
- throw new ParameterException("消息发送方式错误");
- }
- }
-
- public void sendInviteEmail(User user, String[] emails, String code){
- Map<String, String> map = new HashMap<>();
- map.put("emails", Strings.join(Arrays.stream(emails).collect(Collectors.toList()), ';'));
- map.put("code", code);
- map.put("nickname", user.getNickname());
- map.put("url", pcUrl+"/id/"+code);
- send(user, MessageCategory.INVITED, map, user.getId());
- }
-
- public void sendInviteSuccess(User user, UserOrderRecord record){
- Map<String, String> map = new HashMap<>();
- map.put("nickname", user.getNickname());
- map.put("number", String.valueOf(user.getInviteNumber()));
- map.put("useExpireDays", String.valueOf(record.getUseExpireDays()));
- map.put("expireTime", getTime(record.getUseEndTime()));
- send(user, MessageCategory.INVITED_SUCCESS, map, record.getId());
- }
-
- public void sendReal(User user, UserOrderRecord record){
- Map<String, String> map = new HashMap<>();
- map.put("nickname", user.getNickname());
- map.put("useExpireDays", String.valueOf(record.getUseExpireDays()));
- map.put("expireTime", getTime(record.getUseEndTime()));
- send(user, MessageCategory.REAL, map, record.getId());
- }
-
- public void sendPrepare(User user, UserOrderRecord record){
- Map<String, String> map = new HashMap<>();
- map.put("nickname", user.getNickname());
- map.put("useExpireDays", String.valueOf(record.getUseExpireDays()));
- map.put("expireTime", getTime(record.getUseEndTime()));
- send(user, MessageCategory.PREPARE, map, record.getId());
- }
-
- public void sendTextbookLibrary(User user, TextbookLibrary latest, TextbookLibrary second){
- Map<String, String> map = new HashMap<>();
- int days =(int)(latest.getStartDate().getTime() - second.getStartDate().getTime()) / 86400000;
- map.put("date", getDate(latest.getStartDate()));
- map.put("prevDate", getDate(second.getStartDate()));
- map.put("period", String.valueOf(days-1));
- map.put("days", String.valueOf(days));
- send(user, MessageCategory.TEXTBOOK_LIBRARY, map, 0);
- }
-
- public void sendTextbookUpdate(User user, TextbookLibrary textbookLibrary, Boolean subscribe){
- Map<String, String> map = new HashMap<>();
- Integer version = textbookLibrary.getQuantVersion();
- if (textbookLibrary.getIrVersion() > version){
- version = textbookLibrary.getIrVersion();
- }
- if (textbookLibrary.getRcVersion() >version){
- version = textbookLibrary.getRcVersion();
- }
- map.put("email", user.getEmail());
- map.put("version", String.valueOf(version));
- map.put("quantVersion", String.valueOf(textbookLibrary.getQuantVersion()));
- map.put("quantDescription", String.valueOf(textbookLibrary.getQuantDescription()));
- map.put("irVersion", String.valueOf(textbookLibrary.getIrVersion()));
- map.put("irDescription", String.valueOf(textbookLibrary.getIrDescription()));
- map.put("rcVersion", String.valueOf(textbookLibrary.getRcVersion()));
- map.put("rcDescription", String.valueOf(textbookLibrary.getRcDescription()));
- if (subscribe){
- map.put("attachments", String.format("%s;%s;%s", textbookLibrary.getQuant(), textbookLibrary.getIr(), textbookLibrary.getRc()));
- send(user, MessageCategory.TEXTBOOK_UPDATE_SUBSCRIBE, map, 0);
- }else{
- send(user, MessageCategory.TEXTBOOK_UPDATE, map, 0);
- }
- }
-
- public void sendLoginAbnormal(User user, UserAbnormal userAbnormal){
- Map<String, String> map = new HashMap<>();
- map.put("nickname", user.getNickname());
- map.put("ip", userAbnormal.getLoginIp());
- map.put("city", userAbnormal.getLoginCity());
- map.put("time", getTime(userAbnormal.getCreateTime()));
- send(user, MessageCategory.LOGIN_ABNORMAL, map, userAbnormal.getId());
- }
-
- public void sendPreviewNotice(User user, Course course, PreviewAssign previewAssign){
- Map<String, String> map = new HashMap<>();
- map.put("courseTitle", course.getTitle());
- map.put("title", previewAssign.getTitle());
- send(user, MessageCategory.PREVIEW_NOTICE, map, previewAssign.getId());
- }
-
- public void sendPayed(User user, UserOrder userOrder, List<UserOrderRecord> recordList){
- Map<String, String> map = new HashMap<>();
- List<UserOrderRecord> pList = recordList.stream().filter((checkout)-> checkout.getParentId() == 0).collect(Collectors.toList());
- map.put("number", String.valueOf(pList.size()));
- if(userOrder.getProductTypes().size() == 1){
- String productType = userOrder.getProductTypes().getString(1);
- UserOrderRecord one = pList.get(0);
- switch(ProductType.ValueOf(productType)){
- case SERVICE:
- ServiceKey key = ServiceKey.ValueOf(one.getService());
- map.put("title", key.title);
- map.put("expireDays", String.valueOf(one.getExpireDays()));
- map.put("useExpireDays", String.valueOf(one.getUseExpireDays()));
- switch(key){
- case VIP:
- send(user, MessageCategory.VIP_PAY, map, one.getId());
- break;
- case TEXTBOOK:
- send(user, MessageCategory.TEXTBOOK_PAY, map, one.getId());
- break;
- case QX_CAT:
- send(user, MessageCategory.QX_CAT_PAY, map, one.getId());
- break;
- default:
- return;
- }
- break;
- case DATA:
- CourseData data = courseDataService.get(one.getProductId());
- map.put("title", data.getTitle());
- if (pList.size() > 1){
- Collection dataIds = Transform.getIds(pList, UserOrderRecord.class, "productId");
- List<CourseData> courseDataList = courseDataService.select(dataIds);
- List<String> dataTitle = new ArrayList<>();
- for(CourseData c: courseDataList){
- dataTitle.add(c.getTitle());
- }
- map.put("titleJoin", String.join("”,“", dataTitle));
- send(user, MessageCategory.DATA_PAY_MULTI, map, userOrder.getId());
- }else{
- send(user, MessageCategory.DATA_PAY, map, userOrder.getId());
- }
- break;
- case COURSE:
- Course course = courseService.get(one.getProductId());
- map.put("title", course.getTitle());
- if (pList.size() > 1){
- Collection courseIds = Transform.getIds(pList, UserOrderRecord.class, "productId");
- List<Course> courseList = courseService.select(courseIds);
- List<String> courseTitle = new ArrayList<>();
- for(Course c: courseList){
- courseTitle.add(c.getTitle());
- }
- map.put("titleJoin", String.join("”,“", courseTitle));
- send(user, MessageCategory.COURSE_PAY_MULTI, map, userOrder.getId());
- }else{
- map.put("expireDays", String.valueOf(one.getExpireDays()));
- map.put("useExpireDays", String.valueOf(one.getUseExpireDays()));
- send(user, MessageCategory.COURSE_PAY, map, userOrder.getId());
- }
- break;
- case COURSE_PACKAGE:
- CoursePackage coursePackage = coursePackageService.get(one.getProductId());
- List<Course> courseList = courseService.select(coursePackage.getCourseIds());
- List<String> courseTitle = new ArrayList<>();
- for(Course c: courseList){
- courseTitle.add(c.getTitle());
- }
- map.put("titleJoin", String.join("”,“", courseTitle));
- map.put("number", String.valueOf(courseList.size()));
- map.put("title", courseList.get(0).getTitle());
- send(user, MessageCategory.COURSE_PAY_MULTI, map, userOrder.getId());
- break;
- default:
- return;
- }
- }else{
- List<String> titles = new ArrayList<>();
- List<UserOrderRecord> prService = recordList.stream().filter((row)-> row.getProductType().equals(ProductType.SERVICE.key)).collect(Collectors.toList());
- for(UserOrderRecord r : prService){
- ServiceKey key = ServiceKey.ValueOf(r.getService());
- titles.add(key.title);
- }
-
- List<UserOrderRecord> prPackage = recordList.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE_PACKAGE.key)).collect(Collectors.toList());
- Collection packageIds = Transform.getIds(prPackage, UserOrderRecord.class, "productId");
- List<CoursePackage> coursePackageList = coursePackageService.select(packageIds);
- List<Integer> courseExtendIds = new ArrayList<>();
- Map coursePackageMap = Transform.getMap(coursePackageList, CoursePackage.class, "id");
- for(UserOrderRecord r : prPackage){
- if (!coursePackageMap.containsKey(r.getProductId())) continue;
- CoursePackage coursePackage = (CoursePackage) coursePackageMap.get(r.getProductId());
- courseExtendIds.addAll(Arrays.stream(coursePackage.getCourseIds()).collect(Collectors.toList()));
- }
- List<Course> courseExtendList = courseService.select(courseExtendIds);
- Map courseExtendMap = Transform.getMap(courseExtendList, Course.class, "id");
- for(UserOrderRecord r: prPackage){
- if (!coursePackageMap.containsKey(r.getProductId())) continue;
- CoursePackage coursePackage = (CoursePackage) coursePackageMap.get(r.getProductId());
- for(Integer courseId : coursePackage.getCourseIds()){
- if (!courseExtendMap.containsKey(courseId)) continue;
- Course course = (Course) courseExtendMap.get(courseId);
- titles.add(course.getTitle());
- }
- }
-
- List<UserOrderRecord> prData = recordList.stream().filter((row)-> row.getProductType().equals(ProductType.DATA.key)).collect(Collectors.toList());
- Collection dataIds = Transform.getIds(prData, UserOrderRecord.class, "productId");
- List<CourseData> courseDataList = courseDataService.select(dataIds);
- Map courseDataMap = Transform.getMap(courseDataList, CourseData.class, "id");
- for(UserOrderRecord r: prData){
- if (courseDataMap.containsKey(r.getProductId())) continue;
- CourseData courseData = (CourseData) courseDataMap.get(r.getProductId());
- titles.add(courseData.getTitle());
- }
-
- List<UserOrderRecord> prCourse = recordList.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE.key)).collect(Collectors.toList());
- Collection courseIds = Transform.getIds(prCourse, UserOrderRecord.class, "productId");
- List<Course> courseList = courseService.select(courseIds);
- Map courseMap = Transform.getMap(courseList, Course.class, "id");
- for(UserOrderRecord r: prCourse){
- if (courseMap.containsKey(r.getProductId())) continue;
- Course course = (Course) courseMap.get(r.getProductId());
- titles.add(course.getTitle());
- }
- map.put("number", String.valueOf(titles.size()));
- map.put("title", titles.get(0));
- map.put("titleJoin", String.join("”,“", titles));
- send(user, MessageCategory.PAY_MULTI, map, userOrder.getId());
- }
-
- List<UserOrderRecord> gifts = recordList.stream().filter((checkout)-> checkout.getSource().equals(RecordSource.GIFT_COURSE.key)).collect(Collectors.toList());
- for(UserOrderRecord gift: gifts){
- Map<String, String> giftMap = new HashMap<>();
- ServiceKey key = ServiceKey.ValueOf(gift.getService());
- map.put("title", key.title);
-
- switch(key){
- case QX_CAT:
- map.put("link", MessageCategory.QX_CAT_PAY.link);
- map.put("linkTitle", MessageCategory.QX_CAT_PAY.linkTitle);
- break;
- case TEXTBOOK:
- map.put("link", MessageCategory.TEXTBOOK_PAY.link);
- map.put("linkTitle", MessageCategory.TEXTBOOK_PAY.linkTitle);
- break;
- }
- send(user, MessageCategory.COURSE_GIFT, giftMap, gift.getId());
- }
- }
-
- public void sendOpenExpire(User user, UserOrderRecord record, Integer days){
- Map<String, String> map = new HashMap<>();
- map.put("days", String.valueOf(days));
- map.put("expireDate", getDate(record.getEndTime()));
- map.put("nickname", user.getNickname());
- switch(ProductType.ValueOf(record.getProductType())){
- case SERVICE:
- ServiceKey key = ServiceKey.ValueOf(record.getService());
- map.put("title", key.title);
- switch(key){
- case TEXTBOOK:
- send(user, MessageCategory.TEXTBOOK_OPEN_EXPIRE, map, record.getId());
- break;
- case QX_CAT:
- send(user, MessageCategory.QX_CAT_OPEN_EXPIRE, map, record.getId());
- break;
- default:
- return;
- }
- break;
- case COURSE:
- Course course = courseService.get(record.getProductId());
- map.put("title", course.getTitle());
- send(user, MessageCategory.COURSE_OPEN_EXPIRE, map, record.getId());
- break;
- default:
- return;
- }
- }
-
- public void sendUseExpire(User user, UserOrderRecord record, Integer days){
- Map<String, String> map = new HashMap<>();
- map.put("days", String.valueOf(days));
- map.put("expireDate", getDate(record.getUseEndTime()));
- map.put("nickname", user.getNickname());
- switch(ProductType.ValueOf(record.getProductType())){
- case SERVICE:
- ServiceKey key = ServiceKey.ValueOf(record.getService());
- map.put("title", key.title);
- switch(key){
- case VIP:
- send(user, MessageCategory.VIP_USE_EXPIRE, map, record.getId());
- break;
- case TEXTBOOK:
- send(user, MessageCategory.TEXTBOOK_USE_EXPIRE, map, record.getId());
- break;
- case QX_CAT:
- send(user, MessageCategory.QX_CAT_USE_EXPIRE, map, record.getId());
- break;
- default:
- return;
- }
- break;
- case COURSE:
- Course course = courseService.get(record.getProductId());
- map.put("title", course.getTitle());
- send(user, MessageCategory.COURSE_USE_EXPIRE, map, record.getId());
- break;
- default:
- return;
- }
- }
-
- public void sendDataUpdate(User user, CourseData data, CourseDataHistory history, Boolean subscribe){
- Map<String, String> map = new HashMap<>();
- map.put("title", data.getTitle());
- map.put("nickname", user.getNickname());
- map.put("email", user.getEmail());
- map.put("version", history.getVersion());
- map.put("description", String.format("位置:%s, 原内容:%s, 更改为:%s", history.getPosition(), history.getOriginContent(), history.getContent()));
- switch(DataType.ValueOf(data.getDataType())){
- case PAPER:
- send(user, MessageCategory.DATA_UPDATE_PAPER, map, data.getId());
- break;
- case ELECTRON:
- if (subscribe){
- map.put("attachment", data.getResource());
- send(user, MessageCategory.DATA_UPDATE_SUBSCRIBE, map, data.getId());
- }else{
- send(user, MessageCategory.DATA_UPDATE_BASE, map, data.getId());
- }
- break;
- }
- }
-
- public void sendAskQuestion(User user,UserAskQuestion userAskQuestion){
-
- if (user.getIsCourse() == 0) return;
- Map<String, String> map = new HashMap<>();
- map.put("content", userAskQuestion.getContent());
- map.put("date", getDate(userAskQuestion.getCreateTime()));
- QuestionNo questionNo = questionNoService.get(userAskQuestion.getQuestionNoId());
- map.put("title", questionNo.getTitle());
- switch(AnswerStatus.ValueOf(userAskQuestion.getAnswerStatus())){
- case ANSWER:
- if(userAskQuestion.getShowStatus() > 0){
-
- String link = replaceLink(MessageCategory.ASK_QUESTION_SPECIAL.link, "id", userAskQuestion.getId());
- link = replaceLink(link, "questionNoId", userAskQuestion.getQuestionNoId());
- map.put("link", link);
- map.put("linkTitle", MessageCategory.ASK_QUESTION_SPECIAL.linkTitle);
- send(user, MessageCategory.ASK_QUESTION_SPECIAL, map, userAskQuestion.getId());
- }else{
- send(user, MessageCategory.ASK_QUESTION_HANDLE, map, userAskQuestion.getId());
- }
- break;
- case IGNORE:
- send(user, MessageCategory.ASK_QUESTION_IGNORE, map, userAskQuestion.getId());
- break;
- default:
- }
- }
-
- public void sendAskCourse(User user, UserAskCourse userAskCourse){
-
- if (user.getIsCourse() == 0) return;
- Map<String, String> map = new HashMap<>();
- map.put("content", userAskCourse.getContent());
- map.put("date", getDate(userAskCourse.getCreateTime()));
- Course course = courseService.get(userAskCourse.getCourseId());
- map.put("title", course.getTitle());
- CourseNo courseNo = courseNoService.get(userAskCourse.getCourseNoId());
- map.put("no", String.valueOf(courseNo.getNo()));
- switch(AnswerStatus.ValueOf(userAskCourse.getAnswerStatus())){
- case ANSWER:
- if(userAskCourse.getShowStatus() > 0){
-
- String link = replaceLink(MessageCategory.ASK_COURSE_SPECIAL.link, "id", userAskCourse.getId());
- link = replaceLink(link, "courseId", userAskCourse.getCourseId());
- link = replaceLink(link, "courseNoId", userAskCourse.getCourseNoId());
- map.put("link", link);
- map.put("linkTitle", MessageCategory.ASK_COURSE_SPECIAL.linkTitle);
- send(user, MessageCategory.ASK_COURSE_SPECIAL, map, userAskCourse.getId());
- }else{
- send(user, MessageCategory.ASK_COURSE_HANDLE, map, userAskCourse.getId());
- }
- break;
- case IGNORE:
- send(user, MessageCategory.ASK_COURSE_IGNORE, map, userAskCourse.getId());
- break;
- default:
- }
- }
-
- public void sendFaqCallback(User user, Faq faq){
- Map<String, String> map = new HashMap<>();
- map.put("answer", faq.getAnswer());
- map.put("content", faq.getContent());
- String channel = "";
- switch(faq.getChannel()){
- case "course-video":
- channel="在线课程";
- break;
- case "course-vs":
- channel = "1v1课程";
- break;
- case "course-package":
- channel = "课程套餐";
- break;
- case "course_data":
- channel = "资料";
- break;
- case "getready":
- channel = "GetReady";
- break;
- case "examination-cat":
- channel = "模考Cat";
- break;
- case "examination-base":
- channel = "模考";
- break;
- case "textbook":
- channel = "数学机经";
- break;
- case "library":
- channel = "换库表";
- break;
- case "course-index":
- channel = "课堂";
- break;
- case "course-video_index":
- channel= "在线课程";
- break;
- case "course-vs_index":
- channel = "1v1课程";
- break;
- case "course-package_index":
- channel="课程套餐";
- break;
- }
- map.put("channel", channel);
- switch(AnswerStatus.ValueOf(faq.getAnswerStatus())){
- case ANSWER:
- send(user, MessageCategory.FAQ_HANDLE, map, faq.getId());
- break;
- case IGNORE:
- send(user, MessageCategory.FAQ_IGNORE, map, faq.getId());
- break;
- default:
- }
- }
-
- public void sendFeedbackError(User user, UserFeedbackError feedbackError, UserOrderRecord record){
- Map<String, String> map = new HashMap<>();
- map.put("time", getTime(feedbackError.getCreateTime()));
- map.put("content", feedbackError.getContent());
- map.put("title", feedbackError.getTitle());
- if (feedbackError.getModule().equals(FeedbackModule.DATA.key)){
- String[] p = feedbackError.getPosition().split(",");
- map.put("position", String.format("第%s页第%s行", p[0], p[1]));
- }else{
- map.put("position", AskTarget.ValueOf(feedbackError.getPosition()).title);
- }
- map.put("originContent", feedbackError.getOriginContent());
- if (record != null){
- map.put("useExpireDays", String.valueOf(record.getUseExpireDays()));
- }
- switch(AnswerStatus.ValueOf(feedbackError.getStatus())){
- case ANSWER:
- send(user, MessageCategory.FEEDBACK_ERROR_HANDLE, map, feedbackError.getId());
- break;
- case IGNORE:
- send(user, MessageCategory.FEEDBACK_ERROR_IGNORE, map, feedbackError.getId());
- break;
- case NOHANDLE:
- send(user, MessageCategory.FEEDBACK_ERROR_NOHANDLE, map, feedbackError.getId());
- break;
- default:
- }
- }
-
- public void sendTextbookFeedback(User user, UserTextbookFeedback textbookFeedback, UserOrderRecord record){
- Map<String, String> map = new HashMap<>();
- map.put("time", getTime(textbookFeedback.getCreateTime()));
- map.put("content", textbookFeedback.getContent());
- map.put("subject", QuestionSubject.ValueOf(textbookFeedback.getQuestionSubject()).title);
- map.put("no", String.valueOf(textbookFeedback.getNo()));
- FeedbackTarget target = FeedbackTarget.ValueOf(textbookFeedback.getTarget());
- map.put("target", target.title);
- map.put("result", target.result);
- map.put("handle", target.handle);
- if (record != null){
- map.put("useExpireDays", String.valueOf(record.getUseExpireDays()));
- }
- switch(AnswerStatus.ValueOf(textbookFeedback.getStatus())){
- case ANSWER:
- send(user, MessageCategory.TEXTBOOK_FEEDBACK_HANDLE, map, textbookFeedback.getId());
- break;
- case IGNORE:
- send(user, MessageCategory.TEXTBOOK_FEEDBACK_IGNORE, map, textbookFeedback.getId());
- break;
- case NOHANDLE:
- send(user, MessageCategory.TEXTBOOK_FEEDBACK_NOHANDLE, map, textbookFeedback.getId());
- break;
- default:
- }
- }
-
- public void sendRegister(User user){
- Map<String, String> map = new HashMap<>();
- map.put("mobile", user.getMobile());
- map.put("email", user.getEmail());
- send(user, MessageCategory.REGISTER, map, 0);
- }
-
- public void sendEmailChange(User user, String newEmail){
- if(user.getEmail() != null && !user.getEmail().isEmpty()){
- Map<String, String> unbindMap = new HashMap<>();
- unbindMap.put("nickname", user.getNickname());
- unbindMap.put("emails", user.getEmail());
- String[] emails = newEmail.split("@");
- emails[0] = "****"+emails[0].substring(emails[0].length() - 3);
- unbindMap.put("email", String.join("@", emails));
- send(user, MessageCategory.EMAIL_UNNBIND, unbindMap, 0);
- }
- Map<String, String> changeMap = new HashMap<>();
- changeMap.put("nickname", user.getNickname());
- changeMap.put("emails", newEmail);
- send(user, MessageCategory.EMAIL_CHANGE, changeMap, 0);
- }
- private String replaceBody(String body, Map<String, String> params){
- if (body == null) return body;
- for(String key :params.keySet()){
- body = body.replaceAll("\\{"+key+"}", params.getOrDefault(key, ""));
- }
- return body;
- }
- private String replaceLink(String link, String p, Integer relationId){
- return link.replace("\\{"+p+"}", String.valueOf(relationId));
- }
- private String makeLink(String link, String linkTitle, Integer relationId){
- return String.format("<a href=\"%s\" target=\"_blank\">%s</a>", pcUrl + replaceLink(link, "id",relationId), linkTitle);
- }
- private String getDate(Date date){
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
- return sdf.format(date);
- }
- private String getTime(Date time){
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
- return sdf.format(time);
- }
- }
|