线上所有马甲包模板,与《猎豆》同UI。域名zhuadd

HSQMyWechatViewController.m 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. //
  2. // HSQMyWechatViewController.m
  3. // YouHuiProject
  4. //
  5. // Created by 小花 on 2018/8/9.
  6. // Copyright © 2018年 kuxuan. All rights reserved.
  7. //
  8. #import "HSQMyWechatViewController.h"
  9. #import "STPhotoKitController.h"
  10. #import "UIImagePickerController+ST.h"
  11. #import <AdSupport/AdSupport.h>
  12. @interface HSQMyWechatViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate,STPhotoKitDelegate>
  13. {
  14. UIButton *_complete;
  15. UILabel *_desLabel;
  16. NSURLSessionUploadTask *_uploadTask;
  17. NSString *_changeImgUrl;
  18. UIImage *_selectImg;
  19. BOOL selectedImg;
  20. }
  21. @property (nonatomic, strong) UITextField *textField;
  22. @property (nonatomic, strong) UIButton *switchBtn;
  23. @property (nonatomic, strong) UIImageView *imgView;
  24. @property (nonatomic, strong) UILabel *textLb;
  25. @property (nonatomic, strong) UIActivityIndicatorView *indicatorView;
  26. @end
  27. @implementation HSQMyWechatViewController
  28. - (void)viewWillDisappear:(BOOL)animated {
  29. [super viewWillDisappear:animated];
  30. [LoadingView dismiss];
  31. }
  32. - (void)viewWillAppear:(BOOL)animated {
  33. [super viewWillAppear:animated];
  34. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
  35. }
  36. - (void)viewDidLoad {
  37. [super viewDidLoad];
  38. [self configNavigationBar];
  39. [self initSubUI];
  40. [self request];
  41. }
  42. - (void)configNavigationBar {
  43. [self.navigationBar setNavTitle:@"我的微信号"];
  44. self.navigationBar.backgroundColor = [UIColor changeColor];
  45. self.navigationBar.navTitleLabel.textColor = [UIColor whiteColor];
  46. UIButton *leftBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
  47. [leftBtn setImage:[UIImage imageNamed:@"back_white"] forState:UIControlStateNormal];
  48. [leftBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
  49. [self.navigationBar setCustomLeftButtons:@[leftBtn]];
  50. self.view.backgroundColor = [UIColor yhGrayColor];
  51. }
  52. - (void)backAction {
  53. [self.navigationController popViewControllerAnimated:YES];
  54. }
  55. - (void)initSubUI {
  56. // UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, NavBarHeight+15, 10, 25)];
  57. // label.textColor = [UIColor YHColorWithHex:0x333333];
  58. // label.font = [UIFont systemFontOfSize:Fitsize(16)];
  59. // label.text = @"我的微信号:";
  60. // [label sizeToFit];
  61. // [self.view addSubview:label];
  62. self.imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, NavBarHeight+Fitsize(70), Fitsize(170), Fitsize(170))];
  63. self.imgView.backgroundColor = [UIColor whiteColor];
  64. self.imgView.centerX = self.view.width/2;
  65. self.imgView.userInteractionEnabled = YES;
  66. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)];
  67. [self.imgView addGestureRecognizer:tap];
  68. [self.imgView addSubview:self.indicatorView];
  69. [self.view addSubview:self.imgView];
  70. UILabel *textLb = [[UILabel alloc] initWithFrame:CGRectMake(0, self.imgView.bottom+7, SCREEN_WIDTH, 20)];
  71. textLb.font = [UIFont systemFontOfSize:13];
  72. textLb.textColor = [UIColor YHColorWithHex:0x6E6E6E];
  73. textLb.text = @"点击上传微信二维码";
  74. textLb.textAlignment = NSTextAlignmentCenter;
  75. self.textLb = textLb;
  76. [self.view addSubview:textLb];
  77. UIView *fieldbg = [[UIView alloc] initWithFrame:CGRectMake(0, self.textLb.bottom+Fitsize(100), SCREEN_WIDTH, 50)];
  78. fieldbg.backgroundColor = [UIColor clearColor];
  79. UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(40, 0, 60, 25)];
  80. title.text = @"微信号";
  81. title.font = [UIFont systemFontOfSize:16];
  82. title.textColor = [UIColor YHColorWithHex:0x333333];
  83. [fieldbg addSubview:title];
  84. [self.view addSubview:fieldbg];
  85. self.textField = [[UITextField alloc] initWithFrame:CGRectMake(title.right,0, SCREEN_WIDTH-140, 33)];
  86. self.textField.centerY = title.centerY;
  87. self.textField.font = [UIFont systemFontOfSize:14];
  88. self.textField.textColor = [UIColor YHColorWithHex:0x6E6E6E];
  89. self.textField.backgroundColor = [UIColor clearColor];
  90. self.textField.keyboardType = UIKeyboardTypeASCIICapable;
  91. self.textField.placeholder = @"请输入微信号,方便下级联系";
  92. self.textField.clearButtonMode = UITextFieldViewModeAlways;
  93. [fieldbg addSubview:self.textField];
  94. UIView *line = [[UIView alloc] initWithFrame:CGRectMake(40, self.textField.bottom+5, SCREEN_WIDTH-80, 1)];
  95. line.backgroundColor = [UIColor YHColorWithHex:0x979797];
  96. [fieldbg addSubview:line];
  97. // self.switchBtn = [[UIButton alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-15-60, 0, 60, 30)];
  98. // self.switchBtn.centerY = self.textField.centerY;
  99. // [self.switchBtn setImage:[UIImage imageNamed:@"yincang"] forState:UIControlStateNormal];
  100. // [self.switchBtn setImage:[UIImage imageNamed:@"gongkai"] forState:UIControlStateSelected];
  101. // [self.switchBtn addTarget:self action:@selector(changeButtonClick:) forControlEvents:UIControlEventTouchUpInside];
  102. // [self.view addSubview:self.switchBtn];
  103. //
  104. // UILabel *desLb = [[UILabel alloc] initWithFrame:CGRectMake(10, self.textField.bottom+10, SCREEN_WIDTH-30, 20)];
  105. // desLb.textColor = [UIColor YHColorWithHex:0x999999];
  106. // desLb.font = [UIFont systemFontOfSize:Fitsize(11)];
  107. // desLb.text = @"填写微信号后,您可以选择公开此信息,方便下级联系您";
  108. // _desLabel = desLb;
  109. // [self.view addSubview:desLb];
  110. UIButton *complete = [[UIButton alloc] initWithFrame:CGRectMake(0, fieldbg.bottom+33, SCREEN_WIDTH-80, Fitsize(40))];
  111. complete.backgroundColor = [UIColor homeRedColor];
  112. [complete setTitle:@"完成" forState:UIControlStateNormal];
  113. complete.titleLabel.font = [UIFont systemFontOfSize:Fitsize(15)];
  114. [complete setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  115. [complete addTarget:self action:@selector(completeAction) forControlEvents:UIControlEventTouchUpInside];
  116. complete.layer.cornerRadius = 6;
  117. complete.backgroundColor = [UIColor homeRedColor];
  118. complete.centerX = self.view.centerX;
  119. _complete = complete;
  120. [self.view addSubview:complete];
  121. }
  122. - (void)tapImageView:(UITapGestureRecognizer *)tap {
  123. [self editImageSelected];
  124. }
  125. #pragma mark - --- event response 事件相应 ---
  126. - (void)editImageSelected
  127. {
  128. UIImagePickerController *controller = [UIImagePickerController imagePickerControllerWithSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
  129. [controller setDelegate:self];
  130. if ([controller isAvailablePhotoLibrary]) {
  131. [self presentViewController:controller animated:YES completion:^{
  132. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
  133. }];
  134. }else {
  135. UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"d温馨提示" message:@"您还没有开启访问相册权限" preferredStyle:UIAlertControllerStyleAlert];
  136. UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"去设置" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
  137. [alertController dismissViewControllerAnimated:YES completion:nil];
  138. [self gotoSetting];
  139. }];
  140. UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  141. [alertController dismissViewControllerAnimated:YES completion:nil];
  142. }];
  143. [alertController addAction:action1];
  144. [alertController addAction:action2];
  145. [self presentViewController:alertController animated:YES completion:nil];
  146. }
  147. }
  148. - (void)gotoSetting {
  149. NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
  150. if([[UIApplication sharedApplication]canOpenURL:url] ) {
  151. if (@available(iOS 10.0, *)) {
  152. [[UIApplication sharedApplication] openURL:url options:@{}completionHandler:^(BOOL success) {
  153. }];
  154. } else {
  155. [[UIApplication sharedApplication]openURL:url];
  156. }
  157. }
  158. }
  159. #pragma mark - 2.UIImagePickerController的委托
  160. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
  161. {
  162. [picker dismissViewControllerAnimated:YES completion:^{
  163. UIImage *imageOriginal = [info objectForKey:UIImagePickerControllerOriginalImage];
  164. STPhotoKitController *photoVC = [STPhotoKitController new];
  165. [photoVC setDelegate:self];
  166. [photoVC setImageOriginal:imageOriginal];
  167. [photoVC setSizeClip:CGSizeMake(Fitsize(300), Fitsize(300))];
  168. [self presentViewController:photoVC animated:YES completion:nil];
  169. }];
  170. }
  171. - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
  172. [picker dismissViewControllerAnimated:YES completion:^(){
  173. }];
  174. }
  175. - (void)photoKitController:(STPhotoKitController *)photoKitController resultImage:(UIImage *)resultImage
  176. {
  177. _selectImg = resultImage;
  178. selectedImg = YES;
  179. self.imgView.image = resultImage;
  180. }
  181. - (void)upLoadImage:(UIImage *)image
  182. {
  183. NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzone/addQrcode",BaseURL];
  184. /* 创建网络请求对象 */
  185. AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
  186. /* 设置请求和接收的数据编码格式 */
  187. mgr.requestSerializer = [AFJSONRequestSerializer serializer]; // 设置请求数据为 JSON 数据
  188. mgr.responseSerializer = [AFJSONResponseSerializer serializer]; // 设置接收数据为 JSON 数据
  189. /* 设置请求头 */
  190. mgr.requestSerializer.timeoutInterval = 10;
  191. NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
  192. NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
  193. [mgr.requestSerializer setValue:app_Version forHTTPHeaderField:@"version"];
  194. [mgr.requestSerializer setValue:Channel_id forHTTPHeaderField:@"source"];
  195. [mgr.requestSerializer setValue:@"ios" forHTTPHeaderField:@"platform"];
  196. if ([AccountTool isLogin]) {
  197. NSString *token = [AccountTool account].token;
  198. // NSLog(@"%@",token);
  199. [mgr.requestSerializer setValue:token forHTTPHeaderField:@"token"];
  200. }
  201. NSString *deviceUUID = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
  202. NSString *uuid = [NSString stringWithFormat:@"I-%@",deviceUUID];
  203. [mgr.requestSerializer setValue:uuid forHTTPHeaderField:@"idfa"];
  204. [mgr POST:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  205. NSData *data = UIImageJPEGRepresentation(image,1);
  206. NSString *name = [self getNowTimeTimestamp];
  207. NSString *fileName = [NSString stringWithFormat:@"%@.png",name];
  208. [formData appendPartWithFileData:data name:@"img" fileName:fileName mimeType:@"image/png"];
  209. } progress:^(NSProgress * _Nonnull uploadProgress) {
  210. if (uploadProgress) {
  211. CGFloat progress = uploadProgress.completedUnitCount/uploadProgress.totalUnitCount;
  212. [SVProgressHUD showProgress:progress status:@"图片上传中..."];
  213. }
  214. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  215. _changeImgUrl = responseObject[@"rst"][@"img"];
  216. self.imgView.image = image;
  217. [SVProgressHUD dismiss];
  218. [self requestCompleteWith:_changeImgUrl];
  219. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  220. NSData * data = error.userInfo[@"com.alamofire.serialization.response.error.data"];
  221. NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
  222. NSLog(@"服务器的错误原因:%@",str);
  223. [SVProgressHUD dismiss];
  224. [MBProgressHUD showMessage:@"上传失败"];
  225. }];
  226. }
  227. - (void)request {
  228. [self.indicatorView startAnimating];
  229. NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/displayWeChat",BaseURL];
  230. [HSQHttp post:url params:nil success:^(id json) {
  231. NSString *wechat;
  232. NSString *str = json[@"weChat"];
  233. NSString *qrcode = json[@"qrcode"];
  234. if (str.length > 0) {
  235. wechat = [NSString stringWithFormat:@"%@",json[@"weChat"]];
  236. self.textField.text = wechat;
  237. }else {
  238. self.textField.placeholder = @"请输入微信号,方便下级联系";
  239. }
  240. if (qrcode.length > 0) {
  241. [self.imgView sd_setImageWithURL:[NSURL URLWithString:qrcode] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
  242. [self.indicatorView stopAnimating];
  243. }];
  244. selectedImg = YES;
  245. }else {
  246. self.imgView.image = [UIImage imageNamed:@"addImg"];
  247. [self.indicatorView stopAnimating];
  248. }
  249. // [self addRacObserver:wechat];
  250. } failure:^(NSError *error) {
  251. [self.indicatorView stopAnimating];
  252. }];
  253. }
  254. //
  255. //- (void)addRacObserver:(NSString *)wechat {
  256. // RACSignal *textSingal = [self.textField.rac_textSignal map:^id(NSString * value) {
  257. // BOOL first = value.length > 0;
  258. // BOOL second = self.imgView.image != [UIImage imageNamed:@"addImg"];
  259. // BOOL succ = first && second;
  260. // return @(succ);
  261. // }];
  262. //
  263. //
  264. //
  265. // [textSingal subscribeNext:^(NSNumber *textActionSignal) {
  266. // _complete.backgroundColor = textActionSignal.boolValue?[UIColor homeRedColor]:[UIColor lightGrayColor];
  267. // _complete.enabled = textActionSignal.boolValue;
  268. // }];
  269. //}
  270. //- (void)changeButtonClick:(UIButton *)sender {
  271. // [LoadingView show];
  272. // sender.enabled = NO;
  273. // NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/openFlag",BaseURL];
  274. // NSNumber *state = sender.selected?@0:@1;
  275. // NSDictionary *para = @{@"openStat":state};
  276. // [HSQHttp post:url params:para success:^(id json) {
  277. // sender.enabled = YES;
  278. // if ([json[@"flag"] boolValue]) {
  279. // sender.selected = !sender.selected;
  280. // NSString *text = sender.selected?@"您的微信号已公开,下级可以看到了":@"您的微信号已关闭,点击按钮公开";
  281. // _desLabel.text = text;
  282. // }else {
  283. // [MBProgressHUD showMessage:json[@"msg"]];
  284. // }
  285. //
  286. // [LoadingView dismiss];
  287. // } failure:^(NSError *error) {
  288. // [LoadingView dismiss];
  289. // }];
  290. //}
  291. - (void)completeAction {
  292. if (self.textField.text.length == 0 && !selectedImg) {
  293. [MBProgressHUD showMessage:@"请输入微信号或上传二维码"];
  294. return;
  295. }
  296. if (selectedImg) {
  297. [self upLoadImage:self.imgView.image];
  298. }else {
  299. [self requestCompleteWith:nil];
  300. }
  301. }
  302. - (void)requestCompleteWith:(NSString *)newQRUrl {
  303. NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/addWeChat",BaseURL];
  304. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  305. if (newQRUrl) {
  306. [dict setObject:newQRUrl forKey:@"imgUrl"];
  307. }else {
  308. [dict setObject:@"" forKey:@"imgUrl"];
  309. }
  310. if (self.textField.text.length > 0) {
  311. [dict setObject:self.textField.text forKey:@"weChat"];
  312. }else {
  313. [dict setObject:@"" forKey:@"weChat"];
  314. }
  315. [HSQHttp post:url params:dict success:^(id json) {
  316. [MBProgressHUD showMessage:json[@"msg"]];
  317. if ([json[@"flag"] boolValue]) {
  318. [self backAction];
  319. }
  320. } failure:^(NSError *error) {
  321. [MBProgressHUD showMessage:@"加载失败"];
  322. }];
  323. }
  324. - (UIActivityIndicatorView *)indicatorView {
  325. if (!_indicatorView) {
  326. _indicatorView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyleGray)];
  327. _indicatorView.frame= CGRectMake(0, 0, 50, 50);
  328. _indicatorView.color = [UIColor homeRedColor];
  329. _indicatorView.center = CGPointMake(self.imgView.width/2, self.imgView.height/2);
  330. _indicatorView.hidesWhenStopped = YES;
  331. }
  332. return _indicatorView;
  333. }
  334. - (NSString *)getNowTimeTimestamp{
  335. NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
  336. NSTimeInterval a=[dat timeIntervalSince1970];
  337. NSString*timeString = [NSString stringWithFormat:@"%0.f", a];//转为字符型
  338. ;
  339. return timeString;
  340. }
  341. - (void)didReceiveMemoryWarning {
  342. [super didReceiveMemoryWarning];
  343. // Dispose of any resources that can be recreated.
  344. }
  345. /*
  346. #pragma mark - Navigation
  347. // In a storyboard-based application, you will often want to do a little preparation before navigation
  348. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  349. // Get the new view controller using [segue destinationViewController].
  350. // Pass the selected object to the new view controller.
  351. }
  352. */
  353. @end