예제 #1
0
        /// <summary>
        /// 获取客户详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <Resp> GetDetail()
        {
            using var db = new MyForContext();
            DB.Tables.Client client = await db.Clients.AsNoTracking()
                                      .Include(c => c.Avatar)
                                      .FirstOrDefaultAsync(c => c.Id == Id);

            if (client is null)
            {
                return(Resp.Fault(Resp.NONE, NOT_CLIENT));
            }

            Results.ClientDetail detail = new Results.ClientDetail
            {
                AccountName = client.AccountName,
                Description = client.Description,
                Email       = client.Email,
                Phone       = client.Phone,
                Gender      = new Share.KeyValue
                {
                    Key   = client.Gender,
                    Value = ((User.Gender)client.Gender).GetDescription()
                },
                Avatar     = client.Avatar.Path,
                Thumbnail  = client.Avatar.Thumbnail,
                CreateDate = client.CreateDate.ToStandardString()
            };
            return(Resp.Success(detail, ""));
        }
예제 #2
0
        /// <summary>
        /// 注册一个客户
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public async Task <Resp> RegisterNewClient(Models.Register_Info info)
        {
            (bool isValid, string msg) = info.IsValid();
            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            using var db = new MyForContext();

            if (await db.Clients.AnyAsync(c => c.AccountName == info.Account))
            {
                return(Resp.Fault(Resp.NONE, "已被使用的账号"));
            }

            DB.Tables.Client newClient = new DB.Tables.Client
            {
                AccountName = info.Account,
                Password    = info.Password
            };
            db.Clients.Add(newClient);
            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                return(Resp.Success(Resp.NONE, ""));
            }
            return(Resp.Fault(Resp.NONE, ""));
        }
예제 #3
0
        public async Task <Resp> Login(Models.Login_Info info)
        {
            (bool isValid, string msg) = info.IsValid();
            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            using var db = new MyForContext();

            DB.Tables.Client client = await db.Clients
                                      .Where(c => c.AccountName == info.Account && c.Password == info.Password)
                                      .FirstOrDefaultAsync();

            if (client is null)
            {
                return(Resp.Fault(Resp.NONE, "账号不存在后密码错误"));
            }

            client.Token = Guid.NewGuid();
            int suc = await db.SaveChangesAsync();

            if (suc != 1)
            {
                return(Resp.Fault(Resp.NONE, "登录失败"));
            }

            Results.Login_Result result = new Results.Login_Result
            {
                Id      = client.Id,
                Token   = client.Token,
                Account = client.AccountName
            };
            return(Resp.Success(result));
        }
예제 #4
0
        /// <summary>
        /// 根据账号用户名获取客户
        /// </summary>
        /// <param name="account"></param>
        /// <returns></returns>
        public static Client GetClientByAccount(string account)
        {
            using var db = new MyForContext();
            DB.Tables.Client client = db.Clients.AsNoTracking()
                                      .FirstOrDefault(c => c.AccountName == account);
            if (client is null)
            {
                return(Client.Empty);
            }

            return(new Client(client.Id));
        }
예제 #5
0
        public static Client GetClient(int id, string token)
        {
            using var db = new MyForContext();
            DB.Tables.Client client = db.Clients.AsNoTracking()
                                      .FirstOrDefault(c => c.Id == id && (c.Token.ToString() == token || c.APPToken.ToString() == token));
            if (client is null)
            {
                return(Client.Empty);
            }

            return(new Client(client.Id));
        }
예제 #6
0
        /// <summary>
        /// 登出
        /// </summary>
        /// <returns></returns>
        public async Task <Resp> Logout()
        {
            using var db = new MyForContext();

            DB.Tables.Client client = await db.Clients.FirstOrDefaultAsync(c => c.Id == Id);

            if (client is null)
            {
                return(Resp.Fault(Resp.NONE, NOT_CLIENT));
            }

            client.Token = Guid.NewGuid();
            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                return(Resp.Success(Resp.NONE, "登出成功"));
            }
            return(Resp.Fault(Resp.NONE, "登出失败"));
        }
예제 #7
0
        /// <summary>
        /// 启用客户
        /// </summary>
        /// <param name="description">启用理由</param>
        /// <returns></returns>
        public async Task <Resp> EnabledAsync(string description)
        {
            using var db = new MyForContext();

            DB.Tables.Client client = await db.Clients.FirstOrDefaultAsync(c => c.Id == Id);

            if (client is null)
            {
                return(Resp.Fault(Resp.NONE, NOT_CLIENT));
            }

            client.State = (int)StandardStates.Enabled;
            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                return(Resp.Success());
            }
            return(Resp.Fault(Resp.NONE, "启用失败"));
        }