예제 #1
0
        public ResultView Login(string id)
        {
            DepartmentService departmentService = ServiceLoader.GetService <DepartmentService>();
            var dep = departmentService._SearchById(id);

            return(ResultView.Success());
            //return new LoginResult { Token = token };
        }
        /// <summary>
        /// 解锁某些用户的登录状态 - 用户连续多次由于密码错误而登录失败时,将会为用户设置登录锁状态,本功能用于解除这种登录锁的状态
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ResultView SetUnlock(string id)
        {
            var emp = _SearchById(id);

            emp.State        = UserState.Enable;
            emp.ProcessState = ProcessState.Enable;
            _Dal.UpdateObject(emp);
            return(ResultView.Success(id));
        }
예제 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="phoneNumber"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ResultView Send(SingleSendData data)
        {
            SmsSingleSenderResult result = Send(0, "86", data.PhoneNumber, data.Message, "", "");

            if (result.result == 0)
            {
                return(ResultView.Success());
            }
            throw ApiException.BadRequest(result.errMsg);
        }
        public ResultView SetHeadImg(string employeeId, Microsoft.AspNetCore.Http.IFormFile imageFile)
        {
            string         webFile = $"~/wwwroot/UploadFiles/Employee/Head/{employeeId}/{Guid.NewGuid().ToString()}";
            UploadFileInfo file    = UploadFileHandle.UploadImage(webFile, imageFile);

            var info = _Service._SearchById(employeeId);

            UploadFileHandle.Delete(info.HeadImg);
            info.HeadImg = file.WebFileName;
            _Service.Update(info, LogonInfo);
            return(ResultView.Success("头像修改成功"));
        }
        /// <summary>
        /// 修改用户密码
        /// </summary>
        /// <param name="id"></param>
        /// <param name="oldPwd"></param>
        /// <param name="newPwd"></param>
        /// <returns></returns>
        public ResultView UpdatePassword(string id, string oldPwd, string newPwd)
        {
            if (string.IsNullOrWhiteSpace(newPwd.Trim()))
            {
                throw ApiException.BadRequest("请输入新密码");
            }
            var emp = _Dal.SearchById(id);

            if (!emp.LogonPassword.Equals(oldPwd))
            {
                throw ApiException.BadRequest("原密码输入错误");
            }
            emp.LogonPassword = newPwd;
            _Dal.UpdateObject(emp);
            return(ResultView.Success(emp.Id));
        }
예제 #6
0
 public ResultView SendEmail()
 {
     if (_Logger == null)
     {
         _Logger = new Serilog.LoggerConfiguration()
                   .WriteTo.Email(
             fromEmail: "*****@*****.**",
             toEmail: "*****@*****.**",
             mailServer: "smtp.163.com",
             restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Warning,
             networkCredential: new System.Net.NetworkCredential("*****@*****.**", "1234qwer"),
             outputTemplate: "[{Level}] {Message}{NewLine}{Exception}",
             mailSubject: "系统错误-提醒邮件")
                   .CreateLogger();
     }
     _Logger.Fatal("测试邮件 {test}", "邮件发送内容");
     return(ResultView.Success());
 }
        /// <summary>
        /// 逻辑删除
        /// </summary>
        /// <param name="info">要删除的数据id</param>
        /// <param name="logonInfo">登录的用户信息</param>
        /// <returns></returns>
        public ResultView Delete(T info, TokenLogonInfo logonInfo)
        {
            if (info == null)
            {
                throw ApiException.EmptyData("无法找到要删除的数据");
            }
            string id = info.Id.ToString();

            _logger.LogTrace($"逻辑删除 ==> 类型为:[{typeof(T).FullName}]\t删除ID为:[{id}]");
            try
            {
                // 判断对应数据是否可以删除.
                DeleteRemoveCheck(info);
                OnDeleteRemoveCheck?.Invoke(info, logonInfo);
                DeleteCheck(info);
                OnDeleteCheck?.Invoke(info, logonInfo);
                // 逻辑删除的前置操作
                DeleteRemoving(info, logonInfo);
                Deleting(info, logonInfo);
                // 逻辑删除前置事件处理
                OnDeleting?.Invoke(info, logonInfo);
                // 设置逻辑删除状态
                info.UpdateDate  = DateTime.Now;
                info.UpdaterId   = logonInfo.Id;
                info.UpdaterName = logonInfo.Name;
                info.IsDelete    = true;

                // 持久化数据
                _Dal.UpdateObject(info);
                // 逻辑删除的后置处理
                Deleted(info, logonInfo);
                DeleteRemoved(info, logonInfo);
                // 逻辑删除后置事件处理
                OnDeleted?.Invoke(info, logonInfo);
                // 返回保存结果
                return(ResultView.Success(id));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"逻辑删除异常 ==> 类型为:[{typeof(T).FullName}]\t删除ID为:[{id}]\r\n删除对象:[{info.ToJson()}]");
                throw;
            }
        }
        /// <summary>
        /// 取消逻辑删除
        /// </summary>
        /// <param name="info"></param>
        /// <param name="logonInfo"></param>
        /// <returns></returns>
        public virtual ResultView UnDelete(T info, TokenLogonInfo logonInfo)
        {
            // 判断id是否有对应数据
            if (info == null)
            {
                throw ApiException.EmptyData("无法找到要还原的数据");
            }
            string id = info.Id.ToString();

            _logger.LogTrace($"还原删除数据 ==> 类型为:[{typeof(T).FullName}]\t还原ID为:[{id}]");
            try
            {
                // 取消逻辑删除的前置操作
                UnDeleting(info, logonInfo);
                // 取消逻辑删除的前置事件处理
                OnUnDeleting?.Invoke(info, logonInfo);
                // 取消删除状态
                info.UpdateDate  = DateTime.Now;
                info.UpdaterId   = logonInfo.Id;
                info.UpdaterName = logonInfo.Name;
                info.IsDelete    = false;

                // 持久化数据
                _Dal.UpdateObject(info);
                // 还原的后置操作
                UnDeleted(info, logonInfo);
                // 取消还原删除的后置事件处理
                OnUnDeleted?.Invoke(info, logonInfo);

                // 返回保存结果
                return(ResultView.Success(id));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"还原删除数据异常 ==> 类型为:[{typeof(T).FullName}]\t还原ID为:[{id}]\r\n还原对象:[{info.ToJson()}]");
                throw;
            }
        }
        /// <summary>
        /// 删除导入数据
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        public ResultView Remove(string batch)
        {
            // 获取主表数据
            var main = SearchMainByBatch(batch);

            // 1、删除上传文件
            if (main.ImportFile != null && String.IsNullOrWhiteSpace(main.ImportFile.DiskFileFullName) && System.IO.File.Exists(main.ImportFile.DiskFileFullName))
            {
                System.IO.File.Delete(main.ImportFile.DiskFileFullName);
            }
            // 2、删除导入失败报表文件
            if (main.FailImportFile != null && String.IsNullOrWhiteSpace(main.FailImportFile.DiskFileFullName) && System.IO.File.Exists(main.FailImportFile.DiskFileFullName))
            {
                System.IO.File.Delete(main.FailImportFile.DiskFileFullName);
            }
            // 3、删除明细表数据
            var detailIds = detailDal.Queryable().Where(e => e.Batch == batch).Select(e => e.Id);

            detailDal.RemoveByTypeIdList(detailIds);
            // 4、删除主表信息
            mainDal.RemoveByTypeId(main.Id);
            return(ResultView.Success());
        }
        /// <summary>
        /// 物理删除
        /// </summary>
        /// <param name="info"></param>
        /// <param name="logonInfo"></param>
        /// <returns></returns>
        public ResultView Remove(T info, TokenLogonInfo logonInfo)
        {
            if (info == null)
            {
                throw ApiException.EmptyData("无法找到要删除的数据");
            }
            string id = info.Id.ToString();

            _logger.LogTrace($"物理删除 ==> 类型为:[{typeof(T).FullName}]\t删除ID为:[{id}]");
            try
            {
                // 判断对应数据是否可以删除.
                DeleteRemoveCheck(info);
                OnDeleteRemoveCheck?.Invoke(info, logonInfo);
                RemoveCheck(info);
                OnRemoveCheck?.Invoke(info, logonInfo);
                // 物理删除的前置操作
                DeleteRemoving(info, logonInfo);
                Removing(info, logonInfo);
                // 物理删除时的前置事件处理
                OnRemoving?.Invoke(info, logonInfo);
                // 持久化数据
                _Dal.RemoveObject(info);
                // 物理删除的后置处理
                Removed(info, logonInfo);
                DeleteRemoved(info, logonInfo);
                // 物理删除时的后置事件处理
                OnRemoved?.Invoke(info, logonInfo);
                // 返回保存结果
                return(ResultView.Success(info.Id.ToString()));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"物理删除异常 ==> 类型为:[{typeof(T).FullName}]\t删除ID为:[{id}]]\r\n删除对象为:[{info.ToJson()}]");
                throw;
            }
        }
        public ResultView SetProperty([FromBody] SetPropertyView view)
        {
            if (string.IsNullOrWhiteSpace(view.PropertyName))
            {
                ApiException.ThrowBadRequest("属性名不能为空");
            }

            var info = _Service._SearchById(LogonInfo.Id);

            switch (view.PropertyName.ToLower())
            {
            case "position": { info.Position = view.PropertyValue; break; }

            case "name": { info.Name = view.PropertyValue; break; }

            case "nickname": { info.Nickname = view.PropertyValue; break; }

            case "mobile": { info.Mobile = view.PropertyValue; break; }

            case "telephone": { info.Telephone = view.PropertyValue; break; }
            }
            _Service.Update(info, LogonInfo);
            return(ResultView.Success("信息修改成功"));
        }
예제 #12
0
 public ResultView Logout()
 {
     _authService.Logout(LogonInfo);
     return(ResultView.Success());
 }
 public ResultView UpdateAllPassword()
 {
     _Service.UpdateAllPassword("123456");
     return(ResultView.Success());
 }
예제 #14
0
 public ResultView RootPath()
 {
     return(ResultView.Success(ServiceLoader.Environment.ContentRootPath));
 }
        /// <summary>
        /// 更新一个对象信息
        /// </summary>
        /// <param name="info">更新对象</param>
        /// <param name="logonInfo">登录人信息</param>
        /// <returns></returns>
        public virtual ResultView Update(T info, TokenLogonInfo logonInfo)
        {
            if (info == null)
            {
                ApiException.ThrowBadRequest("更新对象不能为空");
            }
            _logger.LogTrace($"更新一个对象信息 ==> 类型为:[{typeof(T).FullName}]\r\n操作人信息:[{logonInfo.ToJson()}]\r\n更新对象:[{info.ToJson()}]");

            try
            {
                // 根据ID获取原数据信息
                var old = _SearchById(info.Id);
                // 更新数据前的预制数据
                info.CreateDate  = old.CreateDate;
                info.CreaterId   = old.CreaterId;
                info.CreaterName = old.CreaterName;
                info.UpdateDate  = DateTime.Now;
                info.UpdaterId   = logonInfo.Id;
                info.UpdaterName = logonInfo.Name;
                info.IsDelete    = false;
                if (info.ProcessState == ProcessState.None)
                {
                    info.ProcessState = ProcessState.Edit;
                }

                #region 保存验证
                // 保存的数据校验,可以被重写
                SavingCheck(info, logonInfo);
                // 判断是否可以执行新增操作,可以被重写
                if (!IsExecuteUpdate(info, old, logonInfo))
                {
                    return(ResultView.Success());
                }
                OnUpdateCheck?.Invoke(info, old, logonInfo);
                OnSaveCheck?.Invoke(info, logonInfo);
                #endregion

                #region 保存的前置处理
                // 更新的前置操作,可以被重写
                Updating(info, old, logonInfo);
                // 新增/保存的通用前置操作,可以被重写
                Saving(info, logonInfo);
                // 事件处理
                OnUpdating?.Invoke(info, old, logonInfo);
                OnSaving?.Invoke(info, logonInfo);
                #endregion

                // 持久化数据
                _Dal.UpdateObject(info);

                #region 保存后置处理
                // 更新的后置操作,可以被重写
                Updated(info, old, logonInfo);
                // 新增/保存的通用后置操作,可以被重写
                Saved(info, logonInfo);
                // 新增后的后置事件处理
                OnUpdated?.Invoke(info, old, logonInfo);
                OnSaved?.Invoke(info, logonInfo);
                #endregion

                // 返回保存结果
                return(ResultView.Success(info.IdString));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"更新一个对象信息异常 ==> 类型为:[{typeof(T).FullName}]\r\n操作人信息:[{logonInfo.ToJson()}]\r\n更新对象:[{info.ToJson()}]");
                throw;
            }
        }
        /// <summary>
        /// 创建一个对象信息
        /// </summary>
        /// <param name="info">新增对象</param>
        /// <param name="logonInfo">登录人信息</param>
        /// <returns></returns>
        public virtual ResultView Create(T info, TokenLogonInfo logonInfo)
        {
            if (info == null)
            {
                ApiException.ThrowBadRequest("新增对象不能为空");
            }
            _logger.LogTrace($"新增一个对象信息 ==> 类型为:[{typeof(T).FullName}]\r\n新增对象:[{info.ToJson()}]");

            try
            {
                // 新增数据前的预制数据
                info.CreateDate   = DateTime.Now;
                info.UpdateDate   = DateTime.Now;
                info.UpdaterId    = logonInfo.Id;
                info.UpdaterName  = logonInfo.Name;
                info.CreaterId    = logonInfo.Id;
                info.CreaterName  = logonInfo.Name;
                info.IsDelete     = false;
                info.ProcessState = ProcessState.Edit;

                #region 保存验证
                // 保存的数据校验
                SavingCheck(info, logonInfo);
                // 判断是否可以执行新增操作
                if (!IsExecuteCreate(info, logonInfo))
                {
                    return(ResultView.Success());
                }
                // 保存数据验证的事件处理
                OnCreateCheck?.Invoke(info, logonInfo);
                OnSaveCheck?.Invoke(info, logonInfo);
                #endregion

                #region 保存的前置处理
                // 新增的前置操作,可以被重写
                Creating(info, logonInfo);
                // 新增/保存的通用前置操作,可以被重写
                Saving(info, logonInfo);
                // 新增时的前置事件处理
                OnCreating?.Invoke(info, logonInfo);
                OnSaving?.Invoke(info, logonInfo);
                #endregion

                // 持久化数据
                _Dal.InsertObject(info);

                #region 保存后置处理
                // 新增的通用后置操作,可以被重写
                Created(info, logonInfo);
                // 新增/保存的通用后置操作,可以被重写
                Saved(info, logonInfo);
                // 新增后的后置事件处理
                OnCreated?.Invoke(info, logonInfo);
                OnSaved?.Invoke(info, logonInfo);
                #endregion

                // 返回保存结果
                return(ResultView.Success(info.IdString));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"新增一个对象信息异常 ==> 类型为:[{typeof(T).FullName}]\r\n操作人信息:[{logonInfo.ToJson()}]\r\n新增对象:[{info.ToJson()}]");
                throw;
            }
        }
 public ResultView UpdatePasswordMe([FromBody] UpdatePasswordMeView view)
 {
     _Service.UpdatePassword(LogonInfo.Id, view.OldPwd, view.NewPwd);
     return(ResultView.Success("密码修改成功"));
 }
 public ResultView UpdateToV2()
 {
     Service.UpdateToV2();
     return(ResultView.Success());
 }
        public ResultView Init()
        {
            _Service.Init();

            return(ResultView.Success());
        }