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() { 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; } } /// /// 推送微信账号到推广网站前端 /// /// /// 1:新增,0:修改 /// /// public bool PushWordAccountData(string alias, int type, out string errmsg) { try { var param1 = new List() { 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; } } /// /// 工作微信封号 /// /// /// /// public bool ModifyWorkAccountIsValid(string alias, decimal isValid, string pauseEndTime, string remark, decimal userId, decimal isPush, out string errmsg) { try { var param1 = new List() { 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; } } /// /// 获取 工作微信好友列表 /// /// /// /// public List GetRcontactByWorkAccount(string workUsername, string column, string sort) { List list = new List(); try { var param1 = new List() { 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(); 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; } /// /// 获取 工作微信群列表 /// /// /// /// /// public List GetGroupsByWorkAccount(string workUsername, string column, string sort) { List list = new List(); try { var param1 = new List() { 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() { }; 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() { }; 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 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() { 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(); } } 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() { 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 GetOrderResourceReport(DateTime sTime, DateTime eTime) { try { var p = new List() { //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(); } catch { throw; } } public WxResourceDay GetWxResourceDay(DateTime sTime, DateTime eTime) { WxResourceDay list = new WxResourceDay(); try { var para = new List() { 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(); list.WxResourceOldDays = ds.Tables[1].ToList(); //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() { }; 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(); 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 { new OracleParameter {ParameterName="userId",Value= innerUserId} }; return OracleHelper.DataQueray(CommandType.Text, sql, p.ToArray()); } catch (Exception ex) { LogHelper.Error(ex); throw; } } /// /// 获取24小时内没有好友反馈的微信列表 /// /// public List Get24HoursNoWeixinFriend() { try { List weixinList = new List(); 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(); 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 { 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; } } } }