Commit 20b901f6f9ef70ab2109e266200344823b2b5cd8

Authored by liushiyu
1 parent 5400af31

添加物流详情及注销账号

metaCode.xcodeproj/project.pbxproj
@@ -112,6 +112,7 @@ @@ -112,6 +112,7 @@
112 79BB96AA2AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BB96A92AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift */; }; 112 79BB96AA2AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BB96A92AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift */; };
113 79E496E32AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */; }; 113 79E496E32AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */; };
114 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */; }; 114 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */; };
  115 + 79E672032AFDFA9C00F2F768 /* CNLiveMineSignOutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E672022AFDFA9C00F2F768 /* CNLiveMineSignOutViewController.swift */; };
115 79EABB892AB4497700F3A4E2 /* CNLiveSaveStandDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */; }; 116 79EABB892AB4497700F3A4E2 /* CNLiveSaveStandDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */; };
116 79F4B1162A32B96B00993C03 /* CNLiveMineInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79F4B1152A32B96B00993C03 /* CNLiveMineInfoViewController.swift */; }; 117 79F4B1162A32B96B00993C03 /* CNLiveMineInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79F4B1152A32B96B00993C03 /* CNLiveMineInfoViewController.swift */; };
117 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79F4B1192A32F21400993C03 /* CNLiveMineNickViewController.swift */; }; 118 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79F4B1192A32F21400993C03 /* CNLiveMineNickViewController.swift */; };
@@ -276,6 +277,7 @@ @@ -276,6 +277,7 @@
276 79BB96A92AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopBodyDetailView.swift; sourceTree = "<group>"; }; 277 79BB96A92AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopBodyDetailView.swift; sourceTree = "<group>"; };
277 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableViewCell+CNLiveExtension.swift"; sourceTree = "<group>"; }; 278 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableViewCell+CNLiveExtension.swift"; sourceTree = "<group>"; };
278 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSMutableAttributedString+CNLiveExtensions.swift"; sourceTree = "<group>"; }; 279 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSMutableAttributedString+CNLiveExtensions.swift"; sourceTree = "<group>"; };
  280 + 79E672022AFDFA9C00F2F768 /* CNLiveMineSignOutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineSignOutViewController.swift; sourceTree = "<group>"; };
279 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSaveStandDB.swift; sourceTree = "<group>"; }; 281 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSaveStandDB.swift; sourceTree = "<group>"; };
280 79F4B1152A32B96B00993C03 /* CNLiveMineInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineInfoViewController.swift; sourceTree = "<group>"; }; 282 79F4B1152A32B96B00993C03 /* CNLiveMineInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineInfoViewController.swift; sourceTree = "<group>"; };
281 79F4B1192A32F21400993C03 /* CNLiveMineNickViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineNickViewController.swift; sourceTree = "<group>"; }; 283 79F4B1192A32F21400993C03 /* CNLiveMineNickViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineNickViewController.swift; sourceTree = "<group>"; };
@@ -517,6 +519,7 @@ @@ -517,6 +519,7 @@
517 79656E372AAEBA8E00119A61 /* CNLiveMineInputViewController.swift */, 519 79656E372AAEBA8E00119A61 /* CNLiveMineInputViewController.swift */,
518 7905BB482AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift */, 520 7905BB482AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift */,
519 79803E262AD68D3100F05F68 /* CNLiveMineShopViewController.swift */, 521 79803E262AD68D3100F05F68 /* CNLiveMineShopViewController.swift */,
  522 + 79E672022AFDFA9C00F2F768 /* CNLiveMineSignOutViewController.swift */,
520 ); 523 );
521 path = Controller; 524 path = Controller;
522 sourceTree = "<group>"; 525 sourceTree = "<group>";
@@ -1147,6 +1150,7 @@ @@ -1147,6 +1150,7 @@
1147 19D2CE632AE8B65D00691757 /* CNLiveDownSlideTool.swift in Sources */, 1150 19D2CE632AE8B65D00691757 /* CNLiveDownSlideTool.swift in Sources */,
1148 790B1FB82A41B6A60074CF00 /* CNLiveMineMessageViewController.swift in Sources */, 1151 790B1FB82A41B6A60074CF00 /* CNLiveMineMessageViewController.swift in Sources */,
1149 19BB202B2AF382150094D962 /* CNLiveAdaptTool.swift in Sources */, 1152 19BB202B2AF382150094D962 /* CNLiveAdaptTool.swift in Sources */,
  1153 + 79E672032AFDFA9C00F2F768 /* CNLiveMineSignOutViewController.swift in Sources */,
1150 19565ECD2AF8D256007D6727 /* CNLiveShopGoodsListClassifyView.swift in Sources */, 1154 19565ECD2AF8D256007D6727 /* CNLiveShopGoodsListClassifyView.swift in Sources */,
1151 798A44F22A30674200815935 /* CNLiveMineSubBodyListView.swift in Sources */, 1155 798A44F22A30674200815935 /* CNLiveMineSubBodyListView.swift in Sources */,
1152 799172382AF090CD00DC01A8 /* CNLiveShopBodyListView.swift in Sources */, 1156 799172382AF090CD00DC01A8 /* CNLiveShopBodyListView.swift in Sources */,
metaCode/Classes/Main/MinePage/Controller/CNLiveInfoShowViewController.swift
@@ -13,6 +13,7 @@ enum ListShowInfoType { @@ -13,6 +13,7 @@ enum ListShowInfoType {
13 case privacy 13 case privacy
14 case yinsi 14 case yinsi
15 case safety 15 case safety
  16 + case cancel
16 } 17 }
17 18
18 class CNLiveInfoShowViewController: CNLiveBaseViewController, WKNavigationDelegate, WKUIDelegate { 19 class CNLiveInfoShowViewController: CNLiveBaseViewController, WKNavigationDelegate, WKUIDelegate {
@@ -68,6 +69,9 @@ class CNLiveInfoShowViewController: CNLiveBaseViewController, WKNavigationDelega @@ -68,6 +69,9 @@ class CNLiveInfoShowViewController: CNLiveBaseViewController, WKNavigationDelega
68 case .safety: 69 case .safety:
69 titleName = "内容安全协议" 70 titleName = "内容安全协议"
70 attrString = "https://wjj.ys1.cnliveimg.com/term/cnBNraqxy.html" 71 attrString = "https://wjj.ys1.cnliveimg.com/term/cnBNraqxy.html"
  72 + case .cancel:
  73 + titleName = "账号注销须知"
  74 + attrString = "https://wjjh5.cnlive.com/yuanmaLogout.html"
71 case .none: 75 case .none:
72 break 76 break
73 } 77 }
metaCode/Classes/Main/MinePage/Controller/CNLiveMineShopViewController.swift
@@ -408,7 +408,6 @@ class CNLiveMineShopViewController : CNLiveBaseViewController, UITextViewDelegat @@ -408,7 +408,6 @@ class CNLiveMineShopViewController : CNLiveBaseViewController, UITextViewDelegat
408 self.navigationController?.pushViewController(CNLiveMineAuthResultViewController.init(StandListModel.init(), show_type: .detail_shop), animated: true) 408 self.navigationController?.pushViewController(CNLiveMineAuthResultViewController.init(StandListModel.init(), show_type: .detail_shop), animated: true)
409 } 409 }
410 } else { 410 } else {
411 - self.navigationController  
412 } 411 }
413 }) 412 })
414 } 413 }
metaCode/Classes/Main/MinePage/Controller/CNLiveMineSignOutViewController.swift 0 → 100644
  1 +//
  2 +// CNLiveMineSignOutViewController.swift
  3 +// metaCode
  4 +//
  5 +// Created by open on 2023/11/10.
  6 +//
  7 +
  8 +import Foundation
  9 +import WebKit
  10 +import APButton
  11 +
  12 +class CNLiveMineSignOutViewController: CNLiveBaseViewController, WKNavigationDelegate, WKUIDelegate, UITextViewDelegate {
  13 +
  14 + lazy var webView: WKWebView = {
  15 + let config = WKWebViewConfiguration.init()
  16 + config.preferences = WKPreferences()
  17 + config.preferences.javaScriptEnabled = true
  18 + config.preferences.javaScriptCanOpenWindowsAutomatically = false
  19 + config.userContentController = WKUserContentController.init()
  20 +
  21 + let userController = WKUserContentController.init()
  22 + let js = "var script = document.createElement('meta'); script.name = 'viewport'; script.content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no\"; document.getElementsByTagName('div')[0].appendChild(script);"
  23 + let script = WKUserScript.init(source: js, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
  24 +
  25 + let javascript = NSMutableString.init()
  26 + javascript.append("document.documentElement.style.webkitTouchCallout='none';")
  27 + javascript.append("document.documentElement.style.webkitUserSelect='none';")
  28 + let noneSelectScript = WKUserScript.init(source: javascript as String, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
  29 + userController.addUserScript(script)
  30 + userController.addUserScript(noneSelectScript)
  31 + config.userContentController = userController
  32 +
  33 + let webView = WKWebView.init(frame: CGRect.zero, configuration: config)
  34 + webView.navigationDelegate = self
  35 + webView.uiDelegate = self
  36 + webView.scrollView.bounces = false
  37 + webView.scrollView.showsVerticalScrollIndicator = false
  38 + webView.scrollView.showsHorizontalScrollIndicator = false
  39 + webView.load(URLRequest.init(url: URL(string: "https://wjjh5.cnlive.com/yuanmaLogoutApplication.html")!))
  40 + return webView
  41 + }()
  42 +
  43 + lazy var selectButton: HotButton = {
  44 + let selectButton = HotButton(type: .custom)
  45 + selectButton.backgroundColor = .clear
  46 + selectButton.setImage(UIImage(named: "Login_body_choose_btn_nomal"), for: .normal)
  47 + selectButton.setImage(UIImage(named: "Login_body_choose_btn_nomal"), for: .highlighted)
  48 + selectButton.setImage(UIImage(named: "Login_body_choose_btn_select"), for: .selected)
  49 + selectButton.contentMode = .scaleAspectFill
  50 + selectButton.addTarget(self, action: #selector(changeSelectBtnMothod), for: .touchUpInside)
  51 + return selectButton
  52 + }()
  53 +
  54 + lazy var textView: UITextView = {
  55 + let attributedString = NSMutableAttributedString(string: "我已阅读并同意《注销协议》",
  56 + attributes: [.foregroundColor: HexColor("#999999") as Any, .font: regular_adapt_font(pointSize: 12)])
  57 + let p_Range = NSRange(attributedString.string.range(of: "《注销协议》")!, in: attributedString.string)
  58 + attributedString.addAttribute(.link, value: "delegate://", range: p_Range)
  59 + let textView: UITextView = UITextView.init()
  60 + textView.backgroundColor = .clear
  61 + textView.isEditable = false
  62 + textView.isScrollEnabled = false
  63 + textView.delegate = self
  64 + textView.attributedText = attributedString
  65 + return textView
  66 + }()
  67 +
  68 + lazy var doneButton: APButton = {
  69 + let doneButton = APButton()
  70 + doneButton.setTitle("确认注销", for: .normal)
  71 + doneButton.setTitleColor(.white, for: .normal)
  72 + doneButton.titleLabel?.font = BoldFont_16_Fit
  73 + doneButton.layer.cornerRadius = adapt_length(length: 20)
  74 + doneButton.activityIndicator.color = .white
  75 + doneButton.layer.masksToBounds = true
  76 + doneButton.addTarget(self, action: #selector(sendDoneActionMothod), for: .touchUpInside)
  77 + return doneButton
  78 + }()
  79 +
  80 + var is_agree: Bool!
  81 + override func viewDidLoad() {
  82 + super.viewDidLoad()
  83 + navigationBarHidden = false
  84 + view.backgroundColor = .white
  85 + titleName = "审核申请"
  86 +
  87 + view.addSubview(webView)
  88 + webView.snp.makeConstraints { make in
  89 + make.top.equalToSuperview().offset(KNavigationHeight)
  90 + make.right.left.equalToSuperview()
  91 + make.bottom.equalToSuperview().offset(-adapt_length(length: 110) + get_system_tabbar_ui_offsetHeight())
  92 + }
  93 +
  94 + view.addSubview(doneButton)
  95 + doneButton.snp.makeConstraints { make in
  96 + make.centerX.equalToSuperview()
  97 + make.bottom.equalToSuperview().offset(-(get_system_tabbar_ui_offsetHeight()+adapt_length(length: 10)))
  98 + make.left.equalToSuperview().offset(adapt_length(length: 20))
  99 + make.right.equalToSuperview().offset(-adapt_length(length: 20))
  100 + make.height.equalTo(adapt_length(length: 40))
  101 + }
  102 +
  103 + view.addSubview(textView)
  104 + textView.snp.makeConstraints { make in
  105 + make.left.equalToSuperview().offset(adapt_length(length: 40))
  106 + make.bottom.equalTo(doneButton.snp.top).offset(-adapt_length(length: 10))
  107 + make.right.equalToSuperview().offset(-adapt_length(length: 20))
  108 + }
  109 +
  110 + view.addSubview(selectButton)
  111 + selectButton.snp.makeConstraints { make in
  112 + make.centerY.equalTo(textView)
  113 + make.left.equalToSuperview().offset(adapt_length(length: 20))
  114 + make.size.equalTo(adapt_length(length: 25))
  115 + }
  116 +
  117 + doneButton.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: 0.3),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: 0.3)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5))
  118 + }
  119 +
  120 + @objc func changeSelectBtnMothod(sender : UIButton) {
  121 + sender.isSelected = !sender.isSelected
  122 + is_agree = sender.isSelected
  123 + if is_agree {
  124 + doneButton.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: 1),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: 1)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5))
  125 + } else {
  126 + doneButton.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: 0.3),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: 0.3)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5))
  127 + }
  128 + }
  129 +
  130 + private func setupWithSendBtnStatue(statue: Bool) {
  131 + var alpha = 0.3
  132 + if statue {
  133 + alpha = 1
  134 + }
  135 + doneButton.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: alpha),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: alpha)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5))
  136 + }
  137 +
  138 + @objc func sendDoneActionMothod(sender: APButton) {
  139 + if !is_agree {
  140 + showMessage(message: "请先阅读并同意协议")
  141 + return
  142 + }
  143 + AlertTool.showSystemAlert(title: "注销将会清除您在元码上的个人信息和购买的所有权益,且不可恢复,确定注销吗?", message: "", actionTitles: ["确定","取消"], style: .alert) { index in
  144 + if index == 1 {
  145 + sender.startAnimating()
  146 + CNLiveMineViewModel.requestSignOut { [weak self] result, respStatue in
  147 + sender.stopAnimating()
  148 + if respStatue == .success {
  149 + let message = result as! String
  150 + if message == "455" {
  151 + showMessage(message: "账号已经在注销中,请等待")
  152 + self!.navigationController?.popViewController(animated: true)
  153 + } else {
  154 + UserDefaults.standard.set(false,forKey: "is_login")
  155 + UserInfoManager.clearUserInfo()
  156 + let window = UIApplication.shared.delegate?.window
  157 + window??.rootViewController = CNLiveLoginViewController.init()
  158 + }
  159 + }
  160 + }
  161 + }
  162 + }
  163 + }
  164 +
  165 + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  166 + hiddenLoading()
  167 + }
  168 +
  169 + func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
  170 + loadHTMLString()
  171 + hiddenLoading()
  172 + }
  173 +
  174 + func loadHTMLString() {
  175 + let htmlContent = "<div style=\"padding:0 5px;\"><p style=\"font-size:1.0625em;\"><strong>我们对你注销元码账号的决定深表遗憾。如果你仍执意注销账号,你的账号需同时满足以下条件:</strong></p><hr style=\"background-color:#EEEEEE;height:1px;border:none;\"/><p style=\"font-size:1em;\">1.账号处于安全状态: 最近1个月内无绑定手机/修改手机号、无找回密码/修改密码等操作,账号为正常使用中且在1年内无任何账号被限制的记录。</p><hr style=\"background-color:#EEEEEE;height:1px;border:none;\"/><p style=\"font-size:1em;\">2.账号财产已结清,没有未完成和/或存在争议的服务: 账号中没有资产、欠款、未结清的资金和虚拟权益;本账号及通过本账号接入的第三方中没有未完成和/或存在争议的服务。</p><hr style=\"background-color:#EEEEEE;height:1px;border:none;\"/><p style=\"font-size:1em;\">3.账号权限解除: 账号已解除与其他产品、网站授权登录或绑定关系。</p><hr style=\"background-color:#EEEEEE;height:1px;border:none;\"/><p style=\"font-size:1em;\">4.账号无任何纠纷,包括投诉举报或被投诉举报。</p></div>"
  176 + webView.loadHTMLString(htmlContent, baseURL: URL(string: ""))
  177 + }
  178 +}
  179 +extension CNLiveMineSignOutViewController {
  180 + func textView(_ textView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
  181 + return false
  182 + }
  183 + func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
  184 + if URL.absoluteString == "delegate://" {
  185 + self.navigationController?.pushViewController(CNLiveInfoShowViewController.init(show_type: .cancel, is_login: true), animated: true)
  186 + return false
  187 + }
  188 + return true
  189 + }
  190 +}
metaCode/Classes/Main/MinePage/Controller/CNLiveMineViewController.swift
@@ -46,7 +46,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate, @@ -46,7 +46,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate,
46 dataArray.add(array03) 46 dataArray.add(array03)
47 47
48 48
49 - dataArray.add([["name":"订单列表","icon":"mine_list_icon_help_feedback"]]) 49 +// dataArray.add([["name":"订单列表","icon":"mine_list_icon_help_feedback"]])
50 50
51 51
52 return dataArray 52 return dataArray
metaCode/Classes/Main/MinePage/Controller/CNLiveTypeFeedBackViewController.swift
@@ -45,6 +45,7 @@ class CNLiveTypeFeedBackViewController : CNLiveBaseViewController, UITableViewDe @@ -45,6 +45,7 @@ class CNLiveTypeFeedBackViewController : CNLiveBaseViewController, UITableViewDe
45 if _show_type == .setting { 45 if _show_type == .setting {
46 dataArray.add(["icon":"mine_list_sub_set_privacy","name":"隐私"]) 46 dataArray.add(["icon":"mine_list_sub_set_privacy","name":"隐私"])
47 dataArray.add(["icon":"mine_list_sub_set_about","name":"关于我们"]) 47 dataArray.add(["icon":"mine_list_sub_set_about","name":"关于我们"])
  48 + dataArray.add(["icon":"mine_list_sub_set_about","name":"注销账号"])
48 } 49 }
49 if _show_type == .privacy { 50 if _show_type == .privacy {
50 dataArray.add(["icon":"","name":"系统权限管理"]) 51 dataArray.add(["icon":"","name":"系统权限管理"])
@@ -276,6 +277,9 @@ extension CNLiveTypeFeedBackViewController { @@ -276,6 +277,9 @@ extension CNLiveTypeFeedBackViewController {
276 if indexPath.section == 1 { 277 if indexPath.section == 1 {
277 self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .about), animated: true) 278 self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .about), animated: true)
278 } 279 }
  280 + if indexPath.section == 2 {
  281 + self.navigationController?.pushViewController(CNLiveMineSignOutViewController.init(), animated: true)
  282 + }
279 } 283 }
280 if _show_type == .privacy { 284 if _show_type == .privacy {
281 if indexPath.section == 0 { 285 if indexPath.section == 0 {
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineViewModel.swift
@@ -938,6 +938,43 @@ class CNLiveMineViewModel: NSObject { @@ -938,6 +938,43 @@ class CNLiveMineViewModel: NSObject {
938 } 938 }
939 } 939 }
940 940
  941 + /// 注销账号
  942 + /// - Parameter resultBlock: 返回结果
  943 + static func requestSignOut(resultBlock: @escaping resultNewsBlock) {
  944 + let param = NSMutableDictionary()
  945 + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "loginSid")
  946 + let custom_param = NSMutableDictionary()
  947 + custom_param.setValue(APPId_wjj, forKey: "appId")
  948 + custom_param.setValue(APPKey_wjj, forKey: "appKey")
  949 + CNLiveNetworking.setAllowRequestDefaultArgument(true)
  950 + CNLiveNetworking.setupShowDataResult(false)
  951 + CNLiveNetworking.setupSignRequestKey(APPKey_wjj)
  952 + CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
  953 + CNLiveNetworking.requestNetwork(with: .POST, urlString: APPBaseWjjUrl+"/Daren/common/cancellationAccount.action", param: (param as! [AnyHashable : Any]), cacheType: .networkOnly) { task, result, error in
  954 + hiddenLoading()
  955 + if (error == nil) {
  956 + let resp = result as! NSDictionary
  957 + let errorCode = "\(resp["errorCode"] ?? "0")"
  958 + if (errorCode == "0") {
  959 + resultBlock("提交成功",.success)
  960 + } else if (errorCode == "455") {
  961 + resultBlock("455",.success)
  962 + } else {
  963 + showMessage(message: resp["errorMessage"] as! String)
  964 + resultBlock(NSNull(),.failed)
  965 + }
  966 + } else {
  967 + if CNLiveNetworking.isNetworking() {
  968 + showMessage(message: "获取失败")
  969 + resultBlock(NSNull(),.failed)
  970 + } else {
  971 + showMessage(message: "似乎与网络断开链接")
  972 + resultBlock(NSNull(),.noNetwork)
  973 + }
  974 + }
  975 + }
  976 + }
  977 +
941 static func log(resp: Any) { 978 static func log(resp: Any) {
942 do { 979 do {
943 let jsonData = try JSONSerialization.data(withJSONObject: resp, options: .prettyPrinted) 980 let jsonData = try JSONSerialization.data(withJSONObject: resp, options: .prettyPrinted)
metaCode/Classes/Main/ShopPage/Controller/CNLiveShopOrderDetailViewController.swift
@@ -197,7 +197,7 @@ extension CNLiveShopOrderDetailViewController { @@ -197,7 +197,7 @@ extension CNLiveShopOrderDetailViewController {
197 if detailModel.send_num > 1 || detailModel.is_send == "0" { 197 if detailModel.send_num > 1 || detailModel.is_send == "0" {
198 self.navigationController?.pushViewController(CNLiveShopOrderExpressListViewController.init(orderId: detailModel.id! as NSString), animated: true) 198 self.navigationController?.pushViewController(CNLiveShopOrderExpressListViewController.init(orderId: detailModel.id! as NSString), animated: true)
199 } else { 199 } else {
200 - 200 + self.navigationController?.pushViewController(CNLiveShopOrderExpressDetailViewController.init(orderId: "1000021749", expId: "0", express_num: "1234556789012345", show_type: .orderExpress, progress: .Zero), animated: true)
201 } 201 }
202 } 202 }
203 203
metaCode/Classes/Main/ShopPage/Controller/CNLiveShopOrderExpressDetailViewController.swift
@@ -18,17 +18,17 @@ enum CNLiveShopOrderExpressDetailYBYProgress { @@ -18,17 +18,17 @@ enum CNLiveShopOrderExpressDetailYBYProgress {
18 } 18 }
19 class CNLiveShopOrderExpressDetailViewController: CNLiveBaseViewController, UITableViewDelegate, UITableViewDataSource, EmptyDataSetSource, EmptyDataSetDelegate { 19 class CNLiveShopOrderExpressDetailViewController: CNLiveBaseViewController, UITableViewDelegate, UITableViewDataSource, EmptyDataSetSource, EmptyDataSetDelegate {
20 20
21 - 21 + let kShopBodyOrderExpressDetailTableViewCellIdentifier = "kShopBodyOrderExpressDetailTableViewCellIdentifier"
22 lazy var tableView : UITableView = { 22 lazy var tableView : UITableView = {
23 let tableView = UITableView(frame: .zero, style: .plain) 23 let tableView = UITableView(frame: .zero, style: .plain)
24 tableView.dataSource = self 24 tableView.dataSource = self
25 tableView.delegate = self 25 tableView.delegate = self
26 tableView.emptyDataSetSource = self 26 tableView.emptyDataSetSource = self
27 tableView.emptyDataSetDelegate = self 27 tableView.emptyDataSetDelegate = self
28 - tableView.backgroundColor = HexColor("#f1f2f6") 28 + tableView.backgroundColor = .white
29 tableView.tableFooterView = UIView.init() 29 tableView.tableFooterView = UIView.init()
30 tableView.separatorStyle = .none 30 tableView.separatorStyle = .none
31 - tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCellIdentifier") 31 + tableView.register(ShopBodyOrderExpressDetailTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderExpressDetailTableViewCellIdentifier)
32 return tableView 32 return tableView
33 }() 33 }()
34 34
@@ -37,19 +37,25 @@ class CNLiveShopOrderExpressDetailViewController: CNLiveBaseViewController, UITa @@ -37,19 +37,25 @@ class CNLiveShopOrderExpressDetailViewController: CNLiveBaseViewController, UITa
37 return dataArray 37 return dataArray
38 }() 38 }()
39 39
  40 + lazy var temp_array: NSMutableArray = {
  41 + let temp_array = NSMutableArray.init()
  42 + return temp_array
  43 + }()
  44 +
40 var _expId: NSString! 45 var _expId: NSString!
41 var _orderId: NSString! 46 var _orderId: NSString!
42 var _refundId: NSString! 47 var _refundId: NSString!
43 var _express_num: NSString! 48 var _express_num: NSString!
44 - var expressModel: ShopOrderExpressDetailModel! 49 + var expressModel: ShopOrderExpressModel!
45 var _show_type: CNLiveShopOrderExpressDetailShowType! 50 var _show_type: CNLiveShopOrderExpressDetailShowType!
46 var _progress: CNLiveShopOrderExpressDetailYBYProgress! 51 var _progress: CNLiveShopOrderExpressDetailYBYProgress!
47 var network_type: CNLiveMineResponseType! 52 var network_type: CNLiveMineResponseType!
48 - init(orderId: NSString, expId: NSString, show_type: CNLiveShopOrderExpressDetailShowType, progress: CNLiveShopOrderExpressDetailYBYProgress) { 53 + init(orderId: NSString, expId: NSString, express_num: NSString, show_type: CNLiveShopOrderExpressDetailShowType, progress: CNLiveShopOrderExpressDetailYBYProgress) {
49 _orderId = orderId 54 _orderId = orderId
50 _expId = expId 55 _expId = expId
51 _show_type = show_type 56 _show_type = show_type
52 _progress = progress 57 _progress = progress
  58 + _express_num = express_num
53 super.init(nibName:nil, bundle:nil) 59 super.init(nibName:nil, bundle:nil)
54 } 60 }
55 61
@@ -73,19 +79,20 @@ class CNLiveShopOrderExpressDetailViewController: CNLiveBaseViewController, UITa @@ -73,19 +79,20 @@ class CNLiveShopOrderExpressDetailViewController: CNLiveBaseViewController, UITa
73 } 79 }
74 80
75 func loadDataSourceAction() { 81 func loadDataSourceAction() {
76 - CNLiveShopViewModel.requestExpressDetail(orderId: _orderId, expId: _expId, networkType: _show_type) { [weak self] result, respStatue in  
77 - if respStatue == .success {  
78 - let expressModel = result as! ShopOrderExpressDetailModel  
79 - self!.dataArray.addObjects(from: expressModel.data)  
80 - self!.tableView.reloadData()  
81 - }else if (respStatue == .noNetwork) {  
82 - self!.network_type = .noNetwork  
83 - self!.tableView.reloadEmptyDataSet()  
84 - } else {  
85 - self!.network_type = .failed  
86 - self!.tableView.reloadEmptyDataSet()  
87 - }  
88 - } 82 +// showLoading(message: "")
  83 +// CNLiveShopViewModel.requestExpressDetail(orderId: _orderId, expId: _expId, networkType: _show_type) { [weak self] result, respStatue in
  84 +// if respStatue == .success {
  85 +// self!.expressModel = (result as! ShopOrderExpressDetailModel).express
  86 +// self!.dataArray.addObjects(from: (result as! ShopOrderExpressDetailModel).data)
  87 +// self!.tableView.reloadData()
  88 +// }else if (respStatue == .noNetwork) {
  89 +// self!.network_type = .noNetwork
  90 +// self!.tableView.reloadEmptyDataSet()
  91 +// } else {
  92 +// self!.network_type = .failed
  93 +// self!.tableView.reloadEmptyDataSet()
  94 +// }
  95 +// }
89 } 96 }
90 } 97 }
91 98
@@ -94,16 +101,42 @@ extension CNLiveShopOrderExpressDetailViewController { @@ -94,16 +101,42 @@ extension CNLiveShopOrderExpressDetailViewController {
94 return 1 101 return 1
95 } 102 }
96 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 103 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
97 - return self.dataArray.count 104 +// if _show_type == .orderExpress || _show_type == .refundExpress {
  105 +// return dataArray.count == 0 ? 0 : dataArray.count + 1
  106 +// } else {
  107 + return self.dataArray.count
  108 +// }
98 } 109 }
99 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 110 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
100 - guard let cell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCellIdentifier") else {  
101 - return UITableViewCell()  
102 - }  
103 - return cell 111 + return UITableViewCell.init()
  112 +// guard let cell = tableView.dequeueReusableCell(withIdentifier: kShopBodyOrderExpressDetailTableViewCellIdentifier) as? ShopBodyOrderExpressDetailTableViewCell else {
  113 +// return ShopBodyOrderExpressDetailTableViewCell()
  114 +// }
  115 +// var isLastRow: Bool = false
  116 +// var detailModel: ShopOrderExpressDetailDateModel!
  117 +// if _show_type == .orderExpress || _show_type == .refundExpress {
  118 +// if indexPath.row == 0 {
  119 +// detailModel = ShopOrderExpressDetailDateModel()
  120 +// } else {
  121 +// detailModel = (dataArray[indexPath.row - 1] as! ShopOrderExpressDetailDateModel)
  122 +// }
  123 +// if indexPath.row == dataArray.count {
  124 +// isLastRow = true
  125 +// }
  126 +// } else {
  127 +// detailModel = (dataArray[indexPath.row] as! ShopOrderExpressDetailDateModel)
  128 +// if indexPath.row == dataArray.count - 1 {
  129 +// isLastRow = true
  130 +// }
  131 +// }
  132 +// cell.setupDataSource(dataModel: detailModel, row: indexPath.row, isLastRow: isLastRow, type: _show_type, address: expressModel.address! as NSString, express_state: expressModel.state! as NSString, temp_array: temp_array)
  133 +// return cell
104 } 134 }
  135 +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
  136 +// return adapt_length(length: 80)
  137 +// }
105 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 138 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
106 - return adapt_length(length: 0.01) 139 + return 0.01
107 } 140 }
108 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 141 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
109 } 142 }
metaCode/Classes/Main/ShopPage/Controller/CNLiveShopOrderListViewController.swift
@@ -280,10 +280,10 @@ extension CNLiveShopOrderListViewController { @@ -280,10 +280,10 @@ extension CNLiveShopOrderListViewController {
280 /// - Parameter detailModel: 数据源 280 /// - Parameter detailModel: 数据源
281 private func pushExpressVC(listModel: ShopOrderListModel) { 281 private func pushExpressVC(listModel: ShopOrderListModel) {
282 if listModel.send_num > 1 || listModel.is_send == "0" { 282 if listModel.send_num > 1 || listModel.is_send == "0" {
283 -// self.navigationController?.pushViewController(CNLiveShopOrderExpressListViewController.init(orderId: listModel.id! as NSString), animated: true)  
284 - self.navigationController?.pushViewController(CNLiveShopOrderExpressListViewController.init(orderId: "1000073435"), animated: true) 283 + self.navigationController?.pushViewController(CNLiveShopOrderExpressListViewController.init(orderId: listModel.id! as NSString), animated: true)
  284 +// self.navigationController?.pushViewController(CNLiveShopOrderExpressListViewController.init(orderId: "1000073435"), animated: true)
285 } else { 285 } else {
286 -// self.navigationController?.pushViewController(CNLiveShopOrderExpressDetailViewController.init(), animated: true) 286 + self.navigationController?.pushViewController(CNLiveShopOrderExpressDetailViewController.init(orderId: "1000021749", expId: "0", express_num: "1234556789012345", show_type: .orderExpress, progress: .Zero), animated: true)
287 } 287 }
288 } 288 }
289 289
metaCode/Classes/Main/ShopPage/View/CNLiveShopBodyExpressView.swift
@@ -168,7 +168,7 @@ class ShopBodyOrderExpressListTableViewCell: UITableViewCell, UICollectionViewDa @@ -168,7 +168,7 @@ class ShopBodyOrderExpressListTableViewCell: UITableViewCell, UICollectionViewDa
168 } 168 }
169 169
170 @objc func pushExpressDetail() { 170 @objc func pushExpressDetail() {
171 - currentViewController()?.navigationController?.pushViewController(CNLiveShopOrderExpressDetailViewController.init(orderId: _listModel.id! as NSString, expId: _listModel.express_num! as NSString, show_type: .orderExpress, progress: .Zero), animated: true) 171 + currentViewController()?.navigationController?.pushViewController(CNLiveShopOrderExpressDetailViewController.init(orderId: _listModel.id! as NSString, expId: _listModel.express_num! as NSString, express_num: _listModel.express_num! as NSString, show_type: .orderExpress, progress: .Zero), animated: true)
172 } 172 }
173 173
174 @objc func actionClick(sender: UIButton) { 174 @objc func actionClick(sender: UIButton) {
@@ -256,7 +256,7 @@ class ShopBodyOrderExpressDetailHeaderView: UIView { @@ -256,7 +256,7 @@ class ShopBodyOrderExpressDetailHeaderView: UIView {
256 } 256 }
257 257
258 258
259 -class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate { 259 +class ShopBodyOrderExpressDetailTableViewCell: UITableViewCell, UITextViewDelegate {
260 260
261 lazy var lineLabel: UILabel = { 261 lazy var lineLabel: UILabel = {
262 let lineLabel = UILabel.init() 262 let lineLabel = UILabel.init()
@@ -295,12 +295,15 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate { @@ -295,12 +295,15 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate {
295 super.init(style: style, reuseIdentifier: reuseIdentifier) 295 super.init(style: style, reuseIdentifier: reuseIdentifier)
296 contentView.backgroundColor = .white 296 contentView.backgroundColor = .white
297 selectionStyle = .none 297 selectionStyle = .none
  298 + _have_layout = false
298 299
299 addSubview(lineLabel) 300 addSubview(lineLabel)
300 addSubview(pointImageView) 301 addSubview(pointImageView)
301 addSubview(titleTextView) 302 addSubview(titleTextView)
302 addSubview(timeLabel) 303 addSubview(timeLabel)
303 addSubview(bottomLine) 304 addSubview(bottomLine)
  305 +
  306 + initLayout()
304 } 307 }
305 308
306 func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { 309 func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
@@ -319,14 +322,14 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate { @@ -319,14 +322,14 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate {
319 return false 322 return false
320 } 323 }
321 324
322 - 325 + var _have_layout: Bool!
323 var _dataModel: ShopOrderExpressDetailDateModel! 326 var _dataModel: ShopOrderExpressDetailDateModel!
324 var _row: NSInteger! 327 var _row: NSInteger!
325 var _isLastRow: Bool! 328 var _isLastRow: Bool!
326 var _type: CNLiveShopOrderExpressDetailShowType! 329 var _type: CNLiveShopOrderExpressDetailShowType!
327 var _address: NSString! 330 var _address: NSString!
328 var _express_state: NSString! 331 var _express_state: NSString!
329 - func setupDataSource(dataModel: ShopOrderExpressDetailDateModel, row: NSInteger, isLastRow: Bool, type: CNLiveShopOrderExpressDetailShowType, address: NSString, express_state: NSString) { 332 + func setupDataSource(dataModel: ShopOrderExpressDetailDateModel, row: NSInteger, isLastRow: Bool, type: CNLiveShopOrderExpressDetailShowType, address: NSString, express_state: NSString, temp_array: NSMutableArray) {
330 _dataModel = dataModel 333 _dataModel = dataModel
331 _row = row 334 _row = row
332 _isLastRow = isLastRow 335 _isLastRow = isLastRow
@@ -362,6 +365,18 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate { @@ -362,6 +365,18 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate {
362 pointImageView.size = CGSizeMake(adapt_length(length: 15), adapt_length(length: 15)) 365 pointImageView.size = CGSizeMake(adapt_length(length: 15), adapt_length(length: 15))
363 pointImageView.layer.cornerRadius = 0 366 pointImageView.layer.cornerRadius = 0
364 pointImageView.layer.masksToBounds = false 367 pointImageView.layer.masksToBounds = false
  368 + } else {
  369 + let title = NSMutableAttributedString.init(string: dataModel.AcceptStation!, attributes: [.font:medium_adapt_font(pointSize: 12),.foregroundColor:HexColor("#b4b4b4")!,.paragraphStyle:para.copy()])
  370 + titleTextView.attributedText = setHyperlinksAttrStr(attrStr: title)
  371 + timeLabel.text = dataModel.AcceptTime
  372 +
  373 + pointImageView.image = nil
  374 + pointImageView.backgroundColor = backgroundColor
  375 + pointImageView.size = CGSize(width: adapt_length(length: 5), height: adapt_length(length: 5))
  376 + pointImageView.layer.cornerRadius = pointImageView.height/2
  377 + pointImageView.layer.masksToBounds = true
  378 + pointImageView.layer.borderColor = HexColor("#d2d2d2")?.cgColor
  379 + pointImageView.layer.borderWidth = adapt_length(length: 1)
365 } 380 }
366 } else { 381 } else {
367 titleTextView.font = medium_adapt_font(pointSize: 14) 382 titleTextView.font = medium_adapt_font(pointSize: 14)
@@ -389,7 +404,80 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate { @@ -389,7 +404,80 @@ class ShopBodyOrderExpressDetailTableView: UITableViewCell, UITextViewDelegate {
389 } 404 }
390 titleTextView.sizeToFit() 405 titleTextView.sizeToFit()
391 406
392 - 407 +// if !temp_array.contains(dataModel.AcceptTime!) {
  408 +
  409 +// temp_array.add(dataModel.AcceptTime!)
  410 +// }
  411 + }
  412 +
  413 + func initLayout() {
  414 + lineLabel.snp.makeConstraints { make in
  415 + make.centerX.equalTo(pointImageView)
  416 + make.top.bottom.equalToSuperview()
  417 + make.width.equalTo(adapt_length(length: 1))
  418 + }
  419 + pointImageView.snp.makeConstraints { make in
  420 + make.top.equalToSuperview().offset(adapt_length(length: 16))
  421 + make.left.equalTo(adapt_length(length: 20))
  422 + make.size.equalTo(pointImageView.size)
  423 + }
  424 + }
  425 +
  426 + func setupLayout() {
  427 + if _row == 0 {
  428 + lineLabel.snp.updateConstraints { make in
  429 +// make.centerX.equalTo(pointImageView)
  430 + make.top.equalTo(pointImageView.snp.bottom)
  431 +// make.bottom.equalToSuperview()
  432 +// make.width.equalTo(adapt_length(length: 1))
  433 + }
  434 + } else if _isLastRow {
  435 + lineLabel.snp.updateConstraints { make in
  436 +// make.centerX.equalTo(pointImageView)
  437 +// make.top.equalToSuperview()
  438 + make.bottom.equalTo(pointImageView.snp.top)
  439 +// make.width.equalTo(adapt_length(length: 1))
  440 + }
  441 + }
  442 +// else {
  443 +// lineLabel.snp.makeConstraints { make in
  444 +// make.centerX.equalTo(pointImageView)
  445 +// make.top.bottom.equalToSuperview()
  446 +// make.width.equalTo(adapt_length(length: 1))
  447 +// }
  448 +// }
  449 + if ((_type == .orderExpress || _type == .refundExpress) && _row == 1) || (_type == .byYourself && _row == 0) {
  450 + pointImageView.snp.makeConstraints { make in
  451 + make.top.equalToSuperview().offset(adapt_length(length: 16))
  452 + make.left.equalTo(adapt_length(length: 20))
  453 + make.size.equalTo(pointImageView.size)
  454 + }
  455 + } else {
  456 + pointImageView.snp.makeConstraints { make in
  457 + make.top.equalToSuperview().offset(adapt_length(length: 21))
  458 + make.left.equalTo(adapt_length(length: 25))
  459 + make.size.equalTo(pointImageView.size)
  460 + }
  461 + }
  462 + titleTextView.snp.makeConstraints { make in
  463 + make.top.equalToSuperview().offset(adapt_length(length: 15))
  464 + make.left.equalToSuperview().offset(adapt_length(length: 48))
  465 + make.right.equalToSuperview().offset(-adapt_length(length: 20))
  466 + make.height.equalTo(titleTextView.height)
  467 + }
  468 + let top = timeLabel.text!.isNotBlank() ? adapt_length(length: 15) : 0
  469 + timeLabel.snp.makeConstraints { make in
  470 + make.top.equalTo(titleTextView.snp.bottom).offset(adapt_length(length: top))
  471 + make.left.equalTo(titleTextView.snp.left)
  472 + make.right.equalToSuperview().offset(-adapt_length(length: 20))
  473 + make.bottom.equalToSuperview().offset(-adapt_length(length: 15))
  474 + }
  475 + bottomLine.snp.makeConstraints { make in
  476 + make.left.equalTo(titleTextView.snp.left)
  477 + make.right.equalToSuperview().offset(-adapt_length(length: 20))
  478 + make.bottom.equalToSuperview()
  479 + make.height.equalTo(adapt_length(length: 1))
  480 + }
393 } 481 }
394 482
395 func setHyperlinksAttrStr(attrStr: NSMutableAttributedString) -> NSAttributedString { 483 func setHyperlinksAttrStr(attrStr: NSMutableAttributedString) -> NSAttributedString {
metaCode/Classes/Other/AppDelegate.swift
@@ -71,7 +71,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { @@ -71,7 +71,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
71 71
72 let shop_dic : Dictionary = ["Phone-Model":"iPhone","Uid":UserInfoManager.shared.userInfo.uid ,"CFBundleShortVersionString":ver,"Shop-Version":"0.6.2"] 72 let shop_dic : Dictionary = ["Phone-Model":"iPhone","Uid":UserInfoManager.shared.userInfo.uid ,"CFBundleShortVersionString":ver,"Shop-Version":"0.6.2"]
73 CNLiveNetworking.setupDSShopParam(shop_dic) 73 CNLiveNetworking.setupDSShopParam(shop_dic)
74 - CNLiveNetworking.setRequestTimeoutInterval(10) 74 + CNLiveNetworking.setRequestTimeoutInterval(20)
75 CNLiveNetworking.setupShowDataResult(false) 75 CNLiveNetworking.setupShowDataResult(false)
76 CNLiveNetworking.setupSignKey(APPKey) 76 CNLiveNetworking.setupSignKey(APPKey)
77 CNLiveNetworking.setAllowRequestDefaultArgument(true) 77 CNLiveNetworking.setAllowRequestDefaultArgument(true)