LoginViewController.m 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328
  1. //
  2. // LoginViewController.m
  3. // TabBar
  4. //
  5. // Created by 黄玉林 on 15/7/5.
  6. // Copyright (c) 2015年 黄玉林. All rights reserved.first commit~~~!!!
  7. //
  8. #import "LoginViewController.h"
  9. #import "MyComBox.h"
  10. #import "XGPush.h"
  11. #import "AppDelegate.h"
  12. #import <Foundation/Foundation.h>
  13. #import "GTMBase64.h"
  14. #include <CommonCrypto/CommonDigest.h>
  15. #include <CommonCrypto/CommonHMAC.h>
  16. #import "SSCheckBoxView.h"
  17. #import "UASUserInfo.h"
  18. #import "UASWorkManager.h"
  19. #import "NSString+secri.h"
  20. #define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
  21. //@interface MyLoginText
  22. //@end
  23. static LoginViewController *uas_LoginManager;
  24. @interface LoginViewController()
  25. {
  26. UIView *myView;
  27. BOOL needSetComBox;
  28. MyComBox *dd1;
  29. NSMutableArray* doubleMasterArray;
  30. UASNetworkManager *loginSeverManager;
  31. NSMutableArray *masterArray;
  32. UITextField *masterText;
  33. UITextField *nameText;
  34. UITextField *passText;
  35. UITextField *duankou;
  36. NSDictionary *tempMasterDic;
  37. NSString *tempIp;
  38. UILabel* label;
  39. UIButton *btn0;
  40. NSMutableArray *ipAndPortArray;
  41. BOOL isNoFirstLogin;
  42. BOOL isAutoLogin;
  43. UIAlertView *remoteAlertView;
  44. UIAlertController *alertController;
  45. AppDelegate *myDelegate;
  46. NSArray *_erpArray;
  47. NSMutableArray *_erpNameAndIpArray;
  48. BOOL isInB2B;
  49. BOOL isInERP;
  50. BOOL isInSaas;
  51. SSCheckBoxView *remerberPass;
  52. BOOL erpIsLoginChecked;
  53. BOOL b2bIsLoginChecked;
  54. BOOL isForDayToGetData;
  55. }
  56. @end
  57. #define My_Y 300;
  58. #define My_X 100;
  59. @implementation LoginViewController
  60. -(void)remoteAnimation:(NSString *)message
  61. {
  62. if ([[[UIDevice currentDevice] systemVersion] compare:@"8.0"] != NSOrderedAscending) {
  63. UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125.0, 45, 30.0, 30.0)];
  64. aiView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
  65. alertController= [UIAlertController alertControllerWithTitle:message message:@"" preferredStyle:UIAlertControllerStyleAlert];
  66. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"关闭" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
  67. [aiView stopAnimating];
  68. }];
  69. [alertController addAction:cancelAction];
  70. [alertController.view addSubview:aiView];
  71. [aiView startAnimating];
  72. //[self presentViewController:alertController animated:YES completion:nil];
  73. }else
  74. {
  75. remoteAlertView = [[UIAlertView alloc] initWithTitle:@"提示" message:message delegate:self cancelButtonTitle:@"关闭" otherButtonTitles:nil, nil ];
  76. UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125.0, 80.0, 30.0, 30.0)];
  77. aiView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
  78. //check if os version is 7 or above. ios7.0及以上UIAlertView弃用了addSubview方法
  79. if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending) {
  80. [remoteAlertView setValue:aiView forKey:@"accessoryView"];
  81. }else{
  82. [remoteAlertView addSubview:aiView];
  83. }
  84. [remoteAlertView show];
  85. [aiView startAnimating];
  86. }
  87. }
  88. -(void)dismissAlert
  89. {
  90. if ([[[UIDevice currentDevice] systemVersion] compare:@"8.0"] != NSOrderedAscending) {
  91. [alertController dismissViewControllerAnimated:YES completion:nil];
  92. }else
  93. {
  94. [remoteAlertView dismissWithClickedButtonIndex:0 animated:YES];
  95. }
  96. }
  97. -(void)checkBoxViewChangedState:(SSCheckBoxView *)cbv
  98. {
  99. // DLog(@"复选框状态: %@",cbv.checked ? @"选中" : @"没选中");
  100. NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults];
  101. if (cbv.checked) {
  102. [userDefault setBool:YES forKey:@"isRemerberPass"];
  103. }else
  104. [userDefault setBool:NO forKey:@"isRemerberPass"];
  105. }
  106. -(void)chooseMaster
  107. {
  108. //masterText.userInteractionEnabled=NO;
  109. DXAlertView *alert = [[DXAlertView alloc] initWithTitle:@"请选择master" contentText:nil leftButtonTitle:nil rightButtonTitle:@"确定" isTurnLeft:NO];
  110. alert.pickerView.delegate=self;
  111. alert.pickerView.dataSource=self;
  112. alert.topVC=self;
  113. [alert show];
  114. [alert.pickerView selectRow:0 inComponent:0 animated:NO];
  115. alert.rightBlock=^(){
  116. //if (!self.master.text) {
  117. //self.master.text=[[doubleMasterArray objectAtIndex:defaultPickerRow_MASTER] objectForKey:@"ma_function"];
  118. //tempMasterDic=[doubleMasterArray objectAtIndex:defaultPickerRow_MASTER];
  119. //}
  120. };
  121. alert.dismissBlock=^(){
  122. [masterText resignFirstResponder];
  123. };
  124. }
  125. -(void)hadIp
  126. {
  127. [self clickBackGround:nil];
  128. [self getMasterDatas];
  129. }
  130. -(void)startAmation
  131. {
  132. // //动画
  133. // if (needSetComBox) {
  134. // [UIView beginAnimations:nil context:nil];
  135. // [UIView setAnimationDuration:1];
  136. // [myView setFrame:CGRectMake(0, 150,myView.bounds.size.width,myView.bounds.size.height)];
  137. // dd1.alpha=0;
  138. // duankou.alpha=0;
  139. // label.alpha=0;
  140. // btn0.alpha=0;
  141. // [UIView commitAnimations];
  142. // //把dropdownList放到前面,防止下拉框被别的控件遮住
  143. // [self.view.superview bringSubviewToFront:myView];
  144. // //dd1.hidden=YES;
  145. // needSetComBox=NO;
  146. // }else
  147. // {
  148. // //dd1.hidden=NO;
  149. // needSetComBox=YES;
  150. // [UIView beginAnimations:nil context:nil];
  151. // [UIView setAnimationDuration:1];
  152. // [myView setFrame:CGRectMake(0, self.view.bounds.size.height,myView.bounds.size.width,myView.bounds.size.height)];
  153. // dd1.alpha=1;
  154. // duankou.alpha=1;
  155. // label.alpha=1;
  156. // btn0.alpha=1;
  157. // [UIView commitAnimations];
  158. // }
  159. }
  160. -(void)getMasterDatas
  161. {
  162. tempIp=[dd1.textField.text stringByAppendingFormat:@":%@",duankou.text];
  163. NSString *urlStr=[@"http://" stringByAppendingFormat:@"%@/ERP/mobile/getAllMasters.action",tempIp];
  164. [loginSeverManager request:urlStr method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  165. //请求成功
  166. DLog(@"成功!");
  167. [self startAmation];
  168. NSDictionary *dicAlet=[NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
  169. @try {
  170. doubleMasterArray=[[NSMutableArray alloc] initWithCapacity:2];
  171. masterArray=[[NSMutableArray alloc] initWithCapacity:2];
  172. for (int i=0 ;i<[[dicAlet objectForKey:@"masters"] count];i++) {
  173. DLog(@"user=%@",[[[dicAlet objectForKey:@"masters"] objectAtIndex:i] objectForKey:@"ma_user"]);
  174. [masterArray addObject:[[[dicAlet objectForKey:@"masters"] objectAtIndex:i] objectForKey:@"ma_user"]];
  175. NSString *masterUser=[[[dicAlet objectForKey:@"masters"] objectAtIndex:i] objectForKey:@"ma_user"];
  176. NSString *masterUserName=[[[dicAlet objectForKey:@"masters"] objectAtIndex:i] objectForKey:@"ma_function"];
  177. //存入字典
  178. id tempDic=[NSDictionary dictionaryWithObjectsAndKeys:masterUserName,@"ma_function",masterUser,@"ma_user",nil];
  179. //加入数组
  180. [doubleMasterArray addObject:tempDic];
  181. }
  182. // DLog(@"tempMasterDic");
  183. tempMasterDic=[doubleMasterArray objectAtIndex:0];
  184. masterText.text=[tempMasterDic objectForKey:@"ma_function"];
  185. }
  186. @catch (NSException *exception) {
  187. [UASAlertView showWithTitle:nil content:@"请求的数据有误,请更换IP地址或端口!" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  188. }];
  189. }
  190. @finally {
  191. }
  192. //DLog(@"获取到的数据为:%@",masterArray);
  193. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  194. DLog(@"失败!!!");
  195. [UASAlertView showWithTitle:nil content:@"网络请求失败,IP或者端口错误" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  196. }];
  197. }];
  198. }
  199. -(void)newGetMasterDatas
  200. {
  201. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  202. tempIp=[userDefaults stringForKey:@"erpPort"];
  203. NSString *urlStr=[@"" stringByAppendingFormat:@"%@mobile/getAllMasters.action",tempIp];
  204. UASNetworkManager *loginSeverManager = [UASNetworkManager shareManager];
  205. loginSeverManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  206. [loginSeverManager request:urlStr method:POST
  207. parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  208. //请求成功
  209. // DLog(@"成功!");
  210. [self startAmation];
  211. NSDictionary *dicAlet=[NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
  212. DLog(@"mster DIc=%@",dicAlet);
  213. if ([[dicAlet objectForKey:@"masters"] count]==0) {//针对于sass平台
  214. if (self.loginCompleted) {
  215. self.loginCompleted(nil);
  216. }
  217. DLog(@"in sass 平台 master 处理");
  218. doubleMasterArray=[[NSMutableArray alloc] initWithCapacity:1];
  219. id tempDic=[NSDictionary dictionaryWithObjectsAndKeys:[userDefaults objectForKey:@"erpMaster"],@"ma_function",[userDefaults objectForKey:@"erpMaster"],@"ma_user",nil];
  220. [doubleMasterArray addObject:tempDic];
  221. tempMasterDic=[doubleMasterArray objectAtIndex:0];
  222. [self saveUserData];
  223. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal"object:nil];
  224. //[self.navigationController popToRootViewControllerAnimated:YES];
  225. }else
  226. {
  227. NSException *expect = nil;
  228. @try {
  229. doubleMasterArray=[[NSMutableArray alloc]init];
  230. for (int i=0 ;i<[[dicAlet objectForKey:@"masters"] count];i++) {
  231. NSDictionary *tempDic = [[dicAlet objectForKey:@"masters"] objectAtIndex:i];
  232. tempDic = [NSDictionary changeType:tempDic];
  233. //加入数组
  234. [doubleMasterArray addObject:tempDic];
  235. }
  236. for (int i=0; i<[doubleMasterArray count]; i++) {
  237. id dic=[doubleMasterArray objectAtIndex:i];
  238. NSString *master=[dic objectForKey:@"ma_user"];
  239. if ([master isEqualToString:[userDefaults objectForKey:@"erpMaster"] ]) {
  240. tempMasterDic=dic;
  241. break;
  242. }
  243. }
  244. DLog(@"tempMasterDic=%@",tempMasterDic);
  245. [self saveUserData];
  246. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal"object:nil];
  247. //[self.navigationController popToRootViewControllerAnimated:YES];
  248. }
  249. @catch (NSException *exception) {
  250. expect = exception;
  251. [UASAlertView showWithTitle:nil content:@"请求的数据有误,master请求失败" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  252. }];
  253. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal"object:nil];
  254. //[self.navigationController popToRootViewControllerAnimated:YES];
  255. }
  256. @finally {
  257. if (expect) {
  258. NSError *error = [NSError new];
  259. if (self.loginCompleted) {
  260. self.loginCompleted(error);
  261. }
  262. }else{
  263. if (self.loginCompleted) {
  264. self.loginCompleted(nil);
  265. }
  266. }
  267. }
  268. }
  269. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  270. //请求失败
  271. DLog(@"失败!!!");
  272. [UASAlertView showWithTitle:nil content:@"网络请求失败,master请求失败" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  273. }];
  274. }];
  275. }
  276. -(void)insertIpAndPort:(NSString*)ipAndPort
  277. {
  278. // if ([ipAndPortArray count]==5)
  279. // [ipAndPortArray removeObjectAtIndex:4];
  280. //DLog(@"insert string=%@",ipAndPort);
  281. BOOL hadTheSameIp=NO;
  282. for (int i=0; i<[ipAndPortArray count]; i++) {
  283. if ([[ipAndPortArray objectAtIndex:i] isEqualToString:ipAndPort]) {
  284. DLog(@"%@ ==== %@",[ipAndPortArray objectAtIndex:i],ipAndPort);
  285. hadTheSameIp=YES;
  286. break;
  287. }
  288. }
  289. if (!hadTheSameIp) {
  290. [ipAndPortArray addObject:tempIp];
  291. }
  292. }
  293. //登录请求,以及保存数据及状态 --没用
  294. -(void)loginCheck
  295. {
  296. [self remoteAnimation:Localized(@"UU_login_loading")];
  297. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  298. //[self saveUserData];
  299. //参数
  300. //DLog(@"dic=%@,name=%@",[[userDefaults objectForKey:@"ipDic"] objectForKey:@"host_name"],[[userDefaults objectForKey:@"ipDic"] objectForKey:@"host_name"]);
  301. //NSString *ip=[tempIpDic objectForKey:@"ip"];//[[userDefaults objectForKey:@"ipDic"] objectForKey:@"ip"];//self.ipCombox.textField.text;
  302. NSString *userName=nameText.text;
  303. NSString *passWord=passText.text;
  304. NSString *master=[tempMasterDic objectForKey:@"ma_user"];//self.masterCombox.textField.text;
  305. // DLog(@"ip=%@,master=%@,name=%@,pass=%@",tempIp,master,userName,passWord);
  306. NSString *url=@"http://";
  307. url=[url stringByAppendingFormat:@"%@/%@",tempIp,@"ERP/mobile/login.action"];
  308. //初始化 网络manager
  309. loginSeverManager=[UASNetworkManager shareManager];
  310. loginSeverManager.responseSerializer=[AFHTTPResponseSerializer serializer];
  311. [loginSeverManager.securityPolicy setAllowInvalidCertificates:YES];
  312. NSString *urlStr=@"http://";
  313. urlStr=[urlStr stringByAppendingFormat:@"%@/%@?username=%@&password=%@&master=%@",tempIp,@"ERP/mobile/login.action",userName,passWord,master];
  314. // DLog(@"URL=%@",urlStr);
  315. NSString *param=@"";
  316. //param=[param stringByAppendingFormat:@"username=%@&password=%@&master=%@",@"LYH",@"676912",@"DataCenter"];
  317. //执行网络请求
  318. // DLog(@"开始登录请求!!!!");
  319. [loginSeverManager request:urlStr method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  320. //请求成功
  321. [self dismissAlert];
  322. NSData *data=responseObject;
  323. NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
  324. [self insertIpAndPort:tempIp];
  325. NSString* isSuccess=[dic objectForKey:@"success"];
  326. // DLog(@"dic>>>>>>>>>>>>>>>>>>>>>>>>>=%@",dic);
  327. //保存sessionId
  328. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  329. [userDefaults setObject:[dic objectForKey:@"sessionId"] forKey:@"sessionId"];
  330. if (dic.count>0&&isSuccess.boolValue) {
  331. [userDefaults setBool:YES forKey:@"loginState"];
  332. isNoFirstLogin=YES;
  333. isAutoLogin=YES;
  334. [self saveUserData];
  335. //设置别名
  336. NSString *indexName=[@"" stringByAppendingFormat:@"%@%@",master,userName];
  337. [XGPush setAccount:indexName];
  338. // UITabBarController *tabBarController=[self.storyboard instantiateViewControllerWithIdentifier:@"mainTabBarController"];
  339. // [self.navigationController pushViewController:tabBarController
  340. // animated:YES];
  341. //[self.navigationController popToRootViewControllerAnimated:YES];
  342. }else
  343. {
  344. [UASAlertView showWithTitle:nil content:@"账号或密码错误,master请求失败" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  345. }];
  346. }
  347. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  348. DLog(@"失败!!!");
  349. [self dismissAlert];
  350. [UASAlertView showWithTitle:nil content:@"网络请求失败,服务器未连接!master请求失败" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  351. }];
  352. }];
  353. }
  354. #pragma mark --- 管理平台登录
  355. -(void)newLoginCheckWithUserName:(NSString *)userName withPass:(NSString *)userPass
  356. {
  357. UASNetworkManager *loginSeverManager = [UASNetworkManager shareManager];
  358. loginSeverManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  359. /**旧版管理平台的登录
  360. //获取当前时间戳
  361. NSDate *localDate = [NSDate date];
  362. NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[localDate timeIntervalSince1970]];
  363. NSString *urlStr = @"http://manage.ubtob.com/public/account";
  364. urlStr = [urlStr stringByAppendingFormat:@"?_timestamp=%@&user=%@&password=%@",timeSp,userName,userPass];
  365. //对urlStr进行 HmacSHA256 算法加密 key=@"http://www.ubtob.com/erp/sale/orders?something"
  366. NSString *secretUrl = [(AppDelegate*)[UIApplication sharedApplication].delegate hmacSHA256:@"http://www.ubtob.com/erp/sale/orders?something" text:urlStr];
  367. urlStr = [urlStr stringByAppendingFormat:@"&_signature=%@",secretUrl];
  368. */
  369. //新版账户中心的登录
  370. NSString *url = @"https://sso.ubtob.com/sso/login/mobile";
  371. NSDictionary *dic = @{@"mobile":userName,@"password":userPass};
  372. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  373. if ([self checkStringByNumberOrStr:userName]) {
  374. [loginSeverManager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  375. NSData *data = responseObject;
  376. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
  377. SLog(@"管理平台登录数据:%@",dic);
  378. [UASUserInfo shareManager].userInfo = dic;
  379. //保存新账户中心token
  380. [[NSUserDefaults standardUserDefaults] setObject:FORMAT(@"%@",[dic objectForKey:@"token"]) forKey:@"accountToken"];
  381. NSArray *tempArray = [dic objectForKey:@"datalist"];
  382. for (int i = 0; i<tempArray.count; i++) {
  383. NSDictionary *dic = tempArray[i];
  384. dic = [NSDictionary changeType:dic];
  385. if([dic[@"spaces"] isKindOfClass:[NSArray class]]){
  386. [UASUserInfo shareManager].b2bDic = dic;
  387. }
  388. }
  389. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  390. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal"object:nil];
  391. if (dic.count>0) {
  392. [userDefaults setObject:userName forKey:@"userName"];
  393. NSString *pwdStr = [NSString codeSeciWithStr:userPass];
  394. [userDefaults setObject:pwdStr forKey:@"userPass"];
  395. [userDefaults setBool:YES forKey:@"loginState"];
  396. isNoFirstLogin = YES;
  397. isAutoLogin = YES;
  398. //保存登录数据
  399. [self saveUserData];
  400. int erpcount = 0;
  401. for (int i = 0; i < tempArray.count; i++) {
  402. NSDictionary *dic = tempArray[i];
  403. NSString *platformStr = [NSString stringWithFormat:@"%@",[dic objectForKey:@"platform"]];
  404. if ([platformStr isEqualToString:@"ERP"]) {
  405. erpcount ++;
  406. }
  407. }
  408. /*
  409. platform
  410. 1.有EPR 和 B2B 账户的默认为ERP账户
  411. 2.只有B2B的账户 才为 B2B账户 或者 个人账户
  412. */
  413. if (erpcount == 0) {
  414. NSArray *userData = [tempArray[0] objectForKey:@"spaces"];
  415. /*此时分 个人用户 和 B2B用户*///没有spaces即无绑公司的为个人用户
  416. if (userData.count == 0)
  417. {
  418. //默认个人用户
  419. [[NSUserDefaults standardUserDefaults] setObject:@"PersonalUser" forKey:@"ERPUserOrB2BUser"];
  420. //保存个人emcode
  421. NSString *account = [NSString stringWithFormat:@"%@",[tempArray[0] objectForKey:@"account"]];
  422. [[NSUserDefaults standardUserDefaults] setObject:account forKey:@"erpUserName"];
  423. [[NSUserDefaults standardUserDefaults] setObject:account forKey:@"erpaccount"];
  424. //保存人名
  425. NSString *username = [NSString stringWithFormat:@"%@",[tempArray[0] objectForKey:@"userName"]];
  426. [[NSUserDefaults standardUserDefaults] setObject:username forKey:@"personName"];
  427. [[NSNotificationCenter defaultCenter] postNotificationName:@"mytest" object:nil];
  428. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal" object:nil];
  429. }
  430. else
  431. {
  432. //默认为B2B用户
  433. [[NSUserDefaults standardUserDefaults] setObject:@"B2BUser" forKey:@"ERPUserOrB2BUser"];
  434. //保存IP和名字
  435. NSMutableArray *b2bNameAndIpArray = [[NSMutableArray alloc]init];
  436. //保存公司数据,做成与ERP统一格式
  437. NSMutableArray *b2bPlatItems = [[NSMutableArray alloc]init];
  438. for (int i = 0; i < userData.count; i++) {
  439. NSDictionary *nameDic = userData[i];
  440. NSDictionary *nameAndIpDic = @{
  441. @"name":[NSString stringWithFormat:@"%@",[nameDic objectForKey:@"name"]],
  442. @"ipAndPort":@"http://b2b.usoftchina.com/"
  443. };
  444. [b2bNameAndIpArray addObject:nameAndIpDic];
  445. NSDictionary *dic = @{@"account":[tempArray[0] objectForKey:@"account"],
  446. @"imid":[tempArray[0] objectForKey:@"imid"],
  447. @"platform":@"B2B",
  448. @"enuu":[nameDic objectForKey:@"enuu"],
  449. @"name":[nameDic objectForKey:@"name"],
  450. @"master":@"",
  451. @"masterId":@"",
  452. @"userName":[tempArray[0] objectForKey:@"userName"],
  453. @"website":@"http://b2b.usoftchina.com/",
  454. @"businessCode":FORMAT(@"%@",[nameDic objectForKey:@"businessCode"]),
  455. };
  456. [b2bPlatItems addObject:dic];
  457. }
  458. [[NSUserDefaults standardUserDefaults] setObject:b2bPlatItems forKey:@"erpPlatItems"];
  459. [[NSUserDefaults standardUserDefaults] setObject:b2bNameAndIpArray forKey:@"erpNameAndIpArray"];
  460. //保存个人emcode
  461. NSString *account = [NSString stringWithFormat:@"%@",[tempArray[0] objectForKey:@"account"]];
  462. [[NSUserDefaults standardUserDefaults] setObject:account forKey:@"erpUserName"];
  463. [[NSUserDefaults standardUserDefaults] setObject:account forKey:@"erpaccount"];
  464. //保存个人中文名字
  465. NSString *userNameStr = [NSString stringWithFormat:@"%@",[tempArray[0] objectForKey:@"userName"]];
  466. [[NSUserDefaults standardUserDefaults] setObject:userNameStr forKey:@"personName"];
  467. //登录B2B
  468. [self selectB2BCompany:userData];
  469. }
  470. }
  471. else{
  472. //默认为ERP用户
  473. [[NSUserDefaults standardUserDefaults] setObject:@"ERPUser" forKey:@"ERPUserOrB2BUser"];
  474. //设置登录的平台标记
  475. [self checkPlatform:tempArray];
  476. }
  477. [(AppDelegate *)[UIApplication sharedApplication].delegate isAdmin];
  478. }else
  479. {
  480. [UASAlertView showWithTitle:nil content:@"该账号无所属公司" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  481. }];
  482. [self dismissAlert];
  483. }
  484. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  485. //请求失败
  486. [UASUserInfo shareManager].b2bDic = @{};
  487. [[NSUserDefaults standardUserDefaults] setObject:@{} forKey:@"B2BplatformData"];
  488. [alertController dismissViewControllerAnimated:YES completion:nil];
  489. }];
  490. }
  491. }
  492. #pragma mark --- 新的B2B登录
  493. -(void)loginB2BwithUserData:(NSString *)userName withPass:(NSString *)userPass withAll:(NSArray *)allData withSpaceUU:(NSString *)spaceUU
  494. {
  495. //设置为B2B用户
  496. [[NSUserDefaults standardUserDefaults] setObject:@"B2BUser" forKey:@"ERPUserOrB2BUser"];
  497. // NSString *url = @"https://b2b.usoftchina.com/sso/login";
  498. NSString *url = @"https://sso.ubtob.com/sso/login";
  499. // NSString *url = @"http://113.105.74.135:8001/sso/login?appId=b2b";
  500. NSDictionary *params = @{
  501. @"appId":@"b2b",
  502. @"username":userName,
  503. @"password":userPass,
  504. //@"spaceId":@"76035"
  505. @"spaceUU":spaceUU
  506. };
  507. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  508. // DLog(@"进来请求:%@ -- %@",userName,userPass);
  509. AFHTTPSessionManager *manager = [UASNetworkManager manager];
  510. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  511. // manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
  512. //加上这句话
  513. [manager.securityPolicy setAllowInvalidCertificates:YES];
  514. [manager POST:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  515. NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
  516. NSDictionary *allHeaders = response.allHeaderFields;
  517. SLog(@"B2B登录的返回的请求头是什么:?:?:%@",allHeaders);
  518. NSString *cookieString = [allHeaders valueForKey:@"Set-Cookie"];
  519. DLog(@"B2B登录的返回的cookies是什么:?:?:%@",cookieString);
  520. //检验cookies是否过期
  521. [self testCookiesIsTrue:cookieString];
  522. [[UASWorkManager shareManager] loadAllPunchData];
  523. //保存数据
  524. [self saveDataWithsessionId:cookieString andAllData:allData];
  525. if (self.loginCompleted) {
  526. self.loginCompleted(nil);
  527. }
  528. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  529. DLog(@"B2B登录请求失败1:%ld",(long)error.code);
  530. DLog(@"B2B登录请求失败3:%@",error);
  531. if (self.loginCompleted) {
  532. self.loginCompleted(error);
  533. }
  534. NSData *returnData = [[error userInfo] objectForKey:@"com.alamofire.serialization.response.error.data"];
  535. if (returnData) {
  536. NSDictionary *content = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];//转换数据格式
  537. NSString *errorStr = [NSString stringWithFormat:@"%@",[content objectForKey:@"exceptionInfo"]];
  538. SLog(@"B2B登录请求失败2:%@",errorStr);
  539. }
  540. //B2B独立版特殊登录
  541. // NSHTTPURLResponse * responses = (NSHTTPURLResponse *)task.response;
  542. // if (responses.statusCode == 200) {
  543. //
  544. // NSString *cookieString = [[responses allHeaderFields] valueForKey:@"Set-Cookie"];
  545. // //保存数据
  546. // [self saveDataWithsessionId:cookieString andAllData:allData];
  547. // }
  548. }];
  549. }
  550. -(void)testCookiesIsTrue:(NSString *)cookies //测试cookies是否正确
  551. {
  552. NSString *url = @"http://b2b.usoftchina.com/authentication";
  553. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  554. UASNetworkManager *manager = [UASNetworkManager shareManager];
  555. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  556. NSString *test = [cookies stringByReplacingOccurrencesOfString:@"," withString:@";"];
  557. //设置cookie
  558. [manager.requestSerializer setValue:test forHTTPHeaderField:@"Cookie"];
  559. [manager request:url method:GET parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  560. DLog(@"验证Cookies成功:%@",responseObject);
  561. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  562. DLog(@"验证Cookies失败:%@",error);
  563. }];
  564. }
  565. #pragma mark --- B2B用户保存信息
  566. -(void)saveDataWithsessionId:(NSString *)sessionID andAllData:(NSArray *)dataDic
  567. {
  568. //保存sessionID --- B2B的为cookies
  569. sessionID = [sessionID stringByReplacingOccurrencesOfString:@"," withString:@";"];
  570. [[NSUserDefaults standardUserDefaults] setObject:sessionID forKey:@"sessionId"];
  571. NSMutableArray *b2bNameAndIpArray = [[NSMutableArray alloc]init];
  572. for (int i = 0; i < dataDic.count; i++) {
  573. NSDictionary *nameDic = dataDic[i];
  574. NSDictionary *nameAndIpDic = @{
  575. @"name":[NSString stringWithFormat:@"%@",[nameDic objectForKey:@"name"]],
  576. // @"ipAndPort":@"http://192.168.253.60:9090/platform-b2b/"
  577. //@"ipAndPort":@"http://192.168.253.192:8088/platform-b2b/"
  578. @"ipAndPort":@"http://b2b.usoftchina.com/"
  579. };
  580. [b2bNameAndIpArray addObject:nameAndIpDic];
  581. }
  582. [[NSUserDefaults standardUserDefaults] setObject:dataDic forKey:@"erpPlatItems"];
  583. // [[NSUserDefaults standardUserDefaults] setObject:b2bNameAndIpArray forKey:@"erpNameAndIpArray"];
  584. // [[NSUserDefaults standardUserDefaults] setObject:@"http://192.168.253.60:9090/platform-b2b/" forKey:@"ipAndPort"];
  585. //[[NSUserDefaults standardUserDefaults] setObject:@"http://192.168.253.192:8088/platform-b2b/" forKey:@"ipAndPort"];
  586. [[NSUserDefaults standardUserDefaults] setObject:@"http://b2b.usoftchina.com/" forKey:@"ipAndPort"];
  587. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal" object:nil];
  588. // [[NSNotificationCenter defaultCenter] postNotificationName:@"msgCount"object:nil];
  589. [[NSNotificationCenter defaultCenter] postNotificationName:@"changeCompany" object:nil];
  590. [[NSNotificationCenter defaultCenter] postNotificationName:@"mytest" object:nil];
  591. //OA权限设置
  592. [[NSNotificationCenter defaultCenter] postNotificationName:@"OAAdminJurisdiction" object:nil];
  593. //OA首页加载数据库
  594. }
  595. #pragma mark --- B2B登录后选择企业
  596. -(void)selectB2BCompany:(NSArray *)b2bArr
  597. {
  598. DLog(@"dengluxuanze:%@",b2bArr);
  599. _erpArray = b2bArr;
  600. if (_erpArray.count == 1) {
  601. NSString *enuu = [NSString stringWithFormat:@"%@",[_erpArray[0] objectForKey:@"enuu"]];
  602. NSDictionary *erpTempNameAndIpDic = [[[NSUserDefaults standardUserDefaults] objectForKey:@"erpNameAndIpArray"] objectAtIndex:0];
  603. [[NSUserDefaults standardUserDefaults] setObject:erpTempNameAndIpDic forKey:@"erpTempNameAndIpDic"];
  604. NSDictionary *b2b = [[[NSUserDefaults standardUserDefaults] objectForKey:@"erpPlatItems"] objectAtIndex:0];
  605. [[NSUserDefaults standardUserDefaults] setObject:b2b forKey:@"masterDic"];
  606. [[NSUserDefaults standardUserDefaults] setObject:enuu forKey:@"erpUuId"];
  607. [[NSUserDefaults standardUserDefaults] setObject:[_erpArray[0] objectForKey:@"account"] forKey:@"erpaccount"];
  608. NSString *pwdStr = [NSString encodeSeciWithStr:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"userPass"]]];
  609. [self loginB2BwithUserData:[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"] withPass:pwdStr withAll:_erpArray withSpaceUU:enuu];
  610. }
  611. else{
  612. CGFloat xWidth = SCREEN_WIDTH- 20.0f;
  613. CGFloat yHeight = 300.0f;
  614. CGFloat yOffset = (SCREEN_HEIGHT - yHeight)/2.0f;
  615. UIPopoverListView * companyPopList = [[UIPopoverListView alloc] initWithFrame:CGRectMake(10, yOffset, xWidth, yHeight) isDateView:NO];
  616. companyPopList.isCannotClickBackGround = YES;
  617. companyPopList.delegate = self;
  618. companyPopList.datasource = self;
  619. companyPopList.isCannotClickBackGround = NO;
  620. [companyPopList setTitle:@"请选择公司"];
  621. companyPopList.BackBlock=^(){
  622. };
  623. [companyPopList show];
  624. }
  625. }
  626. #pragma mark --- ERP登录
  627. -(void)checkPlatform:(NSArray *)platArray
  628. {
  629. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  630. [userDefaults setBool:NO forKey:@"b2bOpen"];
  631. [userDefaults setBool:NO forKey:@"erpOpen"];
  632. NSArray *erpArray = [self checkErpAccountCount:platArray];
  633. for (int i = 0; i < [platArray count]; i++) {
  634. id platForm = platArray[i];
  635. NSString *formName = [platForm objectForKey:@"platform"];
  636. if ([formName isEqualToString:@"B2B"]) {
  637. [userDefaults setObject:[platForm objectForKey:@"account"] forKey:@"b2bUserName"];
  638. }
  639. else if([formName isEqualToString:@"ERP"])
  640. {
  641. if ([erpArray count]==1) {
  642. isInERP=YES;
  643. id erpPlatItem=[erpArray objectAtIndex:0];
  644. NSString *webStrPort=[erpPlatItem objectForKey:@"website"];
  645. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  646. NSDictionary *erpTempNameAndIpDic=[[userDefaults objectForKey:@"erpNameAndIpArray"] objectAtIndex:0];
  647. [userDefaults setObject:erpTempNameAndIpDic forKey:@"erpTempNameAndIpDic"];
  648. [userDefaults setObject:[@"" stringByAppendingFormat:@"%@",[erpPlatItem objectForKey:@"enuu"]] forKey:@"erpUuId"];
  649. [userDefaults setObject:[erpPlatItem objectForKey:@"website"] forKey:@"erpPort"];
  650. [userDefaults setObject:webStrPort forKey:@"ipAndPort"];
  651. [userDefaults setObject:[erpPlatItem objectForKey:@"account"] forKey:@"erpUserName"];
  652. [userDefaults setObject:[erpPlatItem objectForKey:@"master"] forKey:@"erpMaster"];
  653. //保存登录数据
  654. [self newLoginExtend];
  655. }
  656. }
  657. else if([formName isEqualToString:@"SaaS"])
  658. {
  659. isInSaas=YES;
  660. }
  661. }
  662. if ([erpArray count]>1) {
  663. _erpArray = erpArray;
  664. CGFloat xWidth = SCREEN_WIDTH- 20.0f;
  665. CGFloat yHeight = 300.0f;
  666. CGFloat yOffset = (SCREEN_HEIGHT - yHeight)/2.0f;
  667. UIPopoverListView* companyPopList = [[UIPopoverListView alloc] initWithFrame:CGRectMake(10, yOffset, xWidth, yHeight) isDateView:NO];
  668. companyPopList.isCannotClickBackGround = YES;
  669. companyPopList.delegate=self;
  670. companyPopList.datasource=self;
  671. [companyPopList setTitle:@"请选择公司"];
  672. companyPopList.BackBlock=^(){
  673. [self dismissAlert];
  674. };
  675. [companyPopList show];
  676. }
  677. }
  678. #pragma mark --- 存储 公司(企业)名称 和 公司IP
  679. -(NSArray *)checkErpAccountCount:(NSArray *)platArray
  680. {
  681. _erpNameAndIpArray = [[NSMutableArray alloc] init];
  682. NSUserDefaults *userDefaults =[NSUserDefaults standardUserDefaults];
  683. NSMutableArray *erpArray = [[NSMutableArray alloc] initWithCapacity:0];
  684. for (int i=0; i<[platArray count]; i++) {
  685. id platForm = platArray[i];
  686. NSString *formName = [platForm objectForKey:@"platform"];
  687. if ([formName isEqualToString:@"ERP"]) {
  688. [erpArray addObject:platForm];
  689. NSString *webStrPort = [platForm objectForKey:@"website"];
  690. if (![webStrPort isEqualToString:@"null"]) {
  691. //存入字典 公司名 和 ip
  692. id tempDic = [NSDictionary dictionaryWithObjectsAndKeys:[platForm objectForKey:@"name"],@"name",webStrPort,@"ipAndPort",nil];
  693. //加入数组
  694. [_erpNameAndIpArray addObject:tempDic];
  695. }
  696. }else if([formName isEqualToString:@"B2B"])
  697. {
  698. /*做成跟ERP一样的数据格式*/
  699. NSArray *spacesArr = [platForm objectForKey:@"spaces"];
  700. for (int i = 0; i < spacesArr.count; i++) {
  701. /*如果B2B企业名跟ERP相同则不加入*/
  702. NSString *nameStr = FORMAT(@"%@",[spacesArr[i] objectForKey:@"name"]);
  703. int num = 0;
  704. for (int j = 0; j<platArray.count; j++) {
  705. id platForm1 = platArray[j];
  706. NSString *formName1 = [platForm1 objectForKey:@"platform"];
  707. if ([formName1 isEqualToString:@"ERP"]) {
  708. NSString *secondName = FORMAT(@"%@",[platForm1 objectForKey:@"name"]);
  709. if ([nameStr isEqualToString:secondName]) {
  710. num ++;
  711. }
  712. }
  713. }
  714. if (num == 0) {
  715. NSDictionary *dic = @{@"account":FORMAT(@"%@",[platForm objectForKey:@"account"]),
  716. @"imid":FORMAT(@"%@",[platForm objectForKey:@"imid"]),
  717. @"platform":@"B2B",
  718. @"enuu":FORMAT(@"%@",[spacesArr[i] objectForKey:@"enuu"]),
  719. @"name":FORMAT(@"%@",[spacesArr[i] objectForKey:@"name"]),
  720. @"master":@"",
  721. @"masterId":@"",
  722. @"userName":FORMAT(@"%@",[platForm objectForKey:@"userName"]),
  723. @"website":@"http://b2b.usoftchina.com/",
  724. @"businessCode":FORMAT(@"%@",[spacesArr[i] objectForKey:@"businessCode"]),
  725. };
  726. [erpArray addObject:dic];
  727. NSDictionary *tempDic = @{@"name":FORMAT(@"%@",[spacesArr[i] objectForKey:@"name"]),
  728. @"ipAndPort":@"http://b2b.usoftchina.com/"
  729. };
  730. [_erpNameAndIpArray addObject:tempDic];
  731. }
  732. }
  733. }
  734. }
  735. [userDefaults setObject:erpArray forKey:@"erpPlatItems"];
  736. [userDefaults setObject:_erpNameAndIpArray forKey:@"erpNameAndIpArray"];
  737. return erpArray;
  738. }
  739. #pragma mark --- 登录ERP
  740. -(void)newLoginExtend
  741. {
  742. NSString *url = FORMAT(@"%@mobile/login.action",g_id);
  743. NSDictionary *dic = @{@"enuu":g_B2B_enuu,@"token":g_accountToken};
  744. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  745. //执行网络请求
  746. DLog(@"开始登录请求!!!!");
  747. UASNetworkManager *loginSeverManager = [UASNetworkManager shareManager];
  748. loginSeverManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  749. [loginSeverManager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  750. //请求成功
  751. SLog(@"成功!");
  752. [[UASWorkManager shareManager] loadAllPunchData];
  753. erpIsLoginChecked=YES;
  754. [self dismissAlert];
  755. NSData *data=responseObject;
  756. NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
  757. //[self insertIpAndPort:tempIp];
  758. NSString* isSuccess=[dic objectForKey:@"success"];
  759. DLog(@"dic>>>>>>>>>>>>>>>>>>>>>>>>>=%@",dic);
  760. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  761. if (dic.count>0&&isSuccess.boolValue) {
  762. //保存sessionId
  763. [userDefaults setObject:[dic objectForKey:@"sessionId"] forKey:@"sessionId"];
  764. [userDefaults setObject:[dic objectForKey:@"erpaccount"] forKey:@"erpaccount"];
  765. [userDefaults setObject:FORMAT(@"%@",[dic objectForKey:@"uu"]) forKey:@"erpUuId"];
  766. [[NSUserDefaults standardUserDefaults] setObject:FORMAT(@"%@",[dic objectForKey:@"master"]) forKey:@"erpMaster"];
  767. [(AppDelegate*)[UIApplication sharedApplication].delegate getPersonIdFromSever:[dic objectForKey:@"erpaccount"]];
  768. [userDefaults setBool:YES forKey:@"loginState"];
  769. isNoFirstLogin=YES;
  770. isAutoLogin=YES;
  771. //重新注册设备
  772. if (![userDefaults boolForKey:@"isMeNoPushCao"]) {
  773. [(AppDelegate*)[UIApplication sharedApplication].delegate initPushData];
  774. }
  775. //
  776. //设置别名
  777. NSString *indexName=[@"" stringByAppendingFormat:@"%@",[userDefaults objectForKey:@"userName"]];
  778. [XGPush setAccount:indexName];
  779. [userDefaults setBool:YES forKey:@"erpOpen"];
  780. DLog(@"indexERP----------------name=%@",indexName);
  781. if (self.erpForB2bCookieBlock) {
  782. self.erpForB2bCookieBlock();
  783. }
  784. [[NSNotificationCenter defaultCenter] postNotificationName:@"msgCount"object:nil];
  785. [[NSNotificationCenter defaultCenter] postNotificationName:@"checkOfenSearchItem"object:nil];
  786. [[NSNotificationCenter defaultCenter] postNotificationName:@"changeCompany"object:nil];
  787. [[NSNotificationCenter defaultCenter] postNotificationName:@"kaiqizidongwaiqing" object:nil];
  788. [[NSNotificationCenter defaultCenter] postNotificationName:@"JOMSGREFRASHTABLE" object:nil];
  789. //OA权限设置
  790. [[NSNotificationCenter defaultCenter] postNotificationName:@"OAAdminJurisdiction" object:nil];
  791. //OA首页加载数据库
  792. //请求账套
  793. [self newGetMasterDatas];
  794. }else
  795. {
  796. [userDefaults setBool:NO forKey:@"erpOpen"];
  797. [UASAlertView showWithTitle:nil content:@"账号或密码错误,UAS登录失败" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  798. }];
  799. }
  800. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal"object:nil];
  801. //[self.navigationController popToRootViewControllerAnimated:YES];
  802. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  803. //请求失败
  804. if (self.loginCompleted) {
  805. self.loginCompleted(error);
  806. }
  807. DLog(@"失败!!! error=%@",error);
  808. erpIsLoginChecked=YES;
  809. [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"erpOpen"];
  810. [self dismissAlert];
  811. [UASAlertView showWithTitle:nil content:@"网络请求失败,服务器未连接!,UAS登录失败" sureTitle:Localized(@"UU_custom_sure") cancelTitle:nil click:^(NSInteger index) {
  812. }];
  813. [[NSNotificationCenter defaultCenter] postNotificationName:@"platformSignal"object:nil];
  814. //[self.navigationController popToRootViewControllerAnimated:YES];
  815. }];
  816. }
  817. //存入本地数据
  818. -(void)saveUserData
  819. {
  820. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  821. [userDefaults setObject:tempMasterDic forKey:@"masterDic"];
  822. //存一个master名,和先前使用的master数组
  823. [userDefaults setObject:masterText.text forKey:@"master"];
  824. [userDefaults setObject:doubleMasterArray forKey:@"doubleMasterArray"];
  825. [userDefaults setBool:isNoFirstLogin forKey:@"isFirstLogin"];
  826. [userDefaults setBool:isAutoLogin forKey:@"isAutoLogin"];
  827. [userDefaults setObject:ipAndPortArray forKey:@"ipAndPortArray"];
  828. DLog(@"aizheshi1:%@",tempMasterDic);
  829. DLog(@"aizheshi2:%@",masterText.text);
  830. DLog(@"aizheshi3:%@",doubleMasterArray);
  831. DLog(@"aizheshi4:%d",isNoFirstLogin);
  832. DLog(@"aizheshi5:%d",isAutoLogin);
  833. DLog(@"aizheshi6:%@",ipAndPortArray);
  834. }
  835. //取出本地数据,并且初始化 -- 没用
  836. -(void)initDataForLoginViewController
  837. {
  838. DLog(@"loginView---2");
  839. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  840. isNoFirstLogin=[userDefaults boolForKey:@"isFirstLogin"];
  841. isAutoLogin=[userDefaults boolForKey:@"isAutoLogin"];
  842. [self startAmation];
  843. if (isNoFirstLogin) {
  844. //[self startAmation];
  845. ipAndPortArray =[userDefaults objectForKey:@"ipAndPortArray"];
  846. dd1.tableArray=ipAndPortArray;
  847. nameText.text=[userDefaults stringForKey:@"userName"];
  848. NSString *pwdStr = [NSString encodeSeciWithStr:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"userPass"]]];
  849. passText.text=pwdStr;
  850. masterText.text=[userDefaults stringForKey:@"master"];
  851. doubleMasterArray=[userDefaults objectForKey:@"doubleMasterArray"];
  852. tempMasterDic=[userDefaults objectForKey:@"masterDic"];
  853. tempIp= [UASUserInfo shareManager].urlIp;
  854. //DLog(@"loginState=%@",[userDefaults objectForKey:@"loginState"]?@"YES":@"NO");
  855. if ([userDefaults boolForKey:@"isRemerberPass"]) {
  856. remerberPass.checked=YES;
  857. }
  858. else
  859. {
  860. remerberPass.checked=NO;
  861. }
  862. NSArray *array= [tempIp componentsSeparatedByString:@":"];
  863. DLog(@"%@",array);
  864. //dd1.textField.text=[array objectAtIndex:0];
  865. DLog(@"loginView---3");
  866. //duankou.text=[array objectAtIndex:1];
  867. DLog(@"loginView---4");
  868. }
  869. }
  870. //- (void)didReceiveMemoryWarning {
  871. // [super didReceiveMemoryWarning];
  872. // // Dispose of any resources that can be recreated.
  873. //
  874. //}
  875. #pragma mark --- 设置单列选择器
  876. //返回几列
  877. -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
  878. {
  879. return 1;
  880. }
  881. -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
  882. {
  883. return doubleMasterArray.count;
  884. }
  885. -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
  886. {
  887. return [[doubleMasterArray objectAtIndex:row] objectForKey:@"ma_function"];
  888. //[masterArray objectAtIndex:row];
  889. }
  890. -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
  891. {
  892. masterText.text=[[doubleMasterArray objectAtIndex:row] objectForKey:@"ma_function"];
  893. [masterText resignFirstResponder];
  894. tempMasterDic=[doubleMasterArray objectAtIndex:row];
  895. // defaultPickerRow_MASTER=row;
  896. }
  897. //UITextField delegate
  898. - (BOOL)textFieldShouldReturn:(UITextField *)textField {
  899. if (textField == nameText) { // _textField_QQ和_textField_password已被设为属性,判断键盘的第一响应者,如果是QQ输入框
  900. return [passText becomeFirstResponder]; //点击右下角的Next按钮,则将键盘第一响应者设为_textField_password,即密码输入框
  901. }else if(textField == passText){
  902. return [passText resignFirstResponder]; //否则(键盘第一响应者为密码输入框),则使键盘失去第一响应者,即消失
  903. }else if(textField ==dd1.textField)
  904. {
  905. return [duankou becomeFirstResponder];
  906. }else
  907. {
  908. return [duankou resignFirstResponder];
  909. }
  910. }
  911. - (IBAction)clickBackGround:(id)sender {
  912. [dd1.textField resignFirstResponder];
  913. [nameText resignFirstResponder];
  914. [passText resignFirstResponder];
  915. [masterText resignFirstResponder];
  916. [duankou resignFirstResponder];
  917. }
  918. -(void)backChooseLogin
  919. {
  920. DLog(@"点击来注销账户!!");
  921. NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
  922. [userDefaults setBool:NO forKey:@"isAutoLogin"];
  923. // AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
  924. // [myDelegate.rootNavController popToRootViewControllerAnimated:YES];
  925. }
  926. -(BOOL)checkStringByNumberOrStr:(NSString *)str
  927. {
  928. NSCharacterSet *cs;
  929. cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];
  930. NSString *filtered =
  931. [[str componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
  932. BOOL basic = [str isEqualToString:filtered];
  933. if (!basic) {
  934. }
  935. return basic;
  936. }
  937. //加密
  938. - (NSString *) hmacSha1:(NSString*)key text:(NSString*)text
  939. {
  940. const char *cKey = [key cStringUsingEncoding:NSUTF8StringEncoding];
  941. const char *cData = [text cStringUsingEncoding:NSUTF8StringEncoding];
  942. uint8_t cHMAC[CC_SHA256_DIGEST_LENGTH];
  943. CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
  944. //NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:CC_SHA1_DIGEST_LENGTH];
  945. NSString *hash;
  946. NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
  947. for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++)
  948. [output appendFormat:@"%02x", cHMAC[i]];
  949. hash = output;
  950. return hash;
  951. }
  952. #pragma mark --- UIPopoverListView delegate FUN
  953. - (UITableViewCell *)popoverListView:(UIPopoverListView *)popoverListView
  954. cellForIndexPath:(NSIndexPath *)indexPath
  955. {
  956. static NSString *identifier = @"cell";
  957. UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
  958. reuseIdentifier:identifier] ;
  959. id erpPlatItem = [_erpArray objectAtIndex:indexPath.row];
  960. cell.textLabel.text = [erpPlatItem objectForKey:@"name"];
  961. cell.textLabel.font = FONT_SIZE(13);;
  962. return cell;
  963. }
  964. - (NSInteger)popoverListView:(UIPopoverListView *)popoverListView
  965. numberOfRowsInSection:(NSInteger)section
  966. {
  967. return [_erpArray count];
  968. }
  969. - (void)popoverListView:(UIPopoverListView *)popoverListView
  970. didSelectIndexPath:(NSIndexPath *)indexPath
  971. {
  972. id erpPlatItem = [_erpArray objectAtIndex:indexPath.row];
  973. [[NSUserDefaults standardUserDefaults] setObject:erpPlatItem forKey:@"userManageAllDataDic"];
  974. NSString *userInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"ERPUserOrB2BUser"];
  975. if ([userInfo isEqualToString:@"ERPUser"]) {
  976. if ([[erpPlatItem objectForKey:@"platform"] isEqualToString:@"ERP"]) {
  977. NSUserDefaults *userDefaults =[NSUserDefaults standardUserDefaults];
  978. NSDictionary *erpTempNameAndIpDic = [[userDefaults objectForKey:@"erpNameAndIpArray"] objectAtIndex:indexPath.row];
  979. [userDefaults setObject:erpTempNameAndIpDic forKey:@"erpTempNameAndIpDic"];
  980. [userDefaults setObject:[@"" stringByAppendingFormat:@"%@",[erpPlatItem objectForKey:@"enuu"]] forKey:@"erpUuId"];
  981. [userDefaults setObject:[erpPlatItem objectForKey:@"website"] forKey:@"erpPort"];
  982. [userDefaults setObject:[erpPlatItem objectForKey:@"website"] forKey:@"ipAndPort"];
  983. [userDefaults setObject:[erpPlatItem objectForKey:@"account"] forKey:@"erpUserName"];
  984. [userDefaults setObject:[erpPlatItem objectForKey:@"master"] forKey:@"erpMaster"];
  985. DLog(@"GAGAG1--:%@",erpTempNameAndIpDic);
  986. //保存登录数据
  987. [self newLoginExtend];
  988. }
  989. else{
  990. NSString *enuu = [NSString stringWithFormat:@"%@",[erpPlatItem objectForKey:@"enuu"]];
  991. NSDictionary *erpTempNameAndIpDic = [[[NSUserDefaults standardUserDefaults] objectForKey:@"erpNameAndIpArray"] objectAtIndex:indexPath.row];
  992. [[NSUserDefaults standardUserDefaults] setObject:erpTempNameAndIpDic forKey:@"erpTempNameAndIpDic"];
  993. NSDictionary *b2b = [[[NSUserDefaults standardUserDefaults] objectForKey:@"erpPlatItems"] objectAtIndex:indexPath.row];
  994. [[NSUserDefaults standardUserDefaults] setObject:b2b forKey:@"masterDic"];
  995. [[NSUserDefaults standardUserDefaults] setObject:enuu forKey:@"erpUuId"];
  996. //默认为B2B用户
  997. [[NSUserDefaults standardUserDefaults] setObject:@"B2BUser" forKey:@"ERPUserOrB2BUser"];
  998. //保存个人emcode
  999. NSString *account = [NSString stringWithFormat:@"%@",[erpPlatItem objectForKey:@"account"]];
  1000. [[NSUserDefaults standardUserDefaults] setObject:account forKey:@"erpUserName"];
  1001. [[NSUserDefaults standardUserDefaults] setObject:account forKey:@"erpaccount"];
  1002. //保存个人中文名字
  1003. NSString *userNameStr = [NSString stringWithFormat:@"%@",[erpPlatItem objectForKey:@"userName"]];
  1004. [[NSUserDefaults standardUserDefaults] setObject:userNameStr forKey:@"personName"];
  1005. NSString *pwdStr = [NSString encodeSeciWithStr:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"userPass"]]];
  1006. [self loginB2BwithUserData:[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"] withPass:pwdStr withAll:_erpArray withSpaceUU:enuu];
  1007. }
  1008. }
  1009. else if ([userInfo isEqualToString:@"B2BUser"]) {
  1010. NSString *enuu = [NSString stringWithFormat:@"%@",[erpPlatItem objectForKey:@"enuu"]];
  1011. NSDictionary *erpTempNameAndIpDic = [[[NSUserDefaults standardUserDefaults] objectForKey:@"erpNameAndIpArray"] objectAtIndex:indexPath.row];
  1012. [[NSUserDefaults standardUserDefaults] setObject:erpTempNameAndIpDic forKey:@"erpTempNameAndIpDic"];
  1013. NSDictionary *b2b = [[[NSUserDefaults standardUserDefaults] objectForKey:@"erpPlatItems"] objectAtIndex:indexPath.row];
  1014. [[NSUserDefaults standardUserDefaults] setObject:b2b forKey:@"masterDic"];
  1015. [[NSUserDefaults standardUserDefaults] setObject:enuu forKey:@"erpUuId"];
  1016. [self loginB2BwithUserData:[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"] withPass:[[NSUserDefaults standardUserDefaults] objectForKey:@"userPass"] withAll:_erpArray withSpaceUU:enuu];
  1017. }
  1018. }
  1019. - (NSInteger)numberOfSectionsInUIPopoverListView:(UIPopoverListView *)tableView
  1020. {
  1021. return 1;
  1022. }
  1023. - (CGFloat)popoverListView:(UIPopoverListView *)popoverListView
  1024. heightForRowAtIndexPath:(NSIndexPath *)indexPath
  1025. {
  1026. return 36.0f;
  1027. }
  1028. -(NSString*)popoverListView:(UIPopoverListView*)popoverListView titleForHeaderInSection:(NSInteger)section
  1029. {
  1030. return @"";
  1031. }
  1032. @end