GoodsReviewsWriteC.m 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. //
  2. // GoodsReviewsWriteC.m
  3. // Asteria
  4. //
  5. // Created by 王猛 on 2024/1/10.
  6. //
  7. #import "GoodsReviewsWriteC.h"
  8. #import "ASGoodsDetailsViewController.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. //前面必须加上data:image/png;base64,
  210. NSString *base64String = [NSString stringWithFormat:@"data:image/png;base64,%@",dataStr];
  211. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  212. [params setObject:base64String forKey:@"image_video[]"];
  213. [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  214. __weak typeof(self) weakSelf = self;
  215. [ASNetTools.shared formData_postWithPath:Reivews_rewriteProductAddImg param:params success:^(id _Nonnull json) {
  216. [MBProgressHUD hideHUDForView:weakSelf.view animated:YES];
  217. [weakSelf.xxx_imgUrlAry addObject:json[@"image_video"]];
  218. } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
  219. [MBProgressHUD hideHUDForView:weakSelf.view animated:YES];
  220. [weakSelf.view makeToast:msg];
  221. }];
  222. }
  223. -(void)handle_postCommentEvent:(UIButton *)btn{
  224. if (!ASUserInfoManager.shared.isLogin) {
  225. return;
  226. }
  227. if(self.writeTextV.text.length == 0 || self.orderlengthTF.text.length == 0 || self.buyernameTF.text.length == 0){
  228. [self.view makeToast:@"Please complete the score first" duration:2 position:CSToastPositionCenter];
  229. return;
  230. }
  231. NSMutableString *imageStr= [[NSMutableString alloc]initWithString:@""];
  232. for (int i=0; i<self.xxx_imgUrlAry.count; i++) {
  233. NSString * imgUrl = self.xxx_imgUrlAry[i];
  234. [imageStr appendString:imgUrl];
  235. if (i < self.xxx_imgUrlAry.count - 1) {
  236. [imageStr appendString:@","];
  237. }
  238. }
  239. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  240. params[@"id"] = MM_str(self.goodsM.Id) ;
  241. params[@"nickname"] = MM_str(self.buyernameTF.text) ;
  242. params[@"title"] = MM_str(self.orderlengthTF.text) ;
  243. params[@"detail"] = MM_str(self.writeTextV.text) ;
  244. params[@"verified_purchase"] = @"0" ;
  245. params[@"image_video"] = imageStr;
  246. for (int i = 0; i<self.starValueAry.count; i++) {
  247. NSString *str = self.starValueAry[i];
  248. if([str integerValue] == 0){
  249. [self.view makeToast:@"Please complete the score first" duration:2 position:CSToastPositionCenter];
  250. return;
  251. }
  252. NSString *ratingStr = [NSString stringWithFormat:@"%ld",[str integerValue] + i*5];
  253. [params setObject:ratingStr forKey:[NSString stringWithFormat:@"ratings[%d]",i+1]];
  254. }
  255. [self.VM ry_formDataRequestPostApi:Reviews_rewriteProductAddReview param:params];
  256. }
  257. - (void)ry_respnsData:(nullable id)data
  258. parseAry:(nullable NSMutableArray *)arry
  259. sucess:(BOOL)sucessOrFail
  260. mark:(nonnull NSString *)mark
  261. reqNetType:(ReqNetType)reqNetType{
  262. [MBProgressHUD hideHUDForView:self.view animated:YES];
  263. if([mark isEqualToString:Reivews_rewriteProductAddImg]){
  264. if(sucessOrFail){
  265. [self.view makeToast:@"Sucess" duration:2 position:CSToastPositionCenter];
  266. [self.xxx_imgUrlAry addObject:(NSDictionary *)data[@"image_video"]];
  267. }else{
  268. [self.view makeToast:(NSString *)data duration:2 position:CSToastPositionCenter];
  269. }
  270. }else if ([mark isEqualToString:Reviews_rewriteProductAddReview]){
  271. if(sucessOrFail){
  272. @weakify(self)
  273. [self.view makeToast:@"Your review has been accepted for moderation" duration:2 position:CSToastPositionCenter title:nil image:nil style:nil completion:^(BOOL didTap) {
  274. @strongify(self)
  275. NSArray *tmpVcAry = self.navigationController.viewControllers;
  276. for(UIViewController *vc in tmpVcAry){
  277. if([vc isKindOfClass:[ASGoodsDetailsViewController class]]){
  278. [self.navigationController popToViewController:vc animated:YES];
  279. return;
  280. }
  281. }
  282. }];
  283. }else{
  284. [self.view makeToast:(NSString *)data duration:2 position:CSToastPositionCenter];
  285. }
  286. }
  287. }
  288. #pragma mark - **************** lazy ****************
  289. -(TT_CustonTF *)buyernameTF{
  290. if(!_buyernameTF){
  291. _buyernameTF = [TT_ControlTool FTT_ControlToolUITextFieldFrame:CGRectMake(10, 0, KScreenWidth-20, 45)
  292. PlaceHolder:@"* BUYER NAME"
  293. andLifImage:nil
  294. AndRightImage:nil LiftImageFrame:CGRectZero
  295. RightImageFrame:CGRectZero
  296. AndTag:0
  297. AndKeyboardType:UIKeyboardTypeDefault
  298. clearButtonMode:UITextFieldViewModeAlways
  299. AndReturnKeyType:UIReturnKeyDone
  300. masksToBounds:YES
  301. conrenRadius:4
  302. BorderColor:[UIColor colorWithHexString:@"#000000"]
  303. BorderWidth:1];
  304. _buyernameTF.font = [UIFont fontWithName:Rob_Regular size:14];
  305. _buyernameTF.backgroundColor = [UIColor colorWithHexString:@"#FFFFFF"];
  306. }
  307. return _buyernameTF;
  308. }
  309. -(TT_CustonTF *)orderlengthTF{
  310. if(!_orderlengthTF){
  311. _orderlengthTF = [TT_ControlTool FTT_ControlToolUITextFieldFrame:CGRectMake(10, 0, KScreenWidth-20, 45)
  312. PlaceHolder:@"* ORDER LENGTH"
  313. andLifImage:nil
  314. AndRightImage:nil LiftImageFrame:CGRectZero
  315. RightImageFrame:CGRectZero
  316. AndTag:0
  317. AndKeyboardType:UIKeyboardTypeDefault
  318. clearButtonMode:UITextFieldViewModeAlways
  319. AndReturnKeyType:UIReturnKeyDone
  320. masksToBounds:YES
  321. conrenRadius:4
  322. BorderColor:[UIColor colorWithHexString:@"#000000"]
  323. BorderWidth:1];
  324. _orderlengthTF.font = [UIFont fontWithName:Rob_Regular size:14];
  325. _orderlengthTF.backgroundColor = [UIColor colorWithHexString:@"#FFFFFF"];
  326. }
  327. return _orderlengthTF;
  328. }
  329. -(QMUITextView *)writeTextV{
  330. if(!_writeTextV){
  331. _writeTextV = [[QMUITextView alloc]initWithFrame:CGRectMake(10, 0, KScreenWidth-20, 110)];
  332. _writeTextV.textContainerInset = UIEdgeInsetsMake(10, 7, 10, 7);
  333. _writeTextV.placeholder = @" * WRITE A REVIEW";
  334. _writeTextV.layer.cornerRadius = 4;
  335. _writeTextV.layer.borderColor = [UIColor colorWithHexString:@"#0B0B0B"].CGColor;
  336. _writeTextV.layer.borderWidth = 1;
  337. _writeTextV.clipsToBounds = YES;
  338. _writeTextV.font = [UIFont fontWithName:Rob_Regular size:14];
  339. _writeTextV.placeholderColor = [UIColor colorWithHexString:@"#999999"];
  340. }
  341. return _writeTextV;
  342. }
  343. -(UIButton *)bootomBtn{
  344. if(!_bootomBtn){
  345. IPhoneXHeigh
  346. _bootomBtn = [TT_ControlTool FTT_ControlToolUIButtonFrame:CGRectMake(20, KScreenHeight-45-securityBottom_H, KScreenWidth-40, 45)
  347. taeget:self
  348. sel:@selector(handle_postCommentEvent:)
  349. tag:0
  350. AntTitle:@"POST COMMENT"
  351. titleFont:16
  352. titleColor:[UIColor colorWithHexString:@"#FFFFFF"]
  353. andImage:nil
  354. AndBackColor:[UIColor colorWithHexString:@"#000000"]
  355. adjustsFontSizesTowidth:NO
  356. masksToBounds:YES
  357. conrenRadius:4 BorderColor:nil BorderWidth:0 ContentHorizontalAligment:0];
  358. }
  359. return _bootomBtn;
  360. }
  361. - (NSMutableArray *)xxx_imgUrlAry {
  362. if (!_xxx_imgUrlAry) {
  363. _xxx_imgUrlAry = [[NSMutableArray alloc] init];
  364. }
  365. return _xxx_imgUrlAry;
  366. }
  367. - (NSMutableArray *)xxx_selectImgAry {
  368. if (!_xxx_selectImgAry) {
  369. _xxx_selectImgAry = [[NSMutableArray alloc] init];
  370. }
  371. return _xxx_selectImgAry;
  372. }
  373. /**
  374. 上传图片
  375. [formData appendPartWithFileData:uploadImageData name:@"content_pic" fileName:fileName mimeType:ECGBJKeyJPEG];
  376. @param URLString URL
  377. @param content 弹框的内容
  378. @param parameters 参数体
  379. @param uploadDatas 上传图片NSData
  380. @param completeSuccess 成功回调
  381. @param completeFailure 失败回调
  382. [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id< AFMultipartFormData > _Nonnull formData) {
  383. NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
  384. formatter.dateFormat=@"yyyyMMddHHmmss";
  385. NSString *str=[formatter stringFromDate:[NSDate date]];
  386. NSString *fileName=[NSString stringWithFormat:@"%@.jpg",str];
  387. [formData appendPartWithFileData:uploadImageData name:@"content_pic" fileName:fileName mimeType:ECGBJKeyJPEG];
  388. } progress:^(NSProgress * _Nonnull uploadProgress) {
  389. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  390. // 转换responseObject对象
  391. NSDictionary *dict = nil;
  392. if ([responseObject isKindOfClass:[NSDictionary class]]) {
  393. dict = (NSDictionary *)responseObject;
  394. } else {
  395. dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
  396. }
  397. // 成功后弹框处理,回调出去
  398. [weakSelf notDismissedWith:dict responseObject:responseObject complete:^(NSDictionary *respinseDic, id responseObject) {
  399. completeSuccess(respinseDic,responseObject);
  400. } failedComplete:^{
  401. completeFailure();
  402. }];
  403. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  404. // 网络问题,弹框处理
  405. [weakSelf notNetconnetNotDismissComplete:^{
  406. completeFailure();
  407. }];
  408. }]
  409. */
  410. @end