/// <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); }
/// <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); }