using System; using System.Linq; using WX.CRM.BLL.Base; using WX.CRM.Common; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.Model.MAP; namespace WX.CRM.BLL.Wx { public class WX_FAST_USERNAME_BL : IWX_FAST_USERNAME { private string GetCode() { DateTime time = DateTime.Now; return time.ToString("yyyyMMddHHmmssfff"); } /// /// 订单新增创建 指令 /// /// public bool CreateFast_UserName(decimal orderid, string username) { try { if (string.IsNullOrEmpty(username)) return false; using (var db = new crmContext()) { var rcontact = db.WX_RCONTACT.Where(m => m.USERNAME == username).ToList(); if (rcontact != null && rcontact.Count > 0)//查询好友 { foreach (WX_RCONTACT item in rcontact) { var workaccount = db.WX_WORKACCOUNT.FirstOrDefault(m => m.USERNAME == item.JOBWXUSERNAME); if (workaccount == null) continue; var entry = db.WX_FAST_USERNAME.FirstOrDefault(m => m.STATUS != 200 && m.JOBUSERNAME == item.JOBWXUSERNAME); if (entry == null)//没有这个工作微信的 指令,进行新增指令操作 { DateTime time = new DateTime(2018, 1, 1); var model = new WX_FAST_USERNAME() { PICI = new SEQUENCES_BL().Seq_base_get(), JOBALIAS = workaccount.ALIAS, JOBNICKNAME = workaccount.NICKNAME, JOBUSERNAME = workaccount.USERNAME, STATUS = 70, POSITIONSTR = time, CTIME = DateTime.Now, CODE = GetCode(), POSITIONTIME = DateTimeTool.ConvertDateTimeLong(time) }; db.WX_FAST_USERNAME.Add(model); var cldmodel = new WX_FAST_USERNAME_DL() { ALIAS = item.ALIAS, CTIME = DateTime.Now, ISDEL = 0, JOBALIAS = model.JOBALIAS, JOBNICKNAME = model.JOBNICKNAME, JOBUSERNAME = model.JOBUSERNAME, NICKNAME = item.NICKNAME, ORDERID = orderid, PICI = model.PICI, TYPE = 1, CONREMARK = item.CONREMARK, USERNAME = item.USERNAME }; db.WX_FAST_USERNAME_DL.Add(cldmodel); } else//有这个工作微信指令 { var ordu = db.WX_FAST_USERNAME_DL.FirstOrDefault(m => m.PICI == entry.PICI && m.USERNAME == username); if (ordu != null && ordu.USERNAME == username)//如果username没有做出修改,直接跳过此工作微信 { ordu.TYPE = 1;//修改成订单客户 continue; } DateTime time = new DateTime(2018, 1, 1); entry.JOBALIAS = workaccount.ALIAS; entry.JOBNICKNAME = workaccount.NICKNAME; entry.STATUS = 70; entry.POSITIONSTR = time; entry.POSITIONTIME = DateTimeTool.ConvertDateTimeLong(time); entry.UTIME = DateTime.Now; entry.CODE = GetCode(); if (ordu == null)//找不到这个订单的就进行新增,有就不管 { var cldmodel = new WX_FAST_USERNAME_DL() { ALIAS = item.ALIAS, CTIME = DateTime.Now, ISDEL = 0, JOBALIAS = entry.JOBALIAS, JOBNICKNAME = entry.JOBNICKNAME, JOBUSERNAME = entry.JOBUSERNAME, NICKNAME = item.NICKNAME, ORDERID = orderid, PICI = entry.PICI, TYPE = 1, CONREMARK = item.CONREMARK, USERNAME = item.USERNAME }; db.WX_FAST_USERNAME_DL.Add(cldmodel); } } } } db.SaveChanges(); } } catch (Exception e) { LogHelper.Error(e.ToString()); } return true; } /// /// 手动修改数据 /// /// /// /// /// /// public bool ManMade_FastUsername(string jobusername, string usernames, string delusername, DateTime time) { try { if (string.IsNullOrEmpty(jobusername) || (string.IsNullOrEmpty(usernames) && string.IsNullOrEmpty(delusername))) return false; using (var db = new crmContext()) { var workaccount = db.WX_WORKACCOUNT.FirstOrDefault(m => m.USERNAME == jobusername); if (workaccount == null) return false; bool isbiandong = false; var entry = db.WX_FAST_USERNAME.FirstOrDefault(m => m.STATUS != 200 && m.JOBUSERNAME == jobusername);//查找当前对应的批次指令 if (entry != null && !string.IsNullOrEmpty(delusername))//把删除了客户删掉 { var deluser = delusername.Split(','); if (deluser.Length > 0) { foreach (string item in deluser) { if (string.IsNullOrEmpty(item)) continue; var cl = db.WX_FAST_USERNAME_DL.FirstOrDefault(m => m.PICI == entry.PICI && m.USERNAME == item); if (cl != null) { db.WX_FAST_USERNAME_DL.Remove(cl); isbiandong = true; } } } } var parentmodel = entry; if (entry == null) { var model = new WX_FAST_USERNAME() { PICI = new SEQUENCES_BL().Seq_base_get(), JOBALIAS = workaccount.ALIAS, JOBNICKNAME = workaccount.NICKNAME, JOBUSERNAME = workaccount.USERNAME, STATUS = 70, POSITIONSTR = time, CTIME = DateTime.Now, CODE = GetCode(), POSITIONTIME = DateTimeTool.ConvertDateTimeLong(time) }; db.WX_FAST_USERNAME.Add(model); parentmodel = model; } else { if (entry.POSITIONSTR != time) {//时间发生修改,需要更新 isbiandong = true; entry.POSITIONTIME = DateTimeTool.ConvertDateTimeLong(time); entry.POSITIONSTR = time; } entry.UTIME = DateTime.Now; } var cusernames = usernames.Split(','); if (cusernames.Length > 0) { foreach (var item in cusernames) { if (string.IsNullOrEmpty(item)) continue; var cl = db.WX_FAST_USERNAME_DL.FirstOrDefault(m => m.PICI == parentmodel.PICI && m.USERNAME == item); if (cl == null)//不存在就新增 { var user = db.WX_RCONTACT.FirstOrDefault(m => m.JOBWXUSERNAME == jobusername && m.USERNAME == item); var cldmodel = new WX_FAST_USERNAME_DL() { ALIAS = user.ALIAS, CTIME = DateTime.Now, ISDEL = 0, JOBALIAS = parentmodel.JOBALIAS, JOBNICKNAME = parentmodel.JOBNICKNAME, JOBUSERNAME = parentmodel.JOBUSERNAME, NICKNAME = user.NICKNAME, ORDERID = 0, PICI = parentmodel.PICI, TYPE = 2, USERNAME = user.USERNAME, CONREMARK = user.CONREMARK }; DateTime dateTime = DateTime.Now.AddDays(-5);//五天内的新订单 var ndb = db.WX_SZZYORDER.FirstOrDefault(m => m.CUSTOMERUSERNAME == item && m.CTIME > dateTime && (m.ORDERSTATUS == "180" || m.ORDERSTATUS == "200")); if (ndb != null) { cldmodel.TYPE = 1; cldmodel.ORDERID = ndb.ORDERID; } isbiandong = true; db.WX_FAST_USERNAME_DL.Add(cldmodel); } } } if (isbiandong) { if (entry != null) entry.CODE = GetCode();//如有变动就修改Code } db.SaveChanges(); } } catch (Exception e) { LogHelper.Error(e.ToString()); } return true; } /// /// 获取数据 /// /// /// public Wx_Fast_UserModel GetFastModel(string jobusername) { using (var db = new crmContext()) { Wx_Fast_UserModel model = new Wx_Fast_UserModel(); var entry = db.WX_FAST_USERNAME.FirstOrDefault(m => m.JOBUSERNAME == jobusername && m.STATUS != 200); model.fast_main = entry; if (entry == null) { return model; } else { model.fast_child = db.WX_FAST_USERNAME_DL.Where(m => m.PICI == entry.PICI && m.ISDEL == 0).ToList(); } return model; } } /// /// 修改完成 /// /// 批次 /// public bool UpdateComplete(string pici, int status) { using (var db = new crmContext()) { decimal vpici = Convert.ToDecimal(pici); WX_FAST_USERNAME entry = db.WX_FAST_USERNAME.FirstOrDefault(m => m.PICI == vpici); if (entry == null) return true; else { entry.STATUS = status; db.SaveChanges(); return true; } } } /// /// 维护页面查询好友 /// /// /// /// public Wx_Fast_Search GetRcontact(string jobusername, string username) { using (var db = new crmContext()) { Wx_Fast_Search search = new Wx_Fast_Search(); var ent = db.WX_RCONTACT.FirstOrDefault(m => m.JOBWXUSERNAME == jobusername && m.USERNAME == username); if (ent == null) { search = null; } else { search = new Wx_Fast_Search() { ALIAS = ent.ALIAS, CONREMARK = ent.CONREMARK, NICKNAME = ent.NICKNAME, ORDERID = 0, USERNAME = ent.USERNAME, TYPE = 2 }; DateTime dateTime = DateTime.Now.AddDays(-5);//五天内的新订单 var ndb = db.WX_SZZYORDER.FirstOrDefault(m => m.CUSTOMERUSERNAME == username && m.CTIME > dateTime && (m.ORDERSTATUS == "180" || m.ORDERSTATUS == "200")); if (ndb != null) { search.TYPE = 1; search.ORDERID = ndb.ORDERID; } } return search; } } } }