442 lines
22 KiB
C#
442 lines
22 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Data.OracleClient;
|
||
using System.Data.SqlClient;
|
||
using WX.CRM.Common;
|
||
using WX.CRM.Model.MAP;
|
||
using WX.CRM.Model.QueryMap;
|
||
|
||
namespace WX.CRM.DAL.Wx
|
||
{
|
||
public class WX_WORKACCOUNT_DAL
|
||
{
|
||
public bool WxUserBindToInnerUser(decimal innerUserId, decimal workAccountPkId, string alias, string startDate, DateTime ctime, out string errmsg)
|
||
{
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>()
|
||
{
|
||
new OracleParameter() { ParameterName = "p_innerUserId", OracleType = OracleType.Number, Value =innerUserId },
|
||
new OracleParameter() { ParameterName = "p_wxWorkAccountPkId", OracleType = OracleType.Number, Value =workAccountPkId },
|
||
new OracleParameter() { ParameterName = "p_wxAlias", OracleType = OracleType.VarChar, Value =alias },
|
||
new OracleParameter() { ParameterName = "p_startDate", OracleType = OracleType.VarChar, Value =startDate },
|
||
new OracleParameter() { ParameterName = "p_ctime", OracleType = OracleType.DateTime, Value =ctime }
|
||
};
|
||
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX_WXUSERBINDTOINNERUSER.wxUserBindToInnerUser", param1.ToArray());
|
||
errmsg = "微信用户绑定客服用户事务操作成功!";
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errmsg = "微信用户绑定客服用户事务操作失败:" + ex.Message;
|
||
LogHelper.Error(ex);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 推送微信账号到推广网站前端
|
||
/// </summary>
|
||
/// <param name="alias"></param>
|
||
/// <param name="type">1:新增,0:修改</param>
|
||
/// <param name="errmsg"></param>
|
||
/// <returns></returns>
|
||
public bool PushWordAccountData(string alias, int type, out string errmsg)
|
||
{
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>()
|
||
{
|
||
new OracleParameter() { ParameterName = "p_wxAlias", OracleType = OracleType.VarChar, Value =alias },
|
||
new OracleParameter() { ParameterName = "p_type", OracleType = OracleType.Number, Value =type }
|
||
};
|
||
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX_WXUSERBINDTOINNERUSER.pushWordAccountData", param1.ToArray());
|
||
errmsg = "推送微信账号到推广网站,事务操作成功!";
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errmsg = "推送微信账号到推广网站,事务操作失败:" + ex.Message;
|
||
LogHelper.Error(ex);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作微信封号
|
||
/// </summary>
|
||
/// <param name="alias"></param>
|
||
/// <param name="errmsg"></param>
|
||
/// <returns></returns>
|
||
public bool ModifyWorkAccountIsValid(string alias, decimal isValid, string pauseEndTime, string remark, decimal userId, decimal isPush, out string errmsg)
|
||
{
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>()
|
||
{
|
||
new OracleParameter() { ParameterName = "p_wxAlias", OracleType = OracleType.VarChar, Value =alias },
|
||
new OracleParameter() { ParameterName = "p_isValid", OracleType = OracleType.Number, Value =isValid },
|
||
new OracleParameter() { ParameterName = "p_pauseEndTime", OracleType = OracleType.VarChar, Value =pauseEndTime },
|
||
new OracleParameter() {ParameterName="p_remark", OracleType = OracleType.VarChar, Value = remark },
|
||
new OracleParameter() {ParameterName="p_userId", OracleType = OracleType.Number, Value = userId },
|
||
new OracleParameter() {ParameterName="p_isPush", OracleType = OracleType.Number, Value = isPush }
|
||
};
|
||
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX_WXUSERBINDTOINNERUSER.modifyWorkAccountIsValid", param1.ToArray());
|
||
errmsg = "微信下线,事务操作成功!";
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errmsg = "微信下线,事务操作失败:" + ex.Message;
|
||
LogHelper.Error(ex);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取 工作微信好友列表
|
||
/// </summary>
|
||
/// <param name="alias"></param>
|
||
/// <param name="errmsg"></param>
|
||
/// <returns></returns>
|
||
public List<WX_WorkRCONTACT> GetRcontactByWorkAccount(string workUsername, string column, string sort)
|
||
{
|
||
List<WX_WorkRCONTACT> list = new List<WX_WorkRCONTACT>();
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>()
|
||
{
|
||
new OracleParameter() { ParameterName = "v_workaccount", OracleType = OracleType.VarChar, Value =workUsername },
|
||
!string.IsNullOrEmpty(column) ? new OracleParameter() { ParameterName = "p_column", OracleType = OracleType.VarChar, Value = column } : new OracleParameter() { ParameterName = "p_column", OracleType = OracleType.VarChar, Value = DBNull.Value },
|
||
!string.IsNullOrEmpty(sort) ? new OracleParameter() { ParameterName = "p_sort", OracleType = OracleType.VarChar, Value = sort } : new OracleParameter() { ParameterName = "p_sort", OracleType = OracleType.VarChar, Value = DBNull.Value },
|
||
new OracleParameter() {ParameterName="v_data",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output }
|
||
};
|
||
DataTable tab = OracleHelper.DataQueray(CommandType.StoredProcedure, "PACK_WX_RCONTACT.GetRcontactByWorkAccount", param1.ToArray()).Tables[0];
|
||
//list = tab.ToList<WX_WorkRCONTACT>();
|
||
foreach (DataRow item in tab.Rows)
|
||
{
|
||
WX_WorkRCONTACT model = new WX_WorkRCONTACT();
|
||
model.ALIAS = item["ALIAS"].ToString();
|
||
model.CONREMARK = item["CONREMARK"].ToString();
|
||
model.FUSERNAME = item["FUSERNAME"].ToString();
|
||
model.JOBWXUSERNAME = item["JOBWXUSERNAME"].ToString();
|
||
model.LASTCHARTIME = Convert.ToDecimal(item["LASTCHARTIME"]);
|
||
model.NICKNAME = item["NICKNAME"].ToString();
|
||
model.NUSERNAME = item["NUSERNAME"].ToString();
|
||
model.PKID = Convert.ToDecimal(item["PKID"]);
|
||
model.USERNAME = item["USERNAME"].ToString();
|
||
model.WUSERNAME = item["WUSERNAME"].ToString();
|
||
model.isblacklist = Convert.ToDecimal(item["isblacklist"]);
|
||
model.isunservedlist = Convert.ToDecimal(item["isunservedlist"]);
|
||
list.Add(model);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
}
|
||
return list;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取 工作微信群列表
|
||
/// </summary>
|
||
/// <param name="workUsername"></param>
|
||
/// <param name="column"></param>
|
||
/// <param name="sort"></param>
|
||
/// <returns></returns>
|
||
public List<Wx_WorkGroupRcontact> GetGroupsByWorkAccount(string workUsername, string column, string sort)
|
||
{
|
||
List<Wx_WorkGroupRcontact> list = new List<Wx_WorkGroupRcontact>();
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>()
|
||
{
|
||
new OracleParameter() { ParameterName = "v_workaccount", OracleType = OracleType.VarChar, Value =workUsername },
|
||
!string.IsNullOrEmpty(column) ? new OracleParameter() { ParameterName = "p_column", OracleType = OracleType.VarChar, Value = column } : new OracleParameter() { ParameterName = "p_column", OracleType = OracleType.VarChar, Value = DBNull.Value },
|
||
!string.IsNullOrEmpty(sort) ? new OracleParameter() { ParameterName = "p_sort", OracleType = OracleType.VarChar, Value = sort } : new OracleParameter() { ParameterName = "p_sort", OracleType = OracleType.VarChar, Value = DBNull.Value },
|
||
new OracleParameter() {ParameterName="v_data",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output }
|
||
};
|
||
DataTable tab = OracleHelper.DataQueray(CommandType.StoredProcedure, "PACK_WX_RCONTACT.GetGroupRcontactByWorAccount", param1.ToArray()).Tables[0];
|
||
foreach (DataRow item in tab.Rows)
|
||
{
|
||
Wx_WorkGroupRcontact model = new Wx_WorkGroupRcontact();
|
||
model.chatRoomName = item["chatroomname"].ToString();
|
||
model.createTime = Convert.ToDateTime(item["createtime"]);
|
||
model.groupName = item["groupName"].ToString();
|
||
model.roomowner = item["roomowner"].ToString();
|
||
model.LASTCHARTIME = Convert.ToDecimal(item["LASTCHARTIME"]);
|
||
model.shortName = item["shortname"].ToString();
|
||
list.Add(model);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
}
|
||
return list;
|
||
}
|
||
public bool EveryDayManualPauseHandle(out string errmsg)
|
||
{
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>() { };
|
||
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX_WXUSERBINDTOINNERUSER.everyDayManualPause", param1.ToArray());
|
||
errmsg = "自动处理人工暂停工作微信,事务操作成功!";
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errmsg = "自动处理人工暂停工作微信,事务操作失败:" + ex.Message;
|
||
LogHelper.Error(ex);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
public bool EveryDaySystemPauseHandle(out string errmsg)
|
||
{
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>() { };
|
||
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX_WXUSERBINDTOINNERUSER.everyDaySystemPause", param1.ToArray());
|
||
errmsg = "自动处理系统暂停工作微信,事务操作成功!";
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errmsg = "自动处理系统暂停工作微信,事务操作失败:" + ex.Message;
|
||
LogHelper.Error(ex);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
public List<WxResourceReport> GetWxResourceReport(QueryUserComboDto usercomboDto, DateTime sTime, DateTime eTime, decimal curMonth, decimal? resType, DateTime? cjTime1, DateTime? cjTime2)
|
||
{
|
||
var conn = new OracleConnection(OracleHelper.AYCRMConn);
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
try
|
||
{
|
||
using (var trans = conn.BeginTransaction())
|
||
{
|
||
var p = new List<OracleParameter>()
|
||
{
|
||
usercomboDto.companyId.HasValue ? new OracleParameter{ ParameterName="p_companyId", OracleType = OracleType.Number, Value=usercomboDto.companyId.Value } : new OracleParameter{ ParameterName="p_companyId", OracleType = OracleType.Number, Value=DBNull.Value },
|
||
string.IsNullOrEmpty(usercomboDto.deptId) ? new OracleParameter{ ParameterName="p_deptId", OracleType = OracleType.VarChar,Value=DBNull.Value } : new OracleParameter{ ParameterName="p_deptId", OracleType = OracleType.VarChar,Value=usercomboDto.deptId },
|
||
string.IsNullOrEmpty(usercomboDto.groupIds) ? new OracleParameter{ ParameterName="p_groupId", OracleType = OracleType.VarChar,Value=DBNull.Value } : new OracleParameter{ ParameterName="p_groupId", OracleType = OracleType.VarChar,Value=usercomboDto.groupIds },
|
||
usercomboDto.userId.HasValue ? new OracleParameter{ ParameterName="p_inneruserId", OracleType = OracleType.VarChar,Value=usercomboDto.userId.Value } : new OracleParameter{ ParameterName="p_inneruserId", OracleType = OracleType.Number,Value=DBNull.Value },
|
||
new OracleParameter() {ParameterName = "p_sTime", OracleType = OracleType.DateTime, Value = sTime},
|
||
new OracleParameter() {ParameterName = "p_eTime", OracleType = OracleType.DateTime, Value = eTime},
|
||
resType.HasValue ? new OracleParameter() {ParameterName = "p_resType", OracleType = OracleType.Number, Value = resType.Value } : new OracleParameter() {ParameterName = "p_resType", OracleType = OracleType.Number, Value = DBNull.Value },
|
||
cjTime1.HasValue ? new OracleParameter() {ParameterName = "p_cjtime1", OracleType = OracleType.DateTime, Value = cjTime1.Value } : new OracleParameter() {ParameterName = "p_cjtime1", OracleType = OracleType.DateTime, Value = DBNull.Value },
|
||
cjTime2.HasValue ? new OracleParameter() {ParameterName = "p_cjtime2", OracleType = OracleType.DateTime, Value = cjTime2.Value } : new OracleParameter() {ParameterName = "p_cjtime2", OracleType = OracleType.DateTime, Value = DBNull.Value },
|
||
new OracleParameter() {ParameterName = "p_list", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output}
|
||
};
|
||
var tab = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_RESOURCE.GetWxResourceReport", p.ToArray());
|
||
trans.Commit();
|
||
return tab.Tables[0].ToList<WxResourceReport>();
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
throw;
|
||
}
|
||
finally
|
||
{
|
||
conn.Close();
|
||
}
|
||
}
|
||
public DataTable UpdateAliasFengHao(string v_alias, int v_isFenghao)
|
||
{
|
||
var conn = new OracleConnection(OracleHelper.AYCRMConn);
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
try
|
||
{
|
||
using (var trans = conn.BeginTransaction())
|
||
{
|
||
var p = new List<OracleParameter>()
|
||
{
|
||
new OracleParameter() {ParameterName = "v_alias", OracleType = OracleType.VarChar, Value = v_alias},
|
||
new OracleParameter() {ParameterName = "v_isFenghao", OracleType = OracleType.Number, Value = v_isFenghao},
|
||
new OracleParameter() {ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output}
|
||
};
|
||
var tab = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WXALIAS.UpdateAliasFengHao", p.ToArray());
|
||
trans.Commit();
|
||
return tab.Tables[0];
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
throw;
|
||
}
|
||
finally
|
||
{
|
||
conn.Close();
|
||
}
|
||
}
|
||
|
||
public List<OrderResourceReport> GetOrderResourceReport(DateTime sTime, DateTime eTime)
|
||
{
|
||
try
|
||
{
|
||
var p = new List<OracleParameter>()
|
||
{
|
||
//new OracleParameter() {ParameterName = "p_groupId", OracleType = OracleType.VarChar, Value = groupId},
|
||
//new OracleParameter() {ParameterName = "p_inneruserId", OracleType = OracleType.VarChar, Value = inneruserId},
|
||
new OracleParameter() {ParameterName = "p_sTime", OracleType = OracleType.DateTime, Value = sTime},
|
||
new OracleParameter() {ParameterName = "p_eTime", OracleType = OracleType.DateTime, Value = eTime},
|
||
new OracleParameter() {ParameterName = "p_list", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output}
|
||
};
|
||
DataTable tab = OracleHelper.DataQueray(CommandType.StoredProcedure, "PACK_WX_RESOURCE.GetOrderResourceReport", p.ToArray()).Tables[0];
|
||
return tab.ToList<OrderResourceReport>();
|
||
}
|
||
catch
|
||
{
|
||
throw;
|
||
}
|
||
}
|
||
|
||
public WxResourceDay GetWxResourceDay(DateTime sTime, DateTime eTime)
|
||
{
|
||
WxResourceDay list = new WxResourceDay();
|
||
try
|
||
{
|
||
var para = new List<SqlParameter>()
|
||
{
|
||
new SqlParameter() {DbType = System.Data.DbType.DateTime, ParameterName = "@sTime", Value = sTime},
|
||
new SqlParameter() {DbType = System.Data.DbType.DateTime, ParameterName = "@eTime", Value = eTime}
|
||
};
|
||
var ds = SqlHelper.GetDataSet(SqlHelper.DatabaseType.AYCRM, "ResourceCommunicationDay", CommandType.StoredProcedure, para.ToArray());
|
||
list.WxResourceToDays = ds.Tables[0].ToList<WxResourceDay.WxResourceToDay>();
|
||
list.WxResourceOldDays = ds.Tables[1].ToList<WxResourceDay.WxResourceOldDay>();
|
||
//foreach (DataRow row in ds.Tables[0].Rows)
|
||
//{
|
||
// var info = new WxResourceDay()
|
||
// {
|
||
// jobusername = string.Format("{0}", row["username"]),
|
||
// day1 = decimal.Parse(string.Format("{0}", row["day1"]))
|
||
// };
|
||
// list.Add(info);
|
||
//}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
}
|
||
return list;
|
||
}
|
||
|
||
public void GenWxResourceCount()
|
||
{
|
||
try
|
||
{
|
||
var param1 = new List<OracleParameter>() { };
|
||
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX_RESOURCE.GenWxResourceCount", param1.ToArray());
|
||
}
|
||
catch
|
||
{
|
||
throw;
|
||
}
|
||
}
|
||
|
||
public DataSet GetInnerUserNumByGroup()
|
||
{
|
||
try
|
||
{
|
||
var sql = "select a.gid gid,count(1) num from bas_innerusergroup a left join bas_inneruser b on a.inneruserid = b.pkid left join bas_innergroup e on a.gid = e.gid where b.isdismiss=0 and e.issaledept=1 group by a.gid";
|
||
var param = new List<OracleParameter>();
|
||
return OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
throw;
|
||
}
|
||
}
|
||
|
||
public DataSet GetWorkAccountBindByInnerUserId(decimal innerUserId)
|
||
{
|
||
try
|
||
{
|
||
var sql = "select a.wxnumber from wx_inneruserjobnum a left join wx_workaccount b on a.wxnumber=b.alias where a.inneruserid=:userId and enddate='2050-1-1' and b.isvalid>0 order by startdate";
|
||
var p = new List<OracleParameter>
|
||
{
|
||
new OracleParameter {ParameterName="userId",Value= innerUserId}
|
||
};
|
||
return OracleHelper.DataQueray(CommandType.Text, sql, p.ToArray());
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
throw;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取24小时内没有好友反馈的微信列表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<string> Get24HoursNoWeixinFriend()
|
||
{
|
||
try
|
||
{
|
||
List<string> weixinList = new List<string>();
|
||
var sql = "select username,alias,nickname,inneruserid,isvalid from wx_workaccount where username in " +
|
||
"(select jobusername from(select rank() over(partition by jobusername order by createtime desc) r, a.* from wx_friendsrelation a) where r = 1 and to_char(createtime, 'yyyy-mm-dd hh24:mi:ss') < to_char(sysdate - 1, 'yyyy-mm-dd hh24:mi:ss')) " +
|
||
"and isvalid = 1 and to_char(ctime,'yyyy-mm-dd hh24:mi:ss') < to_char(sysdate - 3, 'yyyy-mm-dd hh24:mi:ss')";
|
||
var p = new List<OracleParameter>();
|
||
DataSet ds = OracleHelper.DataQueray(CommandType.Text, sql, p.ToArray());
|
||
if (ds != null && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
foreach (DataRow item in ds.Tables[0].Rows)
|
||
{
|
||
weixinList.Add(item["alias"].ToString());
|
||
}
|
||
}
|
||
return weixinList;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
throw;
|
||
}
|
||
}
|
||
|
||
public int GetWeiXinPauseTime(string alias)
|
||
{
|
||
try
|
||
{
|
||
var res = 0;
|
||
string sql1 = "select NVL(SUM(durminute),0) from wx_systempauselog where alias=:alias and pausetype=0 and to_char(ctime,'yyyy-mm-dd hh24:mi:ss')>to_char(sysdate-1,'yyyy-mm-dd hh24:mi:ss')";
|
||
var p = new List<OracleParameter>
|
||
{
|
||
new OracleParameter {ParameterName="alias",Value=alias }
|
||
};
|
||
var obj1 = OracleHelper.ExecuteScalar(CommandType.Text, sql1, p.ToArray());
|
||
if (obj1 != null)
|
||
{
|
||
res = int.Parse(obj1.ToString());
|
||
}
|
||
string sql2 = "select ROUND(TO_NUMBER(ctime-(sysdate-1)) * 24 * 60) from (select ctime from wx_systempauselog where alias=:alias and pausetype=1 and to_char(ctime,'yyyy-mm-dd hh24:mi:ss')>to_char(sysdate-1,'yyyy-mm-dd hh24:mi:ss') order by ctime) where rownum=1";
|
||
var obj2 = OracleHelper.ExecuteScalar(CommandType.Text, sql2, p.ToArray());
|
||
if (obj2 != null)
|
||
{
|
||
res += int.Parse(obj2.ToString());
|
||
}
|
||
return res;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
throw;
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
}
|