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;
}
}
}
}