Geen omschrijving

AllCommentViewModel.m 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //
  2. // AllCommentViewModel.m
  3. // FirstLink
  4. //
  5. // Created by jack on 15/6/24.
  6. // Copyright (c) 2015年 FirstLink. All rights reserved.
  7. // 所有评论
  8. #import "AllCommentViewModel.h"
  9. @implementation AllCommentViewModel
  10. - (instancetype)init
  11. {
  12. if (self = [super init]) {
  13. _dataArray = [NSMutableArray array];
  14. _totalCount = 0;
  15. }
  16. return self;
  17. }
  18. - (void)requestForInitialWithSuccess:(void (^)(MSGHeader *))success failure:(void (^)(MSGHeader *, NSError *))failure
  19. {
  20. NSString *itemJsonString = [FLRequestHelper JSONStringWithKeys:@[@"item_id", @"seller_id", @"start_row", @"page_size"] values:@[self.itemID, self.sellerID, @"0", @"20"]];
  21. WeakSelf(weakSelf);
  22. [self requestCommonWithJsonString:itemJsonString success:^(MSGHeader *header, NSArray *array) {
  23. [weakSelf.dataArray removeAllObjects];
  24. if (array) [weakSelf.dataArray addObjectsFromArray:array];
  25. success(header);
  26. } failure:^(MSGHeader *header, NSError *error) {
  27. failure(header, error);
  28. }];
  29. }
  30. - (void)requestForMoreWithSuccess:(void (^)(MSGHeader *))success failure:(void (^)(MSGHeader *, NSError *))failure
  31. {
  32. NSString *startRow = [NSString stringWithFormat:@"%lu", (unsigned long)self.dataArray.count];
  33. NSString *itemJsonString = [FLRequestHelper JSONStringWithKeys:@[@"item_id", @"seller_id", @"start_row", @"page_size"] values:@[self.itemID, self.sellerID, startRow, @"20"]];
  34. WeakSelf(weakSelf);
  35. [self requestCommonWithJsonString:itemJsonString success:^(MSGHeader *header, NSArray *array) {
  36. if (array) {
  37. [weakSelf.dataArray addObjectsFromArray:array];
  38. success(header);
  39. }
  40. } failure:^(MSGHeader *header, NSError *error) {
  41. failure(header, error);
  42. }];
  43. }
  44. - (void)requestCommonWithJsonString:(NSString *)jsonString success:(void (^)(MSGHeader *, NSArray *))success failure:(void (^)(MSGHeader *, NSError *))failure
  45. {
  46. NSDictionary *dict = [self getCommonParaWithKey:@"item_comment_json" forValue:jsonString];
  47. NSString *urlString = [NSString stringWithFormat:@"%@/link-site/api/item_comment/find_item_comments.json", [[FKServerUtil sharedInstance] apiServer]];
  48. WeakSelf(weakSelf);
  49. [[FLDataCenter sharedDataCenter] POST:urlString parameters:dict success:^(MSGHeader *header, id responseObject) {
  50. if (header.code.intValue == RESPONSE_MSG_NORMAL) {
  51. NSArray *dataArray = [weakSelf parserDataWithDict:responseObject];
  52. success(header, dataArray);
  53. }
  54. } failure:^(MSGHeader *header, NSError *error) {
  55. failure(header, error);
  56. }];
  57. }
  58. - (NSArray *)parserDataWithDict:(NSDictionary *)dict
  59. {
  60. NSMutableArray *arrayM = nil;
  61. if ([dict[@"data"][@"list"] isKindOfClass:[NSArray class]]) {
  62. NSArray *dataArray = dict[@"data"][@"list"];
  63. arrayM = [NSMutableArray arrayWithCapacity:dataArray.count];
  64. for (int i = 0; i < dataArray.count; i++) {
  65. if (![dataArray[i] isKindOfClass:[NSDictionary class]]) continue;
  66. CommentItem *item = [[CommentItem alloc]init];
  67. [item mts_setValuesForKeysWithDictionary:dataArray[i]];
  68. [arrayM addObject:item];
  69. }
  70. }
  71. if ([dict[@"data"][@"pager"] isKindOfClass:[NSDictionary class]]) {
  72. NSDictionary *dictionry = dict[@"data"][@"pager"];
  73. if ([dictionry[@"total"] isKindOfClass:[NSNumber class]]) {
  74. _totalCount = (NSInteger)[dictionry[@"total"] integerValue];
  75. }
  76. }
  77. return arrayM;
  78. }
  79. - (void)saveCommentText:(NSString *)text atRow:(NSInteger)row withSuccess:(void (^)(MSGHeader *))success failure:(void (^)(MSGHeader *, NSError *))failure
  80. {
  81. if (text.length == 0 || text.length > 128) return;
  82. CommentItem *item = nil;
  83. if (self.defaultCommentItem) {
  84. item = self.defaultCommentItem;
  85. }else if (row < self.dataArray.count && row >= 0){
  86. item = self.dataArray[row];
  87. }
  88. if ([item.buyerID isKindOfClass:[NSString class]] && item.buyerID.length > 0) {
  89. NSString *itemJsonString = [self commentItemJsonForReplyBuyerID:item.buyerID text:text];
  90. NSDictionary *para = [self getCommonParaWithKey:@"item_comment_json" forValue:itemJsonString];
  91. NSString *urlString = [NSString stringWithFormat:@"%@/link-site/api/item_comment/create_item_comment.json", [[FKServerUtil sharedInstance] apiServer]];
  92. [[FLDataCenter sharedDataCenter] POST:urlString parameters:para success:^(MSGHeader *header, id responseObject) {
  93. if (header.code.intValue == RESPONSE_MSG_NORMAL) {
  94. success(header);
  95. }
  96. } failure:^(MSGHeader *header, NSError *error) {
  97. failure(header, error);
  98. }];
  99. }
  100. }
  101. - (void)removeCommentAtRow:(NSInteger)row withSuccess:(void (^)(MSGHeader *))success failure:(void (^)(MSGHeader *, NSError *))failure
  102. {
  103. if (row > self.dataArray.count - 1) NSAssert(row < self.dataArray.count, @"comment row out array count");
  104. CommentItem *item = self.dataArray[row];
  105. if (item) {
  106. NSString *itemJsonString = [FLRequestHelper JSONStringWithKeys:@[@"id", @"item_id", @"seller_id"] values:@[item.commentID, item.itemID, item.sellerID]];
  107. NSDictionary *para = [self getCommonParaWithKey:@"item_comment_json" forValue:itemJsonString];
  108. NSString *urlString = [NSString stringWithFormat:@"%@/link-site/api/item_comment/remove_item_comment.json", [[FKServerUtil sharedInstance] apiServer]];
  109. [[FLDataCenter sharedDataCenter] POST:urlString parameters:para success:^(MSGHeader *header, id responseObject) {
  110. success(header);
  111. } failure:^(MSGHeader *header, NSError *error) {
  112. failure(header, error);
  113. }];
  114. }
  115. }
  116. // 是否是当前用户的评论
  117. - (BOOL)isUserCommentAtRow:(NSInteger)row
  118. {
  119. if (row > self.dataArray.count - 1) NSAssert(row < self.dataArray.count, @"comment row out array count");
  120. CommentItem *item = self.dataArray[row];
  121. if ([item.buyerID isEqualToString:[FKUserManager sharedManager].user.userID]) return YES;
  122. return NO;
  123. }
  124. - (NSString *)getCommentPlaceHolderWithRow:(NSInteger)row{
  125. if (self.defaultCommentItem) {
  126. return [NSString stringWithFormat:@"回复 %@", self.defaultCommentItem.buyerNickName];
  127. }
  128. if (row >= 0 && row < self.dataArray.count && ![self isUserCommentAtRow:row]) {
  129. CommentItem *item = self.dataArray[row];
  130. return [NSString stringWithFormat:@"回复 %@", item.buyerNickName];
  131. }
  132. return @"";
  133. }
  134. - (NSString *)commentItemJsonForReplyBuyerID:(NSString *)ReplyBuyerID text:(NSString *)text
  135. {
  136. NSString *itemJsonString = [FLRequestHelper JSONStringWithKeys:@[@"item_id", @"seller_id", @"reply_to_user_id",@"content"] values:@[self.itemID, self.sellerID, ReplyBuyerID, text]];
  137. return itemJsonString;
  138. }
  139. - (NSDictionary *)getCommonParaWithKey:(NSString *)key forValue:(id)value
  140. {
  141. NSMutableDictionary *para = [NSMutableDictionary dictionary];
  142. [para setValue:value forKey:key];
  143. [para addEntriesFromDictionary:[FLRequestHelper commonParamater]];
  144. return para;
  145. }
  146. @end