| | |
| | | 138F0C322C7594BB0072A16C /* TreatyVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138F0C312C7594BB0072A16C /* TreatyVC.swift */; }; |
| | | 138F0C352C7597CA0072A16C /* HelpCenterVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138F0C332C7597CA0072A16C /* HelpCenterVC.swift */; }; |
| | | 138F0C362C7597CA0072A16C /* HelpCenterVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 138F0C342C7597CA0072A16C /* HelpCenterVC.xib */; }; |
| | | 138F9E0F2CF4229500075C5D /* PurchaseMethodView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138F9E0E2CF4229500075C5D /* PurchaseMethodView.swift */; }; |
| | | 138F9E112CF422B200075C5D /* PurchaseMethodView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 138F9E102CF422B200075C5D /* PurchaseMethodView.xib */; }; |
| | | 138FE0DE2C757B2A00A964E8 /* BindPhone_1_VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138FE0DC2C757B2A00A964E8 /* BindPhone_1_VC.swift */; }; |
| | | 138FE0DF2C757B2A00A964E8 /* BindPhone_1_VC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 138FE0DD2C757B2A00A964E8 /* BindPhone_1_VC.xib */; }; |
| | | 138FE0E22C757DE900A964E8 /* BindPhone_2_VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138FE0E02C757DE900A964E8 /* BindPhone_2_VC.swift */; }; |
| | |
| | | 138F0C312C7594BB0072A16C /* TreatyVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TreatyVC.swift; sourceTree = "<group>"; }; |
| | | 138F0C332C7597CA0072A16C /* HelpCenterVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpCenterVC.swift; sourceTree = "<group>"; }; |
| | | 138F0C342C7597CA0072A16C /* HelpCenterVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HelpCenterVC.xib; sourceTree = "<group>"; }; |
| | | 138F9E0E2CF4229500075C5D /* PurchaseMethodView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurchaseMethodView.swift; sourceTree = "<group>"; }; |
| | | 138F9E102CF422B200075C5D /* PurchaseMethodView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PurchaseMethodView.xib; sourceTree = "<group>"; }; |
| | | 138FE0DC2C757B2A00A964E8 /* BindPhone_1_VC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BindPhone_1_VC.swift; sourceTree = "<group>"; }; |
| | | 138FE0DD2C757B2A00A964E8 /* BindPhone_1_VC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BindPhone_1_VC.xib; sourceTree = "<group>"; }; |
| | | 138FE0E02C757DE900A964E8 /* BindPhone_2_VC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BindPhone_2_VC.swift; sourceTree = "<group>"; }; |
| | |
| | | 13463E9B2CDE2CD500DD0C53 /* View */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 138F9E0E2CF4229500075C5D /* PurchaseMethodView.swift */, |
| | | 138F9E102CF422B200075C5D /* PurchaseMethodView.xib */, |
| | | ); |
| | | path = View; |
| | | sourceTree = "<group>"; |
| | |
| | | 13985DBF2C69DDF90046B6DC /* HomeTopMenuView.xib in Resources */, |
| | | 13C5838E2C86A4F90071BCBE /* apngb-animated-level-5.png in Resources */, |
| | | 1385E00B2C6C57A900AADB1F /* HomeItemDetailVC.xib in Resources */, |
| | | 138F9E112CF422B200075C5D /* PurchaseMethodView.xib in Resources */, |
| | | 138995422C943AA700BC7F78 /* static-level-9.png in Resources */, |
| | | 13B021DB2C75DD0600414769 /* BankWithdrawVC.xib in Resources */, |
| | | 1338A6DE2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib in Resources */, |
| | |
| | | 13985DB82C69B80D0046B6DC /* Themes.swift in Sources */, |
| | | 13985DD02C69F2A80046B6DC /* HomeHeaderVC.swift in Sources */, |
| | | 135D09212C9167F800658880 /* TreeTeskDetailListTCell.swift in Sources */, |
| | | 138F9E0F2CF4229500075C5D /* PurchaseMethodView.swift in Sources */, |
| | | 130AA4A92C72F71700F20944 /* CourseDetialVideoVC.swift in Sources */, |
| | | 1336EFA52C6DEB550075E070 /* HoverHeaderFlowLayout.swift in Sources */, |
| | | 13985DB52C69B7DF0046B6DC /* Def.swift in Sources */, |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_aP@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_aP@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_aP_1@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_aP_1@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_apple@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_apple@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_wxP@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_wxP@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_wxP_1@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_wxP_1@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | var titleContent:String{ |
| | | switch self { |
| | | case .level_1:return "亲爱的家人,生命之树的种子已植入这片沃土,请以农夫的心态用心浇灌,为你加油哦。" |
| | | case .level_2:return "恭喜您,种子发芽了,爱的旅程已经开始,为你加油!" |
| | | case .level_3:return "幼苗拔地而起,智慧俏然萌发,前方的道路,更加的明亮,继续努力吧!" |
| | | case .level_4:return "树苗任成长,内心变得更加的柔软包容。未来正在向你招手。" |
| | | case .level_5:return "小树扎下了深深的根,离爱的梦想越来越近,继续坚持吧。" |
| | | case .level_6:return "大树已枝繁叶茂,自由的伸展,你的努力成就了这份美好,未来将更加的璀璨。" |
| | | case .level_7:return "智慧之花即将绽放,满载着希望与能量,前路无限的可能!" |
| | | case .level_8:return "恭喜你,智慧的花朵已经绽放,让我们走在充满芬芳的道路上吧!" |
| | | case .level_9:return "智慧之花开满枝头,满满的活力和美好,向你涌来了!" |
| | | case .level_10:return "真爱的果实已挂满枝头,丰盛而充实,人生如此美好,感谢您的浇灌!" |
| | | } |
| | | } |
| | | |
| | | var sound:String{ |
| | | switch self { |
| | | case .level_1: return oss_domain + "/xinquan/1d3254a9966b476789491032d8bb908a.wav" |
| | |
| | | }else{ |
| | | DispatchQueue.main.asyncAfter(delay: 0.6) { |
| | | self.navigationController?.popViewController() |
| | | |
| | | let miniProgram = WXLaunchMiniProgramReq.object() |
| | | #if DEBUG |
| | | miniProgram.miniProgramType = .preview |
| | | #else |
| | | miniProgram.miniProgramType = .release |
| | | #endif |
| | | miniProgram.path = "" |
| | | WXApi.send(miniProgram){ s in |
| | | if !s{ |
| | | alert(msg: "打开失败") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | case .none:break |
| | | default:break |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | let Refreh_PaymentWallet_Noti = Notification.Name.init("Refreh_PaymentWallet_Noti") |
| | | |
| | | |
| | | enum TapType{ |
| | | case t1 |
| | | case t2 //z__f__b |
| | | case t3 //w__x |
| | | } |
| | | |
| | | class PaymentOrderVC: BaseVC { |
| | | |
| | | enum PaymentOrderType { |
| | | case course |
| | | case muse |
| | | enum PaymentOrderType:Int{ |
| | | case muse = 1 |
| | | case course = 2 |
| | | case vip = 3 |
| | | case recharge = 4 |
| | | } |
| | | |
| | | @IBOutlet weak var image_cover: UIImageView! |
| | |
| | | @IBOutlet weak var tf_phone: QMUITextField! |
| | | @IBOutlet weak var label_walletBalance: UILabel! |
| | | @IBOutlet weak var btn_isreadAgreement: UIButton! |
| | | |
| | | @IBOutlet weak var label_p_1: UILabel! |
| | | @IBOutlet weak var label_p_2: UILabel! |
| | | @IBOutlet weak var btn_tap0: TapBtn! |
| | | @IBOutlet weak var btn_tap1: TapBtn! |
| | | @IBOutlet weak var btn_tap2: TapBtn! |
| | | |
| | | @IBOutlet weak var img_action_1: UIImageView! |
| | | @IBOutlet weak var img_action_2: UIImageView! |
| | | @IBOutlet weak var img_action_3: UIImageView! |
| | | |
| | | private var tapType:TapType? |
| | | |
| | | private var isShowMore:Bool = false |
| | | private var discountByCoin:Bool = false |
| | | |
| | | private var museItemModel:MeditationModel? |
| | | private var courseItemModel:CourseModel? |
| | | private var giftUserId:Int? |
| | |
| | | private var type:PaymentOrderType! |
| | | private var showType:DisplayType! |
| | | private var businessId:Int? |
| | | |
| | | private var orderId:String? //下单后的ID |
| | | |
| | | init(museItemModel:MeditationModel? = nil,courseItemModel:CourseModel? = nil,type:PaymentOrderType,giftToOther:Bool = false,showType:DisplayType!,businessId:Int? = nil) { |
| | | super.init(nibName: nil, bundle: nil) |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "确认订单" |
| | | btn_tap0.isUserInteractionEnabled = false |
| | | view_searchUserResult.isHidden = true |
| | | view_searchUserInput.isHidden = !giftToOther |
| | | img_action_1.image = UIImage(named: "icon_choose_small_s") |
| | | |
| | | getBalance() |
| | | |
| | |
| | | self.courseModel = m |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl.components(separatedBy: ",").first?.jq_urlEncoded())) |
| | | self.label_courseName.text = m.courseTitle |
| | | self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | |
| | | self.label_teacher.text = "导师 \(m.tutor)" |
| | | self.label_paymentCount.text = "x1" |
| | | |
| | | if self.isShowMore{ |
| | | self.label_price.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | self.label_orderPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | }else{ |
| | | self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_orderPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | self.museModel = m |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl.components(separatedBy: ",").first?.jq_urlEncoded())) |
| | | self.label_courseName.text = m.meditationTitle |
| | | self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_teacher.text = "" |
| | | self.label_paymentCount.text = "x1" |
| | | |
| | | if self.isShowMore{ |
| | | self.label_price.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | self.label_orderPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | }else{ |
| | | self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_orderPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | Services.getTurn().subscribe(onNext: {[weak self]data in |
| | | guard let weakSelf = self else { return } |
| | | if let m = data.data,m == true{ |
| | | weakSelf.btn_tap0.isUserInteractionEnabled = true |
| | | weakSelf.isShowMore = m |
| | | weakSelf.img_action_1.image = UIImage(named: "icon_choose_small_1") |
| | | weakSelf.btn_tap1.isHidden = !m |
| | | weakSelf.btn_tap2.isHidden = !m |
| | | weakSelf.getBalance() |
| | | |
| | | if let m = weakSelf.courseModel{ |
| | | weakSelf.label_price.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | weakSelf.label_orderPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | weakSelf.label_totalPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | } |
| | | |
| | | if let m = weakSelf.museModel{ |
| | | weakSelf.label_price.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | weakSelf.label_orderPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | weakSelf.label_totalPrice.text = "¥\(m.iosPrice.jq_formatFloat)" |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | override func setUI() { |
| | | super.setUI() |
| | | |
| | | label_p_1.text = ("支"+"付").appending("宝").appending("支").appending("付") |
| | | label_p_2.text = ("微"+"信").appending("支").appending("付") |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(Refreh_PaymentWallet_Noti).take(until: self.rx.deallocated).subscribe(onNext: {_ in |
| | | self.getBalance() |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | NotificationCenter.default.rx.notification(UIApplication.didBecomeActiveNotification).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in |
| | | guard let weakSelf = self else { return } |
| | | if weakSelf.isShowMore && weakSelf.orderId != nil{ |
| | | Services.queryPayment(orderId: weakSelf.orderId!).subscribe(onNext: {data in |
| | | if let str = data.data{ |
| | | switch str{ |
| | | case "succeeded": |
| | | alertSuccess(msg: "购买成功") |
| | | var id = 0 |
| | | var money:Double = 0 |
| | | switch weakSelf.type { |
| | | case .muse: |
| | | id = weakSelf.museModel!.id |
| | | money = weakSelf.museModel!.iosPrice |
| | | case .course: |
| | | id = weakSelf.courseModel!.id |
| | | money = weakSelf.courseModel!.iosPrice |
| | | default:break |
| | | } |
| | | |
| | | let vc = PaymentOrderResultVC(type: weakSelf.type, id: id, price: money) |
| | | weakSelf.push(vc: vc) |
| | | case "failed": |
| | | alertError(msg: "购买失败") |
| | | case "closed": |
| | | alertError(msg: "交易已关闭") |
| | | case "refunded": |
| | | alertError(msg: "全额退款") |
| | | case "pending": |
| | | alertError(msg: "待支付") |
| | | default:break |
| | | } |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | } |
| | | |
| | | @objc private func cancelAction(){ |
| | |
| | | private func getBalance(){ |
| | | Services.getUserBalance().subscribe(onNext: {data in |
| | | self.balance = data.data ?? 0 |
| | | if self.isShowMore{ |
| | | self.label_walletBalance.text = String(format: "当前可用 ¥%@", data.data?.jq_formatFloat ?? "0") |
| | | }else{ |
| | | self.label_walletBalance.text = String(format: "当前可用 %@疗愈币", data.data?.jq_formatFloat ?? "0") |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | |
| | | @IBAction func discountByCoinAction(_ sender: TapBtn) { |
| | | discountByCoin.toggle() |
| | | if discountByCoin{ |
| | | img_action_1.image = UIImage(named: "icon_choose_small_s") |
| | | }else{ |
| | | img_action_1.image = UIImage(named: "icon_choose_small_1") |
| | | } |
| | | |
| | | |
| | | var price:Double = 0 |
| | | |
| | | switch type { |
| | | case .course: |
| | | if discountByCoin{ |
| | | price = max((courseModel?.iosPrice ?? 0) - balance,0) |
| | | }else{ |
| | | price = courseModel?.iosPrice ?? 0 |
| | | } |
| | | case .muse: |
| | | if discountByCoin{ |
| | | price = max((museModel?.iosPrice ?? 0) - balance,0) |
| | | }else{ |
| | | price = museModel?.iosPrice ?? 0 |
| | | } |
| | | default:break |
| | | } |
| | | |
| | | |
| | | label_totalPrice.text = "¥" + price.jq_formatFloat |
| | | } |
| | | |
| | | @IBAction func chooseAction(_ sender: TapBtn) { |
| | | switch sender.tag { |
| | | case 2001: |
| | | tapType = .t2 |
| | | img_action_2.image = UIImage(named: "icon_choose_small_s") |
| | | img_action_3.image = UIImage(named: "icon_choose_small_1") |
| | | case 2002: |
| | | tapType = .t3 |
| | | img_action_2.image = UIImage(named: "icon_choose_small_1") |
| | | img_action_3.image = UIImage(named: "icon_choose_small_s") |
| | | default: break |
| | | } |
| | | } |
| | | |
| | | @IBAction func invateRegisterAction(_ sender: UIButton) { |
| | |
| | | } |
| | | } |
| | | |
| | | if isShowMore{ |
| | | guard tapType != nil else {alertError(msg: "请选择支付方式");return} |
| | | |
| | | var price:Double = 0 |
| | | var targetId:Int = 0 |
| | | switch type { |
| | | case .course: |
| | | price = courseModel!.iosPrice |
| | | targetId = courseModel!.id |
| | | case .muse: |
| | | price = museModel!.iosPrice |
| | | targetId = museModel!.id |
| | | default:break |
| | | } |
| | | |
| | | if discountByCoin && balance < price{ |
| | | alertError(msg: "抵扣余额不足");return |
| | | } |
| | | |
| | | Services.placeOrder(orderForm: type, payType: tapType == .t2 ? 2:1, amount: nil, balanceFlag: discountByCoin ? 1:2, orderId: nil, receiverId: giftUserId, targetId: targetId, vipType: nil).subscribe(onNext: { [self] data in |
| | | if let m = data.data{ |
| | | self.orderId = m.orderId |
| | | |
| | | if self.tapType == .t2{ |
| | | UIApplication.shared.open(URL(string: m.qrcodeUrl!)!) |
| | | } |
| | | |
| | | if self.tapType == .t3{ |
| | | let miniProgram = WXLaunchMiniProgramReq.object() |
| | | miniProgram.miniProgramType = .release |
| | | miniProgram.userName = m.orgId! |
| | | miniProgram.path = m.path! |
| | | WXApi.send(miniProgram){ s in |
| | | if !s{ |
| | | alert(msg: "打开失败") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | }else{ |
| | | guard balance > money else{ |
| | | CommonAlertView.show(title: "提示", content: "当前余额不足,请先充值", cancelStr: "暂不充值", completeStr: "去充值", isSingle: false) {[weak self] state in |
| | | if state{ |
| | |
| | | return |
| | | } |
| | | |
| | | |
| | | Services.gvieCourse(orderForm: type, targetId: id,receiverId: giftUserId).subscribe(onNext: {[weak self]data in |
| | | guard let weakSelf = self else { return } |
| | | self?.museItemModel?.isBuy = .yes |
| | |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | | } |
| | |
| | | <outlet property="btn_invate" destination="3oo-WM-iPM" id="gMF-RC-xpe"/> |
| | | <outlet property="btn_isRead" destination="9jh-cC-nHB" id="a2J-f4-hup"/> |
| | | <outlet property="btn_isreadAgreement" destination="9jh-cC-nHB" id="kmT-qh-HGA"/> |
| | | <outlet property="btn_tap0" destination="dXP-rs-EAP" id="VVG-3s-zFi"/> |
| | | <outlet property="btn_tap1" destination="TIy-tQ-4jx" id="yel-Bf-h8a"/> |
| | | <outlet property="btn_tap2" destination="Lax-s0-pLF" id="ybD-wq-wdK"/> |
| | | <outlet property="image_avatar" destination="TT7-tl-th0" id="5bW-5j-b49"/> |
| | | <outlet property="image_cover" destination="LBY-Q2-RQA" id="ygZ-SN-xO1"/> |
| | | <outlet property="img_action_1" destination="XNw-nK-MjP" id="PuF-MB-7qT"/> |
| | | <outlet property="img_action_2" destination="1jC-lI-k0J" id="xZG-0U-O0Q"/> |
| | | <outlet property="img_action_3" destination="gVr-M3-Rrs" id="ooh-aj-9Um"/> |
| | | <outlet property="label_courseName" destination="GMw-pK-u8J" id="bFk-Vl-gDP"/> |
| | | <outlet property="label_currentAccount" destination="W3z-Hl-09j" id="Lrx-D9-x8Y"/> |
| | | <outlet property="label_orderPrice" destination="s0D-hY-lov" id="Y0T-c6-a7g"/> |
| | | <outlet property="label_p_1" destination="ODE-gf-7HU" id="KxB-TH-xan"/> |
| | | <outlet property="label_p_2" destination="vob-vP-CEg" id="5ic-6b-ggp"/> |
| | | <outlet property="label_paymentCount" destination="hW7-II-bKY" id="6Oe-Qv-0S4"/> |
| | | <outlet property="label_price" destination="iyN-A8-Fyo" id="2M1-II-1hx"/> |
| | | <outlet property="label_searchInfo" destination="jVb-Rt-nvY" id="Vty-h8-0vY"/> |
| | |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="w7E-wj-goh"> |
| | | <rect key="frame" x="0.0" y="347.33333333333331" width="377" height="57"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dXP-rs-EAP"> |
| | | <view tag="2000" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dXP-rs-EAP" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="377" height="57"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_wallet" translatesAutoresizingMaskIntoConstraints="NO" id="3oH-OO-NEc"> |
| | |
| | | <color key="textColor" red="0.55686274509803924" green="0.55686274509803924" blue="0.55686274509803924" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_choose_small_s" translatesAutoresizingMaskIntoConstraints="NO" id="XNw-nK-MjP"> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="1001" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_choose_small_s" translatesAutoresizingMaskIntoConstraints="NO" id="XNw-nK-MjP"> |
| | | <rect key="frame" x="347.33333333333331" y="20.333333333333371" width="15.666666666666686" height="16"/> |
| | | </imageView> |
| | | </subviews> |
| | |
| | | <constraint firstAttribute="trailing" secondItem="XNw-nK-MjP" secondAttribute="trailing" constant="14" id="reU-yz-Jef"/> |
| | | <constraint firstItem="W3z-Hl-09j" firstAttribute="centerY" secondItem="3oH-OO-NEc" secondAttribute="centerY" id="rf6-DL-KBg"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="discountByCoinAction:" destination="-1" eventType="touchUpInside" id="BeY-oe-tIv"/> |
| | | </connections> |
| | | </view> |
| | | <view hidden="YES" tag="2001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TIy-tQ-4jx" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="377" height="57"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_aP" translatesAutoresizingMaskIntoConstraints="NO" id="s2J-uX-S9K"> |
| | | <rect key="frame" x="13.000000000000002" y="18" width="20.666666666666671" height="21"/> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="1001" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_choose_small_1" translatesAutoresizingMaskIntoConstraints="NO" id="1jC-lI-k0J"> |
| | | <rect key="frame" x="347" y="20.333333333333371" width="16" height="16"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="余额抵扣" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ODE-gf-7HU"> |
| | | <rect key="frame" x="41.333333333333343" y="20" width="55.666666666666657" height="17"/> |
| | | <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> |
| | | <color key="textColor" red="0.15686274510000001" green="0.15686274510000001" blue="0.15686274510000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="s2J-uX-S9K" firstAttribute="centerY" secondItem="TIy-tQ-4jx" secondAttribute="centerY" id="SaV-Ww-mse"/> |
| | | <constraint firstAttribute="trailing" secondItem="1jC-lI-k0J" secondAttribute="trailing" constant="14" id="alr-Te-IIX"/> |
| | | <constraint firstAttribute="height" constant="57" id="ePw-lf-uo6"/> |
| | | <constraint firstItem="ODE-gf-7HU" firstAttribute="centerY" secondItem="s2J-uX-S9K" secondAttribute="centerY" id="igo-kE-piM"/> |
| | | <constraint firstItem="ODE-gf-7HU" firstAttribute="leading" secondItem="s2J-uX-S9K" secondAttribute="trailing" constant="7.5" id="lzs-zH-OmT"/> |
| | | <constraint firstItem="1jC-lI-k0J" firstAttribute="centerY" secondItem="TIy-tQ-4jx" secondAttribute="centerY" id="n0I-s6-cMi"/> |
| | | <constraint firstItem="s2J-uX-S9K" firstAttribute="leading" secondItem="TIy-tQ-4jx" secondAttribute="leading" constant="13" id="r6n-tk-Erz"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="chooseAction:" destination="-1" eventType="touchUpInside" id="ft5-IK-0Hj"/> |
| | | </connections> |
| | | </view> |
| | | <view hidden="YES" tag="2002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lax-s0-pLF" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="377" height="57"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_wxP" translatesAutoresizingMaskIntoConstraints="NO" id="dNI-Qd-f0r"> |
| | | <rect key="frame" x="13" y="19.666666666666686" width="20" height="17.666666666666671"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="余额抵扣" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vob-vP-CEg"> |
| | | <rect key="frame" x="40.666666666666671" y="20" width="55.666666666666671" height="17"/> |
| | | <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> |
| | | <color key="textColor" red="0.15686274510000001" green="0.15686274510000001" blue="0.15686274510000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="1001" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_choose_small_1" translatesAutoresizingMaskIntoConstraints="NO" id="gVr-M3-Rrs"> |
| | | <rect key="frame" x="347" y="20.333333333333371" width="16" height="16"/> |
| | | </imageView> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="gVr-M3-Rrs" secondAttribute="trailing" constant="14" id="3k3-oO-FdX"/> |
| | | <constraint firstItem="vob-vP-CEg" firstAttribute="leading" secondItem="dNI-Qd-f0r" secondAttribute="trailing" constant="7.5" id="8gd-K4-W5I"/> |
| | | <constraint firstItem="dNI-Qd-f0r" firstAttribute="leading" secondItem="Lax-s0-pLF" secondAttribute="leading" constant="13" id="CbR-5g-VUW"/> |
| | | <constraint firstItem="dNI-Qd-f0r" firstAttribute="centerY" secondItem="Lax-s0-pLF" secondAttribute="centerY" id="c2U-rK-O2p"/> |
| | | <constraint firstAttribute="height" constant="57" id="gg9-eo-koC"/> |
| | | <constraint firstItem="gVr-M3-Rrs" firstAttribute="centerY" secondItem="Lax-s0-pLF" secondAttribute="centerY" id="u9T-Kt-zGf"/> |
| | | <constraint firstItem="vob-vP-CEg" firstAttribute="centerY" secondItem="dNI-Qd-f0r" secondAttribute="centerY" id="ykf-sm-d2b"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="chooseAction:" destination="-1" eventType="touchUpInside" id="5dz-Ha-lYJ"/> |
| | | </connections> |
| | | </view> |
| | | </subviews> |
| | | <userDefinedRuntimeAttributes> |
| | |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="btn_aP" width="20.666666030883789" height="21"/> |
| | | <image name="btn_wxP" width="20" height="17.666666030883789"/> |
| | | <image name="icon_choose_small_1" width="16" height="16"/> |
| | | <image name="icon_choose_small_2" width="13" height="13"/> |
| | | <image name="icon_choose_small_s" width="15.666666984558105" height="16"/> |
| | | <image name="icon_wallet" width="21.666666030883789" height="21.666666030883789"/> |
| | | <systemColor name="separatorColor"> |
| | | <color red="0.23529411759999999" green="0.23529411759999999" blue="0.26274509800000001" alpha="0.28999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color red="0.23529411764705882" green="0.23529411764705882" blue="0.2627450980392157" alpha="0.28999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </systemColor> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | |
| | | switch type { |
| | | case .course:btn_lookCourse.setTitle("查看课程", for: .normal) |
| | | case .muse:btn_lookCourse.setTitle("查看疗愈", for: .normal) |
| | | default:break |
| | | } |
| | | } |
| | | |
| | |
| | | private var productList = Set<String>() |
| | | private var products = [SKProduct]() |
| | | private var timeLoopDisposeBag = DisposeBag() |
| | | private var vipContentModel:VIPContentModel? |
| | | |
| | | private var isShowMore:Bool = false |
| | | private var orderId:String? //下单后的ID |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | |
| | | productList.insert("com.XQmuse.Non.renewing.year.1") |
| | | productList.insert("com.XQmuse.Non.renewing.half.year.1") |
| | | productList.insert("com.XQmuse.Non.renewing.month.1") |
| | | |
| | | Services.getTurn(progress: false).subscribe(onNext: {[weak self]data in |
| | | guard let weakSelf = self else { return } |
| | | if let m = data.data,m == true{ |
| | | weakSelf.isShowMore = m |
| | | Services.getVipPrice().subscribe(onNext: { data in |
| | | if let m = data.data{ |
| | | weakSelf.vipContentModel = m |
| | | weakSelf.collectionView.reloadData() |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | NotificationCenter.default.rx.notification(UIApplication.didBecomeActiveNotification).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in |
| | | guard let weakSelf = self else { return } |
| | | if weakSelf.isShowMore && weakSelf.orderId != nil{ |
| | | Services.queryPayment(orderId: weakSelf.orderId!).subscribe(onNext: {data in |
| | | if let str = data.data{ |
| | | switch str{ |
| | | case "succeeded": |
| | | alertSuccess(msg: "购买成功") |
| | | weakSelf.timeLoopDisposeBag = DisposeBag() |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil, userInfo: nil) |
| | | DispatchQueue.main.asyncAfter(delay: 1.0) { |
| | | weakSelf.navigationController?.popViewController() |
| | | } |
| | | case "failed": |
| | | alertError(msg: "购买失败") |
| | | case "closed": |
| | | alertError(msg: "交易已关闭") |
| | | case "refunded": |
| | | alertError(msg: "全额退款") |
| | | case "pending": |
| | | alertError(msg: "待支付") |
| | | default:break |
| | | } |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | } |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | |
| | | alert(msg: "请先阅读并同意《会员用户协议》");return |
| | | } |
| | | |
| | | if isShowMore{ |
| | | guard let vipContentModel else { return } |
| | | |
| | | var amount:Double = 0 |
| | | switch selectIndex{ |
| | | case 0:amount = Double(vipContentModel.monthlyVipIos) |
| | | case 1:amount = Double(vipContentModel.quarterlyVipIos) |
| | | case 2:amount = Double(vipContentModel.annualVipIos) |
| | | default:break |
| | | } |
| | | |
| | | PurchaseMethodView.show {[weak self] type in |
| | | guard let weakSelf = self else { return } |
| | | Services.placeOrder(orderForm: .vip, payType: type == .t2 ? 2:1, amount: amount, balanceFlag: nil, orderId: nil, receiverId: nil, targetId: nil, vipType: weakSelf.selectIndex + 1).subscribe(onNext: { data in |
| | | if let m = data.data{ |
| | | weakSelf.orderId = m.orderId |
| | | |
| | | if type == .t2{ |
| | | UIApplication.shared.open(URL(string: m.qrcodeUrl!)!) |
| | | } |
| | | |
| | | if type == .t3{ |
| | | let miniProgram = WXLaunchMiniProgramReq.object() |
| | | miniProgram.miniProgramType = .release |
| | | miniProgram.userName = m.orgId! |
| | | miniProgram.path = m.path! |
| | | WXApi.send(miniProgram){ s in |
| | | if !s{ |
| | | alert(msg: "打开失败") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | }else{ |
| | | showHUD("正在进行内购买") |
| | | guard products.count != 0 else {return} |
| | | let oldVipExpireTime = UserViewModel.getAvatarInfo().vipExpireTime |
| | |
| | | alertError(msg: "支付失败") |
| | | } |
| | | } |
| | | } |
| | | |
| | | @IBAction func readAction(_ sender: UIButton) { |
| | | btn_isRead.isSelected = !btn_isRead.isSelected |
| | | |
| | | } |
| | | |
| | | @IBAction func agreementAction(_ sender: UIButton) { |
| | |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! VipCenterCCell |
| | | if vipContentModel != nil{ |
| | | cell.isSelect(indexPath.row == selectIndex, indexPath: indexPath, vipContentModel: vipContentModel!) |
| | | }else{ |
| | | let product = products[indexPath.row] |
| | | cell.isSelect(indexPath.row == selectIndex,product: product) |
| | | } |
| | | return cell |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | |
| | | if vipContentModel != nil{ |
| | | return 3 |
| | | } |
| | | |
| | | return products.count |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | func isSelect(_ state:Bool,indexPath:IndexPath,vipContentModel:VIPContentModel){ |
| | | |
| | | var price:Int = 0 |
| | | switch indexPath.row{ |
| | | case 0: |
| | | price = vipContentModel.monthlyVipIos |
| | | label_title.text = "月度会员" |
| | | label_price.text = "¥" + vipContentModel.monthlyVipIos.string |
| | | lable_priorDay.text = String(format: "¥%.2lf/天", vipContentModel.monthlyVipIos.double / 30.0) |
| | | case 1: |
| | | price = vipContentModel.quarterlyVipIos |
| | | label_title.text = "半年会员" |
| | | label_price.text = "¥" + vipContentModel.quarterlyVipIos.string |
| | | lable_priorDay.text = String(format: "¥%.2lf/天", vipContentModel.quarterlyVipIos.double / 30.0) |
| | | case 2: |
| | | price = vipContentModel.annualVipIos |
| | | label_title.text = "年度会员" |
| | | label_price.text = "¥" + vipContentModel.annualVipIos.string |
| | | lable_priorDay.text = String(format: "¥%.2lf/天", vipContentModel.annualVipIos.double / 30.0) |
| | | default:break |
| | | } |
| | | |
| | | if state{ |
| | | contentView.backgroundColor = UIColor(hexString: "#A6C586") |
| | | label_title.textColor = .white |
| | | lable_priorDay.textColor = .white |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: .white).add(string: "\(price)", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: .white).mutableAttributedString |
| | | }else{ |
| | | contentView.backgroundColor = UIColor(hexString: "#EFF2F2") |
| | | label_title.textColor = UIColor(hexString: "#353535") |
| | | lable_priorDay.textColor = UIColor(hexString: "#B7B7B7") |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "\(price)", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString |
| | | } |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | |
| | | |
| | | class WalletRechargeVC: BaseVC { |
| | | |
| | | @IBOutlet weak var stackView: UIStackView! |
| | | @IBOutlet weak var tap_other: TapBtn! |
| | | @IBOutlet weak var btn_handle: UIButton! |
| | | @IBOutlet weak var collectionView: UICollectionView! |
| | | @IBOutlet weak var cons_collectionHei: NSLayoutConstraint! |
| | | @IBOutlet weak var tap_other_title: UILabel! |
| | | |
| | | private var selectIndexPath = IndexPath(row: 0, section: 0) |
| | | private let cellW = (JQ_ScreenW - (24 * 2) - 3 * 27) / 4 |
| | |
| | | private var oldPrice:Double = 0 |
| | | private var timeLoopDisposeBag = DisposeBag() |
| | | |
| | | private var isShowMore:Bool = false |
| | | private var orderId:String? //下单后的ID |
| | | private var tapType:TapType = .t2 |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "疗愈币充值" |
| | | |
| | | Services.getTurn(progress: false).subscribe(onNext: {[weak self]data in |
| | | guard let weakSelf = self else { return } |
| | | if let m = data.data,m == true{ |
| | | weakSelf.isShowMore = m |
| | | weakSelf.tap_other.isHidden = false |
| | | weakSelf.tap_other_title.text = "支".appending("付").appending("宝") |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | btn_handle.isEnabled = false |
| | | btn_handle.alpha = 0.6 |
| | |
| | | |
| | | override func setUI() { |
| | | view.backgroundColor = UIColor(hexString: "f6f6f6") |
| | | stackView.jq_cornerRadius = 10 |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(UIApplication.didBecomeActiveNotification).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in |
| | | guard let weakSelf = self else { return } |
| | | if weakSelf.isShowMore && weakSelf.orderId != nil{ |
| | | Services.queryPayment(orderId: weakSelf.orderId!).subscribe(onNext: {data in |
| | | if let str = data.data{ |
| | | switch str{ |
| | | case "succeeded": |
| | | alertSuccess(msg: "购买成功") |
| | | NotificationCenter.default.post(name: WithDrawReply_Noti, object: nil) |
| | | DispatchQueue.main.asyncAfter(delay: 1.0) { |
| | | weakSelf.navigationController?.popViewController() |
| | | } |
| | | case "failed": |
| | | alertError(msg: "购买失败") |
| | | case "closed": |
| | | alertError(msg: "交易已关闭") |
| | | case "refunded": |
| | | alertError(msg: "全额退款") |
| | | case "pending": |
| | | alertError(msg: "待支付") |
| | | default:break |
| | | } |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | override func viewDidLayoutSubviews() { |
| | |
| | | sceneDelegate?.needLogin() |
| | | return} |
| | | |
| | | if isShowMore{ |
| | | let product = products[selectIndexPath.row] |
| | | Services.placeOrder(orderForm: .recharge, payType: tapType == .t2 ? 2:1, amount: product.price.doubleValue, balanceFlag: nil, orderId: nil, receiverId: nil, targetId: nil, vipType: nil).subscribe(onNext: {[weak self] data in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | if let m = data.data{ |
| | | weakSelf.orderId = m.orderId |
| | | |
| | | if weakSelf.tapType == .t2{ |
| | | UIApplication.shared.open(URL(string: m.qrcodeUrl!)!) |
| | | } |
| | | |
| | | if weakSelf.tapType == .t3{ |
| | | let miniProgram = WXLaunchMiniProgramReq.object() |
| | | miniProgram.miniProgramType = .release |
| | | miniProgram.userName = m.orgId! |
| | | miniProgram.path = m.path! |
| | | WXApi.send(miniProgram){ s in |
| | | if !s{ |
| | | alert(msg: "打开失败") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | }else{ |
| | | showHUD("正在进行内购买") |
| | | let product = products[selectIndexPath.row] |
| | | InPurchaseManager.purchaseProduct(ID: product.productIdentifier, applicationUsername: userId.string) {[weak self] result in |
| | |
| | | } |
| | | } |
| | | |
| | | @IBAction func tapAction(_ sender: Any) { |
| | | PurchaseMethodView.show {[weak self] type in |
| | | guard let weakSelf = self else { return } |
| | | weakSelf.tapType = type |
| | | |
| | | switch type { |
| | | case .t2: |
| | | weakSelf.tap_other_title.text = "支".appending("付").appending("宝") |
| | | case .t3: |
| | | weakSelf.tap_other_title.text = "微".appending("信") |
| | | default:break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | extension WalletRechargeVC:UICollectionViewDelegate & UICollectionViewDataSource{ |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | |
| | | <outlet property="btn_handle" destination="dho-ek-UFQ" id="iQC-VU-0Zr"/> |
| | | <outlet property="collectionView" destination="dtD-pA-jk2" id="DeN-fT-Su7"/> |
| | | <outlet property="cons_collectionHei" destination="bd9-0q-BAP" id="w77-cG-RlO"/> |
| | | <outlet property="stackView" destination="3G8-Xa-pOF" id="Eas-eT-8BO"/> |
| | | <outlet property="tap_other" destination="r2X-gD-KXz" id="vsV-f4-cnJ"/> |
| | | <outlet property="tap_other_title" destination="p8P-Ff-jH9" id="Tf8-nL-h8F"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="z66-Ao-znz"> |
| | | <rect key="frame" x="0.0" y="59" width="393" height="759"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ok4-Yz-gOY"> |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="3G8-Xa-pOF"> |
| | | <rect key="frame" x="14" y="9" width="365" height="141"/> |
| | | <subviews> |
| | | <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="r2X-gD-KXz" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="365" height="48"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W1g-Yn-wYR"> |
| | | <rect key="frame" x="9" y="47" width="347" height="1"/> |
| | | <color key="backgroundColor" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="0.14999999999999999" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="1" id="r3w-FO-GhA"/> |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="充值方式" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="haj-xf-DTh"> |
| | | <rect key="frame" x="9.9999999999999964" y="14.333333333333327" width="63.666666666666657" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="blo-b0-r7y"> |
| | | <rect key="frame" x="349" y="19" width="6" height="10"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="6" id="7xI-SY-eDN"/> |
| | | <constraint firstAttribute="height" constant="10" id="eOv-Sf-Dhi"/> |
| | | </constraints> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p8P-Ff-jH9"> |
| | | <rect key="frame" x="324.33333333333331" y="14.333333333333327" width="14.666666666666686" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="W1g-Yn-wYR" firstAttribute="leading" secondItem="r2X-gD-KXz" secondAttribute="leading" constant="9" id="1qT-Nr-k7u"/> |
| | | <constraint firstAttribute="bottom" secondItem="W1g-Yn-wYR" secondAttribute="bottom" id="BbZ-zt-WUN"/> |
| | | <constraint firstAttribute="height" constant="48" id="HYM-rh-bBU"/> |
| | | <constraint firstItem="p8P-Ff-jH9" firstAttribute="centerY" secondItem="haj-xf-DTh" secondAttribute="centerY" id="Kzm-tP-UeE"/> |
| | | <constraint firstItem="haj-xf-DTh" firstAttribute="leading" secondItem="r2X-gD-KXz" secondAttribute="leading" constant="10" id="LiE-Uy-aIj"/> |
| | | <constraint firstItem="haj-xf-DTh" firstAttribute="centerY" secondItem="r2X-gD-KXz" secondAttribute="centerY" id="Uv1-me-lPL"/> |
| | | <constraint firstAttribute="trailing" secondItem="blo-b0-r7y" secondAttribute="trailing" constant="10" id="gQu-Nf-pbj"/> |
| | | <constraint firstAttribute="trailing" secondItem="W1g-Yn-wYR" secondAttribute="trailing" constant="9" id="uiK-Oy-pp7"/> |
| | | <constraint firstItem="blo-b0-r7y" firstAttribute="centerY" secondItem="r2X-gD-KXz" secondAttribute="centerY" id="vm7-eV-oLZ"/> |
| | | <constraint firstItem="blo-b0-r7y" firstAttribute="leading" secondItem="p8P-Ff-jH9" secondAttribute="trailing" constant="10" id="ygt-rF-Vds"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="tapAction:" destination="-1" eventType="touchUpInside" id="qCX-vo-qsv"/> |
| | | </connections> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ok4-Yz-gOY"> |
| | | <rect key="frame" x="0.0" y="0.0" width="365" height="141"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="充值金额" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nAx-8V-3yC"> |
| | | <rect key="frame" x="9.9999999999999964" y="13" width="55.666666666666657" height="17"/> |
| | |
| | | <constraint firstAttribute="trailing" secondItem="dtD-pA-jk2" secondAttribute="trailing" id="nvj-jM-GAI"/> |
| | | <constraint firstItem="dtD-pA-jk2" firstAttribute="leading" secondItem="Ok4-Yz-gOY" secondAttribute="leading" id="tIv-aS-XcX"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="10"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | </subviews> |
| | | </stackView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dho-ek-UFQ"> |
| | | <rect key="frame" x="45" y="210" width="303" height="40"/> |
| | | <color key="backgroundColor" red="0.54117647059999996" green="0.68235294120000001" blue="0.39607843139999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.96470588235294119" green="0.96470588235294119" blue="0.96470588235294119" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstItem="Ok4-Yz-gOY" firstAttribute="leading" secondItem="z66-Ao-znz" secondAttribute="leading" constant="14" id="0hn-eY-79h"/> |
| | | <constraint firstAttribute="trailing" secondItem="3G8-Xa-pOF" secondAttribute="trailing" constant="14" id="6U1-Tc-y3e"/> |
| | | <constraint firstItem="dho-ek-UFQ" firstAttribute="top" secondItem="3G8-Xa-pOF" secondAttribute="bottom" constant="60" id="ARz-ce-uQN"/> |
| | | <constraint firstAttribute="trailing" secondItem="dho-ek-UFQ" secondAttribute="trailing" constant="45" id="B15-WD-cjm"/> |
| | | <constraint firstAttribute="trailing" secondItem="Ok4-Yz-gOY" secondAttribute="trailing" constant="14" id="IJU-kW-9Fa"/> |
| | | <constraint firstItem="Ok4-Yz-gOY" firstAttribute="top" secondItem="z66-Ao-znz" secondAttribute="top" constant="9" id="Qnn-9a-Nl6"/> |
| | | <constraint firstItem="dho-ek-UFQ" firstAttribute="top" secondItem="Ok4-Yz-gOY" secondAttribute="bottom" constant="60" id="sXQ-fx-OHD"/> |
| | | <constraint firstItem="3G8-Xa-pOF" firstAttribute="leading" secondItem="z66-Ao-znz" secondAttribute="leading" constant="14" id="Cf7-xI-XIF"/> |
| | | <constraint firstItem="3G8-Xa-pOF" firstAttribute="top" secondItem="z66-Ao-znz" secondAttribute="top" constant="9" id="Nfx-bm-CgB"/> |
| | | <constraint firstItem="dho-ek-UFQ" firstAttribute="leading" secondItem="z66-Ao-znz" secondAttribute="leading" constant="45" id="xtn-l7-j0B"/> |
| | | </constraints> |
| | | </view> |
| | |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="icon_more" width="6" height="10.666666984558105"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
New file |
| | |
| | | // |
| | | // PurchaseMethodView.swift |
| | | // XQMuse |
| | | // |
| | | // Created by 无故事王国 on 2024/11/25. |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class PurchaseMethodView: UIView,JQNibView{ |
| | | @IBOutlet weak var view_content: UIView! |
| | | @IBOutlet weak var img_1: UIImageView! |
| | | @IBOutlet weak var img_2: UIImageView! |
| | | |
| | | @IBOutlet weak var img_select_1: UIImageView! |
| | | @IBOutlet weak var img_select_2: UIImageView! |
| | | |
| | | @IBOutlet weak var label_1: UILabel! |
| | | @IBOutlet weak var label_2: UILabel! |
| | | |
| | | @IBOutlet weak var btn_complete: UIButton! |
| | | @IBOutlet weak var cons_bottom: NSLayoutConstraint! |
| | | private var clouse:((TapType)->Void)? |
| | | |
| | | var tapType:TapType = .t2 |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | img_1.image = UIImage(named: "btn_aP_1") |
| | | img_2.image = UIImage(named: "btn_wxP_1") |
| | | label_1.text = "支".appending("付").appending("宝").appending("支").appending("付") |
| | | label_2.text = "微".appending("信").appending("支").appending("付") |
| | | cons_bottom.constant = -JQ_ScreenW / 2 |
| | | alpha = 0 |
| | | |
| | | layoutIfNeeded() |
| | | } |
| | | |
| | | static func show(_ clouse:@escaping (TapType)->Void){ |
| | | let purchageView = PurchaseMethodView.jq_loadNibView() |
| | | purchageView.clouse = clouse |
| | | purchageView.frame = sceneDelegate?.window?.frame ?? .zero |
| | | sceneDelegate?.window?.addSubview(purchageView) |
| | | |
| | | purchageView.cons_bottom.constant = 0 |
| | | UIView.animate(withDuration: 0.4) { |
| | | purchageView.alpha = 1.0 |
| | | purchageView.layoutIfNeeded() |
| | | } |
| | | } |
| | | |
| | | @IBAction func closeAction(_ sender: Any) { |
| | | cons_bottom.constant = -JQ_ScreenW / 2 |
| | | UIView.animate(withDuration: 0.4) { |
| | | self.alpha = 0 |
| | | self.layoutIfNeeded() |
| | | } completion: { _ in |
| | | self.removeFromSuperview() |
| | | } |
| | | } |
| | | |
| | | @IBAction func tapAction(_ sender: TapBtn) { |
| | | if sender.tag == 2100{ |
| | | tapType = .t2 |
| | | img_select_1.image = UIImage(named: "icon_choose_small_s") |
| | | img_select_2.image = UIImage(named: "icon_choose_small_1") |
| | | }else{ |
| | | tapType = .t3 |
| | | img_select_1.image = UIImage(named: "icon_choose_small_1") |
| | | img_select_2.image = UIImage(named: "icon_choose_small_s") |
| | | } |
| | | } |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | clouse?(tapType) |
| | | cons_bottom.constant = -JQ_ScreenW / 2 |
| | | UIView.animate(withDuration: 0.4) { |
| | | self.alpha = 0 |
| | | self.layoutIfNeeded() |
| | | } completion: { _ in |
| | | self.removeFromSuperview() |
| | | } |
| | | } |
| | | |
| | | |
| | | override func layoutSubviews() { |
| | | super.layoutSubviews() |
| | | |
| | | view_content.jq_addCorners(corner: [.topLeft,.topRight], radius: 20,width: JQ_ScreenW,height: 265) |
| | | |
| | | btn_complete.localGradientColor(cornerRadius: 20,bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW - 90, height: 40)) |
| | | } |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="PurchaseMethodView" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pNc-Y2-GLo"> |
| | | <rect key="frame" x="0.0" y="59" width="393" height="759"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <connections> |
| | | <action selector="closeAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="6WQ-uK-HZO"/> |
| | | </connections> |
| | | </button> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HaX-Wh-a97"> |
| | | <rect key="frame" x="0.0" y="587.66666666666663" width="393" height="264.33333333333337"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="选择支付方式" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GLI-JT-7gT"> |
| | | <rect key="frame" x="149" y="14.999999999999998" width="95.333333333333314" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="6PE-EP-cas"> |
| | | <rect key="frame" x="0.0" y="49.333333333333371" width="393" height="83"/> |
| | | <subviews> |
| | | <view tag="2100" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RIT-LK-itg" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="39"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_apple" translatesAutoresizingMaskIntoConstraints="NO" id="tdM-ES-dxN"> |
| | | <rect key="frame" x="29" y="6.6666666666666288" width="26" height="26"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dTN-EJ-wYS"> |
| | | <rect key="frame" x="67" y="11" width="36" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_choose_small_s" translatesAutoresizingMaskIntoConstraints="NO" id="xdN-Qt-RfY"> |
| | | <rect key="frame" x="348.33333333333331" y="11.666666666666629" width="15.666666666666686" height="16"/> |
| | | </imageView> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="dTN-EJ-wYS" firstAttribute="centerY" secondItem="RIT-LK-itg" secondAttribute="centerY" id="FUf-Ya-PDs"/> |
| | | <constraint firstItem="tdM-ES-dxN" firstAttribute="leading" secondItem="RIT-LK-itg" secondAttribute="leading" constant="29" id="IGH-51-AA7"/> |
| | | <constraint firstAttribute="trailing" secondItem="xdN-Qt-RfY" secondAttribute="trailing" constant="29" id="PKO-be-asJ"/> |
| | | <constraint firstItem="xdN-Qt-RfY" firstAttribute="centerY" secondItem="RIT-LK-itg" secondAttribute="centerY" id="QQn-Ig-lny"/> |
| | | <constraint firstItem="tdM-ES-dxN" firstAttribute="centerY" secondItem="RIT-LK-itg" secondAttribute="centerY" id="RjH-ck-xqU"/> |
| | | <constraint firstItem="dTN-EJ-wYS" firstAttribute="leading" secondItem="tdM-ES-dxN" secondAttribute="trailing" constant="12" id="XFZ-MN-jIx"/> |
| | | <constraint firstAttribute="height" constant="39" id="fVd-BB-Y0W"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="tapAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="06n-t4-x6f"/> |
| | | </connections> |
| | | </view> |
| | | <view tag="2101" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8WP-8K-cLJ" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="44" width="393" height="39"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_apple" translatesAutoresizingMaskIntoConstraints="NO" id="3sm-zl-qdV"> |
| | | <rect key="frame" x="29" y="6.6666666666666288" width="26" height="26"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pnm-GI-HSY"> |
| | | <rect key="frame" x="67" y="11" width="36" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_choose_small_1" translatesAutoresizingMaskIntoConstraints="NO" id="CyO-m6-sGA"> |
| | | <rect key="frame" x="348" y="11.666666666666629" width="16" height="16"/> |
| | | </imageView> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="Pnm-GI-HSY" firstAttribute="centerY" secondItem="8WP-8K-cLJ" secondAttribute="centerY" id="K0v-MQ-jaQ"/> |
| | | <constraint firstAttribute="trailing" secondItem="CyO-m6-sGA" secondAttribute="trailing" constant="29" id="Km3-5P-isZ"/> |
| | | <constraint firstItem="Pnm-GI-HSY" firstAttribute="leading" secondItem="3sm-zl-qdV" secondAttribute="trailing" constant="12" id="LBv-fY-uPB"/> |
| | | <constraint firstAttribute="height" constant="39" id="Okv-ZX-m93"/> |
| | | <constraint firstItem="CyO-m6-sGA" firstAttribute="centerY" secondItem="8WP-8K-cLJ" secondAttribute="centerY" id="YcR-mG-ZrO"/> |
| | | <constraint firstItem="3sm-zl-qdV" firstAttribute="centerY" secondItem="8WP-8K-cLJ" secondAttribute="centerY" id="dds-kY-jGp"/> |
| | | <constraint firstItem="3sm-zl-qdV" firstAttribute="leading" secondItem="8WP-8K-cLJ" secondAttribute="leading" constant="29" id="t8u-fL-uBW"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="tapAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="ncB-7a-eia"/> |
| | | </connections> |
| | | </view> |
| | | </subviews> |
| | | </stackView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lTN-hx-Y1n"> |
| | | <rect key="frame" x="45" y="152.33333333333337" width="303" height="40"/> |
| | | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="Fhe-x1-V0R"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="确认"/> |
| | | <connections> |
| | | <action selector="completeAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="5dJ-lw-uRm"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="6PE-EP-cas" secondAttribute="trailing" id="4b3-Ki-8XL"/> |
| | | <constraint firstItem="6PE-EP-cas" firstAttribute="top" secondItem="GLI-JT-7gT" secondAttribute="bottom" constant="15" id="6md-Yx-d18"/> |
| | | <constraint firstAttribute="trailing" secondItem="lTN-hx-Y1n" secondAttribute="trailing" constant="45" id="QVv-cO-H3B"/> |
| | | <constraint firstItem="lTN-hx-Y1n" firstAttribute="top" secondItem="6PE-EP-cas" secondAttribute="bottom" constant="20" id="S1O-lg-Uza"/> |
| | | <constraint firstItem="GLI-JT-7gT" firstAttribute="centerX" secondItem="HaX-Wh-a97" secondAttribute="centerX" id="Zmh-aA-WiW"/> |
| | | <constraint firstItem="6PE-EP-cas" firstAttribute="leading" secondItem="HaX-Wh-a97" secondAttribute="leading" id="eYW-4f-Vp7"/> |
| | | <constraint firstItem="lTN-hx-Y1n" firstAttribute="leading" secondItem="HaX-Wh-a97" secondAttribute="leading" constant="45" id="g3Z-CK-kgy"/> |
| | | <constraint firstItem="GLI-JT-7gT" firstAttribute="top" secondItem="HaX-Wh-a97" secondAttribute="top" constant="15" id="inj-jo-xUg"/> |
| | | <constraint firstAttribute="bottomMargin" secondItem="lTN-hx-Y1n" secondAttribute="bottom" constant="30" id="s6C-ai-SqW"/> |
| | | </constraints> |
| | | </view> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/> |
| | | <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstItem="HaX-Wh-a97" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="0mR-TH-Wh1"/> |
| | | <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="pNc-Y2-GLo" secondAttribute="trailing" id="2JS-Wx-GD8"/> |
| | | <constraint firstAttribute="bottom" secondItem="HaX-Wh-a97" secondAttribute="bottom" id="9TX-Gw-rQo"/> |
| | | <constraint firstItem="pNc-Y2-GLo" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" id="A69-Qg-wRz"/> |
| | | <constraint firstItem="pNc-Y2-GLo" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="SH2-83-ai3"/> |
| | | <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="HaX-Wh-a97" secondAttribute="trailing" id="Uvb-lr-S0N"/> |
| | | <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="pNc-Y2-GLo" secondAttribute="bottom" id="Zuf-c1-lz0"/> |
| | | </constraints> |
| | | <connections> |
| | | <outlet property="btn_complete" destination="lTN-hx-Y1n" id="mWD-Qg-GFQ"/> |
| | | <outlet property="cons_bottom" destination="9TX-Gw-rQo" id="xJK-JS-jF0"/> |
| | | <outlet property="img_1" destination="tdM-ES-dxN" id="gJ9-Uk-5xT"/> |
| | | <outlet property="img_2" destination="3sm-zl-qdV" id="GTa-sd-lOW"/> |
| | | <outlet property="img_select_1" destination="xdN-Qt-RfY" id="QnQ-Dd-d8e"/> |
| | | <outlet property="img_select_2" destination="CyO-m6-sGA" id="1bd-Gi-AYo"/> |
| | | <outlet property="label_1" destination="dTN-EJ-wYS" id="rrw-Fs-Nki"/> |
| | | <outlet property="label_2" destination="Pnm-GI-HSY" id="Mk5-Tr-83O"/> |
| | | <outlet property="view_content" destination="HaX-Wh-a97" id="UVC-Ih-gmT"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="-25.190839694656489" y="20.422535211267608"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="btn_apple" width="26" height="26"/> |
| | | <image name="icon_choose_small_1" width="16" height="16"/> |
| | | <image name="icon_choose_small_s" width="15.666666984558105" height="16"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
| | |
| | | var type = 0 //问题一 问题类型 1:您是否内心纠结敏感多疑?2:您是否辗转反侧彻夜难眠?3:您是否情绪失控暴躁易怒?4:您是否沉迷情感倍受伤害?5:您是否人生迷茫踌躇彷徨?6:其它补充说明 |
| | | } |
| | | |
| | | struct VIPContentModel:HandyJSON{ |
| | | var annualVipIos:Int = 0 |
| | | var monthlyVipIos:Int = 0 |
| | | var quarterlyVipIos:Int = 0 |
| | | } |
| | | |
| | | |
| | | |
| | | struct PaymentResultModel:HandyJSON{ |
| | | var appId: String? |
| | | var id: Int = 0 |
| | | var orderId: String? |
| | | var orderNo: String? |
| | | var orgId: String? |
| | | var path: String? |
| | | var payAmt: String? |
| | | var payInfo: String? |
| | | var qrcodeUrl: String? |
| | | var zeroFlag: Int = 0 |
| | | } |
| | |
| | | import CoreLocation |
| | | |
| | | #if DEBUG |
| | | let All_Url = "https://xq.xqzhihui.com/api" |
| | | //let All_Url = "http://192.168.110.64:9000" |
| | | //let All_Url = "https://xq.xqzhihui.com/api" |
| | | let All_Url = "http://192.168.110.64:9000" |
| | | //let All_Url = "https://mock.apipost.net/mock/31b303c60464000" |
| | | #else |
| | | let All_Url = "https://xq.xqzhihui.com/api" |
| | |
| | | params.interface(url: "/order/mgt/order/order/cancel") |
| | | .append(key: "uid", value: id) |
| | | return NetworkRequest.request(params: params, method: .get, progress: true) |
| | | } |
| | | |
| | | class func placeOrder(orderForm:PaymentOrderVC.PaymentOrderType,payType:Int,amount:Double? = nil,balanceFlag:Int? = nil,orderId:Int? = nil,receiverId:Int? = nil,targetId:Int? = nil,vipType:Int? = nil)->Observable<BaseResponse<PaymentResultModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | params.interface(url: "/order/client/order/order/placeOrder") |
| | | .append(key: "orderFrom", value: orderForm.rawValue) |
| | | .append(key: "payType", value: payType) |
| | | .append(key: "amount", value: amount) |
| | | .append(key: "balanceFlag", value: balanceFlag) |
| | | .append(key: "orderId", value: orderId) |
| | | .append(key: "receiverId", value: receiverId) |
| | | .append(key: "targetId", value: targetId) |
| | | .append(key: "vipType", value: vipType) |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | } |
| | | |
| | | |
| | |
| | | .append(key: "type", value: type) |
| | | return NetworkRequest.request(params: params, method: .post, progress: false) |
| | | } |
| | | |
| | | class func getVipPrice()->Observable<BaseResponse<VIPContentModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | .interface(url: "/system/system/vip-setting/queryVip") |
| | | return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: false) |
| | | } |
| | | |
| | | class func queryPayment(orderId:String)->Observable<BaseResponse<String>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | .interface(url: "/order/client/order/order/queryPayment") |
| | | .append(key: "orderId", value: orderId) |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | } |
| | | |
| | | class func getTurn(progress:Bool = true)->Observable<BaseResponse<Bool>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | .interface(url: "/system/system/home/getTurn") |
| | | return NetworkRequest.request(params: params, method: .get, progress: progress) |
| | | } |
| | | } |
| | |
| | | NotificationCenter.default.addObserver(forName: ChangeMasterVoice_Noti, object: nil, queue: .main) { noti in |
| | | if let value = noti.object as? Float{ |
| | | print("--->进入") |
| | | self.masterPlayer?.volume = value |
| | | // self.masterPlayer?.volume = value |
| | | self.bgmPlayer?.volume = value |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | self.bgmPlayer = AVPlayer(url: self.urls[firstPlayIndex]) |
| | | |
| | | if masterUrl != nil{ |
| | | self.masterPlayer = AVPlayer(url: masterUrl!) |
| | | self.masterPlayer?.volume = Float(UserDefaultSettingViewModel.getSetting()?.masterVolume ?? 0.5) |
| | | } |
| | | // if masterUrl != nil{ |
| | | // self.masterPlayer = AVPlayer(url: masterUrl!) |
| | | // self.masterPlayer?.volume = Float(UserDefaultSettingViewModel.getSetting()?.masterVolume ?? 0.5) |
| | | // } |
| | | } |
| | | |
| | | self.bgmPlayer?.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1, timescale: 1), queue: DispatchQueue.main) { [weak self](time) in |
| | |
| | | weakSelf.treeInfoModel!.treeLevelType = m.treeLevelType |
| | | |
| | | let h = (JQ_ScreenW - 90) * 0.7729 |
| | | TreeTeskFirstRuleView.show(title: "升级", content:"恭喜!你的树苗已升级为\(weakSelf.treeInfoModel!.treeLevelType.title)阶段!",textAlignment: .center,height: h,textTopOffset: 57) |
| | | TreeTeskFirstRuleView.show(title: "什么之树", content:weakSelf.treeInfoModel!.treeLevelType.titleContent,textAlignment: .center,height: h,textTopOffset: 57) |
| | | |
| | | if let soundURL = URL(string:weakSelf.treeInfoModel?.treeLevelType.sound){ |
| | | weakSelf.voicePlayer.replaceCurrentItem(with: AVPlayerItem(url: soundURL)) |