Exemple #1
0
        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));
            }
        }
Exemple #2
0
        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));
            }
        }
Exemple #3
0
        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));
            }
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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);
        }