using Cksoft.Data; using Cksoft.Data.Repository; using Cksoft.Unity; using Cksoft.Unity.Log4NetConfig; using DllEapDal; using DllEapEntity; using DllUfpDal; using DllUfpEntity; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace DllEapBll.Controllers { /// /// 邮件设置 /// [Authorize] [ApiController] [Route("eap/api/[controller]/[action]")] public class MailSettingsController : ControllerBase { private readonly string conn = "eap"; /// /// 获取邮件设置项列表 /// /// /// /// /// /// /// [HttpGet] public LayuiModel GetMailSettingsList(int pageIndex = 1, int pageSize = 10, string filter = "", string sort = "FCode", string order = "ASC") { if (string.IsNullOrEmpty(sort) || sort.ToString().ToLower() == "null") sort = "FCode"; if (order == "descend") order = "desc"; else { order = "asc"; } IEnumerable list = null; filter = filter ?? " "; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MailSettingsDal(db); int start = (pageIndex - 1) * pageSize + 1; string errorinfo = string.Empty; list = dal.GetMailSettingsList(start, pageSize, filter, sort, order, ref errorinfo); var count = dal.GetMailSettingsCount(filter); var responseData = new LayuiModel() { code = 0, count = count, data = list, msg = "" }; return responseData; } } /// /// 设置详情 /// /// /// [HttpGet] public MailSettings GetMailSettingsDetail(int id) { using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MailSettingsDal(db); MailSettings staff = dal.GetMailSettings(id); return staff; } } /// /// 新增/修改设置 /// /// /// [HttpPost] public string AddOrUpdateMailSettings([FromBody] MailSettings model) { var id = model.ID; string errorinfo = string.Empty; var usercode = Request.Headers["usercode"]; IDatabase db = DbFactory.Base(conn); try { db.BeginTrans(); var dal = new MailSettingsDal(db); if (id == 0) { model.RecCode = usercode; model.ModCode = usercode; model.MailBody = string.IsNullOrEmpty(model.MailBody) ? "" : model.MailBody; model.Remark = string.IsNullOrEmpty(model.Remark) ? "" : model.Remark; var resInsert = dal.InsertMailSettings(model, ref errorinfo); if (resInsert > 0) { db.Commit(); LogHelper.LogFatal("新增MailSettings-->" + Json.ToJson(model), "用户操作", model.RecCode); return JsonConvert.SerializeObject(new { id = resInsert, msg = string.Empty }); } db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo }); } var oldModel = dal.GetMailSettings(id); if (oldModel == null) return JsonConvert.SerializeObject(new { id = "0", msg = "此邮件类别不存在" }); model.ModCode = usercode; model.ModTime = DateTime.Now; var resUpdate = dal.UpdateMailSettings(model, usercode, ref errorinfo); if (resUpdate > 0) { db.Commit(); LogHelper.LogFatal("修改MailSettings-->原始数据:" + Json.ToJson(oldModel) + " 新数据:" + Json.ToJson(model), "用户操作", model.RecCode); return JsonConvert.SerializeObject(new { id = resUpdate }); } db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo }); ; } catch (Exception e) { db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = e.Message }); } finally { if (db != null) db.Close(); } } /// /// 删除邮件设置 /// /// /// [HttpPost] public async Task Delete([FromBody] int id) { using (IDatabase db = DbFactory.Base("eap")) { db.BeginTrans(); var dal = new MailSettingsDal(db); var res = await dal.DeleteMailSetting(id); db.Commit(); return res; } } /// /// 获取邮件接收人 /// /// /// /// /// /// /// [HttpGet] public LayuiModel GetMailReceiverList(int pageIndex = 1, int pageSize = 10, string filter = "", string sort = "id", string order = "ASC") { if (string.IsNullOrEmpty(sort) || sort.ToString().ToLower() == "null") sort = "id"; if (order == "descend") order = "desc"; else { order = "asc"; } IEnumerable list = null; filter += " and IsValid=1"; filter = filter ?? " "; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MailSettingsDal(db); int start = (pageIndex - 1) * pageSize + 1; string errorinfo = string.Empty; list = dal.GetMailReceiverList(start, pageSize, filter, sort, order, ref errorinfo); foreach (var model in list) { switch (model.SendType) { case 1: model.SendTypeName = "收件人"; break; case 2: model.SendTypeName = "抄送人"; break; } } var count = dal.GetMailReceiverCount(filter); var responseData = new LayuiModel() { code = 0, count = count, data = list, msg = "" }; return responseData; } } /// /// 接收人详情 /// /// /// [HttpGet] public MailReceiver GetMailReceiverDetail(int id) { using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MailSettingsDal(db); MailReceiver staff = dal.GetMailReceiver(id); return staff; } } /// /// 新增/修改接收人 /// /// /// [HttpPost] public string AddOrUpdateMailReceiver([FromBody] MailReceiver model) { var id = model.ID; string errorinfo = string.Empty; var usercode = Request.Headers["usercode"]; IDatabase db = DbFactory.Base(conn); try { db.BeginTrans(); var dal = new MailSettingsDal(db); if (id == 0) { model.RecCode = usercode; model.ModCode = usercode; model.IsValid = 1; var resInsert = dal.InsertMailReceiver(model, ref errorinfo); if (resInsert > 0) { db.Commit(); LogHelper.LogFatal("新增MailReceiver-->" + Json.ToJson(model), "用户操作", model.RecCode); return JsonConvert.SerializeObject(new { id = resInsert, msg = string.Empty }); } db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo }); } var oldModel = dal.GetMailReceiver(id); if (oldModel == null) return JsonConvert.SerializeObject(new { id = "0", msg = "此收件人不存在" }); model.ModCode = usercode; model.ModTime = DateTime.Now; model.IsValid = 1; int resUpdate = dal.UpdateMailReceiver(model, usercode, ref errorinfo); if (resUpdate > 0) { db.Commit(); LogHelper.LogFatal("修改MailReceiver-->原始值:" + Json.ToJson(oldModel) + " 新值:" + Json.ToJson(model), "用户操作", model.RecCode); return JsonConvert.SerializeObject(new { id = resUpdate }); } db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo }); ; } catch (Exception e) { db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = e.Message }); } finally { if (db != null) db.Close(); } } /// /// 删除接收人 /// /// /// [HttpGet] public string DeleteMailReceiver(int id) { string errorinfo = string.Empty; var usercode = Request.Headers["usercode"]; IDatabase db = DbFactory.Base(conn); try { db.BeginTrans(); var dal = new MailSettingsDal(db); var model = dal.GetMailReceiver(id); var res = dal.DeleteMailReceiver(id, usercode, ref errorinfo); if (res > 0) { db.Commit(); LogHelper.LogFatal("删除MailReceiver-->MailReceiver:" + Json.ToJson(model), "用户操作", usercode); return JsonConvert.SerializeObject(new { id = res, msg = string.Empty }); } db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo }); } catch (Exception e) { db.Rollback(); return JsonConvert.SerializeObject(new { id = "0", msg = e.Message }); } finally { if (db != null) db.Close(); } } /// /// 发送邮件 /// /// /// /// [HttpGet] [AllowAnonymous] public string SendMail(string code, int type = 1) { if (code == AppConfigurtaionServices.Configuration["DisConnNoticeCode"]) { var result = MailNotice.DisconnectionNotice(type).Result; return JsonConvert.SerializeObject(new { code = string.IsNullOrEmpty(result) ? 1 : 0, msg = string.IsNullOrEmpty(result) ? "发送成功" : result }); } else { return JsonConvert.SerializeObject(new { code = 0, msg = "此邮件暂未开发" }); } } /// /// 发送AA抛料率预警 /// /// [HttpGet] [AllowAnonymous] public async Task SendAAMaterial() { var result = await MailNotice.AAMaterialUploadErrorNotice(); return JsonConvert.SerializeObject(new { code = string.IsNullOrEmpty(result) ? 1 : 0, msg = string.IsNullOrEmpty(result) ? "发送成功" : result }); } /// /// 发送断线、IP不一致、小程序未开启预警邮件 /// /// [HttpGet] [AllowAnonymous] public string SendMailNew() { var result = MailNotice.IPDifferentAndDiconnectionNotice().Result; return JsonConvert.SerializeObject(new { code = string.IsNullOrEmpty(result) ? 1 : 0, msg = string.IsNullOrEmpty(result) ? "发送成功" : result }); } } }