Exemplo n.º 1
0
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="newPassword">经过加密的新密码</param>
        /// <returns></returns>
        public async Task <Resp> ChangePasswordAsync(Models.ChangePassword model)
        {
            (bool isValid, string msg) = model.IsValid();
            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            using var db = new YGBContext();
            DB.Tables.User user = await db.Users.FirstOrDefaultAsync(u => u.Id == Id);

            if (user is null)
            {
                return(Resp.NeedLogin(Resp.NONE, "请重新登录"));
            }
            if (!user.Password.Equals(model.OldPassword, StringComparison.OrdinalIgnoreCase))
            {
                return(Resp.Fault(Resp.NONE, "旧密码有误"));
            }
            if (user.Password.Equals(model.NewPassword, StringComparison.OrdinalIgnoreCase))
            {
                return(Resp.Fault(Resp.NONE, "新密码不能和旧密码相同"));
            }
            user.Password = model.NewPassword;
            int changeCount = await db.SaveChangesAsync();

            if (changeCount == 1)
            {
                return(Resp.Success(Resp.NONE));
            }
            return(Resp.Fault(Resp.NONE, "修改失败"));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 忽略举报
        /// </summary>
        /// <returns></returns>
        public async Task <Resp> IgnoreAsync()
        {
            /*
             * 清除所有举报记录
             * 不改变提问状态
             */

            await using var db = new YGBContext();

            List <DB.Tables.QuestionReportRecord> list = await db.QuestionReportRecords.AsNoTracking()
                                                         .Where(qr => qr.QuestionId == _id)
                                                         .ToListAsync();

            if (list.Count == 0)
            {
                return(Resp.Success());
            }

            list.ForEach(qr => qr.IsHandled = true);
            db.QuestionReportRecords.UpdateRange(list);
            int changeCount = await db.SaveChangesAsync();

            if (changeCount == list.Count)
            {
                return(Resp.Success());
            }
            return(Resp.Fault(Resp.NONE, "忽略失败"));
        }
Exemplo n.º 3
0
        public async Task <Resp> ModifyAsync(Models.UpdateTheme updateTheme)
        {
            (bool isValid, string msg) = updateTheme.IsValid();

            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            using var db = new MyForContext();

            DB.Tables.Theme model = await db.Themes.FirstOrDefaultAsync(t => t.Id == Id);

            if (model is null)
            {
                return(Resp.Fault(Resp.NONE, NONE_THEME));
            }
            model.Description = updateTheme.Description;
            if (updateTheme.IsChangeCover)
            {
                Files.File file = new Files.File();
                model.CoverId = await file.SaveImageToDB(updateTheme.Cover);
            }
            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                return(Resp.Success(Resp.NONE, ""));
            }
            return(Resp.Fault(Resp.NONE, "失败"));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 移除主题, 默认软删除
        /// </summary>
        /// <param name="id"></param>
        /// <param name="delete">是否彻底删除</param>
        /// <returns></returns>
        public async Task <Resp> Remove(int id, bool delete = false)
        {
            using var db = new MyForContext();
            DB.Tables.Theme theme = await db.Themes.FirstOrDefaultAsync(t => t.Id == id);

            if (theme is null)
            {
                return(Resp.Fault(Resp.NONE, Theme.NONE_THEME));
            }

            if (delete)
            {
                db.Themes.Remove(theme);
            }
            else
            {
                theme.State = (int)Theme.ThemeStates.Remove;
            }

            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                return(Resp.Success(Resp.NONE, ""));
            }
            return(Resp.Fault(Resp.NONE, "失败"));
        }
Exemplo n.º 5
0
        public async Task <Resp <List <OutPayInfoDetails> > > GetBillingDetails(string pay_info_code)
        {
            string errMsg   = string.Empty;
            int    reqState = 1;
            List <OutPayInfoDetails> result = new List <OutPayInfoDetails>();

            try
            {
                if (string.IsNullOrEmpty(pay_info_code))
                {
                    reqState = 0;
                    errMsg   = "付款单编号缺失!";
                    return(Resp.BusinessError <List <OutPayInfoDetails> >(errMsg, result));
                }
                await Task.Run(() =>
                {
                    result = payInfoDetailsBll.GetBillingDetails(pay_info_code);
                });

                return(Resp.Success(result));
            }
            catch (Exception ex)
            {
                errMsg   = ex.Message;
                reqState = 0;
                return(Resp.BusinessError <List <OutPayInfoDetails> >(errMsg, result));
            }
            finally
            {
                string ResponseContent = reqState == 0 ? Resp.BusinessError <List <OutPayInfoDetails> >(errMsg, result).ToJson()
                    : Resp.Success(result).ToJson();
                LogBLL.WriteLogInterface("   pay_info_code:" + pay_info_code, ResponseContent, "获取资金流水明细",
                                         reqState, "共享平台", "电商资金", errMsg);
            }
        }
Exemplo n.º 6
0
        public async Task <Resp> GetDetail()
        {
            using var db = new MyForContext();

            DB.Tables.Segment segment = await db.Segments.AsNoTracking()
                                        .FirstOrDefaultAsync(s => s.Id == Id);

            if (segment is null)
            {
                return(Resp.Fault(Resp.NONE, NONE_SEGMENT));
            }

            Results.SegmentDetail detail = new Results.SegmentDetail
            {
                Content    = segment.Content,
                Creator    = Clients.Client.GetName(segment.CreateById),
                CreateDate = segment.CreateDate.ToStandardString(),
                State      = new Share.KeyValue
                {
                    Key   = segment.State,
                    Value = ((SegmentState)segment.State).GetDescription()
                }
            };
            return(Resp.Success(detail, ""));
        }
Exemplo n.º 7
0
        /// <summary>
        /// 修改答案
        /// </summary>
        public async Task <Resp> ModifyAsync(string content)
        {
            if (string.IsNullOrWhiteSpace(content))
            {
                return(Resp.Fault(Resp.NONE, "答案不能为空"));
            }

            await using var db = new YGBContext();

            var answer = await db.Answers.FirstOrDefaultAsync(a => a.Id == Id);

            if (answer is null)
            {
                return(Resp.Fault(Resp.NONE, "该答案不存在"));
            }

            if (answer.Content == content)
            {
                return(Resp.Fault(Resp.NONE, "您还没有进行修改"));
            }
            answer.Content = content;
            int changeCount = await db.SaveChangesAsync();

            if (changeCount == 1)
            {
                return(Resp.Success());
            }
            return(Resp.Fault(Resp.NONE, "修改失败"));
        }
Exemplo n.º 8
0
        /// <summary>
        /// 修改完答案后提交去审核
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public async Task <Resp> ToAudit(string content)
        {
            using YGBContext db = new YGBContext();

            DB.Tables.Answer answer = await db.Answers.FirstOrDefaultAsync(a => a.Id == Id);

            if (answer is null)
            {
                return(Resp.Fault(Resp.NONE, NOT_EXIST_ANSWER));
            }

            if (answer.Content == content)
            {
                return(Resp.Fault(Resp.NONE, "内容未修改"));
            }

            answer.Content = content;
            answer.State   = (int)AnswerState.ToAudit;
            int changeCount = await db.SaveChangesAsync();

            if (changeCount == 1)
            {
                return(Resp.Success(Resp.NONE, "提交成功,待审核"));
            }
            return(Resp.Success(Resp.NONE, "提交失败,请重试"));
        }
Exemplo n.º 9
0
        public async Task <Resp> GetListAsync(Paginator pager)
        {
            await using var db = new YGBContext();

            Expression <Func <DB.Tables.Question, bool> > where = q => q.State == (int)Question.QuestionState.Enabled;

            pager.TotalRows = await db.Questions.CountAsync(where);

            pager.List = await db.Questions.AsNoTracking()
                         .OrderByDescending(q => q.CreateDate)
                         .Where(where)
                         .Skip(pager.Skip)
                         .Take(pager.Size)
                         .Include(q => q.Answers)
                         .Include(q => q.Asker)
                         .ThenInclude(asker => asker.Avatar)
                         .Select(q => new Results.QuentionItem_Client
            {
                Id           = q.Id,
                Title        = q.Title,
                Description  = q.Description.Length > 20 ? q.Description.Substring(0, 20) + "..." : q.Description,
                CreateDate   = q.CreateDate.ToStandardString(),
                VoteCounts   = q.Votes,
                ViewCounts   = q.Views,
                AnswerCounts = q.Answers.Count(a => a.State == (int)Answers.Answer.AnswerState.Enabled),
                Tags         = q.Tags.SplitOfChar(','),
                AskerName    = q.Asker.Name,
                AskerAvatar  = q.Asker.Avatar.Thumbnail
            })
                         .ToListAsync();

            return(Resp.Success(pager));
        }
Exemplo n.º 10
0
        /// <summary>
        /// 删除回答,硬删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <Resp> DeleteAsync(int id)
        {
            await using var db = new YGBContext();

            var answer = await db.Answers.AsNoTracking().FirstOrDefaultAsync(a => a.Id == id);

            if (answer is null)
            {
                return(Resp.Fault(Resp.NONE, "答案不存在"));
            }

            var backList = await db.AnswerBackRecords.AsNoTracking().Where(a => a.AnswerId == id).ToListAsync();

            var commentList = await db.AnswerComments.AsNoTracking().Where(a => a.AnswerId == id).ToListAsync();

            var reportList = await db.AnswerReportRecords.AsNoTracking().Where(a => a.AnswerId == id).ToListAsync();

            db.AnswerBackRecords.RemoveRange(backList);
            db.AnswerComments.RemoveRange(commentList);
            db.AnswerReportRecords.RemoveRange(reportList);
            db.Answers.Remove(answer);

            int count       = 1 + backList.Count + commentList.Count + reportList.Count;
            int changeCount = await db.SaveChangesAsync();

            if (count == changeCount)
            {
                return(Resp.Success());
            }
            return(Resp.Fault(Resp.NONE, "删除失败"));
        }
Exemplo n.º 11
0
        /// <summary>
        /// 提交审核
        /// </summary>
        public async Task <Resp> ToAudit(string description)
        {
            if (string.IsNullOrWhiteSpace(description))
            {
                return(Resp.Fault(Resp.NONE, "提问内容不能为空"));
            }

            using var db = new YGBContext();

            DB.Tables.Question question = await db.Questions.FirstOrDefaultAsync(q => q.Id == Id);

            if (question is null)
            {
                return(Resp.Fault(Resp.NONE, QUESTION_NO_EXIST));
            }
            if (question.Description == description)
            {
                return(Resp.Fault(Resp.NONE, "提问内容未修改"));
            }
            question.State       = (int)QuestionState.ToAudit;
            question.Description = description;
            if (await db.SaveChangesAsync() == 1)
            {
                return(Resp.Success(Resp.NONE));
            }
            return(Resp.Fault(Resp.NONE, "提交失败"));
        }
Exemplo n.º 12
0
        public async Task <Resp> NewPostsAsync(Models.NewPostInfo info)
        {
            (bool isValid, string msg) = info.IsValid();
            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            File files = await File.SaveImageAsync(info.Img);

            DB.Tables.Post newPost = new DB.Tables.Post
            {
                CreateDate = DateTimeOffset.Now,
                Creator    = info.NickName,
                Content    = info.Content,
                ImageId    = files?.Id ?? File.DEFAULT_IMG_ID
            };
            using var db = new DB.DarkContext();
            db.Posts.Add(newPost);
            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                return(Resp.Success(Resp.NONE, "成功"));
            }
            return(Resp.Fault(Resp.NONE, "提交失败"));
        }
Exemplo n.º 13
0
        /// <summary>
        /// 追问
        /// </summary>
        public async Task <Resp> AddCommentAsyns(int commenterId, string content)
        {
            if (string.IsNullOrWhiteSpace(content))
            {
                return(Resp.Fault(Resp.NONE, "追问内容不能为空"));
            }
            if (content.Length > Comments.COMMENT_MAX_LENGTH)
            {
                return(Resp.Fault(Resp.NONE, $"追问内容不得超过{Comments.COMMENT_MAX_LENGTH}个字"));
            }

            await using var db = new YGBContext();

            if (!await db.Questions.AnyAsync(q => q.Id == Id))
            {
                return(Resp.Fault(Resp.NONE, QUESTION_NO_EXIST));
            }

            DB.Tables.QuestionComment comment = new DB.Tables.QuestionComment
            {
                QuestionId  = Id,
                CommenterId = commenterId,
                Content     = content
            };
            db.QuestionComments.Add(comment);
            int changeCount = await db.SaveChangesAsync();

            if (changeCount == 1)
            {
                return(Resp.Success());
            }
            return(Resp.Fault(Resp.NONE, "追问失败"));
        }
Exemplo n.º 14
0
        /// <summary>
        /// 获取管理员账号列表
        /// </summary>
        /// <param name="index">当前页码</param>
        /// <param name="rows">行数</param>
        /// <param name="search">搜索参数</param>
        /// <returns></returns>
        public async Task <Resp> GetAccounts(int index, int rows, string search)
        {
            search = string.IsNullOrWhiteSpace(search) ? "" : search;
            Paginator pager = new Paginator
            {
                Index = index,
                Rows  = rows
            };

            Expression <Func <DB.Tables.Account, bool> > whereSQL = a => a.AccountName.Contains(search);

            using var db = new MyForContext();

            pager.TotalRows = await db.Accounts.CountAsync(whereSQL);

            pager.List = await db.Accounts.AsNoTracking()
                         .Where(whereSQL)
                         .Skip(pager.GetSkip())
                         .Take(pager.Rows)
                         .Select(a => new Models.Account_Result
            {
                Id         = a.Id,
                Account    = a.AccountName,
                Gender     = ((User.Gender)a.Gender).GetDescription(),
                Email      = string.IsNullOrWhiteSpace(a.Email) ? "-" : a.Email,
                Phone      = string.IsNullOrWhiteSpace(a.Phone) ? "-" : a.Phone,
                CreateDate = a.CreateDate.ToStandardString()
            })
                         .ToListAsync();

            return(Resp.Success(pager));
        }
Exemplo n.º 15
0
        public async Task <Resp> GetLiseAsync(int index, int rows)
        {
            Paginator pager = new Paginator
            {
                Index = index,
                Rows  = rows
            };

            Comments.Hub commentHub = new Comments.Hub();

            using var db    = new DB.DarkContext();
            pager.TotalRows = await db.Posts.CountAsync();

            pager.List = await db.Posts.AsNoTracking()
                         .OrderByDescending(p => p.CreateDate)
                         .Skip(pager.GetSkip())
                         .Take(pager.Rows)
                         .Include(p => p.Image)
                         .Select(p => new Results.PostItem
            {
                Id       = p.Id,
                NickName = p.Creator,
                Content  = p.Content,
                Date     = p.CreateDate.ToStandardTimeString(),
                Comments = commentHub.GetComments(p.Id, 1, 5),
                Img      = new Share.Image
                {
                    Thumbnail = p.Image.Thumbnail,
                    Source    = p.Image.Path
                }
            })
                         .ToListAsync();

            return(Resp.Success(pager, ""));
        }
Exemplo n.º 16
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, ""));
        }
Exemplo n.º 17
0
        /// <summary>
        /// 获取主题
        /// </summary>
        public async Task <Resp> GetSelfThemes(int index, int rows, string search)
        {
            Paginator pager = new Paginator
            {
                Index = index,
                Rows  = rows
            };

            Expression <Func <DB.Tables.Theme, bool> > whereSQL = t => t.Name.Contains(search) && t.MasterId == Id;

            using var db    = new MyForContext();
            pager.TotalRows = await db.Themes.CountAsync(whereSQL);

            pager.List = await db.Themes.AsNoTracking()
                         .Where(whereSQL)
                         .Skip(pager.GetSkip())
                         .Take(pager.Rows)
                         .Select(t => new Themes.Results.ThemeItem
            {
                Id     = t.Id,
                Name   = t.Name,
                Master = GetName()
            })
                         .ToListAsync();

            return(Resp.Success(pager, ""));
        }
Exemplo n.º 18
0
        /// <summary>
        /// 注册
        /// </summary>
        public async Task <Resp> RegisterAsync(Models.RegisterInfo register)
        {
            (bool isValid, string msg) = register.IsValid();
            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            using var db = new YGBContext();
            if (await db.Users.AnyAsync(u => u.Email.ToLower() == register.Email.ToLower()))
            {
                return(Resp.Fault(Resp.NONE, "该邮箱已被注册"));
            }

            DB.Tables.User newUser = new DB.Tables.User
            {
                Name     = Guid.NewGuid().ToString(),
                Email    = register.Email,
                Password = register.Password,
                AvatarId = File.DEFAULT_IMG_ID,
                Token    = System.Guid.NewGuid(),
                State    = (int)User.UserState.Enabled
            };
            db.Users.Add(newUser);
            if (await db.SaveChangesAsync() == 1)
            {
                newUser.Name = $"未命名_{newUser.Id}";
                await db.SaveChangesAsync();

                return(Resp.Success(Resp.NONE));
            }
            return(Resp.Fault(Resp.NONE, "注册失败,请重试"));
        }
Exemplo n.º 19
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));
        }
Exemplo n.º 20
0
        /// <summary>
        /// 发布新帖子
        /// </summary>
        public async Task <Resp> PublishNewPostAsync(Models.NewPostInfo info)
        {
            (bool isValid, string msg) = info.IsValid();
            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            Content content = new Content(info.Content, info.Files);

            using var db    = new MyForContext();
            using var trans = db.Database.BeginTransaction();

            await content.UploadImagesAndSetInContent();

            DB.Tables.Post newPost = new DB.Tables.Post
            {
                Title      = info.Title,
                ThemeId    = Themes.Theme.GetIdByThemeName(info.Theme),
                Keyword    = info.Theme,
                CreateById = info.CreateById,
                State      = (int)Post.PostState.ToAudit
            };
            newPost.Content = content.ToString();

            db.Posts.Add(newPost);
            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                trans.Commit();
                return(Resp.Success(Resp.NONE));
            }
            return(Resp.Fault(Resp.NONE, "添加失败"));
        }
Exemplo n.º 21
0
        /// <summary>
        /// 通过一个答案
        /// </summary>
        /// <returns></returns>
        public async Task <Resp> EnabledAsync()
        {
            using var db = new YGBContext();
            DB.Tables.Answer answer = await db.Answers.FirstOrDefaultAsync(a => a.Id == Id);

            if (answer is null)
            {
                return(Resp.Fault(Resp.NONE, NOT_EXIST_ANSWER));
            }

            int    stateId     = (int)Answer.StandardStates.Enabled;
            string description = Answer.StandardStates.Enabled.GetDescription();

            if (answer.State == stateId)
            {
                return(Resp.Fault(Resp.NONE, $"已经是{description}的状态,不能再次{description}"));
            }

            answer.State = stateId;
            int changeCount = await db.SaveChangesAsync();

            if (changeCount == 1)
            {
                return(Resp.Success(Resp.NONE, $"{description}成功"));
            }
            return(Resp.Fault(Resp.NONE, $"{description}失败"));
        }
Exemplo n.º 22
0
        /// <summary>
        /// 提一个问题,会返回新提问的 ID
        /// </summary>
        public async Task <Resp> AskQuestion(Models.PostQuestion questionParams)
        {
            (bool isValid, string msg) = questionParams.IsValid();
            if (!isValid)
            {
                return(Resp.Fault(Resp.NONE, msg));
            }

            DB.Tables.Question question = new DB.Tables.Question
            {
                Title       = questionParams.Title,
                Description = questionParams.Description,
                Tags        = string.Join(',', questionParams.Tags),
                State       = (int)Question.QuestionState.Enabled,
                AskerId     = questionParams.UserId
            };

            if (questionParams.Tags.Length >= 0)
            {
                await new Tags.Hub().AddTagsAsync(questionParams.Tags);
            }

            await using YGBContext db = new YGBContext();

            db.Add(question);
            if (await db.SaveChangesAsync() != 0)
            {
                return(Resp.Success(question.Id, ""));
            }

            return(Resp.Fault(Resp.NONE, "提交失败"));
        }
Exemplo n.º 23
0
        /// <summary>
        /// 删除段子
        /// </summary>
        public async Task <Resp> Remove(int id, bool delete = false)
        {
            using var db = new MyForContext();

            DB.Tables.Segment segment = await db.Segments.FirstOrDefaultAsync(s => s.Id == id);

            if (segment is null)
            {
                return(Resp.Fault(Resp.NONE, Segment.NONE_SEGMENT));
            }

            if (delete)
            {
                db.Segments.Remove(segment);
            }
            else
            {
                segment.State = (int)Segment.SegmentState.Remove;
            }

            int suc = await db.SaveChangesAsync();

            if (suc == 1)
            {
                return(Resp.Success(Resp.NONE, "删除成功"));
            }
            return(Resp.Fault(Resp.NONE, "删除失败"));
        }
Exemplo n.º 24
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, ""));
        }
Exemplo n.º 25
0
        public async Task <Resp> EnabledAsync()
        {
            int    enabledValue       = (int)QuestionState.Enabled;
            string enabledDescription = QuestionState.Enabled.GetDescription();

            using var db = new YGBContext();
            DB.Tables.Question question = await db.Questions.FirstOrDefaultAsync(q => q.Id == Id);

            if (question is null)
            {
                return(Resp.Fault(Resp.NONE, QUESTION_NO_EXIST));
            }
            if (question.State == enabledValue)
            {
                return(Resp.Fault(Resp.NONE, $"已经是{enabledDescription}的状态,不能再次{enabledDescription}"));
            }
            question.State = enabledValue;
            int changeCount = await db.SaveChangesAsync();

            if (changeCount == 1)
            {
                return(Resp.Success(Resp.NONE));
            }
            return(Resp.Fault(Resp.NONE, "修改失败"));
        }
Exemplo n.º 26
0
        public async Task <Resp <List <Student> > > GetModel(string id)
        {
            List <Student> result = new List <Student>();

            try
            {
                await Task.Run(() =>
                {
                    result = new List <Student>()
                    {
                        new Student()
                        {
                            age        = 1,
                            createtime = DateTime.Now,
                            id         = id
                        },
                        new Student()
                        {
                            age        = 12,
                            createtime = DateTime.Now,
                            id         = id
                        },
                    };
                });

                return(Resp.Success(result));
            }
            catch (Exception ex)
            {
                return(Resp.BusinessError <List <Student> >(ex.Message, result));
            }
        }
Exemplo n.º 27
0
        /// <summary>
        /// 获取客户列表
        /// 管理端使用
        /// </summary>
        /// <param name="pager"></param>
        /// <returns></returns>
        public async Task <Resp> GetClientsListAysnc(Paginator pager)
        {
            string search = pager["search"] ?? "";

            using var db = new YGBContext();

            Expression <Func <DB.Tables.User, bool> > whereStatement = u => u.Name.Contains(search) || u.Email.Contains(search);

            pager.TotalRows = await db.Users.CountAsync(whereStatement);

            pager.List = await db.Users.AsNoTracking()
                         .Where(whereStatement)
                         .Skip(pager.Skip)
                         .Take(pager.Size)
                         .Select(u => new Results.ClientItem
            {
                Id         = u.Id,
                UserName   = u.Name,
                Email      = u.Email,
                CreateDate = u.CreateDate.ToStandardString(),
                State      = Share.KeyValue <int, string> .Create(u.State, u.State.GetDescription <User.UserState>())
            })
                         .ToListAsync();

            return(Resp.Success(pager));
        }
Exemplo n.º 28
0
 public IActionResult IsLogged()
 {
     if (!CurrentUser.IsEmpty())
     {
         return(Pack(Resp.Success()));
     }
     return(Pack(Resp.Fault()));
 }
Exemplo n.º 29
0
 public Resp IsLogged()
 {
     if (CurrentAccount.IsEmpty())
     {
         return(Resp.Fault());
     }
     return(Resp.Success(Resp.NONE));
 }
Exemplo n.º 30
0
        /// <summary>
        /// 删除一个答案
        /// </summary>
        /// <param name="id"></param>
        /// <param name="deep">是否深删除</param>
        /// <returns></returns>
        public async Task <Resp> DeleteQuestionAsync(int id, bool deep = false)
        {
            await using var db = new YGBContext();
            var question = await db.Questions.FirstOrDefaultAsync(q => q.Id == id);

            if (question is null)
            {
                return(Resp.Fault(Resp.NONE, "该问题不存在"));
            }

            if (deep)
            {
                List <DB.Tables.Answer> answers = await db.Answers.AsNoTracking().Where(a => a.QuestionId == id).ToListAsync();

                List <int> answersId   = answers.Select(a => a.Id).ToList();
                var        backRecords = await db.AnswerBackRecords.AsNoTracking().Where(a => answersId.Contains(a.AnswerId)).ToListAsync();

                var reportRecords = await db.AnswerReportRecords.AsNoTracking().Where(a => answersId.Contains(a.AnswerId)).ToListAsync();

                var comments = await db.AnswerComments.AsNoTracking().Where(a => answersId.Contains(a.AnswerId)).ToListAsync();

                db.AnswerBackRecords.RemoveRange(backRecords);
                db.AnswerComments.RemoveRange(comments);
                db.AnswerReportRecords.RemoveRange(reportRecords);
                db.Answers.RemoveRange(answers);

                var backQuestion = await db.QuestionBackRecords.AsNoTracking().Where(q => q.QuestionId == id).ToListAsync();

                var reportQuestion = await db.QuestionReportRecords.AsNoTracking().Where(q => q.QuestionId == id).ToListAsync();

                var commentQuestion = await db.QuestionComments.AsNoTracking().Where(q => q.QuestionId == id).ToListAsync();

                db.QuestionComments.RemoveRange(commentQuestion);
                db.QuestionBackRecords.RemoveRange(backQuestion);
                db.QuestionReportRecords.RemoveRange(reportQuestion);
                db.Questions.Remove(question);

                int changeCount = await db.SaveChangesAsync();

                int count = answers.Count + 1 + backRecords.Count + reportRecords.Count + comments.Count + backQuestion.Count + reportQuestion.Count + commentQuestion.Count;
                if (changeCount == count)
                {
                    return(Resp.Success());
                }
            }
            else
            {
                question.State = (int)Question.QuestionState.Remove;
                int changeCount = await db.SaveChangesAsync();

                if (changeCount == 1)
                {
                    return(Resp.Success(Resp.NONE));
                }
            }

            return(Resp.Fault(Resp.NONE, "删除失败"));
        }