From ef9d72c9d8f2aa6eaeb1525f778ce1004aa8a122 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 6 Sep 2019 20:49:15 +0800 Subject: [PATCH] =?UTF-8?q?gm=E5=8F=91=E9=80=81=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jmfy/controller/MailController.java | 35 +++ src/main/java/com/jmfy/dao/MailDao.java | 11 + .../java/com/jmfy/dao/impl/MailDaoImpl.java | 70 +++++ .../com/jmfy/model/MailPersonalCache.java | 54 ++++ .../java/com/jmfy/model/PersonalMail.java | 13 + src/main/java/com/jmfy/model/ServerMail.java | 104 +++++++ src/main/java/com/jmfy/model/SystemMail.java | 155 ++++++++++ .../jmfy/redisProperties/RedisUserKey.java | 2 + src/main/java/com/jmfy/utils/Connect.java | 16 +- .../static/html/sendPersonalMail.html | 289 ++++++++++++++++++ .../resources/static/html/sendSysMail.html | 21 +- src/main/resources/templates/index.html | 26 +- 12 files changed, 774 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/jmfy/controller/MailController.java create mode 100644 src/main/java/com/jmfy/dao/MailDao.java create mode 100644 src/main/java/com/jmfy/dao/impl/MailDaoImpl.java create mode 100644 src/main/java/com/jmfy/model/MailPersonalCache.java create mode 100644 src/main/java/com/jmfy/model/PersonalMail.java create mode 100644 src/main/java/com/jmfy/model/ServerMail.java create mode 100644 src/main/java/com/jmfy/model/SystemMail.java create mode 100644 src/main/resources/static/html/sendPersonalMail.html diff --git a/src/main/java/com/jmfy/controller/MailController.java b/src/main/java/com/jmfy/controller/MailController.java new file mode 100644 index 0000000..f76b39a --- /dev/null +++ b/src/main/java/com/jmfy/controller/MailController.java @@ -0,0 +1,35 @@ +package com.jmfy.controller; + + +import com.jmfy.dao.MailDao; +import com.jmfy.model.Constant; +import com.jmfy.model.PersonalMail; +import com.jmfy.model.ServerMail; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class MailController { + + @Autowired + public MailDao mailDao; + + + + @PostMapping(value = "/sendSysMail") + public @ResponseBody + int sendSysMail(@RequestBody ServerMail mail) throws Exception { + mailDao.sendSysMail(mail); + return 0; + } + @PostMapping(value = "/sendPersonalMail") + public @ResponseBody + int sendPersonalMail(@RequestBody PersonalMail mail){ + mailDao.sendPersonalMail(mail); + return 0; + } +} diff --git a/src/main/java/com/jmfy/dao/MailDao.java b/src/main/java/com/jmfy/dao/MailDao.java new file mode 100644 index 0000000..2182121 --- /dev/null +++ b/src/main/java/com/jmfy/dao/MailDao.java @@ -0,0 +1,11 @@ +package com.jmfy.dao; + +import com.jmfy.model.PersonalMail; +import com.jmfy.model.ServerMail; + +public interface MailDao { + + void sendSysMail(ServerMail mail) throws Exception; + + void sendPersonalMail(PersonalMail mail); +} diff --git a/src/main/java/com/jmfy/dao/impl/MailDaoImpl.java b/src/main/java/com/jmfy/dao/impl/MailDaoImpl.java new file mode 100644 index 0000000..2b2f924 --- /dev/null +++ b/src/main/java/com/jmfy/dao/impl/MailDaoImpl.java @@ -0,0 +1,70 @@ +package com.jmfy.dao.impl; + +import com.jmfy.dao.MailDao; +import com.jmfy.model.*; +import com.jmfy.redisProperties.RedisUserKey; +import com.jmfy.utils.Connect; +import com.jmfy.utils.MongoName; +import com.jmfy.utils.RedisUtil; +import com.mongodb.WriteResult; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.data.redis.cache.RedisCacheKey; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class MailDaoImpl implements MailDao { + @Resource + private Connect connect; + public static final String colon = ":"; + @Override + public void sendSysMail(ServerMail mail) throws Exception { + String mongoKey = "systemMailManager.systemMailMap."+mail.getVersion(); + String dbName = MongoName.getMongoDBName(mail.getServerId()); + MongoTemplate mongoTemplate = connect.getMongoTemplete(dbName); + + Query query = new Query(); + SystemMail sysMail = new SystemMail(); + sysMail.setId(mail.getVersion()); + sysMail.setContent(mail.getMailContent()); + sysMail.setMongoKey(mongoKey); + sysMail.setTitle(mail.getMailTitle()); + StringBuilder sb = new StringBuilder(); + for(int i = 0 ; i itemIds; + + private List itemNums; + + private String sendTime; + + private int version; + + // "mailTitle": mailTitle, + // "mailContent": mailContent, + // "isAttach": isAttach, + // "itemIds[]": itemIds, + // "itemNums[]": itemNums, + // "itemTypes[]": itemTypes, + // "sendTime": sendTime, + // "playerRTime": playerRTime, + // "effectTime": effectTime, + // "version": version + public int getServerId() { + return serverId; + } + + public void setServerId(int serverId) { + this.serverId = serverId; + } + + public String getMailTitle() { + return mailTitle; + } + + public String getMailContent() { + return mailContent; + } + + public int isAttach() { + return isAttach; + } + + public void setMailTitle(String mailTitle) { + this.mailTitle = mailTitle; + } + + public void setMailContent(String mailContent) { + this.mailContent = mailContent; + } + + public void setAttach(int attach) { + this.isAttach = attach; + } + + public int getIsAttach() { + return isAttach; + } + + public String getSendTime() { + return sendTime; + } + + public void setIsAttach(int isAttach) { + this.isAttach = isAttach; + } + + public void setSendTime(String sendTime) { + this.sendTime = sendTime; + } + + public List getItemIds() { + return itemIds; + } + + public void setItemIds(List itemIds) { + this.itemIds = itemIds; + } + + public List getItemNums() { + return itemNums; + } + + public void setItemNums(List itemNums) { + this.itemNums = itemNums; + } + + public int getVersion() { + return version; + } + + public void setVersion(int version) { + this.version = version; + } +} diff --git a/src/main/java/com/jmfy/model/SystemMail.java b/src/main/java/com/jmfy/model/SystemMail.java new file mode 100644 index 0000000..8e60a61 --- /dev/null +++ b/src/main/java/com/jmfy/model/SystemMail.java @@ -0,0 +1,155 @@ +package com.jmfy.model; + +import java.util.ArrayList; +import java.util.List; + +public class SystemMail { + private int _id ; + private String title; //邮件标题 + + private List userList; //邮件发送列表 若为空,则全服发送 + + private String content; + + private int sendTime; + + private String reward; //奖励 + + private int effectiveTime; // 秒 + + private String name ; // 发送者 + + /** + * 用户注册截止时间 0 : 所有用户时间 + */ + private long registerEndTime; + + /** + * 版本号以,分割,用于对指定版本前端发送邮件,为0则是全部版本 + */ + private String version = "0"; + + private int rootId; + + private String mongoKey; + + public SystemMail(){ + this.name = "sys"; + this.version = "0"; + this.userList = new ArrayList<>(); + + } + + public SystemMail(int id,String title,List userList,String content,int sendTime, String reward, + int effectiveTime,String name,long registerEndTime,String version){ + this._id = id; + this.title = title; + this.userList = userList; + this.content = content; + this.sendTime = sendTime; + this.reward = reward; + this.effectiveTime = effectiveTime; + this.name = name; + this.registerEndTime = registerEndTime; + this.version = version; + } + public int getId() { + return _id; + } + + public String getTitle() { + return title; + } + + public List getUserList() { + return userList; + } + + public String getContent() { + return content; + } + + public int getSendTime() { + return sendTime; + } + + public String getReward() { + return reward; + } + + public int getEffectiveTime() { + return effectiveTime; + } + + public String getName() { + return name; + } + + public long getRegisterEndTime() { + return registerEndTime; + } + + public String getVersion() { + return version; + } + + public int get_id() { + return _id; + } + + public int getRootId() { + return rootId; + } + + public String getMongoKey() { + return mongoKey; + } + + public void setId(int id) { + this._id = id; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setUserList(List userList) { + this.userList = userList; + } + + public void setContent(String content) { + this.content = content; + } + + public void setSendTime(int sendTime) { + this.sendTime = sendTime; + } + + public void setReward(String reward) { + this.reward = reward; + } + + public void setEffectiveTime(int effectiveTime) { + this.effectiveTime = effectiveTime; + } + + public void setName(String name) { + this.name = name; + } + + public void setRegisterEndTime(long registerEndTime) { + this.registerEndTime = registerEndTime; + } + + public void setVersion(String version) { + this.version = version; + } + + public void setRootId(int rootId) { + this.rootId = rootId; + } + + public void setMongoKey(String mongoKey) { + this.mongoKey = mongoKey; + } +} diff --git a/src/main/java/com/jmfy/redisProperties/RedisUserKey.java b/src/main/java/com/jmfy/redisProperties/RedisUserKey.java index d8190af..4a4172f 100644 --- a/src/main/java/com/jmfy/redisProperties/RedisUserKey.java +++ b/src/main/java/com/jmfy/redisProperties/RedisUserKey.java @@ -16,6 +16,8 @@ public class RedisUserKey { public final static String SERVER_OPEN_TIME_KEY = "Server_Open_Time_Key"; //问卷调查 public static final String QUESTION_FROMBACK = "QUESTION_FROMBACK"; + public static final String READY_TO_USER_MAIL = "READY_TO_USER_MAIL"; + } diff --git a/src/main/java/com/jmfy/utils/Connect.java b/src/main/java/com/jmfy/utils/Connect.java index 19b6020..59304b2 100644 --- a/src/main/java/com/jmfy/utils/Connect.java +++ b/src/main/java/com/jmfy/utils/Connect.java @@ -6,7 +6,14 @@ import com.mongodb.client.MongoIterable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.SimpleMongoDbFactory; +import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver; +import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper; +import org.springframework.data.mongodb.core.convert.MappingMongoConverter; +import org.springframework.data.mongodb.core.convert.MongoConverter; +import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @@ -28,7 +35,8 @@ public class Connect { MongoIterable databaseNames = mongoClient.listDatabaseNames(); for (String dbName : databaseNames) { LOGGER.info("gameMongodb-->dbName={}", dbName); - MongoTemplate mongoTemplate = new MongoTemplate(mongoClient, dbName); + MongoDbFactory mongoDbFactory = (new SimpleMongoDbFactory(mongoClient, dbName)); + MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter(mongoDbFactory)); oldMongomaps.put(dbName, mongoTemplate); } } @@ -40,5 +48,11 @@ public class Connect { MongoTemplate mongoTemplate = oldMongomaps.get(dbName); return mongoTemplate; } + public MappingMongoConverter mappingMongoConverter( MongoDbFactory mongoDbFactory) { + DefaultDbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory); + MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, new MongoMappingContext()); + converter.setTypeMapper(new DefaultMongoTypeMapper(null)); + return converter; + } } diff --git a/src/main/resources/static/html/sendPersonalMail.html b/src/main/resources/static/html/sendPersonalMail.html new file mode 100644 index 0000000..56776a6 --- /dev/null +++ b/src/main/resources/static/html/sendPersonalMail.html @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + 基本设置 + + + +
+
+
+
+ 单人、多人邮件 +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ +
+
+ + + + + + + +
+ +
+
+
+ 物品id: + 物品数量: + 物品类型: + + + + +
+
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/html/sendSysMail.html b/src/main/resources/static/html/sendSysMail.html index 095a974..5a00937 100644 --- a/src/main/resources/static/html/sendSysMail.html +++ b/src/main/resources/static/html/sendSysMail.html @@ -249,21 +249,26 @@ function sendSysMail() { } $.ajax({ type: "POST", - data: { + data: + JSON.stringify({ "serverId": serverId, "mailTitle": mailTitle, "mailContent": mailContent, "isAttach": isAttach, - "itemIds[]": itemIds, - "itemNums[]": itemNums, - "itemTypes[]": itemTypes, + "itemIds": itemIds, + "itemNums": itemNums, + // "itemTypes[]": itemTypes, "sendTime": sendTime, - "playerRTime": playerRTime, - "effectTime": effectTime, + // "playerRTime": playerRTime, + // "effectTime": effectTime, "version": version - }, + }) + , url: "/sendSysMail", - success: function (data) { + dataType: "json", + contentType:'application/json', + + success: function (data) { if (data == 0) { layer.msg('发送全服邮件成功!', {icon: 6, time: 1000}); } diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 92291f8..5985706 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -78,20 +78,20 @@ - - - - - - - - +
+
+ +
+