EmailController.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. using Lottomat.Application.Busines.PublicInfoManage;
  2. using Lottomat.Application.Code;
  3. using Lottomat.Application.Entity.PublicInfoManage;
  4. using Lottomat.Util;
  5. using Lottomat.Util.Extension;
  6. using Lottomat.Util.WebControl;
  7. using System.Web.Mvc;
  8. using Lottomat.Utils.Date;
  9. namespace Lottomat.Application.Admin.Areas.PublicInfoManage.Controllers
  10. {
  11. /// <summary>
  12. /// 版 本 1.0
  13. /// Copyright (c) 2016-2017
  14. /// 创建人:赵轶
  15. /// 日 期:2015.12.8 11:31
  16. /// 描 述:邮件中心
  17. /// </summary>
  18. public class EmailController : MvcControllerBase
  19. {
  20. private EmailCategoryBLL emailCategoryBLL = new EmailCategoryBLL();
  21. private EmailContentBLL emailContentBLL = new EmailContentBLL();
  22. #region 视图功能
  23. /// <summary>
  24. /// 邮件中心
  25. /// </summary>
  26. /// <returns></returns>
  27. [HttpGet]
  28. [HandlerAuthorize(PermissionMode.Enforce)]
  29. public ActionResult Index()
  30. {
  31. return View();
  32. }
  33. /// <summary>
  34. /// 邮件分类表单
  35. /// </summary>
  36. /// <returns></returns>
  37. [HttpGet]
  38. public ActionResult EmailCategoryForm()
  39. {
  40. return View();
  41. }
  42. /// <summary>
  43. /// 写邮件
  44. /// </summary>
  45. /// <returns></returns>
  46. [HttpGet]
  47. public ActionResult EmailWriteForm()
  48. {
  49. return View();
  50. }
  51. /// <summary>
  52. /// 查看邮件
  53. /// </summary>
  54. /// <returns></returns>
  55. [HttpGet]
  56. public ActionResult EmailLookDetail()
  57. {
  58. string keyValue = Request["keyValue"];
  59. EmailAddresseeEntity emailAddresseeEntity = emailContentBLL.GetAddresseeEntity(keyValue);
  60. if (emailAddresseeEntity != null)
  61. {
  62. ViewBag.contentId = emailAddresseeEntity.ContentId;
  63. }
  64. else
  65. {
  66. ViewBag.contentId = keyValue;
  67. keyValue = "";
  68. }
  69. ViewBag.keyValue = keyValue;
  70. return View();
  71. }
  72. #endregion
  73. #region 获取数据
  74. /// <summary>
  75. /// 分类列表
  76. /// </summary>
  77. /// <returns>返回列表Json</returns>
  78. [HttpGet]
  79. public ActionResult GetCategoryListJson()
  80. {
  81. string UserId = OperatorProvider.Provider.Current().UserId;
  82. var data = emailCategoryBLL.GetList(UserId);
  83. return ToJsonResult(data);
  84. }
  85. /// <summary>
  86. /// 分类实体
  87. /// </summary>
  88. /// <param name="keyValue">主键值</param>
  89. /// <returns>返回对象Json</returns>
  90. [HttpGet]
  91. public ActionResult GetCategoryFormJson(string keyValue)
  92. {
  93. var data = emailCategoryBLL.GetEntity(keyValue);
  94. return ToJsonResult(data);
  95. }
  96. /// <summary>
  97. /// 统计邮箱数量(未读、星标、草稿、回收、收件、已发)
  98. /// </summary>
  99. /// <returns>返回数量</returns>
  100. public ActionResult GetMailCount()
  101. {
  102. string userId = OperatorProvider.Provider.Current().UserId;
  103. var unreadcount = emailContentBLL.GetUnreadMailCount(userId);
  104. var asteriskcount = emailContentBLL.GetAsteriskMailCount(userId);
  105. var sentcount = emailContentBLL.GetSentMailCount(userId);
  106. var draftcount = emailContentBLL.GetDraftMailCount(userId);
  107. var recyclecount = emailContentBLL.GetRecycleMailCount(userId);
  108. var addresseecount = emailContentBLL.GetAddresseeMailCount(userId);
  109. var count = new
  110. {
  111. unread = unreadcount,
  112. asterisk = asteriskcount,
  113. draft = draftcount,
  114. recycle = recyclecount,
  115. addressee = addresseecount,
  116. sent = sentcount,
  117. };
  118. return Content(count.ToJson());
  119. }
  120. /// <summary>
  121. /// 未读邮件列表
  122. /// </summary>
  123. /// <param name="pagination">分页参数</param>
  124. /// <param name="keyword">关键字</param>
  125. /// <returns>返回列表Json</returns>
  126. public ActionResult GetUnreadMailJson(Pagination pagination, string keyword)
  127. {
  128. var watch = CommonHelper.TimerStart();
  129. string userId = OperatorProvider.Provider.Current().UserId;
  130. var data = emailContentBLL.GetUnreadMail(pagination, userId, keyword);
  131. var JsonData = new
  132. {
  133. rows = data,
  134. total = pagination.total,
  135. page = pagination.page,
  136. records = pagination.records,
  137. costtime = CommonHelper.TimerEnd(watch)
  138. };
  139. return Content(JsonData.ToJson());
  140. }
  141. /// <summary>
  142. /// 星标邮件列表
  143. /// </summary>
  144. /// <param name="pagination">分页参数</param>
  145. /// <param name="keyword">关键字</param>
  146. /// <returns>返回列表Json</returns>
  147. public ActionResult GetAsteriskMailJson(Pagination pagination, string keyword)
  148. {
  149. var watch = CommonHelper.TimerStart();
  150. string userId = OperatorProvider.Provider.Current().UserId;
  151. var data = emailContentBLL.GetAsteriskMail(pagination, userId, keyword);
  152. var JsonData = new
  153. {
  154. rows = data,
  155. total = pagination.total,
  156. page = pagination.page,
  157. records = pagination.records,
  158. costtime = CommonHelper.TimerEnd(watch)
  159. };
  160. return Content(JsonData.ToJson());
  161. }
  162. /// <summary>
  163. /// 草稿箱列表
  164. /// </summary>
  165. /// <param name="pagination">分页参数</param>
  166. /// <param name="keyword">关键字</param>
  167. /// <returns>返回列表Json</returns>
  168. public ActionResult GetDraftMailJson(Pagination pagination, string keyword)
  169. {
  170. var watch = CommonHelper.TimerStart();
  171. string userId = OperatorProvider.Provider.Current().UserId;
  172. var data = emailContentBLL.GetDraftMail(pagination, userId, keyword);
  173. var JsonData = new
  174. {
  175. rows = data,
  176. total = pagination.total,
  177. page = pagination.page,
  178. records = pagination.records,
  179. costtime = CommonHelper.TimerEnd(watch)
  180. };
  181. return Content(JsonData.ToJson());
  182. }
  183. /// <summary>
  184. /// 回收箱列表
  185. /// </summary>
  186. /// <param name="pagination">分页参数</param>
  187. /// <param name="keyword">关键字</param>
  188. /// <returns>返回列表Json</returns>
  189. public ActionResult GetRecycleMailJson(Pagination pagination, string keyword)
  190. {
  191. var watch = CommonHelper.TimerStart();
  192. string userId = OperatorProvider.Provider.Current().UserId;
  193. var data = emailContentBLL.GetRecycleMail(pagination, userId, keyword);
  194. var JsonData = new
  195. {
  196. rows = data,
  197. total = pagination.total,
  198. page = pagination.page,
  199. records = pagination.records,
  200. costtime = CommonHelper.TimerEnd(watch)
  201. };
  202. return Content(JsonData.ToJson());
  203. }
  204. /// <summary>
  205. /// 收件箱列表
  206. /// </summary>
  207. /// <param name="pagination">分页参数</param>
  208. /// <param name="keyword">关键字</param>
  209. /// <returns>返回列表Json</returns>
  210. public ActionResult GetAddresseeMailJson(Pagination pagination, string keyword)
  211. {
  212. var watch = CommonHelper.TimerStart();
  213. string userId = OperatorProvider.Provider.Current().UserId;
  214. var data = emailContentBLL.GetAddresseeMail(pagination, userId, keyword);
  215. var JsonData = new
  216. {
  217. rows = data,
  218. total = pagination.total,
  219. page = pagination.page,
  220. records = pagination.records,
  221. costtime = CommonHelper.TimerEnd(watch)
  222. };
  223. return Content(JsonData.ToJson());
  224. }
  225. /// <summary>
  226. /// 已发送列表
  227. /// </summary>
  228. /// <param name="pagination">分页参数</param>
  229. /// <param name="keyword">关键字</param>
  230. /// <returns>返回列表Json</returns>
  231. public ActionResult GetSentMailJson(Pagination pagination, string keyword)
  232. {
  233. var watch = CommonHelper.TimerStart();
  234. string userId = OperatorProvider.Provider.Current().UserId;
  235. var data = emailContentBLL.GetSentMail(pagination, userId, keyword);
  236. var JsonData = new
  237. {
  238. rows = data,
  239. total = pagination.total,
  240. page = pagination.page,
  241. records = pagination.records,
  242. costtime = CommonHelper.TimerEnd(watch)
  243. };
  244. return Content(JsonData.ToJson());
  245. }
  246. /// <summary>
  247. /// 邮件实体
  248. /// </summary>
  249. /// <param name="keyValue">主键值</param>
  250. /// <returns>返回对象Json</returns>
  251. [HttpGet]
  252. public ActionResult GetEmailFormJson(string keyValue)
  253. {
  254. var data = emailContentBLL.GetEntity(keyValue);
  255. string strJson = data.ToJson();
  256. strJson = strJson.Insert(1, "\"SenderTimeName\":\"" + DateTimeHelper.GetChineseDateTime(data.SenderTime.ToDate()) + "\",");
  257. return Content(strJson);
  258. }
  259. #endregion
  260. #region 提交数据
  261. /// <summary>
  262. /// 删除分类
  263. /// </summary>
  264. /// <param name="keyValue">主键值</param>
  265. /// <returns></returns>
  266. [HttpPost]
  267. [ValidateAntiForgeryToken]
  268. [AjaxOnly]
  269. public ActionResult RemoveCategoryForm(string keyValue)
  270. {
  271. emailCategoryBLL.RemoveForm(keyValue);
  272. return Success("删除成功。");
  273. }
  274. /// <summary>
  275. /// 保存分类表单(新增、修改)
  276. /// </summary>
  277. /// <param name="keyValue">主键值</param>
  278. /// <param name="emailCategoryEntity">分类实体</param>
  279. /// <returns></returns>
  280. [HttpPost]
  281. [ValidateAntiForgeryToken]
  282. [AjaxOnly]
  283. public ActionResult SaveCategoryForm(string keyValue, EmailCategoryEntity emailCategoryEntity)
  284. {
  285. emailCategoryBLL.SaveForm(keyValue, emailCategoryEntity);
  286. return Success("操作成功。");
  287. }
  288. /// <summary>
  289. /// 删除邮件
  290. /// </summary>
  291. /// <param name="keyValue">主键值</param>
  292. /// <param name="emailType">邮件类型:unreadMail starredMail draftMail recycleMail addresseeMail sendMail</param>
  293. /// <returns></returns>
  294. [HttpPost]
  295. [ValidateAntiForgeryToken]
  296. [AjaxOnly]
  297. [HandlerAuthorize(PermissionMode.Enforce)]
  298. public ActionResult RemoveEmailForm(string keyValue, string emailType)
  299. {
  300. emailContentBLL.RemoveForm(keyValue, emailType);
  301. return Success("删除成功。");
  302. }
  303. /// <summary>
  304. /// 彻底删除邮件
  305. /// </summary>
  306. /// <param name="keyValue">主键值</param>
  307. /// <param name="emailType">邮件类型:unreadMail starredMail draftMail recycleMail addresseeMail sendMail</param>
  308. /// <returns></returns>
  309. [HttpPost]
  310. [ValidateAntiForgeryToken]
  311. [AjaxOnly]
  312. [HandlerAuthorize(PermissionMode.Enforce)]
  313. public ActionResult ThoroughRemoveEmailForm(string keyValue, string emailType)
  314. {
  315. emailContentBLL.ThoroughRemoveForm(keyValue, emailType);
  316. return Success("删除成功。");
  317. }
  318. /// <summary>
  319. /// 保存写邮件表单(发送、草稿、编辑)
  320. /// </summary>
  321. /// <param name="keyValue">主键值</param>
  322. /// <param name="emailContentEntity">邮件信息实体</param>
  323. /// <param name="addresssIds">收件人</param>
  324. /// <param name="copysendIds">抄送人</param>
  325. /// <param name="bccsendIds">密送人</param>
  326. /// <returns></returns>
  327. [HttpPost]
  328. [AjaxOnly]
  329. [ValidateInput(false)]
  330. public ActionResult SaveEmailForm(string keyValue, EmailContentEntity emailContentEntity, string addresssIds, string copysendIds, string bccsendIds)
  331. {
  332. emailContentBLL.SaveForm(keyValue, emailContentEntity, addresssIds, copysendIds, bccsendIds);
  333. if (emailContentEntity.SendState == 1)
  334. {
  335. return Success("邮件发送成功。");
  336. }
  337. else
  338. {
  339. return Success("存入草稿成功。");
  340. }
  341. }
  342. /// <summary>
  343. /// 设置邮件已读/未读
  344. /// </summary>
  345. /// <param name="keyValue">主键值</param>
  346. /// <param name="IsRead">是否已读:0-未读1-已读</param>
  347. /// <returns></returns>
  348. [HttpPost]
  349. [AjaxOnly]
  350. public ActionResult ReadEmail(string keyValue, int IsRead = 1)
  351. {
  352. emailContentBLL.ReadEmail(keyValue, IsRead);
  353. return Success("操作成功。");
  354. }
  355. /// <summary>
  356. /// 设置邮件星标/取消星标
  357. /// </summary>
  358. /// <param name="keyValue">主键值</param>
  359. /// <param name="asterisk">星标:0-取消星标1-星标</param>
  360. /// <returns></returns>
  361. [HttpPost]
  362. [AjaxOnly]
  363. public ActionResult SteriskEmail(string keyValue, int asterisk = 1)
  364. {
  365. emailContentBLL.SteriskEmail(keyValue, asterisk);
  366. return Success("操作成功。");
  367. }
  368. #endregion
  369. }
  370. }