TG.WXCRM.V4/DAL/Wx/WX_WORKACCOUNT_DAL.cs

442 lines
22 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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