No Description

FKProDetailRequest.m 8.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. //
  2. // FKProDetailRequest.m
  3. // FirstLink
  4. //
  5. // Created by jack on 16/8/17.
  6. // Copyright © 2016年 FirstLink. All rights reserved.
  7. //
  8. #import "FKProDetailRequest.h"
  9. #import "FKBrandSubscribeRequest.h"
  10. #import "NSArray+Extra.h"
  11. @implementation FKProDetailRequest
  12. + (void)requestWithType:(kProductReqType)type
  13. info:(NSDictionary *)info
  14. delegate:(id <FLNetworkDelegate>)delegate{
  15. NSString *itemJsonString = [self jsonStringForRequestType:type info:info];
  16. NSDictionary *para = [self getCommonParaWithType:type itemJson:itemJsonString];
  17. NSString *urlString = [self urlStringForRequestType:type];
  18. NSString *refer = info[REFER_KEY];
  19. if (refer.length > 0) {
  20. [para setValue:refer forKey:REFER_KEY];
  21. }
  22. [[FLDataCenter sharedDataCenter] POST:urlString para:para identify:type delegate:delegate];
  23. }
  24. + (NSString *)jsonStringForRequestType:(kProductReqType)type info:(NSDictionary *)dict {
  25. switch (type) {
  26. case kProductReqTypeDetail:
  27. case kProductReqTypeSpec:
  28. return [FLRequestHelper JSONStringWithKeys:@[@"id"]
  29. values:@[dict[PRODUCT_ID_KEY]]];
  30. case kProductReqTypeAddCollect:
  31. return [FLRequestHelper JSONStringWithKeys:@[@"item_id", @"type"]
  32. values:@[dict[PRODUCT_ID_KEY], dict[PRODUCT_COLLECT_TYPE_KEY]]];
  33. case kProductReqTypeRemoveCollect:
  34. return [FLRequestHelper JSONStringWithKeys:@[@"item_id"]
  35. values:@[dict[PRODUCT_ID_KEY]]];
  36. case kProductReqTypeAddToBasket:{
  37. NSDictionary *itemDict = @{@"goods_id" : dict[PRODUCT_ID_KEY], @"quantity" : dict[PRODUCT_AMOUNT_KEY]};
  38. NSError *error;
  39. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:@[itemDict]
  40. options:NSJSONWritingPrettyPrinted
  41. error:&error];
  42. if (!jsonData) {
  43. return nil;
  44. }
  45. return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  46. }
  47. case kProductReqTypeRelativePro:
  48. case kProductReqTypeMoreRelativePro:
  49. return [FLRequestHelper JSONStringWithKeys:@[@"product_id", @"start_row", @"page_size"]
  50. values:@[dict[PRODUCT_ID_KEY], dict[PRODUCT_RELATIVE_START_ROW_KEY], @"12"]];
  51. case kProductReqTypeBrandRecommend:
  52. return [FLRequestHelper JSONStringWithKeys:@[@"brand_id", @"start_row", @"page_size"]
  53. values:@[dict[BRAND_ID_KEY], @"0", @"12"]];
  54. case kProductReqTypeAllLookList:
  55. return [FLRequestHelper JSONStringWithKeys:@[@"product_id", @"start_row", @"page_size"]
  56. values:@[dict[PRODUCT_ID_KEY], @"0", @"12"]];
  57. default:
  58. break;
  59. }
  60. return nil;
  61. }
  62. + (NSDictionary *)getCommonParaWithType:(kProductReqType)type itemJson:(NSString *)itemJson {
  63. if (!itemJson || itemJson.length == 0) return nil;
  64. NSString *itemJsonKey = nil;
  65. switch (type) {
  66. case kProductReqTypeDetail:
  67. case kProductReqTypeSpec:
  68. itemJsonKey = @"product_json";
  69. break;
  70. case kProductReqTypeRelativePro:
  71. case kProductReqTypeMoreRelativePro:
  72. itemJsonKey = @"recommend_json";
  73. break;
  74. case kProductReqTypeAddCollect:
  75. case kProductReqTypeRemoveCollect:
  76. itemJsonKey = @"item_favorite_json";
  77. break;
  78. case kProductReqTypeAddToBasket:
  79. itemJsonKey = @"shopping_carts_json";
  80. break;
  81. case kProductReqTypeBrandRecommend:
  82. case kProductReqTypeAllLookList:
  83. itemJsonKey = @"recommend_json";
  84. break;
  85. default:
  86. break;
  87. }
  88. if (itemJsonKey) {
  89. NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
  90. [dictM setValue:itemJson forKey:itemJsonKey];
  91. [dictM addEntriesFromDictionary:[FLRequestHelper commonParamater]];
  92. return dictM;
  93. }
  94. return nil;
  95. }
  96. + (NSString *)urlStringForRequestType:(kProductReqType)type
  97. {
  98. NSString *detailString = nil;
  99. switch (type) {
  100. case kProductReqTypeDetail:{
  101. detailString = @"product/get_product_new.json";
  102. }
  103. break;
  104. case kProductReqTypeSpec:
  105. detailString = @"product/find_product_specs_and_goods.json";
  106. break;
  107. case kProductReqTypeAddCollect:
  108. detailString = @"item_favorite/create_item_favorite.json";
  109. break;
  110. case kProductReqTypeRemoveCollect:
  111. detailString = @"item_favorite/remove_item_favorite.json";
  112. break;
  113. case kProductReqTypeAddToBasket:
  114. detailString = @"shopping_cart/create_shopping_carts.json";
  115. break;
  116. case kProductReqTypeRelativePro:
  117. case kProductReqTypeMoreRelativePro:
  118. detailString = @"search/recommend_products.json";
  119. break;
  120. case kProductReqTypeBrandRecommend:
  121. detailString = @"recommend/find_brand_recommend_products.json";
  122. break;
  123. case kProductReqTypeAllLookList:
  124. detailString = @"recommend/find_product_recommend_products.json";
  125. default:
  126. break;
  127. }
  128. if (detailString) {
  129. return [self commonURLwithString:detailString];
  130. }
  131. return nil;
  132. }
  133. + (NSString *)commonURLwithString:(NSString *)string{
  134. return [NSString stringWithFormat:@"%@/link-site/api/%@", [[FKServerUtil sharedInstance] apiServer], string];
  135. }
  136. + (void)reqBookBrand:(NSString *)brandID
  137. isCancel:(BOOL)cancel
  138. identify:(int)identify
  139. delegate:(id<FLNetworkDelegate>)delegate{
  140. if (![FLStringHelper isValidString:brandID]) return;
  141. if (cancel){
  142. [FKBrandSubscribeRequest requestCancelSubscribe:@[brandID] identify:identify delegate:delegate];
  143. }else{
  144. [FKBrandSubscribeRequest requestCreateSubscribe:@[brandID] identify:identify delegate:delegate];
  145. }
  146. }
  147. + (void)reqTagList:(NSString *)productId
  148. identify:(int)identify
  149. delegate:(id<FLNetworkDelegate>)delegate{
  150. if (!productId.length) return;
  151. NSArray *productIdArray = @[productId];
  152. NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
  153. [dictM setValue:[productIdArray json] forKey:@"ids_json"];
  154. [dictM addEntriesFromDictionary:[FLRequestHelper commonParamater]];
  155. NSString *urlString = [NSString stringWithFormat:@"%@/link-site/api/product/find_product_features.json", [[FKServerUtil sharedInstance] apiServer]];
  156. [[FLDataCenter sharedDataCenter] POST:urlString
  157. para:dictM
  158. identify:identify
  159. delegate:delegate];
  160. }
  161. + (void)reqAcitvity:(NSString *)productId
  162. identify:(int)identify
  163. delegate:(id<FLNetworkDelegate>)delegate{
  164. if (!productId.length) return;
  165. NSArray *productIdArray = @[productId];
  166. NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
  167. [dictM setValue:[productIdArray json] forKey:@"ids_json"];
  168. [dictM addEntriesFromDictionary:[FLRequestHelper commonParamater]];
  169. NSString *urlString = [NSString stringWithFormat:@"%@/link-site/api/product/find_product_sale_activitys.json", [[FKServerUtil sharedInstance] apiServer]];
  170. [[FLDataCenter sharedDataCenter] POST:urlString
  171. para:dictM
  172. identify:identify
  173. delegate:delegate];
  174. }
  175. + (void)reqTipListWithIdentify:(int)identify
  176. delegate:(id<FLNetworkDelegate>)delegate{
  177. NSString *urlString = [NSString stringWithFormat:@"%@/link-site/api/product/find_product_tips.json", [[FKServerUtil sharedInstance] apiServer]];
  178. [[FLDataCenter sharedDataCenter] POST:urlString
  179. para:[FLRequestHelper commonParamater]
  180. identify:identify
  181. delegate:delegate];
  182. }
  183. + (void)reqVipDiscountWithIdentify:(int)identify delegate:(id<FLNetworkDelegate>)delegate {
  184. NSString *urlString = [NSString stringWithFormat:@"%@/link-site/api/butler/get_vip_discount.json", [[FKServerUtil sharedInstance] apiServer]];
  185. [[FLDataCenter sharedDataCenter] POST:urlString
  186. para:[FLRequestHelper commonParamater]
  187. identify:identify
  188. delegate:delegate];
  189. }
  190. @end