private bool IsValid(string license)
        {
            try
            {
                if (string.IsNullOrEmpty(license))
                {
                    throw new ArgumentNullException();
                }

                var request = new ValidateRequest
                {
                    License     = license,
                    FingerPrint = SecurityUtility.GetMd5Hash(AppConfigUtility.FingerPrint)
                };

                var response = WebServiceUtility.Post(AppConfigUtility.ValidateLicenseUrl, request.ToJSON());

                if (!response.Success)
                {
                    throw new LicenseNotValidException(response.Message);
                }

                return(true);
            }
            catch (LicenseNotValidException)
            {
                throw;
            }
            catch (Exception ex)
            {
                LogUtility.Log(LogUtility.LogType.SystemError, MethodBase.GetCurrentMethod().Name, ex.Message);
                return(false);
            }
        }
        public void Sync()
        {
            try
            {
                var predicate = Predicates.Field <Statistic>(f => f.Synced, Operator.Eq, null);

                GetList(predicate).ToList().ForEach(item =>
                {
                    var syncRequest = new SyncRequest
                    {
                        License     = AppLicenseController.Instance.ActiveLicense.Key,
                        FingerPrint = SecurityUtility.GetMd5Hash(AppConfigUtility.FingerPrint),
                        TimeStamp   = item.TimeStamp,
                        Action      = item.Action,
                        Value       = item.Value.FromJSON <Dictionary <string, string> >()
                    };

                    WebServiceUtility.PostAsync(AppConfigUtility.SyncStatisticUrl, syncRequest.ToJSON());
                    WebServiceUtility.PostAsyncOnComplete += response =>
                    {
                        if (response.Success)
                        {
                            item.Synced = DateTime.Now;
                            Save(item);
                        }
                        else
                        {
                            throw new Exception(response.Message);
                        }
                    };
                });
            }
            catch (Exception ex)
            {
                LogUtility.Log(LogUtility.LogType.SystemError, MethodBase.GetCurrentMethod().Name, ex.Message);
                throw;
            }
        }
        public async Task <IActionResult> Login(LoginUser loginVm)
        {
            JsonModel jm = new JsonModel();

            if (string.IsNullOrWhiteSpace(loginVm.JobNumber.Trim()) || string.IsNullOrWhiteSpace(loginVm.Pwd.Trim()))
            {
                jm.Statu = "n";
                jm.Msg   = "工号、密码不能为空!";
                return(Json(jm));
            }

            string md5Pwd = SecurityUtility.GetMd5Hash(loginVm.Pwd.Trim()).ToUpper();

            loginVm.Pwd = md5Pwd;

            string strApiUrl = ApiServerAddr + @"/api/v1/account/SignIn";

            string strJson = JsonHelper.SerializeObject(loginVm);


            HttpContent content = new StringContent(strJson);

            UserDto       model = null;
            UserViewModel vm    = null;

            try
            {
                string strRes = await ApiHelp.ApiPostWithTokenAsync(strApiUrl, content, AccessToken);

                if (strRes.Contains("网络错误") == false)
                {
                    model = JsonHelper.Deserialize <UserDto>(strRes);

                    if (model.IsError)
                    {
                        jm.Statu = "n";
                        jm.Msg   = model.ErrorMsg;
                        return(Json(jm));
                    }


                    if (model.Status == 1)
                    {
                        jm.Statu = "n";
                        jm.Msg   = "你的账号已被冻结!";
                        return(Json(jm)); //还未审核的用户
                    }
                    vm           = new UserViewModel();
                    vm.id        = model.id;
                    vm.UserName  = model.UserName;
                    vm.JobNumber = model.JobNumber;
                    vm.Pwd       = model.Pwd;
                    //vm. = model.Sex;

                    //vm.s = model.SchoolID;
                    vm.Status = model.Status;
                    if (model.Status == 0)
                    {
                        vm.StatuName = "已启用";
                    }
                    else
                    {
                        vm.StatuName = "已冻结";
                    }

                    vm.lstRoleID = model.LstRoleID;

                    vm.LastLoginTime = model.LastLoginTime;
                    vm.RegisterTime  = model.RegisterTime;
                    vm.Remark        = model.Remark;

                    HttpContext.Session.Set <Models.UserViewModel>("UserInfo", vm);
                    jm.Statu = "y";
                    jm.Msg   = "登录成功";
                }
                else
                {
                    jm.Statu = "n";
                    jm.Msg   = "网络错误,请确认网络连接!";
                }

                return(Json(jm));
            }
            catch (Exception ex)
            {
                jm.Statu = "n";
                jm.Msg   = ex.Message;
                return(Json(jm));
            }
        }
        public async Task <IActionResult> Login(ApplicationUser appUser)
        {
            JsonModel jm = new JsonModel();

            if (string.IsNullOrWhiteSpace(appUser.JobNumber.Trim()) || string.IsNullOrWhiteSpace(appUser.Password.Trim()))
            {
                jm.Statu = "n";
                jm.Msg   = "工号、密码不能为空!";
                return(Json(jm));
            }

            string md5Pwd = SecurityUtility.GetMd5Hash(appUser.Password.Trim()).ToUpper();

            appUser.Password = md5Pwd;



            UserDto       model = null;
            UserViewModel vm    = null;

            try
            {
                var entity = await _userRepository.GetUserByAccountAndPwdAsync(appUser.JobNumber, appUser.Password);

                // model = proxy.Channel.GetUserByAccountAndPwd(account, md5Pwd);
                if (entity == null) //登录失败
                {
                    jm.Statu = "n";
                    jm.Msg   = "用户名或密码错误!";
                    return(Json(jm));
                }
                else  //登录成功
                {
                    model = AutoMapper.Mapper.Map <UserDto>(entity);

                    if (model.Status == 1)
                    {
                        jm.Statu = "n";
                        jm.Msg   = "你的账号已被冻结!";
                        return(Json(jm)); //还未审核的用户
                    }
                    vm           = new UserViewModel();
                    vm.id        = model.id;
                    vm.UserName  = model.UserName;
                    vm.JobNumber = model.JobNumber;
                    vm.Pwd       = model.Pwd;
                    //vm. = model.Sex;

                    //vm.s = model.SchoolID;
                    vm.Status = model.Status;
                    if (model.Status == 0)
                    {
                        vm.StatuName = "已启用";
                    }
                    else
                    {
                        vm.StatuName = "已冻结";
                    }

                    vm.lstRoleID = model.LstRoleID;

                    vm.LastLoginTime = model.LastLoginTime;
                    vm.RegisterTime  = model.RegisterTime;
                    vm.Remark        = model.Remark;

                    HttpContext.Session.Set <Models.UserViewModel>("UserInfo", vm);
                    jm.Statu = "y";
                    jm.Msg   = "登录成功";

                    return(Json(jm));
                }
            }
            catch (Exception ex)
            {
                jm.Statu = "n";
                jm.Msg   = ex.Message;
                // ZY.Edu.Common.LogHelper.WriteError("用户登录", ex);
                return(Json(jm));
            }
        }