示例#1
0
        public async Task <ResponseMessage> UpdateTitle(Models.UserInfo user, [FromBody] TitleUpdateRequest titleUpdateRequest)
        {
            Logger.Trace($"用户{user?.UserName ?? ""}({user?.Id ?? ""})修改称号,请求参数为:\r\n" + (titleUpdateRequest != null ? JsonHelper.ToJson(titleUpdateRequest) : ""));
            var response = new ResponseMessage();

            if (!ModelState.IsValid)
            {
                response.Code    = ResponseCodeDefines.ModelStateInvalid;
                response.Message = ModelState.GetAllErrors();
                Logger.Warn("修改称号模型验证失败:\r\n{0}", response.Message ?? "");
                return(response);
            }
            try
            {
                response = await _titleManager.UpdateTitleAsync(user, titleUpdateRequest, HttpContext.RequestAborted);
            }
            catch (Exception e)
            {
                response.Code    = ResponseCodeDefines.ServiceError;
                response.Message = e.Message;
                Logger.Error($"用户{user?.UserName ?? ""}({user?.Id ?? ""})修改称号,报错:{e.Message}\r\n{e.StackTrace}");
            }
            return(response);
        }
示例#2
0
        /// <summary>
        /// 修改称号
        /// </summary>
        /// <param name="user"></param>
        /// <param name="titleUpdateRequest"></param>
        /// <param name="requestAborted"></param>
        /// <returns></returns>
        public async Task <ResponseMessage> UpdateTitleAsync(UserInfo user, TitleUpdateRequest titleUpdateRequest, CancellationToken requestAborted)
        {
            var response = new ResponseMessage();

            if (!user.IsAdmin)
            {
                response.Code    = ResponseCodeDefines.NotAllow;
                response.Message = "权限不足";
                return(response);
            }
            //验证开始值和结束值的连续性
            var temp     = titleUpdateRequest.titleUpdateListRequests.OrderBy(o => o.StartScore).ToList();
            int?endScore = null;

            foreach (var title in temp)
            {
                if (endScore != null)
                {
                    if (endScore + 1 != title.StartScore)
                    {
                        response.Code    = ResponseCodeDefines.ModelStateInvalid;
                        response.Message = "开始值和结束值必须保持连续";
                        return(response);
                    }
                }

                if (title.StartScore >= title.EndScore)
                {
                    response.Code    = ResponseCodeDefines.ModelStateInvalid;
                    response.Message = "开始值和结束值必须保持连续";
                    return(response);
                }

                endScore = title.EndScore;
            }

            var periodInfo = await _iTitleStore.GetScorePeriods().Where(w => !w.IsDelete && w.Id == titleUpdateRequest.PeriodId).FirstOrDefaultAsync();

            if (periodInfo == null || periodInfo.State != 1)
            {
                response.Code    = ResponseCodeDefines.ModelStateInvalid;
                response.Message = "只有进行中的赛季才能操作";
                return(response);
            }
            var titles = await _iTitleStore.GetScoreTitles().Where(w => w.PeriodId == titleUpdateRequest.PeriodId && !w.IsDelete).ToListAsync();

            if (titles == null || titles.Count == 0 || titles.Count != titleUpdateRequest.titleUpdateListRequests.Count)
            {
                response.Code    = ResponseCodeDefines.NotFound;
                response.Message = "未找到称号数据";
                return(response);
            }
            foreach (var title in titles)
            {
                if (titleUpdateRequest.titleUpdateListRequests.FirstOrDefault(fi => fi.Id == title.Id) == null)
                {
                    response.Code    = ResponseCodeDefines.NotFound;
                    response.Message = "需要保存的称号数据与赛季ID不对应";
                    return(response);
                }
            }
            //更新值
            var titleListRequests = titleUpdateRequest.titleUpdateListRequests;

            titles.ForEach(f =>
            {
                f.Title      = titleListRequests.FirstOrDefault(fi => fi.Id == f.Id).Title;
                f.StartScore = titleListRequests.FirstOrDefault(fi => fi.Id == f.Id).StartScore;
                f.EndScore   = titleListRequests.FirstOrDefault(fi => fi.Id == f.Id).EndScore;
                f.Icon       = titleListRequests.FirstOrDefault(fi => fi.Id == f.Id)?.Icon?.Replace(_config["FileUrl"], "");
                f.Card       = titleListRequests.FirstOrDefault(fi => fi.Id == f.Id)?.Card?.Replace(_config["FileUrl"], "");
                f.UpdateTime = DateTime.Now;
                f.UpdateUser = user.Id;
                f.FontColor  = titleListRequests.FirstOrDefault(fi => fi.Id == f.Id).FontColor;
            });
            //保存更新
            await _iTitleStore.UpdateTitleListAsync(titles, requestAborted);

            // 触发赛季和排行榜
            await _sendClientMessageHelper.SendInfos(new List <Dto.Common.SendClientType>() { Dto.Common.SendClientType.Season, Dto.Common.SendClientType.Rank });

            return(response);
        }