/// <summary> /// 获取车友群列表 /// </summary> /// <param name="request"></param> /// <returns></returns> public static async Task <CarFriendsGroupInfoResponse> GetCarFriendsGroupListAsync(GetCarFriendsGroupListRequest request) { using (var client = CacheHelper.CreateCacheClient(GlobalConstant.CarFriendsGroupName)) { var result = new CarFriendsGroupInfoResponse(); //筛选车型得到的车型群 if (request.VehicleList != null && request.VehicleList.Count > 0) { string key = string.Format(GlobalConstant.CarFriendsGroupKey, string.Join(":", request.VehicleList)); var clientResult = await client.GetOrSetAsync(SecurityHelper.Hash(key), async() => (await DalCarFriendsGroup.GetFilterCarFriendsGroupListAsync(request.VehicleList)), TimeSpan.FromMinutes(10)); if (clientResult.Success && clientResult.Value != null) { result = clientResult.Value; } } else { //热门车友群/热门推荐群/搜索车型得到的车型群/全部车友群 string key = string.Format(GlobalConstant.CarFriendsGroupKey, ":" + request.IsRecommend + ":" + request.SearchVehicleKey); var clientResult = await client.GetOrSetAsync(SecurityHelper.Hash(key), async() => (await GetSearchCarFriendsGroupResponseAsync(request.IsRecommend, request.SearchVehicleKey)), TimeSpan.FromMinutes(10)); if (clientResult.Success && clientResult.Value != null && clientResult.Value.groupCount > 0) { result = clientResult.Value; } } return(result); } }
/// <summary> /// 获取热门车友群/热门推荐群/搜索车型得到的车型群/全部车友群 /// </summary> /// <param name="isRecommend"></param> /// <param name="searchVehicleKey"></param> /// <returns></returns> private static async Task <CarFriendsGroupInfoResponse> GetSearchCarFriendsGroupResponseAsync(bool isRecommend, string searchVehicleKey) { var result = new CarFriendsGroupInfoResponse(); var carFriendsGroupInfoResponse = await DalCarFriendsGroup.GetIsRecommendCarFriendsGroupListAsync(isRecommend); if (string.IsNullOrWhiteSpace(searchVehicleKey)) { result = carFriendsGroupInfoResponse; } else { result.groupList = carFriendsGroupInfoResponse.groupList.Where(t => t.BindVehicleType.Contains(searchVehicleKey)).ToList(); result.groupCount = result.groupList.Count; } return(result); }
/// <summary> /// 根据pkid获取车友群 /// </summary> /// <param name="pkid"></param> /// <returns></returns> public static async Task <OperationResult <CarFriendsGroupInfoResponse> > GetCarFriendsGroupModelAsync(int pkid) { if (pkid == 0) { return(OperationResult.FromError <CarFriendsGroupInfoResponse>("-31", string.Format(Resource.ParameterError_NotZero, "pkid"))); } using (var client = CacheHelper.CreateCacheClient(GlobalConstant.CarFriendsGroupName)) { var result = new CarFriendsGroupInfoResponse(); string key = string.Format(GlobalConstant.CarFriendsGroupKey, pkid); var clientResult = await client.GetOrSetAsync(key, async() => (await DalCarFriendsGroup.GetCarFriendsGroupModelAsync(pkid)), TimeSpan.FromMinutes(10)); if (clientResult.Success && clientResult.Value != null && clientResult.Value.groupCount > 0) { result = clientResult.Value; } return(OperationResult.FromResult(result)); } }
/// <summary> /// 根据pkid获取车友群 /// </summary> /// <param name="pkid"></param> /// <returns></returns> public static async Task <CarFriendsGroupInfoResponse> GetCarFriendsGroupModelAsync(int pkid) { var carFriendsGroupInfoResponse = new CarFriendsGroupInfoResponse(); var carFriendsGroupList = new List <CarFriendsGroup>(); try { string sql = @" SELECT [PKID] , [GroupName] , [GroupDesc] , [BindVehicleType] , [BindVehicleTypeID] , [GroupHeadPortrait] , [GroupQRCode] , [GroupCategory] , [GroupWeight] , [IsRecommend] , [Is_Deleted] , [GroupCreateTime] , [GroupOverdueTime] , [CreateDatetime] , [LastUpdateDateTime] , [CreateBy] , [LastUpdateBy] FROM Activity.[dbo].[CarFriendsWeChatGroup] WITH ( NOLOCK ) WHERE PKID = @PKID;"; using (var cmd = new SqlCommand(sql)) { cmd.Parameters.AddWithValue("@PKID", pkid); carFriendsGroupList = (await DbHelper.ExecuteSelectAsync <CarFriendsGroup>(true, cmd)).ToList(); carFriendsGroupInfoResponse.groupList = carFriendsGroupList; carFriendsGroupInfoResponse.groupCount = carFriendsGroupList.Count; } } catch (Exception e) { Logger.Error($"GetCarFriendsGroupModelAsync -> {pkid}", e); throw; } return(carFriendsGroupInfoResponse); }
/// <summary> /// 筛选车型得到的车型群 /// </summary> /// <param name="VehicleList"></param> /// <returns></returns> public static async Task <CarFriendsGroupInfoResponse> GetFilterCarFriendsGroupListAsync(List <string> VehicleList) { var carFriendsGroupInfoResponse = new CarFriendsGroupInfoResponse(); var carFriendsGroupList = new List <CarFriendsGroup>(); int carFriendsGroupCount = 0; try { string sql = @" SELECT [PKID] , [GroupName] , [GroupDesc] , [BindVehicleType] , [BindVehicleTypeID] , [GroupHeadPortrait] , [GroupQRCode] , [GroupCategory] , [GroupWeight] , [IsRecommend] , [Is_Deleted] , [GroupCreateTime] , [GroupOverdueTime] , [CreateDatetime] , [LastUpdateDateTime] , [CreateBy] , [LastUpdateBy] FROM Activity.[dbo].[CarFriendsWeChatGroup] WITH(NOLOCK) WHERE GroupCategory = 0 AND Is_Deleted=0 AND ("; StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(sql); for (int i = 0; i < VehicleList.Count; i++) { string parameter = "@BindVehicleType" + i; stringBuilder.Append("BindVehicleType=" + parameter + " or "); } stringBuilder.Remove(stringBuilder.Length - 3, 3); stringBuilder.Append(" ) ORDER BY GroupWeight;"); string sqlCount = @" SELECT COUNT(*) FROM Activity.[dbo].[CarFriendsWeChatGroup] WITH(NOLOCK) WHERE GroupCategory = 0 AND Is_Deleted=0 AND ("; StringBuilder stringBuilderCount = new StringBuilder(); stringBuilderCount.Append(sqlCount); for (int i = 0; i < VehicleList.Count; i++) { string parameter = "@BindVehicleType" + i; stringBuilderCount.Append("BindVehicleType=" + parameter + " or "); } stringBuilderCount.Remove(stringBuilderCount.Length - 3, 3); stringBuilderCount.Append(" ) ;"); var parameterList = new List <SqlParameter>(); for (int i = 0; i < VehicleList.Count; i++) { parameterList.Add(new SqlParameter($"@BindVehicleType{i}", VehicleList[i])); } using (var cmd = new SqlCommand(stringBuilder.ToString())) { cmd.Parameters.AddRange(parameterList.ToArray()); carFriendsGroupList = (await DbHelper.ExecuteSelectAsync <CarFriendsGroup>(true, cmd)).ToList(); cmd.Parameters.Clear(); ; } using (var cmd = new SqlCommand(stringBuilderCount.ToString())) { cmd.Parameters.AddRange(parameterList.ToArray()); carFriendsGroupCount = Convert.ToInt32(await DbHelper.ExecuteScalarAsync(true, cmd)); } } catch (Exception e) { Logger.Error($"GetFilterCarFriendsGroupListAsync -> {string.Join("','", VehicleList)}", e); } carFriendsGroupInfoResponse.groupList = carFriendsGroupList; carFriendsGroupInfoResponse.groupCount = carFriendsGroupCount; return(carFriendsGroupInfoResponse); }
/// <summary> /// 热门车友群/热门推荐群/全部车友群 /// </summary> /// <param name="isRecommend"></param> /// <returns></returns> public static async Task <CarFriendsGroupInfoResponse> GetIsRecommendCarFriendsGroupListAsync(bool isRecommend) { var carFriendsGroupInfoResponse = new CarFriendsGroupInfoResponse(); var carFriendsGroupList = new List <CarFriendsGroup>(); int carFriendsGroupCount = 0; try { string sql = @" SELECT [PKID] , [GroupName] , [GroupDesc] , [BindVehicleType] , [BindVehicleTypeID] , [GroupHeadPortrait] , [GroupQRCode] , [GroupCategory] , [GroupWeight] , [IsRecommend] , [Is_Deleted] , [GroupCreateTime] , [GroupOverdueTime] , [CreateDatetime] , [LastUpdateDateTime] , [CreateBy] , [LastUpdateBy] FROM Activity.[dbo].[CarFriendsWeChatGroup] WITH(NOLOCK) WHERE GroupCategory = 0 AND Is_Deleted = 0"; if (isRecommend) { sql += " AND isRecommend=1"; } sql += " ORDER BY GroupWeight"; string sqlCount = @" SELECT COUNT(*) FROM Activity.[dbo].[CarFriendsWeChatGroup] WITH(NOLOCK) WHERE GroupCategory = 0 AND Is_Deleted = 0"; if (isRecommend) { sqlCount += " AND isRecommend=1"; } using (var cmd = new SqlCommand(sql)) { carFriendsGroupList = (await DbHelper.ExecuteSelectAsync <CarFriendsGroup>(true, cmd)).ToList(); } using (var cmd = new SqlCommand(sqlCount)) { carFriendsGroupCount = Convert.ToInt32(await DbHelper.ExecuteScalarAsync(true, cmd)); } } catch (Exception e) { Logger.Error($"GetIsRecommendCarFriendsGroupListAsync -> {isRecommend}", e); } carFriendsGroupInfoResponse.groupList = carFriendsGroupList; carFriendsGroupInfoResponse.groupCount = carFriendsGroupCount; return(carFriendsGroupInfoResponse); }