Example #1
0
        public async Task <IActionResult> GetMealAccounts([FromQuery] GetMealAccountListRequestDto request)
        {
            var accountBiz = new MealAccountBiz();
            var accounts   = await accountBiz.GetMealAccounts(request);

            return(Success(accounts));
        }
Example #2
0
        /// <summary>
        /// 获取指定医院用户钱包账户列表
        /// </summary>
        /// <param name="requestDto"></param>
        /// <returns></returns>
        public async Task <GetMealAccountListResponseDto <MealAccountItem> > GetMealAccounts(GetMealAccountListRequestDto requestDto)
        {
            var response = new GetMealAccountListResponseDto <MealAccountItem>();

            var result = (IEnumerable <MealAccountItem>)null;

            var sql = $@"SELECT     
                            a.user_guid,
						    u.user_name,
	                        u.phone,
                            a.user_type,
							a.`enable`,
							a.account_type,
							a.account_balance
                        FROM t_meal_account as a
	                        INNER JOIN t_utility_user as u on u.user_guid  = a.user_guid
                        WHERE a.hospital_guid = '{requestDto.HospitalGuid}'";

            using (var conn = MySqlHelper.GetConnection())
            {
                if (!string.IsNullOrEmpty(requestDto.Phone))
                {
                    sql += $" and u.phone = '{requestDto.Phone}'";

                    sql += " ORDER BY a.creation_date DESC";

                    result = await conn.QueryAsync <MealAccountItem>(sql);

                    if (result is null || result.Count() <= 0)
                    {
                        sql = $"SELECT user_guid,phone, user_name FROM t_utility_user where phone = '{requestDto.Phone}' and `enable` = 1";

                        result = await conn.QueryAsync <MealAccountItem>(sql);
                    }
                }
                else
                {
                    sql += " ORDER BY a.creation_date DESC";

                    result = await conn.QueryAsync <MealAccountItem>(sql);
                }
            }

            if (result is null || result.Count() <= 0)
            {
                return(response);
            }

            var accounts = result.GroupBy(d => d.UserGuid).ToList();

            var items = new List <MealAccountItem>();

            foreach (var account in accounts)
            {
                var accountItem = new MealAccountItem();

                var first = account.FirstOrDefault();

                accountItem.UserGuid = first.UserGuid;
                accountItem.UserName = first.UserName;
                accountItem.UserType = first.UserType;
                accountItem.Enable   = first.Enable;
                accountItem.Phone    = first.Phone;

                foreach (var mealAccount in account.Distinct())
                {
                    if (mealAccount.AccountType == MealAccountTypeEnum.Recharge)
                    {
                        accountItem.RechargeBalance = mealAccount.Accountbalance;
                    }
                    else if (mealAccount.AccountType == MealAccountTypeEnum.Grant &&
                             mealAccount.Enable)
                    {
                        accountItem.GrantBalance = mealAccount.Accountbalance;
                    }
                }

                items.Add(accountItem);
            }

            var total = items.Count();

            response.CurrentPage = items.Skip((requestDto.PageIndex - 1) * requestDto.PageSize).Take(requestDto.PageSize);

            response.Total = total;

            return(response);
        }