Example #1
0
        public async Task <IActionResult> GetMemberIncomesAsync([FromHeader] String source,
                                                                [FromRoute] RouteIdInt route,
                                                                [FromQuery] RoutePageCode item)
        {
            var response = new Response <Object>();

            try {
                Expression <Func <MemberIncome, bool> > expression;
                if (!string.IsNullOrEmpty(item.code))
                {
                    //查询不同code
                    expression = a => a.MemberId == route.id && a.TaskCode == item.code && a.Status == 0 && a.IsDisplay == 1 && a.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd");
                }
                else if (item.todayFlag)
                {
                    //查询今日
                    expression = a => a.MemberId == route.id && a.Status == 0 && a.IsDisplay == 1 && a.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd");
                }
                else
                {
                    expression = a => a.MemberId == route.id && a.Status == 0 && a.IsDisplay == 1;//查询所有
                }
                var result = await _IMemberIncomeRepository.Query(expression)
                             .OrderByDescending(a => a.CreateTime)
                             .ToPager(item.PageIndex.Value, item.PageSize.Value)
                             .Select(a => new {
                    a.IncomeId,
                    a.TaskName,
                    a.CategoryDay,
                    a.CategoryFixed,
                    a.BeansText,
                    a.Title,
                    a.CreateTime
                })
                             .ToListAsync();

                if (result.Count > 0)
                {
                    response.Code = true;
                    response.Data = result;
                }
                else
                {
                    return(NoContent());
                }
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }
Example #2
0
        public async Task <IActionResult> GetMemberInfoAsync([FromHeader] String source,
                                                             [FromRoute] RouteIdInt route)
        {
            var response = new Response <MemberAppDto>();

            try {
                var entity = await _IMemberInfoRepository.GetAppInfo(route.id);

                if (entity != null)
                {
                    entity.TodayRead = await _IMemberIncomeRepository.Query(a => a.MemberId == route.id &&
                                                                            a.TaskCode == "T0007" &&
                                                                            a.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd") &&
                                                                            a.Status == 0)
                                       .SumAsync(a => a.ReadTime) / 60;

                    entity.TodayBeans = await _IMemberIncomeRepository.Query(a => a.MemberId == route.id &&
                                                                             a.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd") &&
                                                                             a.Status == 0)
                                        .SumAsync(a => a.Beans);

                    var before = Convert.ToDecimal(_IConfiguration["ExchangeRatio:Before"]);
                    var after  = Convert.ToInt32(_IConfiguration["ExchangeRatio:After"]);
                    entity.Ratio      = $"{before}/{after}";
                    entity.RatioValue = after / before;
                    response.Code     = true;
                    response.Data     = entity;
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }
Example #3
0
        public async Task <Tuple <bool, String, int> > AddTasks(string code, TaskItem item)
        {
            // 任务信息
            var taskInfo = await _ITaskInfoRepository.FirstOrDefaultAsync(a => a.TaskCode == code && a.IsEnable == 1);

            var flag    = false;
            var message = "";

            if (taskInfo != null)
            {
                // 任务时效性处理
                if (taskInfo.IsTimeLimit == 0)
                {
                    flag = true;
                }
                else if (taskInfo.IsTimeLimit == 1)
                {
                    if (DateUtil.In(System.DateTime.Now, taskInfo.BeforeTime.Value, taskInfo.AfterTime.Value, RangeMode.Open))
                    {
                        flag = true;
                    }
                    else
                    {
                        message = "任务已过期!";
                    }
                }
                else
                {
                    message = "未设置有效时间!";
                }
                if (flag)
                {
                    // 会员当天收入
                    var memberIncomes = await _IMemberIncomeRepository.Query(a => a.MemberId == item.MemberId &&
                                                                             a.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd") &&
                                                                             a.Status == 0)
                                        .OrderBy(a => a.CreateTime)
                                        .ToListAsync();

                    Tuple <bool, string, int> result;
                    switch (code)
                    {
                    case "T0005":
                        result = await SetSign(item, taskInfo, memberIncomes);

                        break;

                    default:
                        result = await SetTask(item, taskInfo, memberIncomes);

                        break;
                    }
                    var beans = 0;
                    if (result.Item1)
                    {
                        beans += result.Item3;
                        if (!string.IsNullOrEmpty(taskInfo.RelatedTasks))
                        {
                            var relatedTaskCodes = taskInfo.RelatedTasks.Split("∮");
                            // 关联任务列表
                            var relatedTasks = await _ITaskInfoRepository.Query(a => relatedTaskCodes.Contains(a.TaskCode) && a.IsEnable == 1).ToListAsync();

                            foreach (var relateds in relatedTasks)
                            {
                                result = await SetTask(item, relateds, memberIncomes);

                                if (result.Item1)
                                {
                                    beans += result.Item3;
                                }
                            }
                        }
                        await _IMemberInfosRepository.UpdateBeans(item.MemberId.Value, beans);

                        flag = await _IMemberIncomeRepository.SaveChangesAsync() > 0;
                    }
                    else
                    {
                        flag    = false;
                        message = result.Item2;
                    }
                    if (flag)
                    {
                        return(new Tuple <bool, string, int>(flag, $"任务奖励为{beans}", beans));
                    }
                    else
                    {
                        return(new Tuple <bool, string, int>(flag, string.IsNullOrEmpty(result.Item2) ? "添加任务奖励失败!" : result.Item2, 0));
                    }
                }
            }
            return(new Tuple <bool, string, int>(false, message, 0));
        }
Example #4
0
        public async Task <IActionResult> GetTaskDayAsync([FromHeader] String source,
                                                          [FromQuery] MemberIdGet item)
        {
            var response = new Response <Object>();
            var taskCode = "T0005";

            try {
                var taskInfo = await _ITaskInfoRepository.FirstOrDefaultAsync(a => a.TaskCode == taskCode && a.IsEnable == 1);

                if (taskInfo == null)
                {
                    return(NotFound());
                }
                var weeks = await _ITaskDetailsRepository.Query(a => a.TaskId == taskInfo.TaskId && a.IsEnable == 1)
                            .OrderBy(a => a.Sequence)
                            .ToListAsync();

                if (weeks.Count <= 0)
                {
                    return(NoContent());
                }
                // 当前日期
                var nows = System.DateTime.Now;
                // 签到天数
                var signNumber = 0;
                // 今日签到数据
                var memberIncome = await _IMemberIncomeRepository.Query(a => a.TaskCode == taskCode &&
                                                                        a.Status == 0 &&
                                                                        a.MemberId == item.MemberId &&
                                                                        a.CreateTime.Value.ToString("yyyy-MM-dd") == nows.ToString("yyyy-MM-dd"))
                                   .SingleOrDefaultAsync();

                if (memberIncome == null)
                {
                    // 昨日签到数据
                    memberIncome = await _IMemberIncomeRepository.Query(a => a.TaskCode == taskCode &&
                                                                        a.Status == 0 &&
                                                                        a.MemberId == item.MemberId &&
                                                                        a.CreateTime.Value.ToString("yyyy-MM-dd") == nows.AddDays(-1).ToString("yyyy-MM-dd"))
                                   .SingleOrDefaultAsync();
                }
                var todaySignin = false;
                if (memberIncome != null)
                {
                    signNumber  = memberIncome.SignNumber.Value;
                    todaySignin = memberIncome.CreateTime.Value.ToString("yyyy-MM-dd") == nows.ToString("yyyy-MM-dd");
                }
                DateTime beforeTime;
                //第一天签到或者签到7天
                if (signNumber >= 7 || (signNumber == 1 && todaySignin))
                {
                    beforeTime = System.DateTime.Now;
                }
                else if (!todaySignin)   //今天未签
                {
                    beforeTime = System.DateTime.Now.AddDays(-signNumber);
                }
                else //今天已签
                {
                    beforeTime = System.DateTime.Now.AddDays(-signNumber + 1);
                }
                var result = new List <Object>();
                for (var i = 0; i < weeks.Count; i++)
                {
                    var time = beforeTime.AddDays(i);
                    result.Add(new {
                        CreateTime = time.ToString("yyyy-MM-dd"),
                        IsSignin   = i < signNumber,
                        Beans      = weeks[i].Beans
                    });
                }
                response.Code = true;
                response.Data = new {
                    TodaySignin = todaySignin,
                    Weeks       = result
                };
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }