Beispiel #1
0
        /// <summary>
        /// 当月数据连续签到数据
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <param name="scoreSourceType">积分来源类型</param>
        /// <returns></returns>
        public async Task <List <CheckInInfo> > GetUserSignInDataCurrentMonthAllDays(GetUserSignInDataCurrentMonthRequest request, string dateSql)
        {
            using (var conn = MySqlHelper.GetConnection())
            {
                var sqlWhere = $@"SELECT
	                                                IFNULL( mm.IsCheckIn, 0 ) AS IsCheckIn,
	                                                IFNULL( mm.Intergral, 0 ) AS Intergral,
	                                                m.CheckInDate 
                                                FROM
	                                                (
                                                     {dateSql}
	                                                ) AS m
	                                                LEFT JOIN (
                                                SELECT
	                                                1 AS IsCheckIn,
	                                                variation AS Intergral,
	                                                date_format( creation_date, '%Y-%m-%d' ) AS CheckInDate 
                                                FROM
	                                                t_utility_score 
                                                WHERE
	                                                user_guid = @UserID
	                                                AND reason = '连续签到送积分' 
                                                    AND user_type_guid=@UserType
	                                                AND `enable` = 1 
                                                GROUP BY
	                                                CheckInDate,
	                                                Intergral,
	                                                IsCheckIn 
	                                                ) AS mm ON m.CheckInDate = mm.CheckInDate 
                                                ORDER BY
	                                                m.CheckInDate DESC "    ;
                return((await conn.QueryAsync <CheckInInfo>(sqlWhere, new { request.UserID, request.UserType }))?.ToList());
            }
        }
Beispiel #2
0
        /// <summary>
        /// 当月数据连续签到数据
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <param name="scoreSourceType">积分来源类型</param>
        /// <returns></returns>
        public async Task <List <ScoreModel> > GetUserSignInDataCurrentMonth(GetUserSignInDataCurrentMonthRequest request)
        {
            using (var conn = MySqlHelper.GetConnection())
            {
                var sqlWhere = @"WHERE
	                                                user_guid = @userID
	                                                AND reason = '连续签到送积分'
                                                    AND date_format( creation_date, '%Y-%m' ) = date_format( DATE_SUB( curdate( ), INTERVAL 0 MONTH ), '%Y-%m' ) 
                                                    AND  `enable` = 1 
                                                ORDER BY
	                                                creation_date ASC "    ;
                return((await conn.GetListAsync <ScoreModel>(sqlWhere, new { request.UserID, request.UserType }))?.ToList());
            }
        }
        [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)));
        }