/* * 分润对象 */ using System; using System.Web; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using MySystem.Models; using Library; using LitJson; using MySystemLib; namespace MySystem.Areas.Admin.Controllers { [Area("Admin")] [Route("Admin/[controller]/[action]")] public class ProfitObjectsController : BaseController { public ProfitObjectsController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString(); } #region 分润对象列表 /// /// 根据条件查询分润对象列表 /// /// public IActionResult Index(ProfitObjects data, string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; string Condition = ""; Condition += "Name:\"" + data.Name + "\","; if (!string.IsNullOrEmpty(Condition)) { Condition = Condition.TrimEnd(','); Condition = ", where: {" + Condition + "}"; } ViewBag.Condition = Condition; return View(); } #endregion #region 根据条件查询分润对象列表 /// /// 分润对象列表 /// /// public JsonResult IndexData(ProfitObjects data, int page = 1, int limit = 30) { Dictionary Fields = new Dictionary(); Fields.Add("Name", "2"); //名称 Dictionary obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ProfitObjects", Fields, "Id desc", "0", page, limit); List> diclist = obj["data"] as List>; foreach (Dictionary dic in diclist) { dic["Status"] = dic["Status"].ToString() == "1" ? "开启" : "关闭"; } return Json(obj); } #endregion #region 增加分润对象 /// /// 增加或修改分润对象信息 /// /// public IActionResult Add(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; List objs = db.ProfitObjects.OrderBy(m => m.Id).ToList(); ViewBag.objs = objs; return View(); } #endregion #region 增加分润对象 /// /// 增加或修改分润对象信息 /// /// [HttpPost] public string Add(ProfitObjects data, int CopyId) { Dictionary Fields = new Dictionary(); Fields.Add("Name", data.Name); //名称 Fields.Add("MaxFloor", data.MaxFloor); //最大层级 Fields.Add("MaxLevel", data.MaxLevel); //最大等级 Fields.Add("MaxLevelContinue", data.MaxLevelContinue); //到顶级是否继续 Fields.Add("MinProfitVal", data.MinProfitVal); //最小分润值 Fields.Add("SeoTitle", data.SeoTitle); Fields.Add("SeoKeyword", data.SeoKeyword); Fields.Add("SeoDescription", data.SeoDescription); int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("ProfitObjects", Fields, 0); AddSysLog(data.Id.ToString(), "ProfitObjects", "add"); db.SaveChanges(); if (CopyId > 0) { List objlevelkinds = db.ProfitObjectLevelKinds.Where(m => m.ObjectId == CopyId).ToList(); foreach (ProfitObjectLevelKinds objlevelkind in objlevelkinds) { List objlevels = db.ProfitObjectLevels.Where(m => m.KindId == objlevelkind.Id).ToList(); objlevelkind.Id = 0; objlevelkind.CreateDate = DateTime.Now; objlevelkind.ObjectId = Id; ProfitObjectLevelKinds add = db.ProfitObjectLevelKinds.Add(objlevelkind).Entity; db.SaveChanges(); foreach (ProfitObjectLevels objlevel in objlevels) { objlevel.Id = 0; objlevel.CreateDate = DateTime.Now; objlevel.KindId = add.Id; db.ProfitObjectLevels.Add(objlevel); db.SaveChanges(); } } List objfloors = db.ProfitObjectFloors.Where(m => m.ObjectId == CopyId).ToList(); foreach (ProfitObjectFloors objfloor in objfloors) { objfloor.Id = 0; objfloor.CreateDate = DateTime.Now; objfloor.ObjectId = Id; db.ProfitObjectFloors.Add(objfloor); db.SaveChanges(); } List objcontinuefloors = db.ProfitObjectContinueFloors.Where(m => m.ObjectId == CopyId).ToList(); foreach (ProfitObjectContinueFloors objcontinuefloor in objcontinuefloors) { objcontinuefloor.Id = 0; objcontinuefloor.CreateDate = DateTime.Now; objcontinuefloor.ObjectId = Id; db.ProfitObjectContinueFloors.Add(objcontinuefloor); db.SaveChanges(); } List objactives = db.ProfitObjectsActives.Where(m => m.ObjectId == CopyId).ToList(); foreach (ProfitObjectsActives objactive in objactives) { objactive.Id = 0; objactive.CreateDate = DateTime.Now; objactive.ObjectId = Id; db.ProfitObjectsActives.Add(objactive); db.SaveChanges(); } List objactivations = db.ProfitObjectActivations.Where(m => m.ObjectId == CopyId).ToList(); foreach (ProfitObjectActivations objactivation in objactivations) { objactivation.Id = 0; objactivation.CreateDate = DateTime.Now; objactivation.ObjectId = Id; db.ProfitObjectActivations.Add(objactivation); db.SaveChanges(); } } return "success"; } #endregion #region 修改分润对象 /// /// 增加或修改分润对象信息 /// /// public IActionResult Edit(string right, int Id = 0) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; ProfitObjects editData = db.ProfitObjects.FirstOrDefault(m => m.Id == Id) ?? new ProfitObjects(); ViewBag.data = editData; return View(); } #endregion #region 修改分润对象 /// /// 增加或修改分润对象信息 /// /// [HttpPost] public string Edit(ProfitObjects data) { Dictionary Fields = new Dictionary(); Fields.Add("Name", data.Name); //名称 Fields.Add("MaxFloor", data.MaxFloor); //最大层级 Fields.Add("MaxLevel", data.MaxLevel); //最大等级 Fields.Add("MaxLevelContinue", data.MaxLevelContinue); //到顶级是否继续 Fields.Add("MinProfitVal", data.MinProfitVal); //最小分润值 Fields.Add("SeoTitle", data.SeoTitle); Fields.Add("SeoKeyword", data.SeoKeyword); Fields.Add("SeoDescription", data.SeoDescription); new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ProfitObjects", Fields, data.Id); AddSysLog(data.Id.ToString(), "ProfitObjects", "update"); db.SaveChanges(); return "success"; } #endregion #region 删除分润对象信息 /// /// 删除分润对象信息 /// /// public string Delete(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "ProfitObjects", "del"); foreach (string subid in idlist) { int id = int.Parse(subid); new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Delete("ProfitObjects", id); } db.SaveChanges(); return "success"; } #endregion #region 开启 /// /// 开启 /// /// public string Open(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "ProfitObjects", "open"); foreach (string subid in idlist) { int id = int.Parse(subid); Dictionary Fields = new Dictionary(); Fields.Add("Status", 1); new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ProfitObjects", Fields, id); } db.SaveChanges(); return "success"; } #endregion #region 关闭 /// /// 关闭 /// /// public string Close(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "ProfitObjects", "close"); foreach (string subid in idlist) { int id = int.Parse(subid); Dictionary Fields = new Dictionary(); Fields.Add("Status", 0); new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ProfitObjects", Fields, id); } db.SaveChanges(); return "success"; } #endregion #region 排序 /// /// 排序 /// /// public string Sort(int Id, int Sort) { new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("ProfitObjects", Sort, Id); AddSysLog(Id.ToString(), "ProfitObjects", "sort"); return "success"; } #endregion #region 导入数据 /// /// 导入数据 /// /// public string Import(string ExcelData) { ExcelData = HttpUtility.UrlDecode(ExcelData); JsonData list = JsonMapper.ToObject(ExcelData); for (int i = 1; i < list.Count; i++) { JsonData dr = list[i]; db.ProfitObjects.Add(new ProfitObjects() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }); db.SaveChanges(); } AddSysLog("0", "ProfitObjects", "Import"); return "success"; } #endregion #region 导出Excel /// /// 导出Excel /// /// public JsonResult ExportExcel(ProfitObjects data) { Dictionary Fields = new Dictionary(); Fields.Add("Name", "2"); //名称 Dictionary obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ProfitObjects", Fields, "Id desc", "0", 1, 20000, "", "", false); List> diclist = obj["data"] as List>; Dictionary result = new Dictionary(); result.Add("Status", "1"); result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx"); result.Add("Obj", diclist); Dictionary ReturnFields = new Dictionary(); result.Add("Fields", ReturnFields); AddSysLog("0", "ProfitObjects", "ExportExcel"); return Json(result); } #endregion #region 同步redis public string SyncRedis() { List objs = db.ProfitObjects.ToList(); foreach (ProfitObjects obj in objs) { RedisDbconn.Instance.Set("pobj" + obj.Id, obj); RedisDbconn.Instance.Set("pobjconc" + obj.Id, db.ProfitObjectContinueFloors.Count(m => m.ObjectId == obj.Id)); List rules = db.ProfitObjectsRule.Where(m => m.ObjectId == obj.Id).ToList(); foreach (ProfitObjectsRule rule in rules) { RedisDbconn.Instance.Set("pobjrule:" + obj.Id + ":" + rule.Code, rule); List details = db.ProfitObjectsRuleDetails.Where(m => m.RuleId == rule.Id).ToList(); foreach (ProfitObjectsRuleDetails detail in details) { RedisDbconn.Instance.Set("pobjrule:" + obj.Id + ":" + rule.Code + ":" + detail.Code, detail.DataValue); } } } List objlevels = db.ProfitObjectLevels.ToList(); foreach (ProfitObjectLevels objlevel in objlevels) { RedisDbconn.Instance.Set("pobjlv" + objlevel.KindId + ":" + objlevel.LevelNumber, objlevel); } List objlevelkinds = db.ProfitObjectLevelKinds.ToList(); foreach (ProfitObjectLevelKinds objlevelkind in objlevelkinds) { if(objlevelkind.QueryCount > 0) { RedisDbconn.Instance.Set("pobjlv:kid:" + objlevelkind.ObjectId + ":" + objlevelkind.QueryCount + ":" + objlevelkind.BankCardType, objlevelkind.Id); } else { RedisDbconn.Instance.Set("pobjlv:kid:" + objlevelkind.ObjectId + ":" + objlevelkind.IsHelp + ":" + objlevelkind.BankCardType, objlevelkind.Id); } } List objfloors = db.ProfitObjectFloors.ToList(); foreach (ProfitObjectFloors objfloor in objfloors) { RedisDbconn.Instance.Set("pobjfl" + objfloor.ObjectId + ":" + objfloor.FloorNumber, objfloor); } List objcontinuefloors = db.ProfitObjectContinueFloors.ToList(); foreach (ProfitObjectContinueFloors objcontinuefloor in objcontinuefloors) { RedisDbconn.Instance.Set("pobjcon" + objcontinuefloor.ObjectId + ":" + objcontinuefloor.FloorNumber, objcontinuefloor); } List objactives = db.ProfitObjectsActives.ToList(); RedisDbconn.Instance.Clear("pobjact*"); foreach (ProfitObjectsActives objactive in objactives) { RedisDbconn.Instance.AddList("pobjact" + objactive.ObjectId, objactive); } List objactivations = db.ProfitObjectActivations.ToList(); foreach (ProfitObjectActivations objactivation in objactivations) { RedisDbconn.Instance.Set("pobjacti" + objactivation.ObjectId, objactivation); } return "success"; } #endregion } }