TradePublishManager.m 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. //
  2. // TradePublishManager.m
  3. // NIMDemo
  4. //
  5. // Created by Fenix Wang on 2017/7/2.
  6. // Copyright © 2017年 Netease. All rights reserved.
  7. //
  8. #import "TradePublishManager.h"
  9. #import "AFHTTPSessionManager.h"
  10. #import "User.h"
  11. #import "SVProgressHUD.h"
  12. #import "UIView+Toast.h"
  13. #import "HttpRequest.h"
  14. #import "TradeModifyImageView.h"
  15. @interface TradePublishManager()
  16. @property (nonatomic, strong) NSString *tradeId;
  17. @property (nonatomic, strong) NSString *msg;
  18. @property (nonatomic, strong) NSMutableArray *picArr;
  19. @property (nonatomic, strong) NSMutableArray *picDataArr;
  20. @property (nonatomic, assign) int uploadIndex;
  21. @property (nonatomic, assign) int priority;
  22. @property (nonatomic, assign) int priorityType;
  23. @property (nonatomic, assign) int tradeType;
  24. @property (nonatomic, assign) BOOL isEdit;
  25. @end
  26. @implementation TradePublishManager
  27. - (void)tradePublish:(NSString *)msg
  28. picArr:(NSMutableArray *)picArr
  29. priority:(int)priority
  30. priorityType:(int)priorityType
  31. tradeType:(int)tradeType{
  32. self.msg = msg;
  33. self.picArr = picArr;
  34. self.priority = priority;
  35. self.priorityType = priorityType;
  36. self.tradeType = tradeType;
  37. self.picDataArr = [[NSMutableArray alloc] init];
  38. self.uploadIndex = 0;
  39. self.isEdit = NO;
  40. [SVProgressHUD show];
  41. [self uploadPicture];
  42. }
  43. - (void)uploadPicture{
  44. if(_uploadIndex >= _picArr.count)
  45. {
  46. if(_isEdit)
  47. [self edit];
  48. else
  49. [self publish];
  50. return;
  51. }
  52. UIImage *image = nil;
  53. if(_isEdit)
  54. {
  55. TradeModifyImageView *modifyImg = [_picArr objectAtIndex:_uploadIndex];
  56. if(modifyImg.picId)
  57. {
  58. if(_uploadIndex >= _picDataArr.count)
  59. {
  60. [_picDataArr addObject:modifyImg.picId];
  61. }
  62. else
  63. {
  64. [_picDataArr setObject:modifyImg.picId atIndexedSubscript:_uploadIndex];
  65. }
  66. _uploadIndex++;
  67. [self uploadPicture];
  68. return;
  69. }
  70. else
  71. {
  72. image = modifyImg.image;
  73. }
  74. }
  75. else
  76. {
  77. image = [_picArr objectAtIndex:_uploadIndex];
  78. }
  79. NSString *userId = [NSString stringWithFormat:@"%d", [User sharedInfo].userId];
  80. NSDictionary *dict = @{@"user_id":userId};
  81. NSString *urlString = @"http://whosay.dashgame.com/index.php?m=who&c=trade&a=upload";
  82. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  83. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  84. manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/html", nil];
  85. [manager POST:urlString parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  86. NSData *data = UIImageJPEGRepresentation(image, 1);
  87. [formData appendPartWithFileData:data name:@"upload" fileName:[NSString stringWithFormat:@"image_%d.jpg", _uploadIndex] mimeType:@"image/jpg"];
  88. } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  89. //NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
  90. //NSLog(@"请求成功,服务器返回的信息%@", string);
  91. NSLog(@"请求成功,服务器返回的信息%@", responseObject);
  92. int code = [[responseObject objectForKey:@"c"] intValue];
  93. if(code == 0)
  94. {
  95. NSDictionary *data = [responseObject objectForKey:@"d"];
  96. NSString *aid = [data objectForKey:@"aid"];
  97. if(_uploadIndex >= _picDataArr.count)
  98. {
  99. [_picDataArr addObject:aid];
  100. }
  101. else
  102. {
  103. [_picDataArr setObject:aid atIndexedSubscript:_uploadIndex];
  104. }
  105. _uploadIndex++;
  106. [self uploadPicture];
  107. }
  108. else{
  109. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:[responseObject objectForKey:@"d"] delegate:self cancelButtonTitle:@"放弃" otherButtonTitles:@"重试", nil];
  110. [alert show];
  111. }
  112. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  113. NSLog(@"请求失败,服务器返回的错误信息%@",error);
  114. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"上传图片失败" delegate:self cancelButtonTitle:@"放弃" otherButtonTitles:@"重试", nil];
  115. [alert show];
  116. }];
  117. }
  118. - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
  119. switch (buttonIndex) {
  120. // case 0:
  121. // [self.navigationController popViewControllerAnimated:YES];
  122. // break;
  123. case 1:
  124. [self uploadPicture];
  125. break;
  126. default:
  127. break;
  128. }
  129. }
  130. - (void)publish{
  131. NSString *sendMsg = _msg ? _msg : @"";
  132. [[HttpRequest shared] tradePublish:sendMsg picArr:_picDataArr type:_tradeType priority:_priority priorityType:_priorityType success:^{
  133. [SVProgressHUD dismiss];
  134. if(_inputView)
  135. {
  136. [_inputView.superview makeToast:@"发布成功" duration:2.0 position:CSToastPositionCenter];
  137. [_inputView endEditing:YES];
  138. [_inputView unselectedTabBarItem];
  139. [_inputView.giftContainer tradePublished];
  140. }
  141. if ([_delegate respondsToSelector:@selector(tradePublishResult:)]){
  142. [_delegate tradePublishResult:YES];
  143. }
  144. } failure:^{
  145. [SVProgressHUD dismiss];
  146. if(_inputView)
  147. {
  148. [_inputView.superview makeToast:@"发布失败" duration:2.0 position:CSToastPositionCenter];
  149. }
  150. if ([_delegate respondsToSelector:@selector(tradePublishResult:)]){
  151. [_delegate tradePublishResult:NO];
  152. }
  153. }];
  154. }
  155. //edit
  156. - (void)tradeEdit:(NSString *_Nullable)tradeId
  157. picArr:(NSMutableArray *_Nullable)picArr
  158. priority:(int)priority{
  159. self.tradeId = tradeId;
  160. self.msg = nil;
  161. self.picArr = picArr;
  162. self.priority = priority;
  163. self.picDataArr = [[NSMutableArray alloc] init];
  164. self.uploadIndex = 0;
  165. self.isEdit = YES;
  166. [SVProgressHUD show];
  167. [self uploadPicture];
  168. }
  169. - (void)edit{
  170. [[HttpRequest shared] tradeEdit:_tradeId msg:nil picArr:_picDataArr priority:_priority success:^(NSString * _Nullable tradeId, NSMutableArray * _Nullable pics, NSMutableArray * _Nullable thumbs, NSMutableArray * _Nullable picIds, int priority) {
  171. if ([_delegate respondsToSelector:@selector(tradeEditResult:tradeData:)]){
  172. TradeData *tradeData = [[TradeData alloc] init];
  173. tradeData.tradeId = tradeId;
  174. tradeData.picArr = pics;
  175. tradeData.thumbArr = thumbs;
  176. tradeData.picIdArr = picIds;
  177. tradeData.priority = priority;
  178. [SVProgressHUD dismiss];
  179. if ([_delegate respondsToSelector:@selector(tradeEditResult:tradeData:)]){
  180. [_delegate tradeEditResult:YES tradeData:tradeData];
  181. }
  182. }
  183. } failure:^{
  184. [SVProgressHUD dismiss];
  185. if ([_delegate respondsToSelector:@selector(tradeEditResult:tradeData:)]){
  186. [_delegate tradeEditResult:NO tradeData:nil];
  187. }
  188. }];
  189. }
  190. @end