예제 #1
0
        /// <summary>
        ///     同步多客服账号
        /// </summary>
        private async Task <bool> SyncWeChatMKF(bool isUserSync = false, string createBy = null)
        {
            var api = new CustomerServiceApi();

            api.SetKey(_tenantId);

            var result = api.GetCustomerAccountList();

            if (result.IsSuccess())
            {
                if ((result.AccountList != null) && (result.AccountList.Length != 0))
                {
                    _db.WeiChat_KFCInfos.RemoveRange(_db.WeiChat_KFCInfos);
                    _db.SaveChanges();

                    foreach (var item in result.AccountList)
                    {
                        var mkf = _db.WeiChat_KFCInfos.FirstOrDefault(p => p.Account == item.AccountName);
                        if (mkf == null)
                        {
                            mkf = new WeiChat_KFCInfo
                            {
                                JobNumber  = item.JobNumber,
                                NickName   = item.NickName,
                                HeadImgUrl = item.HeadUrl,
                                Account    = item.AccountName,
                                TenantId   = _tenantId,
                                CreateBy   = createBy,
                                CreateTime = DateTime.Now
                            };
                            _db.WeiChat_KFCInfos.Add(mkf);
                        }
                        else
                        {
                            mkf.JobNumber  = item.JobNumber;
                            mkf.HeadImgUrl = item.HeadUrl;
                            mkf.NickName   = item.NickName;
                            mkf.UpdateBy   = createBy;
                            mkf.UpdateTime = DateTime.Now;
                        }
                    }
                }
                else
                {
                    _db.WeiChat_KFCInfos.RemoveRange(_db.WeiChat_KFCInfos);
                }
            }
            var log = new WeiChat_SyncLog
            {
                Type       = WeiChat_SyncTypes.Sync_MKF,
                IsUserSync = isUserSync,
                TenantId   = _tenantId,
                CreateBy   = createBy,
                Message    =
                    string.Format("客服账号同步{1}!同步数量:{0}。", result.AccountList == null ? 0 : result.AccountList.Length,
                                  result.IsSuccess() ? "成功" : "失败(" + result.DetailResult + ")")
            };

            _db.WeiChat_SyncLogs.Add(log);
            await _db.SaveChangesAsync();

            return(await System.Threading.Tasks.Task.FromResult(true));
        }
예제 #2
0
        private void SyncMKF()
        {
            var notify   = NotifyInfo;
            var notifier = Notifier;
            var strs     = Parameter.ToString().Split(';');
            var tenantId = int.Parse(strs[0]);
            var userId   = strs[1];
            var logger   = Logger;

            try
            {
                ReportProgress(1, "正在初始化同步信息");

                var api = new CustomerServiceApi();
                api.SetKey(tenantId);

                var result = api.GetCustomerAccountList();
                if (result.IsSuccess())
                {
                    ReportProgress(30, "已成功获取数据:" + result.AccountList.Length);
                    using (var db = new AppDbContext())
                    {
                        TenantManager.Current.EnableTenantFilter(db, tenantId);
                        if ((result.AccountList != null) && (result.AccountList.Length != 0))
                        {
                            db.WeiChat_KFCInfos.RemoveRange(db.WeiChat_KFCInfos);
                            db.SaveChanges();

                            foreach (var item in result.AccountList)
                            {
                                var mkf = new WeiChat_KFCInfo
                                {
                                    JobNumber  = item.JobNumber,
                                    NickName   = item.NickName,
                                    HeadImgUrl = item.HeadUrl,
                                    Account    = item.AccountName,
                                    TenantId   = tenantId,
                                    CreateBy   = userId,
                                    CreateTime = DateTime.Now
                                };
                                db.WeiChat_KFCInfos.Add(mkf);
                            }
                        }
                        else
                        {
                            db.WeiChat_KFCInfos.RemoveRange(db.WeiChat_KFCInfos);
                        }
                        var count = result.AccountList == null ? 0 : result.AccountList.Length;
                        ReportProgress(90, "正在写入数据,写入数量(" + count + ")...");
                        db.SaveChanges();
                        ReportProgress(100, "同步成功!同步数量(" + count + ")。");
                    }
                }
                else
                {
                    ReportProgress(100, "同步失败!" + result.GetFriendlyMessage());
                }
            }
            catch (Exception ex)
            {
                logger.Log(LoggerLevels.Debug, Title + " 失败!");
                logger.LogException(ex);

                ReportProgress(100, "同步失败!" + ex.Message);
                return;
            }
        }