Esempio n. 1
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);
        }
Esempio n. 2
0
        /// <summary>
        /// 获取更换健康管理师分页列表
        /// </summary>
        /// <param name="requestDto"></param>
        /// <returns></returns>
        public async Task <GetMealAccountListResponseDto <GetChangeHealthManagerItem> > GetChangeHealthManagers(GetChangeHealthManagerListRequestDto requestDto)
        {
            var parameters = new DynamicParameters();

            var response = new GetMealAccountListResponseDto <GetChangeHealthManagerItem>();

            var consumerManagerGuid = await GetConsumerHealthManager(requestDto.ConsumerGuid);

            var sql = $@"select 
                            m.manager_guid,
							m.user_name,
							m.gender,m.phone,
                            concat(p.base_path, p.relative_path) as portrait_img,
							m.creation_date as registration_time
                        from t_health_manager as m
                        left join t_utility_accessory AS p on m.portrait_guid = p.accessory_guid
                        where m.`enable` = 1";

            if (!string.IsNullOrEmpty(requestDto.KeyWord))
            {
                sql = $"{sql} and (m.user_name like '%{requestDto.KeyWord}%' or m.phone like '%{requestDto.KeyWord}%')";
            }

            if (requestDto.RegistrationTime.HasValue && requestDto.EndTime.HasValue)
            {
                requestDto.EndTime = requestDto.EndTime.Value.AddDays(1);

                sql = $"{sql} and m.creation_date >= @RegistrationTime and m.creation_date < @EndTime";

                parameters.Add("@RegistrationTime", requestDto.RegistrationTime);
                parameters.Add("@EndTime", requestDto.EndTime);
            }

            sql = $"{sql} order by m.creation_date desc";

            var items = (List <GetChangeHealthManagerItem>)null;

            using (var conn = MySqlHelper.GetConnection())
            {
                items = (await conn.QueryAsync <GetChangeHealthManagerItem>(sql, parameters)).ToList();
            }

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

            if (!string.IsNullOrEmpty(consumerManagerGuid))
            {
                #region 若在第一页则将指定会员健康管理师移至首位
                var consumerIndex = items.FindIndex(d => d.ManagerGuid.Equals(consumerManagerGuid));

                if (consumerIndex > -1)
                {
                    var item = items[consumerIndex];

                    items.RemoveAt(consumerIndex);

                    item.Default = true;

                    items.Insert(0, item);
                }
                #endregion
            }

            response.Total = items.Count;

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

            response.CurrentPage = items;

            return(response);
        }