Exemplo n.º 1
0
        public static void DingTalkDepartmentList(YiFang_CustomerComplaintEntities dbContext, long?Id, List <DepartmentDomain> DingTalkDepartment)
        {
            foreach (var item in DingTalkDepartment.Where(k => k.Parentid == Id).ToList())
            {
                var department = dbContext.OR_Department.FirstOrDefault(k => k.Code == item.Id.ToString());
                if (department == null)
                {
                    department = new OR_Department {
                        Code = item.Id.ToString()
                    };
                    dbContext.OR_Department.Add(department);
                }
                department.Name           = item.Name;
                department.CodeDepartment = item.Parentid.ToString() == "0" ? null : item.Parentid.ToString();
                department.FullName       = item.Name;
                department.CreateTime     = DateTime.Now;
                //提交部门信息
                dbContext.SaveChanges();
                Console.WriteLine("【" + item.Name + "】部门-同步成功");


                DingTalkDepartmentList(dbContext, item.Id, DingTalkDepartment);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 发送审批实列
        /// </summary>
        /// <param name="kSCustomer">客诉</param>
        /// <param name="Token"></param>
        /// <param name="DbContext"></param>
        /// <returns></returns>
        public static OapiProcessinstanceCreateResponse SendTemplate(KS_Customer kSCustomer, int DepCode, string Userid, string Token, YiFang_CustomerComplaintEntities DbContext)
        {
            DefaultDingTalkClient            client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
            OapiProcessinstanceCreateRequest request = new OapiProcessinstanceCreateRequest();

            request.AgentId          = Allocation.AgentId;
            request.ProcessCode      = Allocation.ProcessCode;
            request.DeptId           = DepCode;
            request.OriginatorUserId = Userid;
            List <OapiProcessinstanceCreateRequest.FormComponentValueVoDomain> formComponentValues = new List <OapiProcessinstanceCreateRequest.FormComponentValueVoDomain>();
            //客诉门店
            var Person = DbContext.OR_Person.FirstOrDefault(p => p.Id == kSCustomer.IdPerson);
            //一方督导
            var PersonSupervision = DbContext.OR_Person.FirstOrDefault(p => p.Id == kSCustomer.IdPersonSupervision);
            //异常归类
            var Abnormal = DbContext.BA_SysEnType.FirstOrDefault(p => p.Id == kSCustomer.AbnormalId)?.Name;
            //客诉小类名称
            var customername = DbContext.BA_SysEnType.FirstOrDefault(p => p.Id == kSCustomer.SubclassId).Name;
            //所属大区
            //var regionid = DbContext.AC_SysUsers.FirstOrDefault(k => k.UserName == Person.LoginName).ST_Store.FirstOrDefault().RegionId;
            var regionid   = 1;
            var RegionName = DbContext.BA_SysEnType.FirstOrDefault(p => p.Id == regionid)?.Name;;

            switch (kSCustomer.StateId)
            {
            case 1:
                #region 创建客诉类型为原物料的审批
                OapiProcessinstanceCreateRequest.FormComponentValueVoDomain from1 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain()
                {
                    Name = "客诉类型", Value = customername
                };
                formComponentValues.Add(from1);
                var from2 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from2.Name  = "客诉内容";
                from2.Value = kSCustomer.Remark + "";
                formComponentValues.Add(from2);
                var from3 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from3.Name  = "客诉单号";
                from3.Value = kSCustomer.Id + "";
                formComponentValues.Add(from3);
                var from4 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from4.Name  = "提交时间";
                from4.Value = kSCustomer.CreateTime + "";
                formComponentValues.Add(from4);
                var from5 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from5.Name  = "异常产品";
                from5.Value = kSCustomer.ProductIdNames + "";
                formComponentValues.Add(from5);
                var from6 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from6.Name  = "异常数量";
                from6.Value = kSCustomer.Number + "";
                formComponentValues.Add(from6);
                var from7 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from7.Name  = "异常归类";
                from7.Value = Abnormal + "";
                formComponentValues.Add(from7);
                var from8 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from8.Name  = "到货日期";
                from8.Value = kSCustomer.DeliveryDate + "";
                formComponentValues.Add(from8);
                var from9 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from9.Name  = "生产批次";
                from9.Value = kSCustomer.ProductionBatch + "";
                formComponentValues.Add(from9);
                var from10 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from10.Name  = "一言为订订单号";
                from10.Value = kSCustomer.OrderNumber + "";
                formComponentValues.Add(from10);
                var from11 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from11.Name  = "一芳督导";
                from11.Value = PersonSupervision?.Name + "";
                formComponentValues.Add(from11);
                var from12 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from12.Name  = "客诉门店";
                from12.Value = Person?.Id + "";
                formComponentValues.Add(from12);
                var from13 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from13.Name  = "门店联系人";
                from13.Value = kSCustomer.StoreContact + "";
                formComponentValues.Add(from13);
                var from14 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from14.Name  = "详情";
                from14.Value = "http://47.103.125.208:6071/#/detail?id=" + kSCustomer.Id + "&type=" + kSCustomer.StateId + "&state=" + kSCustomer.State + "";
                formComponentValues.Add(from14);
                var from15 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                from15.Name  = "所属大区";
                from15.Value = RegionName;
                formComponentValues.Add(from15);
                #endregion
                break;

            case 2:
                #region 创建客诉类型为设备报修的审批
                var Repair1 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair1.Name  = "客诉类型";
                Repair1.Value = customername;
                formComponentValues.Add(Repair1);
                var Repair2 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair2.Name  = "客诉内容";
                Repair2.Value = kSCustomer.Remark + "";
                formComponentValues.Add(Repair2);
                var Repair3 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair3.Name  = "客诉单号";
                Repair3.Value = kSCustomer.Id + "";
                formComponentValues.Add(Repair3);
                var Repair4 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair4.Name  = "提交时间";
                Repair4.Value = "" + kSCustomer.CreateTime;
                formComponentValues.Add(Repair4);
                var Repair5 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair5.Name  = "异常产品";
                Repair5.Value = "" + kSCustomer.ProductIdNames;
                formComponentValues.Add(Repair5);
                var Repair6 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair6.Name  = "门店联系人";
                Repair6.Value = "" + kSCustomer.StoreContact;
                formComponentValues.Add(Repair6);
                var Repair7 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair7.Name  = "门店联系人电话";
                Repair7.Value = "" + kSCustomer.StoreTel;
                formComponentValues.Add(Repair7);
                var Repair8 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair8.Name  = "门店地址";
                Repair8.Value = "" + kSCustomer.StoreAddress;
                formComponentValues.Add(Repair8);
                var Repair9 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair9.Name  = "一芳督导";
                Repair9.Value = "" + PersonSupervision?.Name;
                formComponentValues.Add(Repair9);
                var Repair10 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair10.Name  = "详情";
                Repair10.Value = "http://47.103.125.208:6071/#/detail?id=" + kSCustomer.Id + "&type=" + kSCustomer.StateId + "&state=" + kSCustomer.State + "";
                formComponentValues.Add(Repair10);
                var Repair11 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Repair11.Name  = "所属大区";
                Repair11.Value = RegionName;
                formComponentValues.Add(Repair11);
                #endregion
                break;

            case 3:
                #region 创建客诉类型为运营反馈的审批
                var Operate1 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate1.Name  = "客诉类型";
                Operate1.Value = customername;
                formComponentValues.Add(Operate1);
                var Operate2 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate2.Name  = "客诉内容";
                Operate2.Value = "" + kSCustomer.Remark;
                formComponentValues.Add(Operate2);
                var Operate3 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate3.Name  = "客诉单号";
                Operate3.Value = "" + kSCustomer.Id;
                formComponentValues.Add(Operate3);
                var Operate4 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate4.Name  = "提交时间";
                Operate4.Value = "" + kSCustomer.CreateTime;
                formComponentValues.Add(Operate4);
                var Operate5 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate5.Name  = "异常产品";
                Operate5.Value = "" + kSCustomer.ProductIdNames;
                formComponentValues.Add(Operate5);
                var Operate6 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate6.Name  = "联系人";
                Operate6.Value = "" + kSCustomer.StoreContact;
                formComponentValues.Add(Operate6);
                var Operate7 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate7.Name  = "联系电话";
                Operate7.Value = "" + kSCustomer.StoreTel;
                formComponentValues.Add(Operate7);
                var Operate8 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate8.Name  = "邮箱";
                Operate8.Value = "" + kSCustomer.StoreEmail;
                formComponentValues.Add(Operate8);
                var Operate9 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate9.Name  = "客诉门店";
                Operate9.Value = "" + kSCustomer.Id;
                formComponentValues.Add(Operate9);
                var Operate10 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate10.Name  = "门店联系人";
                Operate10.Value = "" + Person?.Name;
                formComponentValues.Add(Operate10);
                var Operate11 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate11.Name  = "门店联系人电话";
                Operate11.Value = "" + Person?.PsnMobilePhone;
                formComponentValues.Add(Operate11);
                var Operate12 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate12.Name  = "详情";
                Operate12.Value = "http://47.103.125.208:6071/#/detail?id=" + kSCustomer.Id + "&type=" + kSCustomer.StateId + "&state=" + kSCustomer.State + "";
                formComponentValues.Add(Operate12);
                var Operate13 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Operate13.Name  = "所属大区";
                Operate13.Value = RegionName;
                formComponentValues.Add(Operate13);
                #endregion
                break;

            case 4:
                #region 创建客诉类型为其他反馈的审批
                var Other1 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other1.Name  = "客诉类型";
                Other1.Value = customername;
                formComponentValues.Add(Other1);
                var Other2 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other2.Name  = "客诉内容";
                Other2.Value = "" + kSCustomer.Remark;
                formComponentValues.Add(Other2);
                var Other3 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other3.Name  = "客诉单号";
                Other3.Value = "" + kSCustomer.Id;
                formComponentValues.Add(Other3);
                var Other4 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other4.Name  = "提交时间";
                Other4.Value = "" + kSCustomer.CreateTime;
                formComponentValues.Add(Other4);
                var Other5 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other5.Name  = "联系人";
                Other5.Value = "" + kSCustomer.StoreContact;
                formComponentValues.Add(Other5);
                var Other6 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other6.Name  = "联系电话";
                Other6.Value = "" + kSCustomer.StoreTel;
                formComponentValues.Add(Other6);
                var Other7 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other7.Name  = "邮箱";
                Other7.Value = "" + kSCustomer.StoreEmail;
                formComponentValues.Add(Other7);
                var Other8 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other8.Name  = "一芳督导";
                Other8.Value = "" + PersonSupervision?.Name;
                formComponentValues.Add(Other8);
                var Other9 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other9.Name  = "客诉门店";
                Other9.Value = "" + Person?.Id;
                formComponentValues.Add(Other9);
                var Other10 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other10.Name  = "门店联系电话";
                Other10.Value = "" + Person?.PsnMobilePhone;
                formComponentValues.Add(Other10);
                var Other11 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other11.Name  = "门店联系人";
                Other11.Value = "" + Person?.Name;
                formComponentValues.Add(Other11);
                var Other12 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other12.Name  = "详情";
                Other12.Value = "http://47.103.125.208:6071/#/detail?id=" + kSCustomer.Id + "&type=" + kSCustomer.StateId + "&state=" + kSCustomer.State + "";
                formComponentValues.Add(Other12);
                var Other13 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
                Other13.Name  = "所属大区";
                Other13.Value = RegionName;
                formComponentValues.Add(Other13);
                #endregion
                break;
            }
            //生成图片至钉钉
            //获取当前访问ip信息
            string url         = HttpContext.Current.Request.Url.ToString().Replace(HttpContext.Current.Request.Url.PathAndQuery, ""); //服务器协议+域名+端口
            var    attachments = DbContext.BA_Attachment.Where(k => k.SourceId == kSCustomer.Id && k.CodeBusinessType == "KS01").Select(k => "\"" + url + k.FileAccess + "\"").ToList();
            if (attachments.Count() > 0)
            {
                formComponentValues.Add(new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain()
                {
                    Name = "图片", Value = $"[{string.Join(",", attachments)}]"
                });
            }

            request.FormComponentValues_ = formComponentValues;
            OapiProcessinstanceCreateResponse response = client.Execute(request, Token);
            return(response);
        }
Exemplo n.º 3
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();
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            try
            {
                YiFang_CustomerComplaintEntities DbContext = new YiFang_CustomerComplaintEntities();
                var list = DbContext.KS_Customer.Where(p => p.DingTalkApproval != null && p.Number == 4).Select(p => new { p.DingTalkApproval, p.Id }).ToList();
                //list.ForEach(ks =>
                //{
                //    var info = DbContext.KS_Customer.FirstOrDefault(p => p.Id == ks.Id);
                //    var number = ApprovalDetails(ks.DingTalkApproval);
                //    info.Number = number;

                //    Console.WriteLine("同步客诉单【" + ks.Id + "】");
                //});
                var person = DbContext.OR_Person.Where(p => p.LeaveDate == null);
                var all    = DbContext.KS_Customer_Approval.Where(p => p.state > 2);
                foreach (var ks in list)
                {
                    Console.WriteLine("同步客诉单【" + ks.Id + "】");
                    IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
                    OapiProcessinstanceGetRequest request = new OapiProcessinstanceGetRequest();
                    request.ProcessInstanceId = ks.DingTalkApproval;
                    string token = AccessToken.GetAccessToken();
                    OapiProcessinstanceGetResponse response = client.Execute(request, token);
                    Console.WriteLine(response.Errmsg);
                    if (response.Errcode == 0)
                    {
                        if (response.ProcessInstance.Status == "COMPLETED")
                        {
                            Console.WriteLine("审批单结束");
                            var info = DbContext.KS_Customer.FirstOrDefault(p => p.Id == ks.Id);
                            if (response.ProcessInstance.Result == "agree")
                            {
                                info.Number       = 1;
                                info.DeliveryDate = DateTime.Now;
                                info.State        = 2;
                            }
                            if (response.ProcessInstance.Result == "refuse")
                            {
                                info.Number       = 2;
                                info.DeliveryDate = DateTime.Now;
                                info.State        = 2;
                            }
                            DbContext.SaveChanges();
                            Console.WriteLine("审批完成");
                        }
                        //新增审批详情
                        foreach (var u in response.ProcessInstance.Tasks)
                        {
                            if (u.Userid == null)
                            {
                                continue;
                            }
                            Console.WriteLine(u.Userid);
                            var ren = person.FirstOrDefault(p => p.PsnNum == u.Userid);
                            if (ren == null)
                            {
                                continue;
                            }
                            Console.WriteLine(ren.Id.ToString());
                            if (all.Any(p => p.IdCustomer == ks.Id && p.IdPerson == ren.Id))
                            {
                                continue;
                            }

                            if (u.TaskResult == "AGREE")
                            {
                                KS_Customer_Approval kS_Customer = new KS_Customer_Approval
                                {
                                    FinishTime = DateTime.Now,
                                    IdCustomer = ks.Id,
                                    IdPerson   = ren.Id,
                                    Name       = ren.Name,
                                    state      = 3
                                };
                                Console.WriteLine("审批同意");
                                DbContext.KS_Customer_Approval.Add(kS_Customer);
                            }
                            if (u.TaskResult == "REFUSE")
                            {
                                KS_Customer_Approval kS_Customer = new KS_Customer_Approval
                                {
                                    FinishTime = DateTime.Now,
                                    IdCustomer = ks.Id,
                                    IdPerson   = ren.Id,
                                    Name       = ren.Name,
                                    state      = 4
                                };
                                Console.WriteLine("审批拒绝");
                                DbContext.KS_Customer_Approval.Add(kS_Customer);
                            }
                        }
                        Console.WriteLine("成功");
                    }
                }
                DbContext.SaveChanges();
                Console.WriteLine("同步完成");
                //Environment.Exit(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            System.Environment.Exit(0);
        }
Exemplo n.º 5
0
        public override Task GrantClientCredentials(OAuthGrantClientCredentialsContext context)
        {
            YiFang_CustomerComplaintEntities dbContext = new YiFang_CustomerComplaintEntities();

            try
            {
                //var data = await context.Request.ReadFormAsync();
                var    formData = context.Request.ReadFormAsync();
                string Code     = formData.Result["Code"];
                string CS       = formData.Result["CS"];
                //ClaimsIdentity oAuthIdentity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
                ////用户名
                //oAuthIdentity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, "19423657671291041"));
                ////设置授权凭据
                //AuthenticationProperties properties = CreateProperties("19423657671291041");
                //AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
                //context.Validated(ticket);
                //return base.GrantClientCredentials(context);
                //Code临时授权码为null执行微信登录,不为null执行钉钉登录
                if (!string.IsNullOrEmpty(Code))
                {
                    if (CS == "CS")
                    {
                        ClaimsIdentity oAuthIdentity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
                        //用户名
                        oAuthIdentity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, Code));
                        //设置授权凭据
                        AuthenticationProperties properties = CreateProperties(Code);
                        AuthenticationTicket     ticket     = new AuthenticationTicket(oAuthIdentity, properties);
                        context.Validated(ticket);
                    }
                    else
                    {
                        DefaultDingTalkClient      defaultDingTalk = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo");
                        OapiUserGetuserinfoRequest req             = new OapiUserGetuserinfoRequest();
                        req.Code = Code;
                        req.SetHttpMethod("GET");
                        OapiUserGetuserinfoResponse execute = defaultDingTalk.Execute(req, AccessToken.GetAccessToken());
                        if (execute.Errcode != 0)
                        {
                            DingTalk.Core.Logs.LogHelper.WriteLog(execute.Body);
                            context.SetError("授权码出错啦或配置错误");
                            return(base.GrantClientCredentials(context));
                        }
                        string userid = execute.Userid;
                        var    Person = dbContext.OR_Person.FirstOrDefault(p => p.LoginName == userid);
                        if (Person == null)
                        {
                            context.SetError("该人员不在组织中");
                            return(base.GrantClientCredentials(context));
                        }
                        ClaimsIdentity oAuthIdentity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
                        //用户名
                        oAuthIdentity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, userid));
                        //设置授权凭据
                        AuthenticationProperties properties = CreateProperties(userid);
                        AuthenticationTicket     ticket     = new AuthenticationTicket(oAuthIdentity, properties);
                        context.Validated(ticket);
                    }
                    //return base.GrantClientCredentials(context);
                    #region 钉钉登录
                    //if (Code=="123")
                    //{
                    //    ClaimsIdentity oAuthIdentity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
                    //                                                                         //010742350933650042
                    //    oAuthIdentity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, "010742350933650042"));
                    //    AuthenticationProperties properties = CreateProperties("010742350933650042");
                    //    AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
                    //    context.Validated(ticket);
                    //    return base.GrantClientCredentials(context);
                    //}

                    //var AccessToken= Jusoft.YiFang.Db.ThirdSystem.AccessToken.GetAccessToken();
                    //if (string.IsNullOrEmpty(AccessToken))
                    //{
                    //    context.SetError("AccessToken", $"Code【{Code}】获取token失败");
                    //    return base.GrantClientCredentials(context);
                    //}
                    //var resUserId= Jusoft.YiFang.Db.ThirdSystem.AccessToken.GetUserId(Code, AccessToken);
                    //if (resUserId.Errcode!=0)
                    //{
                    //    context.SetError("resUserId", $"Code【{Code}】"+resUserId.Errmsg);
                    //    return base.GrantClientCredentials(context);
                    //}
                    //var Person = dbContext.OR_Person.FirstOrDefault(p=>p.LoginName == resUserId.Userid);
                    //if (Person != null)
                    //{
                    //    ClaimsIdentity oAuthIdentity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
                    //    oAuthIdentity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, Person.LoginName));
                    //    AuthenticationProperties properties = CreateProperties(Person.LoginName);
                    //    AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
                    //    context.Validated(ticket);
                    //}
                    //else
                    //{
                    //    context.SetError("Person", $"Code【{Code}】未找到人员,请联系管理员");
                    //    return base.GrantClientCredentials(context);
                    //}
                    #endregion
                }
                else
                {
                    #region 微信登录
                    //string userid = formData.Result["username"];//用户名
                    //string password = formData.Result["password"];//密码
                    //string openid = formData.Result["openid"];//微信openid
                    //                                          //优先校验openid
                    //if (string.IsNullOrEmpty(openid))
                    //{
                    //    context.SetError("invalid_grant", "openid不合法");
                    //    return base.GrantClientCredentials(context);
                    //}
                    //if (!string.IsNullOrEmpty(userid))
                    //{
                    //    var person = dbContext.OR_Person.FirstOrDefault(k => k.LoginName == userid);
                    //    if (person == null)
                    //    {
                    //        context.SetError("1001", "门店账号信息不对,请重新输入");
                    //        return base.GrantClientCredentials(context);
                    //    }
                    //    else if (!string.IsNullOrEmpty(person.WeChatOpenId))
                    //    {
                    //        context.SetError("1001", $"门店账号信息已绑定用户,请联系管理员操作");
                    //        return base.GrantClientCredentials(context);
                    //    }
                    //    if (!dbContext.AC_SysUsers.Any(k => k.UserName == userid && k.PasswordHash == password))
                    //    {
                    //        context.SetError("1001", "门店密码信息不对,请重新输入");
                    //        return base.GrantClientCredentials(context);
                    //    }
                    //    person.WeChatOpenId = openid;
                    //    dbContext.SaveChanges();
                    //}
                    //else
                    //{
                    //    var person = dbContext.OR_Person.FirstOrDefault(k => k.WeChatOpenId == openid);
                    //    if (person == null)
                    //    {
                    //        context.SetError("1002", "用户还未绑定账号,请先绑定");
                    //        return base.GrantClientCredentials(context);
                    //    }
                    //    userid = person.LoginName;
                    //}

                    ////TODO: 校验该用户是否存在与我们自身的系统之中,若存在,则正常加入凭据信息
                    //var oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
                    //oAuthIdentity.AddClaim(new Claim(ClaimTypes.Name, userid));
                    //var ticket = new AuthenticationTicket(oAuthIdentity, new AuthenticationProperties());
                    //context.Validated(ticket);
                    #endregion
                }
            }
            catch (Exception ex)
            {
                context.SetError("invalid_grant", ex.ToString());
            }
            return(base.GrantClientCredentials(context));
        }
        public static bool IsExistencePerson(this Controller controller, YiFang_CustomerComplaintEntities db)
        {
            string loginName = controller.User.Identity.Name;

            return(db.OR_Person.Any(p => p.LoginName == loginName));
        }