283 lines
12 KiB
C#
283 lines
12 KiB
C#
using CRM.Core.BLL.Util;
|
||
using CRM.Core.DAL.Soft;
|
||
using CRM.Core.DTO;
|
||
using CRM.Core.Model.Entity;
|
||
using CRM.Core.Res;
|
||
using System;
|
||
using System.Linq;
|
||
using WX.CRM.Common;
|
||
|
||
namespace CRM.Core.BLL.Soft
|
||
{
|
||
/// <summary>
|
||
/// 抓取接口数据,旧系统为JMDUSER
|
||
/// </summary>
|
||
public class GET_REGUSER
|
||
{
|
||
private readonly Soft_User_DAL _softUser = new Soft_User_DAL();
|
||
private readonly CACHE_BL _cache = new CACHE_BL();
|
||
|
||
/*接口返回的字符串:18696548545,5001,6201075,5001,2013-8-7 13:54:16【手机号,标签,卡号,用户名,注册时间】*/
|
||
/// <summary>
|
||
/// 从接口抓取到的注册用户,旧系统名称为jmdUser
|
||
/// </summary>
|
||
/// <param name="mobile">手机号</param>
|
||
/// <param name="tag">注册渠道</param>
|
||
/// <param name="cardNo">卡号</param>
|
||
/// <param name="userName">用户名</param>
|
||
/// <param name="regDate">注册时间</param>
|
||
//public void RegUser(string mobile, string tag, string cardNo, string userName, DateTime? regDate, int companyId, string emial, string ip, string activeMobile = null, string platform = null, string jsonData = null, string dataType = null, string extXML = null, string kWord = null, string eid = null,string openid=null,string openplat=null, string unionid=null)
|
||
public void RegUser(SyncRegUserDto dto)
|
||
{
|
||
//88888888888,5001,6299377,565,2013/9/9 14:44:54,600
|
||
ValidationErrors errors = new ValidationErrors();
|
||
try
|
||
{
|
||
//注册customer
|
||
string v_resid = string.Empty;
|
||
if (!string.IsNullOrEmpty(dto.mobile))
|
||
{
|
||
v_resid = ResUtil.CreateResId(dto.mobile);
|
||
new BLL.Res.RES_CUSTOMER_BL().ResgisterCustomer(dto.mobile, v_resid, dto.ch);
|
||
}
|
||
DateTime? rgd = null;
|
||
if (dto.regDate.HasValue)
|
||
{
|
||
rgd = DateTimeTool.GetTimeFromLinuxTime(dto.regDate.Value);
|
||
}
|
||
var ch = Convert.ToInt32(dto.ch);
|
||
using (var db = new zxdContext())
|
||
{
|
||
var regUser = db.SOFT_USER.FirstOrDefault(p => p.USERNAME == dto.username);
|
||
if (regUser == null)
|
||
{
|
||
var softUser = new SOFT_USER
|
||
{
|
||
USERNAME = dto.username,
|
||
USERPASS = "string.Empty",
|
||
CTIME = System.DateTime.Now,
|
||
COMPANYID = 0,
|
||
REGCAMPAINID = ch,
|
||
REGDATE = rgd,
|
||
RESID = v_resid,
|
||
REGPLATFORM = dto.plat,
|
||
EMAIL = dto.em,
|
||
IP = dto.ip,
|
||
OPENID = dto.openid,// ***第三方用户ID * **
|
||
OPENPLAT = dto.openplat,//***第三方平台***
|
||
LIVECODE = dto.liveCode,
|
||
REGSOURCE = dto.regSource
|
||
};
|
||
if (!string.IsNullOrWhiteSpace(dto.refeid))
|
||
{
|
||
softUser.EID = Convert.ToInt32(dto.refeid);
|
||
dto.eid = dto.refeid;
|
||
}
|
||
if (!string.IsNullOrEmpty(dto.mobile))
|
||
{
|
||
softUser.ISACTIVE = 1;
|
||
softUser.ACTIVERESID = v_resid;
|
||
softUser.ACTIVETIME = rgd;
|
||
}
|
||
softUser.UNIONID = dto.unionId;
|
||
db.SOFT_USER.Add(softUser);
|
||
|
||
var softUserCH = new Soft_User_CH() { UserName = softUser.USERNAME, CH = Convert.ToInt32(dto.ch), CTime = DateTime.Now };
|
||
|
||
if (!string.IsNullOrEmpty(dto.eid))
|
||
{
|
||
softUserCH.Eid = int.Parse(dto.eid);
|
||
}
|
||
|
||
db.Soft_User_CH.Add(softUserCH);
|
||
|
||
db.SaveChanges();
|
||
|
||
if (!string.IsNullOrWhiteSpace(dto.eid) && !string.IsNullOrEmpty(dto.mobile))
|
||
{
|
||
var eid = int.Parse(dto.eid);
|
||
SetQuantity(ch, eid, dto.groupid ?? 0, v_resid);
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(dto.refeid))
|
||
{
|
||
regUser.EID = Convert.ToInt32(dto.refeid);
|
||
}
|
||
if (!string.IsNullOrEmpty(dto.unionId))
|
||
{
|
||
regUser.UNIONID = dto.unionId;
|
||
}
|
||
|
||
var softUserExists = db.Soft_User_CH.Any(p => p.UserName == dto.username && p.CH == ch);
|
||
|
||
if (!softUserExists)
|
||
{
|
||
var softUserCH = new Soft_User_CH() { UserName = dto.username, CH = Convert.ToInt32(dto.ch), CTime = DateTime.Now };
|
||
|
||
if (!string.IsNullOrEmpty(dto.eid))
|
||
{
|
||
softUserCH.Eid = int.Parse(dto.eid);
|
||
}
|
||
|
||
db.Soft_User_CH.Add(softUserCH);
|
||
|
||
if (!string.IsNullOrWhiteSpace(dto.eid) && !string.IsNullOrEmpty(dto.mobile))
|
||
{
|
||
var eid = int.Parse(dto.eid);
|
||
SetQuantity(ch, eid, dto.groupid ?? 0, v_resid);
|
||
}
|
||
}
|
||
|
||
db.SaveChanges();
|
||
//LogHelper.Info("regUser.EID:" + regUser.EID.ToString() + ",regUser.UNIONID:" + regUser.UNIONID);
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(v_resid))
|
||
{
|
||
//AY.CRM.Common.LogHelper.Error(string.Format("【ContractUser】resid:{0},username:{1}", v_resid, userName));
|
||
new BLL.Res.RES_CUSTOMERUSER_BL().ContractUser(v_resid, dto.username);
|
||
}
|
||
//进入资源系统
|
||
bool r = ImportResApply(errors, dto.mobile, dto.ch, string.Empty, dto.username, rgd, null, null, null, null);
|
||
if (r == false)
|
||
throw new Exception(errors.Error);
|
||
}
|
||
catch
|
||
{
|
||
throw;
|
||
}
|
||
}
|
||
|
||
public void BindUser(string username, string unionid, int eid, int ch)
|
||
{
|
||
try
|
||
{
|
||
using (var db = new zxdContext())
|
||
{
|
||
var user = new SOFT_USER();
|
||
if (!string.IsNullOrEmpty(unionid))
|
||
user = db.SOFT_USER.FirstOrDefault(p => p.UNIONID == unionid);
|
||
if (!string.IsNullOrEmpty(username))
|
||
user = db.SOFT_USER.FirstOrDefault(p => p.USERNAME == username);
|
||
|
||
if (user == null)
|
||
{
|
||
LogHelper.Info("找不到客户username:" + username + "|||unionid:" + unionid);
|
||
return;
|
||
}
|
||
var resid = string.Empty;
|
||
if (string.IsNullOrEmpty(user.RESID))
|
||
{
|
||
LogHelper.Info("客户资源resid为空:" + username + " |||unionid:" + unionid);
|
||
return;
|
||
}
|
||
|
||
//user.EID = eid;
|
||
user.UNIONID = unionid;
|
||
|
||
db.SaveChanges();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error("更新软件用户:" + ex.ToString());
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// (当手机号不为空时时进入资源系统,等清洗)从接口抓取到的注册用户,旧系统名称为jmdUser
|
||
/// </summary>
|
||
/// <param name="mobile">手机号</param>
|
||
/// <param name="tag">注册标签</param>
|
||
/// <param name="cardNo">卡号</param>
|
||
/// <param name="userName">用户名</param>
|
||
/// <param name="regDate">注册时间</param>
|
||
public bool ImportResApply(ValidationErrors err, string mobile, string tag, string cardNo, string userName, DateTime? regDate, string jsonData = null, string dataType = null, string extXML = null, string kWord = null)
|
||
{
|
||
ValidationErrors errors = new ValidationErrors();
|
||
try
|
||
{
|
||
if (string.IsNullOrEmpty(mobile))
|
||
return true;
|
||
|
||
var model = new RES_APPLY
|
||
{
|
||
RESOURCETAG = tag,
|
||
RESID = ResUtil.CreateResId(mobile),
|
||
USERNAME = userName,
|
||
JSONDATA = jsonData,
|
||
RTIME = regDate,
|
||
JSONTYPE = 1,
|
||
STATUS = 0,
|
||
MOBILE = mobile.Trim(),
|
||
DATATYPE = dataType,
|
||
EXTXML = extXML,
|
||
KWORD = kWord
|
||
};
|
||
new RES_APPLY_BL().Create(ref errors, model);
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errors.Add(ex.Message + ex.StackTrace);
|
||
//CRM.Core.Common.LogHelper.Error("----------"+ex.Message + ex.StackTrace);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
public DateTime GetServiceLastExecTime()
|
||
{
|
||
DateTime rdate = System.DateTime.Now;
|
||
try
|
||
{
|
||
CRM.Core.Model.Entity.zxdContext db = new CRM.Core.Model.Entity.zxdContext();
|
||
var par = db.BAS_PARAMETER.FirstOrDefault(p => p.PARAKEY.Trim() == "RegUserServiceExecLastTime" && p.GROUPID.Trim() == "SysServiceExecTime");
|
||
if (par != null)
|
||
rdate = DateTime.Parse(par.PARAVALUE);
|
||
else
|
||
throw new Exception("RegUserServiceExecLastTime参数错误");
|
||
}
|
||
catch
|
||
{
|
||
rdate = System.DateTime.Now;
|
||
}
|
||
return rdate;
|
||
}
|
||
public void UpdateExecLastTime(DateTime lastTime)
|
||
{
|
||
using (CRM.Core.Model.Entity.zxdContext db = new CRM.Core.Model.Entity.zxdContext())
|
||
{
|
||
var par = db.BAS_PARAMETER.FirstOrDefault(p => p.PARAKEY.Trim() == "RegUserServiceExecLastTime" && p.GROUPID.Trim() == "SysServiceExecTime");
|
||
if (par == null)
|
||
{
|
||
throw new Exception("RegUserServiceExecLastTime参数错误");
|
||
}
|
||
par.PARAVALUE = lastTime.ToString();
|
||
db.SaveChanges();
|
||
}
|
||
}
|
||
|
||
public void SetQuantity(int ch, int eid, int gid, string resid)
|
||
{
|
||
try
|
||
{
|
||
//478361560401673707-1001-60974-27
|
||
LogHelper.Info("SetQuantity-1:" + resid + "-" + ch.ToString() + "-" + eid.ToString() + "-" + gid.ToString());
|
||
|
||
var companyCode = _cache.GetCompanyCode();
|
||
var company = companyCode.FirstOrDefault(p => p.Min <= ch && p.Max >= ch);
|
||
|
||
LogHelper.Info("SetQuantity-2:" + company.Defult);
|
||
_softUser.SetQuantity(company.Defult, eid, gid);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
}
|
||
}
|
||
}
|
||
}
|