public IHttpActionResult ExistCustomer(decimal PersonId) { try { OR_Person oR_Person = dbContext.OR_Person.FirstOrDefault(p => p.Id == PersonId); if (oR_Person == null) { return(JsonResultHelper.JsonResult(1000, "该客服不存在,请刷新!", null)); } var arr = dbContext.KS_Confirm.Where(p => p.IdPerson == PersonId).Select(p => p.TypeId).ToArray(); return(JsonResultHelper.JsonResult(0, "操作成功", arr)); } catch (Exception ex) { return(JsonResultHelper.JsonResult(1000, "该客服不存在,请刷新!", null)); } }
public IHttpActionResult CheckBox(decimal PersonId, decimal TypeId, bool IsCheck) { try { OR_Person oR_Person = dbContext.OR_Person.FirstOrDefault(p => p.Id == PersonId); //bool flag = oR_Person == null; if (oR_Person == null) { return(JsonResultHelper.JsonResult(1000, "该客服不存在,请刷新!", null)); } var _sysType = dbContext.BA_SysEnType.FirstOrDefault(p => p.Id == TypeId); if (_sysType == null) { return(JsonResultHelper.JsonResult(1000, "该客服不存在,请刷新!", null)); } if (IsCheck) { if (dbContext.KS_Confirm.Any(p => p.TypeId == TypeId && p.IdPerson == PersonId)) { return(JsonResultHelper.JsonResult(1000, "该客服已绑定改类型,请刷新!", null)); } dbContext.KS_Confirm.Add(new KS_Confirm { TypeId = TypeId, IdPerson = PersonId });//表中新增一条数据 dbContext.SaveChanges(); } else { var info = dbContext.KS_Confirm.FirstOrDefault(p => p.IdPerson == PersonId && p.TypeId == TypeId);//删除表中数据 dbContext.KS_Confirm.Remove(info); dbContext.SaveChanges(); } return(JsonResultHelper.JsonResult(0, "操作成功!", null)); } catch (Exception ex) { return(JsonResultHelper.JsonResult(1000, ex.Message, null)); } }
public IHttpActionResult AllNewCustomer(decimal PersonId, bool All) { try { OR_Person oR_Person = dbContext.OR_Person.FirstOrDefault(p => p.Id == PersonId); if (oR_Person == null) { return(JsonResultHelper.JsonResult(1000, "该客服不存在,请刷新!", null)); } if (All) { //拿到当前客服的现在存在的类型 var oldCust = dbContext.KS_Confirm.Where(p => p.IdPerson == PersonId).Select(p => p.TypeId).ToList(); //过滤不需要新增的类型 var CustomerLis = dbContext.v_KsType.Select(p => p.Id).ToList(); var newCust = CustomerLis.Where(p => !oldCust.Contains(p)).ToList(); if (newCust.Count() == 0) //如果没有数据就不走下面了。 { return(JsonResultHelper.JsonResult(0, "操作成功")); } string add = ""; newCust.ForEach(item => { add += string.Format(@"INSERT dbo.KS_Confirm(IdPerson,TypeId) VALUES ({0}, {1})", PersonId, item); }); dbContext.Database.ExecuteSqlCommand(add); return(JsonResultHelper.JsonResult(0, "操作成功")); } else { string sql = string.Format(@"DELETE FROM KS_Confirm WHERE IdPerson={0}", PersonId); dbContext.Database.ExecuteSqlCommand(sql); return(JsonResultHelper.JsonResult(0, "操作成功")); } } catch (Exception ex) { return(JsonResultHelper.JsonResult(1000, ex.Message, null)); } }
static void Main(string[] args) { try { YiFang_CustomerComplaintEntities dbContext = new YiFang_CustomerComplaintEntities(); //同步部门信息 string accessToken = AccessToken.GetAccessToken(); IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list"); OapiDepartmentListRequest request = new OapiDepartmentListRequest(); //request.Id request.SetHttpMethod("GET"); OapiDepartmentListResponse response = client.Execute(request, accessToken); if (response.Errcode != 0) { Console.WriteLine("错误原因:【" + response.Errmsg + "】"); } //移除部门-人员信息 dbContext.Database.ExecuteSqlCommand("delete REF_Person_Department"); //获取钉钉部门和人员集合 List <long> DepartmentList = new List <long>(); List <string> PersonList = new List <string>(); //获取普通用户 var nomal = dbContext.AC_SysRoles.FirstOrDefault(p => p.Name == "普通用户"); if (nomal == null) { Console.WriteLine("请维护角色"); return; } DingTalkDepartmentList(dbContext, 0, response.Department); foreach (var item in response.Department.OrderBy(k => k.Id)) { //部门人员 //添加读取该部门所有人员信息 var personlist = JsonConvert.DeserializeObject <Jusoft_DepartmentPerson>(HttpRequestHelper.HttpGet("https://oapi.dingtalk.com/user/list?access_token=" + accessToken + "&department_id=" + item.Id)); foreach (var user in personlist.userlist) { var person = dbContext.OR_Person.FirstOrDefault(k => k.PsnNum == user.userid); //person.REF_Person_Department.Add(new REF_Person_Department { }); if (person == null) { person = new OR_Person { PsnNum = user.userid, Sex = 0 }; dbContext.OR_Person.Add(person); } person.Name = user.name; person.CodeDepartment = user.department[0].ToString(); person.PsnMobilePhone = user.mobile; person.HeadUrl = user.avatar; person.LoginName = user.userid; person.ExternalBit = false; dbContext.SaveChanges(); Console.WriteLine("【" + user.name + "】人员-同步成功"); dbContext.REF_Person_Department.Add(new REF_Person_Department { CodeDepartment = item.Id.ToString(), IdPerson = person.Id }); //同步信息到账户表 if (!dbContext.AC_SysUsers.Any(k => k.UserName == user.userid)) { var _newUser = new AC_SysUsers { UserName = user.userid, PasswordType = 1, PasswordHash = user.userid, }; dbContext.AC_SysUsers.Add(_newUser); dbContext.SaveChanges(); string sql = string.Format("INSERT dbo.REF_User_Roles(IdSysUsers,IdSysRoles)VALUES({0},{1})", _newUser.Id, nomal.Id); Console.WriteLine(sql); dbContext.Database.ExecuteSqlCommand(sql); } dbContext.SaveChanges(); //部门及人员 赋值 PersonList.Add(user.userid); } DepartmentList.Add(item.Id); } //离职人员 -(我们系统存在钉钉不存在) var employee = dbContext.OR_Person.Where(k => k.ExternalBit == false).Select(k => k.PsnNum).ToList(); foreach (var item in employee.Except(PersonList)) { var yee = dbContext.OR_Person.FirstOrDefault(k => k.PsnNum == item); yee.CodeDepartment = "1"; yee.LeaveDate = DateTime.Now; dbContext.REF_Person_Department.RemoveRange(dbContext.REF_Person_Department.Where(w => w.IdPerson == yee.Id)); dbContext.SaveChanges(); Console.WriteLine("【" + yee.Name + "】人员-离职成功"); } //删除部门-(我们系统存在钉钉不存在) var Deletedepartment = dbContext.OR_Department.Select(k => k.Code).ToList().Select(k => Convert.ToInt64(k)).ToList(); foreach (var item in Deletedepartment.Except(DepartmentList).OrderByDescending(k => k)) { var delete = dbContext.OR_Department.FirstOrDefault(k => k.Code == item.ToString()); dbContext.OR_Department.Remove(delete); dbContext.SaveChanges(); Console.WriteLine("【" + delete.Name + "】部门-删除成功"); } Console.WriteLine("同步完成"); } catch (Exception ex) { Console.WriteLine("【异常】【" + ex.ToString() + "】"); } Console.WriteLine(); }
public void ProcessRequest(HttpContext context) { string mToken = Db.Models.Allocation.Token; string mSuiteKey = Db.Models.Allocation.CorpId; string mEncodingAesKey = Db.Models.Allocation.EncodingAESKey; //mSuiteKey = "suite4xxxxxxxxxxxxxxx"; #region 获取回调URL里面的参数 //url中的签名 string msgSignature = context.Request["signature"]; //url中的时间戳 string timeStamp = context.Request["timestamp"]; //url中的随机字符串 string nonce = context.Request["nonce"]; //post数据包数据中的加密数据 string encryptStr = GetPostParam(context); #endregion //string sEchoStr = ""; DingTalkCrypt dingTalk = new DingTalkCrypt(mToken, mEncodingAesKey, mSuiteKey); string plainText = ""; int bools = dingTalk.DecryptMsg(msgSignature, timeStamp, nonce, encryptStr, ref plainText); string res = "success"; #region 处理钉钉回调返回的数据 try { LogHelper.WriteLog("钉钉审批回调返回数据格式" + plainText); //获取token var DinToken = GetToken(); LogHelper.WriteLog("回调token" + DinToken); Callback cb = Newtonsoft.Json.JsonConvert.DeserializeObject <Callback>(plainText); switch (cb.EventType) { case "bpms_instance_change": #region 审批实列 LogHelper.WriteLog("审批实列"); var KsCusmoterReal = dbContext.KS_Customer.FirstOrDefault(p => p.DingTalkApproval == cb.processInstanceId); if (cb.result == "refuse") { //客诉审批状态为拒绝 KsCusmoterReal.State = 4; } else if (cb.result == "agree") { //客诉审批状态为完成 KsCusmoterReal.State = 2; } #endregion break; case "bpms_task_change": #region 审批任务 if (cb.type == "finish") { var KsCusmoter = dbContext.KS_Customer.FirstOrDefault(p => p.DingTalkApproval == cb.processInstanceId); if (KsCusmoter != null) { //获取审批实列详情 var ApprovalDetail = Db.ThirdSystem.AccessToken.ApprovalDetails(cb.processInstanceId, DinToken); if (ApprovalDetail.Errcode != 0) { LogHelper.WriteLog("获取用户详情失败::" + ApprovalDetail.Errmsg); } //把json格式的审批实列详情转换为实体类 var data = Newtonsoft.Json.JsonConvert.DeserializeObject <Help.Root>(ApprovalDetail.Body); LogHelper.WriteLog("【审批任务】" + ApprovalDetail.Body); //实例化审批记录表 KS_Customer_Approval KsCusApp = new KS_Customer_Approval(); var OrPerson = dbContext.OR_Person.FirstOrDefault(p => p.PsnNum == cb.staffId); //审批人 LogHelper.WriteLog("审批人" + KsCusApp.IdPerson); if (OrPerson != null) { KsCusApp.IdPerson = OrPerson.Id; KsCusApp.Name = OrPerson.Name; } KsCusApp.IdCustomer = KsCusmoter.Id; var FinishTime = Helper.DateTimeToStamp(cb.finishTime); KsCusApp.FinishTime = FinishTime; foreach (var item in data.process_instance.tasks) { if (KsCusApp.FinishTime == item.create_time) { //获取tasks集合中第一个用户id,就是下个审批人的用户id var PersonApproval = dbContext.OR_Person.FirstOrDefault(p => p.PsnNum == item.userid); if (PersonApproval != null) { KsCusmoter.IdPersonApproval = PersonApproval.Id; } } } //type="finish"并且result== "redirect为审批任务转交 if (data.process_instance.status == "RUNNING") { //客诉审批记录为同意 KsCusApp.state = 1; } //type="finish"并且result== "refuse"为审批任务拒绝 else if (data.process_instance.result == "refuse") { //status: "COMPLETED" //客诉审批记录为拒绝 KsCusApp.state = 2; //拒绝理由 } //type="finish"为审批完成 else if (data.process_instance.status == "COMPLETED") { LogHelper.WriteLog("审批任务完成"); //客诉审批记录为同意 KsCusApp.state = 1; KsCusApp.FinishTime = DateTime.Now; } KsCusApp.Remark = cb.remark; dbContext.KS_Customer_Approval.Add(KsCusApp); } } else if (cb.type == "start") { var KsCusmoter = dbContext.KS_Customer.FirstOrDefault(p => p.DingTalkApproval == cb.processInstanceId); //获取审批实列详情 var ApprovalDetail = Db.ThirdSystem.AccessToken.ApprovalDetails(cb.processInstanceId, DinToken); if (ApprovalDetail.Errcode != 0) { LogHelper.WriteLog("获取用户详情失败::" + ApprovalDetail.Errmsg); } LogHelper.WriteLog("【发起审批】" + ApprovalDetail.Body); //把json格式的审批实列详情转换为实体类 var data = Newtonsoft.Json.JsonConvert.DeserializeObject <Help.Root>(ApprovalDetail.Body); foreach (var item in data.process_instance.tasks) { if (data.process_instance.create_time == item.create_time) { //获取tasks集合中第一个用户id,就是下个审批人的用户id var PersonApproval = dbContext.OR_Person.FirstOrDefault(p => p.PsnNum == item.userid); if (PersonApproval != null) { KsCusmoter.IdPersonApproval = PersonApproval.Id; } } } } #endregion break; case "user_add_org": case "user_modify_org": case "user_leave_org": #region 用户回调 foreach (var item in cb.UserId) { LogHelper.WriteLog("用户Id::" + item); var DdPersonInfo = Db.ThirdSystem.AccessToken.CallbackUserInfo(item, DinToken); if (DdPersonInfo.Errcode != 0) { LogHelper.WriteLog("获取用户详情失败::" + DdPersonInfo.Errmsg); } var PersonInfo = dbContext.OR_Person.FirstOrDefault(p => p.PsnNum == item); //找到回调的用户 if (PersonInfo != null) { //判断为user_modify_org是更改用户信息 //否则就是用户离职 if (cb.EventType == "user_modify_org") { //修改用户 PersonInfo.Name = DdPersonInfo.Name; PersonInfo.PsnMobilePhone = DdPersonInfo.Mobile; PersonInfo.PsnEmail = DdPersonInfo.Email; PersonInfo.HeadUrl = DdPersonInfo.Extattr; PersonInfo.CodeDepartment = DdPersonInfo.Department[0].ToString(); } else { //删除用户 PersonInfo.LeaveDate = DateTime.Now; PersonInfo.CodeDepartment = "1"; } } else { //新增用户 OR_Person OrPerson = new OR_Person(); OrPerson.PsnNum = item; OrPerson.LoginName = item; PersonInfo.Name = DdPersonInfo.Name; PersonInfo.PsnMobilePhone = DdPersonInfo.Mobile; PersonInfo.PsnEmail = DdPersonInfo.Email; PersonInfo.HeadUrl = DdPersonInfo.Extattr; PersonInfo.CodeDepartment = DdPersonInfo.Department[0].ToString(); PersonInfo.CreateTime = DateTime.Now; PersonInfo.Sex = 0; dbContext.OR_Person.Add(OrPerson); } } #endregion break; case "org_dept_create": case "org_dept_modify": case "org_dept_remove": #region 部门回调 foreach (var item in cb.DeptId) { var DdDepInfo = Db.ThirdSystem.AccessToken.CallbackDepInfo(item, DinToken); if (DdDepInfo.Errcode != 0) { LogHelper.WriteLog("获取用户详情失败::" + DdDepInfo.Errmsg); } var DelDepInfo = dbContext.OR_Department.FirstOrDefault(p => p.Code == item); //判断是否找到该部门 //否则就是创建部门 if (DelDepInfo != null) { //找到判断是更改部门信息 //还是删除部门 if (cb.EventType == "org_dept_modify") { //修改部门 DelDepInfo.Name = DdDepInfo.Name; DelDepInfo.CodeDepartment = DdDepInfo.Parentid.ToString(); } else { //删除部门 dbContext.OR_Department.Remove(DelDepInfo); } } else { //新增部门 OR_Department OrDepInfo = new OR_Department(); OrDepInfo.Name = DdDepInfo.Name; OrDepInfo.Code = DdDepInfo.Id.ToString(); OrDepInfo.CodeDepartment = DdDepInfo.Parentid.ToString(); OrDepInfo.CreateTime = DateTime.Now; dbContext.OR_Department.Add(OrDepInfo); } } #endregion break; } LogHelper.WriteLog("回调执行完成,"); dbContext.SaveChanges(); LogHelper.WriteLog("回调成功,保存成功"); } catch (Exception ex) { LogHelper.WriteLog("回调异常信息:" + ex.Message); } #endregion //DingTalk_call_back_tag.call_back_tag(bools, plainText); timeStamp = Help.DingTalkCrypt.GetTimeStamp().ToString(); string encrypt = ""; string signature = ""; dingTalk = new DingTalkCrypt(mToken, mEncodingAesKey, mSuiteKey); dingTalk.EncryptMsg(res, timeStamp, nonce, ref encrypt, ref signature); Hashtable jsonMap = new Hashtable { { "msg_signature", signature }, { "encrypt", encrypt }, { "timeStamp", timeStamp }, { "nonce", nonce } }; string result = JsonConvert.SerializeObject(jsonMap); context.Response.Write(result); }