[HttpGet, Produces(typeof(ResponseDto <GetUserSignInDataCurrentMonthResponse>))]//,AllowAnonymous public async Task <IActionResult> GetUserSignInDataCurrentMonthAsync(GetUserSignInDataCurrentMonthRequest request) { if (string.IsNullOrWhiteSpace(request.UserID)) { request.UserID = UserID; } var scoreBiz = new ScoreExBiz(); GetUserSignInDataCurrentMonthResponse response = new GetUserSignInDataCurrentMonthResponse(); var recordModel = await scoreBiz.GetCheckInSendIntergralRecord(request.UserID, SendIntergralEnum.连续签到送积分.ToString(), request.UserType); if (recordModel != null) { TimeSpan interval = DateTime.Now.Date - recordModel.CreationDate.Date; if (interval.Days.Equals(1) || interval.Days.Equals(0)) { var checkInInfoList = new List <GetUserSignInDataCurrentMonthResponse.CheckInInfo>(); if (recordModel.Variation < 7) { var modelListLessThan7 = await scoreBiz.GetModelListByCondition(request.UserID, request.UserType.ToString(), recordModel.Variation); return(Success(GetResponseData(modelListLessThan7))); } var modelList = await scoreBiz.GetModelListByCondition(request.UserID, request.UserType.ToString(), 30); var conditionModel = modelList.Take(7).Where(a => a.Variation.Equals(6)).ToList().Count == 0 ? modelList.Take(14).Where(a => a.Variation.Equals(6)).ToList().Count == 0 ? modelList.Take(21).Where(a => a.Variation.Equals(6)).ToList().Count == 0 ? modelList.Take(28).Where(a => a.Variation.Equals(6)).ToList().Count == 0 ? modelList.Where(a => a.Variation.Equals(6)).ToList() : modelList.Take(28).Where(a => a.Variation.Equals(6)).ToList() : modelList.Take(21).Where(a => a.Variation.Equals(6)).ToList() : modelList.Take(14).Where(a => a.Variation.Equals(6)).ToList() : modelList.Take(7).Where(a => a.Variation.Equals(6)).ToList(); if (conditionModel.Count != 1) { return(Failed(ErrorCode.DataBaseError, "数据有误,请联系管理员!")); } var dataIndex = modelList.FindIndex(a => a.ScoreGuid.Equals(conditionModel[0].ScoreGuid)); var realModelList = modelList.Take(dataIndex + 6).ToList(); return(Success(GetResponseData(realModelList))); } } //重新签到 var newModelList = new List <ScoreModel>(); return(Success(GetResponseData(newModelList))); }
/// <summary> /// 组装 /// </summary> /// <param name="modelList">有效的签到</param> /// <returns></returns> private GetUserSignInDataCurrentMonthResponse GetResponseData(List <ScoreModel> modelList) { GetUserSignInDataCurrentMonthResponse response = new GetUserSignInDataCurrentMonthResponse(); var checkInInfoList = new List <GetUserSignInDataCurrentMonthResponse.CheckInInfo>(); var orderByModelList = modelList.OrderBy(a => a.CreationDate); foreach (var item in orderByModelList) { var model = new GetUserSignInDataCurrentMonthResponse.CheckInInfo { CheckInDate = item.CreationDate, IsCheckIn = true, Intergral = item.Variation }; checkInInfoList.Add(model); } for (int i = 0; i < 30 - modelList.Count; i++) { var model = new GetUserSignInDataCurrentMonthResponse.CheckInInfo(); if (modelList.Count > 7) { model.CheckInDate = modelList[0].CreationDate.AddDays(i + 1); model.IsCheckIn = false; model.Intergral = 7; } else { model.CheckInDate = modelList.Count == 0 ? DateTime.Now.AddDays(i) : modelList[0].CreationDate.AddDays(i + 1); model.IsCheckIn = false; model.Intergral = modelList.Count + 1 + i > 6 ? 7 : modelList.Count + 1 + i; } checkInInfoList.Add(model); } response.CheckInInfoList = checkInInfoList; response.ContinuousCheckInDays = modelList.Count; response.NextTimeCheckInIntergral = modelList.Count > 7 ? modelList.Count == 30 ? 1 : 7 : modelList.Count + 1; return(response); }