GoodsReviewsWriteC.m 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. //
  2. // GoodsReviewsWriteC.m
  3. // Asteria
  4. //
  5. // Created by 王猛 on 2024/1/10.
  6. //
  7. #import "GoodsReviewsWriteC.h"
  8. #import "AS_GoodsDetailsC.h"
  9. #import "HCSStarRatingView.h"
  10. #import "GoodWritUpImgV.h"
  11. #import <QMUIKit/QMUIImagePickerPreviewViewController.h>
  12. #import "ASGoodsDetailsVM.h"
  13. #import "QDSingleImagePickerPreviewViewController.h"
  14. #define kWriteUpimgWdith (KScreenWidth-40)/3
  15. static QMUIAlbumContentType const kAlbumContentType = QMUIAlbumContentTypeOnlyPhoto;
  16. @interface GoodsReviewsWriteC ()
  17. <QMUITextViewDelegate,
  18. QMUIAlbumViewControllerDelegate,
  19. QMUIImagePickerViewControllerDelegate,
  20. QDSingleImagePickerPreviewViewControllerDelegate,
  21. RY_baseVMprotocol>
  22. @property (nonatomic, strong) TT_CustonTF *buyernameTF;
  23. @property (nonatomic, strong) TT_CustonTF *orderlengthTF;
  24. @property (nonatomic, strong) NSMutableArray *starValueAry;
  25. @property (nonatomic, strong) UIButton *bootomBtn;
  26. @property (nonatomic, strong) QMUITextView *writeTextV;
  27. @property (nonatomic, strong) NSMutableArray *xxx_upLoadImgAry;
  28. @property (nonatomic, assign) NSInteger xxx_tapImgIndex;
  29. @property (nonatomic, strong) NSMutableArray *xxx_imgUrlAry;
  30. @property (nonatomic, strong) NSMutableArray *xxx_selectImgAry;
  31. @property (nonatomic, strong) ASGoodsDetailsVM *VM;
  32. @end
  33. @implementation GoodsReviewsWriteC
  34. - (void)viewDidLoad {
  35. [super viewDidLoad];
  36. self.title = self.nav_title;
  37. }
  38. - (void)ucm_bindvmmodel{
  39. self.VM = [[ASGoodsDetailsVM alloc]initDelegate:self];
  40. }
  41. - (void)initSubviews {
  42. [super initSubviews];
  43. if (self.topBgV) {
  44. [self.view addSubview:self.topBgV];
  45. }
  46. [self.view addSubview:self.buyernameTF];
  47. [self.view addSubview:self.orderlengthTF];
  48. IPhoneXHeigh
  49. if (self.topBgV) {
  50. self.topBgV.frame = CGRectMake(0, securitytop_Y, KScreenWidth, 60);
  51. self.buyernameTF.mj_y = CGRectGetMaxY(self.topBgV.frame)+20;
  52. } else {
  53. self.buyernameTF.mj_y = securitytop_Y+20;
  54. }
  55. self.orderlengthTF.mj_y = CGRectGetMaxY(self.buyernameTF.frame)+20;
  56. NSArray *titileAry = @[@"QUALITY",@"SHIPPING",@"SERVICE"];
  57. self.starValueAry = [NSMutableArray arrayWithArray:@[@"5.0",@"5.0",@"5.0"]];
  58. UIView *lastView = nil;
  59. for (int i = 0; i<titileAry.count; i++) {
  60. UILabel *tipslab = [UILabel new];
  61. tipslab.text = titileAry[i];
  62. tipslab.font = [UIFont fontWithName:Rob_Regular size:14];
  63. tipslab.textColor = [UIColor colorWithHexString:@"#B2B2B2"];
  64. [self.view addSubview:tipslab];
  65. tipslab.frame = CGRectMake(10, CGRectGetMaxY(self.orderlengthTF.frame)+20+i*40, 70, 40);
  66. HCSStarRatingView *reviews_startV = [[HCSStarRatingView alloc]initWithFrame:CGRectMake(10+70+10, CGRectGetMaxY(self.orderlengthTF.frame)+20+i*40,160, 40)];
  67. reviews_startV.value =5;
  68. reviews_startV.filledStarImage = IMAGE(@"reviews_full_star");
  69. reviews_startV.emptyStarImage = IMAGE(@"reviews_empty_star");
  70. reviews_startV.maximumValue = 5;
  71. reviews_startV.backgroundColor = [UIColor clearColor];
  72. reviews_startV.tag = i;
  73. [reviews_startV addTarget:self action:@selector(didChangeValue:) forControlEvents:UIControlEventValueChanged];
  74. [self.view addSubview:reviews_startV];
  75. if(i == titileAry.count-1){
  76. lastView = reviews_startV;
  77. }
  78. }
  79. [self.view addSubview:self.writeTextV];
  80. self.writeTextV.mj_y = CGRectGetMaxY(lastView.frame)+30;
  81. self.xxx_upLoadImgAry = [NSMutableArray arrayWithCapacity:3];
  82. for (int i = 0; i<3; i++) {
  83. GoodWritUpImgV *upImgV = [[GoodWritUpImgV alloc]initWithFrame:CGRectMake(10+i*(kWriteUpimgWdith+10),CGRectGetMaxY(self.writeTextV.frame)+30, kWriteUpimgWdith, kWriteUpimgWdith)];
  84. upImgV.tag = i;
  85. upImgV.closeBtn.tag = i;
  86. upImgV.isCanTap = YES;
  87. [upImgV.closeBtn addTarget:self action:@selector(handle_closeDeleteImgBtn:) forControlEvents:UIControlEventTouchUpInside];
  88. upImgV.hidden = YES;
  89. upImgV.image = [UIImage imageNamed:@"goods_wirte_upload"];
  90. [self.view addSubview:upImgV];
  91. UITapGestureRecognizer *tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle_TapUpImgLoad:)];
  92. [upImgV addGestureRecognizer:tap];
  93. if(i == 0 ){
  94. upImgV.hidden = NO;
  95. }
  96. [self.xxx_upLoadImgAry addObject:upImgV];
  97. }
  98. [self.view addSubview:self.bootomBtn];
  99. }
  100. #pragma mark - **************** handle ****************
  101. -(void)didChangeValue:(HCSStarRatingView *)starV{
  102. NSLog(@"Changed rating to %.1f", starV.value);
  103. [self.starValueAry replaceObjectAtIndex:starV.tag withObject:[NSString stringWithFormat:@"%f",starV.value]];
  104. }
  105. /// upLoad Img 相关内容
  106. -(void)handle_closeDeleteImgBtn:(UIButton *)btn{
  107. [FTT_Helper CreateTitle:@"Whether to delete the current photo" message:nil CantionTitle:@"Cancel" Sure:@"Sure" preferredStyle:UIAlertControllerStyleAlert SureAC:^{
  108. [self tool_deleteImgChange:btn.tag];
  109. } NoAC:nil ViewController:self];
  110. }
  111. -(void)tool_deleteImgChange:(NSInteger )index{
  112. if (index < self.xxx_imgUrlAry.count) {
  113. [self.xxx_imgUrlAry removeObjectAtIndex:index];
  114. }
  115. if (index < self.xxx_selectImgAry.count) {
  116. [self.xxx_selectImgAry removeObjectAtIndex:index];
  117. }
  118. for (int i = 0; i<self.xxx_upLoadImgAry.count; i++) {
  119. GoodWritUpImgV * imgV = self.xxx_upLoadImgAry[i];
  120. imgV.hidden = NO;
  121. if(self.xxx_selectImgAry.count > i){
  122. imgV.image = self.xxx_selectImgAry[i];
  123. imgV.isCanTap = NO;
  124. }else if (self.xxx_selectImgAry.count == i){
  125. imgV.image = [UIImage imageNamed:@"goods_wirte_upload"];
  126. imgV.isCanTap = YES;
  127. }else{
  128. imgV.hidden = YES;
  129. }
  130. }
  131. }
  132. //点击添加图片
  133. -(void)handle_TapUpImgLoad:(UITapGestureRecognizer *)tap{
  134. GoodWritUpImgV * imgV =(GoodWritUpImgV *_Nullable )tap.view;
  135. if(imgV.isCanTap){//调用相片
  136. self.xxx_tapImgIndex = imgV.tag;
  137. [self tool_presentAlbumViewControllerWith:imgV.tag];
  138. }
  139. }
  140. #pragma mark - **************** 选择照片上传 ****************
  141. -(void)tool_presentAlbumViewControllerWith:(NSInteger )index{
  142. QMUIAlbumViewController *albumViewController = [[QMUIAlbumViewController alloc] init];
  143. albumViewController.albumViewControllerDelegate = self;
  144. albumViewController.contentType = QMUIAlbumContentTypeOnlyPhoto;
  145. UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:albumViewController];
  146. // 获取最近发送图片时使用过的相簿,如果有则直接进入该相簿
  147. [albumViewController pickLastAlbumGroupDirectlyIfCan];
  148. [self presentViewController:navigationController animated:YES completion:NULL];
  149. }
  150. #pragma mark - **************** QMUIAlbumViewControllerDelegate ****************
  151. - (QMUIImagePickerViewController *)imagePickerViewControllerForAlbumViewController:(QMUIAlbumViewController *)albumViewController {
  152. QMUIImagePickerViewController *imagePickerViewController = [[QMUIImagePickerViewController alloc] init];
  153. imagePickerViewController.imagePickerViewControllerDelegate = self;
  154. imagePickerViewController.maximumSelectImageCount = 3;
  155. imagePickerViewController.view.tag = albumViewController.view.tag;
  156. imagePickerViewController.allowsMultipleSelection = NO;
  157. return imagePickerViewController;
  158. }
  159. #pragma mark - **************** QMUIImagePickerViewControllerDelegate ****************
  160. - (void)imagePickerViewController:(QMUIImagePickerViewController *)imagePickerViewController didFinishPickingImageWithImagesAssetArray:(NSMutableArray<QMUIAsset *> *)imagesAssetArray {
  161. // 储存最近选择了图片的相册,方便下次直接进入该相册
  162. [QMUIImagePickerHelper updateLastestAlbumWithAssetsGroup:imagePickerViewController.assetsGroup ablumContentType:kAlbumContentType userIdentify:nil];
  163. }
  164. - (QMUIImagePickerPreviewViewController *)imagePickerPreviewViewControllerForImagePickerViewController:(QMUIImagePickerViewController *)imagePickerViewController {
  165. QDSingleImagePickerPreviewViewController *imagePickerPreviewViewController = [[QDSingleImagePickerPreviewViewController alloc] init];
  166. imagePickerPreviewViewController.delegate = self;
  167. imagePickerPreviewViewController.assetsGroup = imagePickerViewController.assetsGroup;
  168. imagePickerPreviewViewController.view.tag = imagePickerViewController.view.tag;
  169. return imagePickerPreviewViewController;
  170. }
  171. #pragma mark - <QDSingleImagePickerPreviewViewControllerDelegate>
  172. - (void)imagePickerPreviewViewController:(QDSingleImagePickerPreviewViewController *)imagePickerPreviewViewController didSelectImageWithImagesAsset:(QMUIAsset *)imageAsset {
  173. // 储存最近选择了图片的相册,方便下次直接进入该相册
  174. [QMUIImagePickerHelper updateLastestAlbumWithAssetsGroup:imagePickerPreviewViewController.assetsGroup ablumContentType:kAlbumContentType userIdentify:nil];
  175. // 显示 loading
  176. [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  177. [imageAsset requestImageData:^(NSData *imageData, NSDictionary<NSString *,id> *info, BOOL isGif, BOOL isHEIC) {
  178. UIImage *targetImage = nil;
  179. if (isGif) {
  180. targetImage = [UIImage qmui_animatedImageWithData:imageData];
  181. } else {
  182. targetImage = [UIImage imageWithData:imageData];
  183. // if (isHEIC) {
  184. // // iOS 11 中新增 HEIF/HEVC 格式的资源,直接发送新格式的照片到不支持新格式的设备,照片可能会无法识别,可以先转换为通用的 JPEG 格式再进行使用。
  185. // // 详细请浏览:https://github.com/Tencent/QMUI_iOS/issues/224
  186. // targetImage = [UIImage imageWithData:UIImageJPEGRepresentation(targetImage, 1)];
  187. // }
  188. }
  189. [self performSelector:@selector(tool_setAvatarWithAvatarImage:) withObject:targetImage afterDelay:1.8];
  190. }];
  191. }
  192. ///执行相关的网络请求
  193. -(void)tool_setAvatarWithAvatarImage:(UIImage *)avatarImage{
  194. [MBProgressHUD hideHUDForView:self.view animated:YES];
  195. if(self.xxx_tapImgIndex<2){
  196. GoodWritUpImgV *tempImgV = self.xxx_upLoadImgAry[self.xxx_tapImgIndex+1];
  197. tempImgV.hidden = NO;
  198. }
  199. GoodWritUpImgV *upImgV = self.xxx_upLoadImgAry[self.xxx_tapImgIndex];
  200. upImgV.image = avatarImage;
  201. upImgV.isCanTap = NO;
  202. [self.xxx_selectImgAry addObject:avatarImage];
  203. [self reqNet_upload:avatarImage];
  204. }
  205. #pragma mark - **************** reqNet ****************
  206. -(void)reqNet_upload:(UIImage *)img{
  207. NSData *imageData = UIImageJPEGRepresentation(img, 0.6);
  208. NSString *dataStr = [imageData base64EncodedStringWithOptions:0];
  209. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  210. [params setObject:dataStr forKey:@"image_video[]"];
  211. [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  212. NSString *reqUrl = RequestAllUrl(Reivews_rewriteProductAddImg);
  213. [PPNetworkHelper uploadImagesWithURL:reqUrl parameters:@{} name:@"image_video[]" images:@[img] fileNames:nil imageScale:0.6 imageType:nil progress:^(NSProgress *progress) {
  214. } success:^(id responseObject) {
  215. [MBProgressHUD hideHUDForView:self.view animated:YES];
  216. if(RequestSuccess){
  217. [self.view makeToast:@"Sucess" duration:2 position:CSToastPositionCenter];
  218. NSDictionary *dataDic = responseObject[@"data"];
  219. [self.xxx_imgUrlAry addObject:dataDic[@"image_video"]];
  220. }else{
  221. [self.view makeToast:RequestMsg duration:2 position:CSToastPositionCenter];
  222. }
  223. } failure:^(NSError *error) {
  224. [MBProgressHUD hideHUDForView:self.view animated:YES];
  225. [self.view makeToast:ReqNetWorkFaild duration:2 position:CSToastPositionCenter];
  226. }];
  227. }
  228. -(void)handle_postCommentEvent:(UIButton *)btn{
  229. if (!ASUserInfoManager.shared.isLogin) {
  230. return;
  231. }
  232. if(self.writeTextV.text.length == 0 || self.orderlengthTF.text.length == 0 || self.buyernameTF.text.length == 0){
  233. [self.view makeToast:@"Please complete the score first" duration:2 position:CSToastPositionCenter];
  234. return;
  235. }
  236. NSMutableString *imageStr= [[NSMutableString alloc]initWithString:@""];
  237. for (int i=0; i<self.xxx_imgUrlAry.count; i++) {
  238. NSString * imgUrl = self.xxx_imgUrlAry[i];
  239. [imageStr appendString:imgUrl];
  240. }
  241. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  242. params[@"id"] = MM_str(self.goodsM.Id) ;
  243. params[@"nickname"] = MM_str(self.buyernameTF.text) ;
  244. params[@"title"] = MM_str(self.orderlengthTF.text) ;
  245. params[@"detail"] = MM_str(self.writeTextV.text) ;
  246. params[@"verified_purchase"] = @"0" ;
  247. params[@"image_video"] = imageStr;
  248. for (int i = 0; i<self.starValueAry.count; i++) {
  249. NSString *str = self.starValueAry[i];
  250. if([str integerValue] == 0){
  251. [self.view makeToast:@"Please complete the score first" duration:2 position:CSToastPositionCenter];
  252. return;
  253. }
  254. NSString *ratingStr = [NSString stringWithFormat:@"%ld",[str integerValue] + i*5];
  255. [params setObject:ratingStr forKey:[NSString stringWithFormat:@"ratings[%d]",i+1]];
  256. }
  257. [self.VM ry_formDataRequestPostApi:Reviews_rewriteProductAddReview param:params];
  258. }
  259. - (void)ry_respnsData:(nullable id)data
  260. parseAry:(nullable NSMutableArray *)arry
  261. sucess:(BOOL)sucessOrFail
  262. mark:(nonnull NSString *)mark
  263. reqNetType:(ReqNetType)reqNetType{
  264. [MBProgressHUD hideHUDForView:self.view animated:YES];
  265. if([mark isEqualToString:Reivews_rewriteProductAddImg]){
  266. if(sucessOrFail){
  267. [self.view makeToast:@"Sucess" duration:2 position:CSToastPositionCenter];
  268. [self.xxx_imgUrlAry addObject:(NSDictionary *)data[@"image_video"]];
  269. }else{
  270. [self.view makeToast:(NSString *)data duration:2 position:CSToastPositionCenter];
  271. }
  272. }else if ([mark isEqualToString:Reviews_rewriteProductAddReview]){
  273. if(sucessOrFail){
  274. @weakify(self)
  275. [self.view makeToast:@"Your review has been accepted for moderation" duration:2 position:CSToastPositionCenter title:nil image:nil style:nil completion:^(BOOL didTap) {
  276. @strongify(self)
  277. NSArray *tmpVcAry = self.navigationController.viewControllers;
  278. for(UIViewController *vc in tmpVcAry){
  279. if([vc isKindOfClass:[AS_GoodsDetailsC class]]){
  280. [self.navigationController popToViewController:vc animated:YES];
  281. return;
  282. }
  283. }
  284. }];
  285. }else{
  286. [self.view makeToast:(NSString *)data duration:2 position:CSToastPositionCenter];
  287. }
  288. }
  289. }
  290. #pragma mark - **************** lazy ****************
  291. -(TT_CustonTF *)buyernameTF{
  292. if(!_buyernameTF){
  293. _buyernameTF = [TT_ControlTool FTT_ControlToolUITextFieldFrame:CGRectMake(10, 0, KScreenWidth-20, 45)
  294. PlaceHolder:@"* BUYER NAME"
  295. andLifImage:nil
  296. AndRightImage:nil LiftImageFrame:CGRectZero
  297. RightImageFrame:CGRectZero
  298. AndTag:0
  299. AndKeyboardType:UIKeyboardTypeDefault
  300. clearButtonMode:UITextFieldViewModeAlways
  301. AndReturnKeyType:UIReturnKeyDone
  302. masksToBounds:YES
  303. conrenRadius:4
  304. BorderColor:[UIColor colorWithHexString:@"#000000"]
  305. BorderWidth:1];
  306. _buyernameTF.font = [UIFont fontWithName:Rob_Regular size:14];
  307. _buyernameTF.backgroundColor = [UIColor colorWithHexString:@"#FFFFFF"];
  308. }
  309. return _buyernameTF;
  310. }
  311. -(TT_CustonTF *)orderlengthTF{
  312. if(!_orderlengthTF){
  313. _orderlengthTF = [TT_ControlTool FTT_ControlToolUITextFieldFrame:CGRectMake(10, 0, KScreenWidth-20, 45)
  314. PlaceHolder:@"* ORDER LENGTH"
  315. andLifImage:nil
  316. AndRightImage:nil LiftImageFrame:CGRectZero
  317. RightImageFrame:CGRectZero
  318. AndTag:0
  319. AndKeyboardType:UIKeyboardTypeDefault
  320. clearButtonMode:UITextFieldViewModeAlways
  321. AndReturnKeyType:UIReturnKeyDone
  322. masksToBounds:YES
  323. conrenRadius:4
  324. BorderColor:[UIColor colorWithHexString:@"#000000"]
  325. BorderWidth:1];
  326. _orderlengthTF.font = [UIFont fontWithName:Rob_Regular size:14];
  327. _orderlengthTF.backgroundColor = [UIColor colorWithHexString:@"#FFFFFF"];
  328. }
  329. return _orderlengthTF;
  330. }
  331. -(QMUITextView *)writeTextV{
  332. if(!_writeTextV){
  333. _writeTextV = [[QMUITextView alloc]initWithFrame:CGRectMake(10, 0, KScreenWidth-20, 110)];
  334. _writeTextV.textContainerInset = UIEdgeInsetsMake(10, 7, 10, 7);
  335. _writeTextV.placeholder = @" * WRITE A REVIEW";
  336. _writeTextV.layer.cornerRadius = 4;
  337. _writeTextV.layer.borderColor = [UIColor colorWithHexString:@"#0B0B0B"].CGColor;
  338. _writeTextV.layer.borderWidth = 1;
  339. _writeTextV.clipsToBounds = YES;
  340. _writeTextV.font = [UIFont fontWithName:Rob_Regular size:14];
  341. _writeTextV.placeholderColor = [UIColor colorWithHexString:@"#999999"];
  342. }
  343. return _writeTextV;
  344. }
  345. -(UIButton *)bootomBtn{
  346. if(!_bootomBtn){
  347. IPhoneXHeigh
  348. _bootomBtn = [TT_ControlTool FTT_ControlToolUIButtonFrame:CGRectMake(20, KScreenHeight-45-securityBottom_H, KScreenWidth-40, 45)
  349. taeget:self
  350. sel:@selector(handle_postCommentEvent:)
  351. tag:0
  352. AntTitle:@"POST COMMENT"
  353. titleFont:16
  354. titleColor:[UIColor colorWithHexString:@"#FFFFFF"]
  355. andImage:nil
  356. AndBackColor:[UIColor colorWithHexString:@"#000000"]
  357. adjustsFontSizesTowidth:NO
  358. masksToBounds:YES
  359. conrenRadius:4 BorderColor:nil BorderWidth:0 ContentHorizontalAligment:0];
  360. }
  361. return _bootomBtn;
  362. }
  363. - (NSMutableArray *)xxx_imgUrlAry {
  364. if (!_xxx_imgUrlAry) {
  365. _xxx_imgUrlAry = [[NSMutableArray alloc] init];
  366. }
  367. return _xxx_imgUrlAry;
  368. }
  369. - (NSMutableArray *)xxx_selectImgAry {
  370. if (!_xxx_selectImgAry) {
  371. _xxx_selectImgAry = [[NSMutableArray alloc] init];
  372. }
  373. return _xxx_selectImgAry;
  374. }
  375. /**
  376. 上传图片
  377. [formData appendPartWithFileData:uploadImageData name:@"content_pic" fileName:fileName mimeType:ECGBJKeyJPEG];
  378. @param URLString URL
  379. @param content 弹框的内容
  380. @param parameters 参数体
  381. @param uploadDatas 上传图片NSData
  382. @param completeSuccess 成功回调
  383. @param completeFailure 失败回调
  384. [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id< AFMultipartFormData > _Nonnull formData) {
  385. NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
  386. formatter.dateFormat=@"yyyyMMddHHmmss";
  387. NSString *str=[formatter stringFromDate:[NSDate date]];
  388. NSString *fileName=[NSString stringWithFormat:@"%@.jpg",str];
  389. [formData appendPartWithFileData:uploadImageData name:@"content_pic" fileName:fileName mimeType:ECGBJKeyJPEG];
  390. } progress:^(NSProgress * _Nonnull uploadProgress) {
  391. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  392. // 转换responseObject对象
  393. NSDictionary *dict = nil;
  394. if ([responseObject isKindOfClass:[NSDictionary class]]) {
  395. dict = (NSDictionary *)responseObject;
  396. } else {
  397. dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
  398. }
  399. // 成功后弹框处理,回调出去
  400. [weakSelf notDismissedWith:dict responseObject:responseObject complete:^(NSDictionary *respinseDic, id responseObject) {
  401. completeSuccess(respinseDic,responseObject);
  402. } failedComplete:^{
  403. completeFailure();
  404. }];
  405. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  406. // 网络问题,弹框处理
  407. [weakSelf notNetconnetNotDismissComplete:^{
  408. completeFailure();
  409. }];
  410. }]
  411. */
  412. @end