JXTransferDeatilVC.m 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. //
  2. // JXTransferDeatilVC.m
  3. // shiku_im
  4. //
  5. // Created by 1 on 2019/3/2.
  6. // Copyright © 2019年 Reese. All rights reserved.
  7. //
  8. #import "JXTransferDeatilVC.h"
  9. #import "JXTransferModel.h"
  10. #import "JXMyMoneyViewController.h"
  11. typedef NS_ENUM(NSInteger, JXTransferDeatilType) {
  12. JXTransferDeatilTypeMySend, // 我发送的转账
  13. JXTransferDeatilTypeWait, // 待确定收款
  14. JXTransferDeatilTypeComplete, // 完成收款
  15. JXTransferDeatilTypeOverdue, // 过期
  16. };
  17. @interface JXTransferDeatilVC () <UIAlertViewDelegate>
  18. @property (nonatomic, assign) JXTransferDeatilType type;
  19. @property (nonatomic, strong) JXTransferModel *model;
  20. @property (nonatomic, strong) UIImageView *imgV;
  21. @property (nonatomic, strong) UILabel *hintLab;
  22. @property (nonatomic, strong) UILabel *moneyLabel;
  23. @property (nonatomic, strong) UILabel *oneDayLabel;
  24. @property (nonatomic, strong) UILabel *clickLab;
  25. @property (nonatomic, strong) UIButton *completeBtn;
  26. @property (nonatomic, strong) UILabel *transferTime;
  27. @property (nonatomic, strong) UILabel *getTime;
  28. @end
  29. @implementation JXTransferDeatilVC
  30. - (instancetype)init {
  31. if (self = [super init]) {
  32. self.heightHeader = 0;
  33. self.heightFooter = 0;
  34. [self createHeadAndFoot];
  35. self.model = [[JXTransferModel alloc] init];
  36. [self setupViews];
  37. [g_notify addObserver:self selector:@selector(transferReceive:) name:kXMPPMessageTransferReceiveNotification object:nil]; // 已领取转账
  38. [g_notify addObserver:self selector:@selector(transferBack:) name:kXMPPMessageTransferBackNotification object:nil]; // 转账过期
  39. }
  40. return self;
  41. }
  42. - (void)viewDidLoad {
  43. [super viewDidLoad];
  44. [self getServerData];
  45. }
  46. - (void)setupViews {
  47. self.tableBody.backgroundColor = HEXCOLOR(0xF2F2F2);
  48. UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, JX_SCREEN_TOP - 46, 46, 46)];
  49. [btn setBackgroundImage:[UIImage imageNamed:@"title_back_black_big"] forState:UIControlStateNormal];
  50. [btn addTarget:self action:@selector(actionQuit) forControlEvents:UIControlEventTouchUpInside];
  51. [self.view addSubview:btn];
  52. // 顶部图标
  53. _imgV = [[UIImageView alloc] init];
  54. [self.tableBody addSubview:_imgV];
  55. // 等待提示语
  56. _hintLab = [[UILabel alloc] init];
  57. _hintLab.font = SYSFONT(14);
  58. [self.tableBody addSubview:_hintLab];
  59. //金额
  60. _moneyLabel = [[UILabel alloc] init];
  61. _moneyLabel.font = SYSFONT(30);
  62. _moneyLabel.textAlignment = NSTextAlignmentCenter;
  63. [self.tableBody addSubview:_moneyLabel];
  64. _oneDayLabel = [[UILabel alloc] init];
  65. _oneDayLabel.textColor = [UIColor lightGrayColor];
  66. _oneDayLabel.font = SYSFONT(14);
  67. [self.tableBody addSubview:_oneDayLabel];
  68. _clickLab = [[UILabel alloc] init];
  69. _clickLab.font = SYSFONT(14);
  70. _clickLab.textColor = HEXCOLOR(0x383893);
  71. _clickLab.userInteractionEnabled = YES;
  72. [self.tableBody addSubview:_clickLab];
  73. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClickLab)];
  74. [_clickLab addGestureRecognizer:tap];
  75. _completeBtn = [[UIButton alloc] init];
  76. _completeBtn.layer.masksToBounds = YES;
  77. _completeBtn.layer.cornerRadius = 3.f;
  78. [_completeBtn setTitle:Localized(@"JX_ConfirmReceipt") forState:UIControlStateNormal];
  79. [_completeBtn setBackgroundColor:HEXCOLOR(0x1aad19)];
  80. [_completeBtn addTarget:self action:@selector(clickCompleteBtn) forControlEvents:UIControlEventTouchUpInside];
  81. [self.tableBody addSubview:_completeBtn];
  82. _transferTime = [[UILabel alloc] init];
  83. _transferTime.textColor = [UIColor lightGrayColor];
  84. _transferTime.font = SYSFONT(14);
  85. [self.tableBody addSubview:_transferTime];
  86. _getTime = [[UILabel alloc] init];
  87. _getTime.textColor = [UIColor lightGrayColor];
  88. _getTime.font = SYSFONT(14);
  89. [self.tableBody addSubview:_getTime];
  90. }
  91. - (void)updateViews {
  92. UIImage *image;
  93. NSString *hintStr;
  94. NSString *oneDayStr;
  95. NSString *clickLabStr;
  96. NSString *botTimeStr;
  97. NSString *botTime;
  98. if (self.type == JXTransferDeatilTypeMySend) {
  99. image = [UIImage imageNamed:@"ic_ts_status2"];
  100. hintStr = [NSString stringWithFormat:Localized(@"JX_ReceiptConfirmedBy%@"),self.model.userName];
  101. oneDayStr = Localized(@"JX_FriendNotConfirm1Day");
  102. clickLabStr = Localized(@"JX_ResendTransferMessage");
  103. }else if (self.type == JXTransferDeatilTypeWait) {
  104. image = [UIImage imageNamed:@"ic_ts_status2"];
  105. hintStr = Localized(@"JX_PaymentConfirmed");
  106. oneDayStr = Localized(@"JX_SelfNotConfirm1Day");
  107. }else if (self.type == JXTransferDeatilTypeComplete) {
  108. image = [UIImage imageNamed:@"ic_ts_status1"];
  109. clickLabStr = Localized(@"JX_LookAtTheChange");
  110. botTimeStr = Localized(@"JX_CollectMoneyTime");
  111. botTime = self.model.receiptTime;
  112. }else if (self.type == JXTransferDeatilTypeOverdue) {
  113. image = [UIImage imageNamed:@"ic_ts_status3"];
  114. hintStr = Localized(@"JX_Returned(expired)");
  115. botTimeStr = Localized(@"JX_ExpirationTime");
  116. oneDayStr = Localized(@"JX_TheChangeHasBeenRefunded");
  117. clickLabStr = Localized(@"JX_LookAtTheChange");
  118. botTime = self.model.outTime;
  119. }
  120. // 顶部图标
  121. _imgV.frame = CGRectMake((JX_SCREEN_WIDTH-40)/2, JX_SCREEN_TOP+20, 40, 40);
  122. _imgV.image = image;
  123. // 等待提示语
  124. CGSize size = [hintStr sizeWithAttributes:@{NSFontAttributeName:SYSFONT(14)}];
  125. _hintLab.frame = CGRectMake((JX_SCREEN_WIDTH-size.width)/2, CGRectGetMaxY(_imgV.frame)+20, size.width, size.height);
  126. _hintLab.text = hintStr;
  127. //金额
  128. _moneyLabel.frame = CGRectMake(0, CGRectGetMaxY(_hintLab.frame)+18, JX_SCREEN_WIDTH, 30);
  129. _moneyLabel.text = [NSString stringWithFormat:@"¥%.2f",self.model.money];
  130. // 1天内朋友未确认,将退还给你 || 已退款到零钱,
  131. CGSize oneDaySize = [oneDayStr sizeWithAttributes:@{NSFontAttributeName:SYSFONT(14)}];
  132. CGSize clickLabSize = [clickLabStr sizeWithAttributes:@{NSFontAttributeName:SYSFONT(14)}];
  133. _oneDayLabel.frame = CGRectMake((JX_SCREEN_WIDTH-oneDaySize.width-clickLabSize.width)/2, CGRectGetMaxY(_moneyLabel.frame)+20, oneDaySize.width, oneDaySize.height);
  134. _oneDayLabel.text = oneDayStr;
  135. // 查看零钱 || 重发转账消息
  136. _clickLab.frame = CGRectMake(CGRectGetMaxX(_oneDayLabel.frame), _oneDayLabel.frame.origin.y, clickLabSize.width, clickLabSize.height);
  137. _clickLab.hidden = clickLabStr.length <= 0;
  138. _clickLab.text = clickLabStr;
  139. // 确认收款按钮
  140. _completeBtn.frame = CGRectMake(100, CGRectGetMaxY(_oneDayLabel.frame)+40, JX_SCREEN_WIDTH-100*2, 40);
  141. _completeBtn.hidden = self.type != JXTransferDeatilTypeWait;
  142. //转账时间
  143. NSString *tranStr = [NSString stringWithFormat:@"%@:%@",Localized(@"JX_TransferTime"),self.model.createTime];
  144. CGSize trSize = [tranStr sizeWithAttributes:@{NSFontAttributeName:SYSFONT(14)}];
  145. _transferTime.frame = CGRectMake((JX_SCREEN_WIDTH-trSize.width)/2, JX_SCREEN_HEIGHT-130, trSize.width, 20);
  146. _transferTime.text = tranStr;
  147. //收款 || 过期 时间
  148. NSString *getStr = [NSString stringWithFormat:@"%@:%@",botTimeStr,botTime];
  149. CGSize getSize = [getStr sizeWithAttributes:@{NSFontAttributeName:SYSFONT(14)}];
  150. _getTime.frame = CGRectMake(_transferTime.frame.origin.x, JX_SCREEN_HEIGHT-100, getSize.width, 20);
  151. _getTime.text = getStr;
  152. _getTime.hidden = self.type != JXTransferDeatilTypeComplete && self.type != JXTransferDeatilTypeOverdue;
  153. }
  154. - (void)clickCompleteBtn {
  155. [g_server getTransfer:self.msg.objectId toView:self];
  156. }
  157. - (void)onClickLab {
  158. if (self.type == JXTransferDeatilTypeComplete || self.type == JXTransferDeatilTypeOverdue) {
  159. JXMyMoneyViewController *moneyVC = [[JXMyMoneyViewController alloc] init];
  160. [g_navigation pushViewController:moneyVC animated:YES];
  161. }else if (self.type == JXTransferDeatilTypeMySend) {
  162. [g_App showAlert:Localized(@"JX_ResendTransferMessage") delegate:self];
  163. }
  164. }
  165. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
  166. if (buttonIndex == 1) {
  167. int time = (int)([[NSDate date] timeIntervalSince1970] - [self.msg.timeSend timeIntervalSince1970]) / 60 % 60;
  168. if (time >= 5) {
  169. if (self.delegate && [self.delegate respondsToSelector:self.onResend]) {
  170. [self.delegate performSelectorOnMainThread:self.onResend withObject:self.msg waitUntilDone:NO];
  171. [self actionQuit];
  172. }
  173. }else {
  174. [g_App showAlert:[NSString stringWithFormat:Localized(@"JX_ Again%dMinutesLater"),5-time]];
  175. }
  176. }
  177. }
  178. - (void)transferReceive:(NSNotification *)noti {
  179. // JXMessageObject *msg = noti.object;
  180. // 收到收钱消息,获取当前时间并刷新界面
  181. NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
  182. NSTimeInterval time=[date timeIntervalSince1970];
  183. NSString*timeString = [NSString stringWithFormat:@"%0.f", time];
  184. self.model.receiptTime = [self getTime:timeString];
  185. self.type = JXTransferDeatilTypeComplete;
  186. [self updateViews];
  187. }
  188. - (void)transferBack:(NSNotification *)noti {
  189. // 收到过期消息,获取当前时间并刷新界面
  190. NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
  191. NSTimeInterval time=[date timeIntervalSince1970];
  192. NSString*timeString = [NSString stringWithFormat:@"%0.f", time];
  193. self.model.outTime = [self getTime:timeString];
  194. self.type = JXTransferDeatilTypeOverdue;
  195. [self updateViews];
  196. }
  197. - (void)getServerData {
  198. [g_server transferDetail:self.msg.objectId toView:self];
  199. }
  200. -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
  201. [_wait stop];
  202. if([aDownload.action isEqualToString:act_getTransferInfo]){
  203. [self.model getTransferDataWithDict:dict];
  204. if (self.model.status == 1) {
  205. if (self.model.userId == [[NSString stringWithFormat:@"%@",MY_USER_ID] longLongValue]) {
  206. self.type = JXTransferDeatilTypeMySend;
  207. }else {
  208. self.type = JXTransferDeatilTypeWait;
  209. }
  210. }
  211. else if (self.model.status == 2) {
  212. self.type = JXTransferDeatilTypeComplete;
  213. [g_notify postNotificationName:kUpdateTransferMsgFileSize object:[(NSDictionary *)dict[@"data"] objectForKey:@"id"]];
  214. }
  215. else if (self.model.status == -1) {
  216. self.type = JXTransferDeatilTypeOverdue;
  217. [g_notify postNotificationName:kUpdateTransferMsgFileSize object:[(NSDictionary *)dict[@"data"] objectForKey:@"id"]];
  218. }
  219. [self updateViews];
  220. }
  221. if([aDownload.action isEqualToString:act_receiveTransfer]){
  222. self.model.receiptTime = [self getTime:dict[@"time"]];
  223. self.type = JXTransferDeatilTypeComplete;
  224. [self updateViews];
  225. [g_notify postNotificationName:kUpdateTransferMsgFileSize object:dict[@"transferId"]];
  226. }
  227. }
  228. -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
  229. [_wait stop];
  230. if([aDownload.action isEqualToString:act_getTransferInfo]){
  231. if ([[dict objectForKey:@"resultCode"] intValue] == 100301 || [[dict objectForKey:@"resultCode"] intValue] == 100302) {
  232. NSDictionary *data = [dict objectForKey:@"data"];
  233. [self.model getTransferDataWithDict:data];
  234. if (self.model.status == 1) {
  235. if (self.model.userId == [[NSString stringWithFormat:@"%@",MY_USER_ID] longLongValue]) {
  236. self.type = JXTransferDeatilTypeMySend;
  237. }else {
  238. self.type = JXTransferDeatilTypeWait;
  239. }
  240. }
  241. else if (self.model.status == 2) {
  242. self.type = JXTransferDeatilTypeComplete;
  243. [g_notify postNotificationName:kUpdateTransferMsgFileSize object:[(NSDictionary *)dict[@"data"] objectForKey:@"id"]];
  244. }
  245. else if (self.model.status == -1) {
  246. self.type = JXTransferDeatilTypeOverdue;
  247. [g_notify postNotificationName:kUpdateTransferMsgFileSize object:[(NSDictionary *)dict[@"data"] objectForKey:@"id"]];
  248. }
  249. [self updateViews];
  250. return hide_error;
  251. }
  252. }
  253. return show_error;
  254. }
  255. -(int) didServerConnectError:(JXConnection*)aDownload error:(NSError *)error{//error为空时,代表超时
  256. [_wait stop];
  257. return show_error;
  258. }
  259. -(void) didServerConnectStart:(JXConnection*)aDownload{
  260. [_wait start];
  261. }
  262. // 时间戳转换时间
  263. - (NSString *)getTime:(NSString *)time {
  264. NSTimeInterval interval = [time doubleValue];
  265. NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
  266. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  267. [formatter setDateStyle:NSDateFormatterMediumStyle];
  268. [formatter setTimeStyle:NSDateFormatterShortStyle];
  269. [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  270. NSString*currentDateStr = [formatter stringFromDate: date];
  271. return currentDateStr;
  272. }
  273. @end