Commit 4bfe3ea48d633080fadc96c38312c50204bbc56c

Authored by liushiyu
1 parent aad74940

产品问题修改

Showing 24 changed files with 364 additions and 37 deletions
metaCode.xcodeproj/project.pbxproj
... ... @@ -178,6 +178,7 @@
178 178 7978A8432A396632007C86B8 /* CNLiveMineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */; };
179 179 79803E272AD68D3100F05F68 /* CNLiveMineShopViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79803E262AD68D3100F05F68 /* CNLiveMineShopViewController.swift */; };
180 180 79803E292AD6991200F05F68 /* CNLiveMineInputMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79803E282AD6991200F05F68 /* CNLiveMineInputMessageView.swift */; };
  181 + 79868B192B874294008E0F5C /* CNLiveSaveAuthStateDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79868B182B874293008E0F5C /* CNLiveSaveAuthStateDB.swift */; };
181 182 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */; };
182 183 798916E92B04532D00D08302 /* CNLiveSavePointDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798916E82B04532D00D08302 /* CNLiveSavePointDB.swift */; };
183 184 798916ED2B048E8200D08302 /* CNLiveShopTransViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798916EC2B048E8200D08302 /* CNLiveShopTransViewController.swift */; };
... ... @@ -441,6 +442,7 @@
441 442 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewModel.swift; sourceTree = "<group>"; };
442 443 79803E262AD68D3100F05F68 /* CNLiveMineShopViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineShopViewController.swift; sourceTree = "<group>"; };
443 444 79803E282AD6991200F05F68 /* CNLiveMineInputMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineInputMessageView.swift; sourceTree = "<group>"; };
  445 + 79868B182B874293008E0F5C /* CNLiveSaveAuthStateDB.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNLiveSaveAuthStateDB.swift; sourceTree = "<group>"; };
444 446 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineQuestViewController.swift; sourceTree = "<group>"; };
445 447 798916E82B04532D00D08302 /* CNLiveSavePointDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSavePointDB.swift; sourceTree = "<group>"; };
446 448 798916EC2B048E8200D08302 /* CNLiveShopTransViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopTransViewController.swift; sourceTree = "<group>"; };
... ... @@ -1125,6 +1127,7 @@
1125 1127 79579CAA2AAAE905006E5B38 /* Database */ = {
1126 1128 isa = PBXGroup;
1127 1129 children = (
  1130 + 79868B182B874293008E0F5C /* CNLiveSaveAuthStateDB.swift */,
1128 1131 7C7C62F52A4D72E9007A912E /* CNLiveIdentityDB.swift */,
1129 1132 79BA085C2AB18E8300D01875 /* CNLiveSaveAuthDB.swift */,
1130 1133 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */,
... ... @@ -1883,6 +1886,7 @@
1883 1886 79A267832AF8D7BC0088D9F6 /* CNLiveShopBodyCustomView.swift in Sources */,
1884 1887 1917335E2B328495007BCC04 /* CNLiveCouponListTableViewCell.swift in Sources */,
1885 1888 791C1C8C2AFB85F8003E6362 /* CNLiveShopBodyExpressView.swift in Sources */,
  1889 + 79868B192B874294008E0F5C /* CNLiveSaveAuthStateDB.swift in Sources */,
1886 1890 790D019A2A2DCAE400C5978D /* CNLiveViewController.swift in Sources */,
1887 1891 191733192B10A05D007BCC04 /* CNLivePlayerProgressView.swift in Sources */,
1888 1892 79803E272AD68D3100F05F68 /* CNLiveMineShopViewController.swift in Sources */,
... ...
metaCode.xcodeproj/xcshareddata/xcschemes/metaCode.xcscheme 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1430"
  4 + version = "1.7">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "818163B72A25CFCC00579C86"
  18 + BuildableName = "metaCode.app"
  19 + BlueprintName = "metaCode"
  20 + ReferencedContainer = "container:metaCode.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES"
  30 + shouldAutocreateTestPlan = "YES">
  31 + <Testables>
  32 + <TestableReference
  33 + skipped = "NO">
  34 + <BuildableReference
  35 + BuildableIdentifier = "primary"
  36 + BlueprintIdentifier = "818163CD2A25CFCF00579C86"
  37 + BuildableName = "metaCodeTests.xctest"
  38 + BlueprintName = "metaCodeTests"
  39 + ReferencedContainer = "container:metaCode.xcodeproj">
  40 + </BuildableReference>
  41 + </TestableReference>
  42 + <TestableReference
  43 + skipped = "NO">
  44 + <BuildableReference
  45 + BuildableIdentifier = "primary"
  46 + BlueprintIdentifier = "818163D72A25CFCF00579C86"
  47 + BuildableName = "metaCodeUITests.xctest"
  48 + BlueprintName = "metaCodeUITests"
  49 + ReferencedContainer = "container:metaCode.xcodeproj">
  50 + </BuildableReference>
  51 + </TestableReference>
  52 + </Testables>
  53 + </TestAction>
  54 + <LaunchAction
  55 + buildConfiguration = "Debug"
  56 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  57 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  58 + launchStyle = "0"
  59 + useCustomWorkingDirectory = "NO"
  60 + ignoresPersistentStateOnLaunch = "NO"
  61 + debugDocumentVersioning = "YES"
  62 + debugServiceExtension = "internal"
  63 + allowLocationSimulation = "YES">
  64 + <BuildableProductRunnable
  65 + runnableDebuggingMode = "0">
  66 + <BuildableReference
  67 + BuildableIdentifier = "primary"
  68 + BlueprintIdentifier = "818163B72A25CFCC00579C86"
  69 + BuildableName = "metaCode.app"
  70 + BlueprintName = "metaCode"
  71 + ReferencedContainer = "container:metaCode.xcodeproj">
  72 + </BuildableReference>
  73 + </BuildableProductRunnable>
  74 + </LaunchAction>
  75 + <ProfileAction
  76 + buildConfiguration = "Debug"
  77 + shouldUseLaunchSchemeArgsEnv = "YES"
  78 + savedToolIdentifier = ""
  79 + useCustomWorkingDirectory = "NO"
  80 + debugDocumentVersioning = "YES">
  81 + <BuildableProductRunnable
  82 + runnableDebuggingMode = "0">
  83 + <BuildableReference
  84 + BuildableIdentifier = "primary"
  85 + BlueprintIdentifier = "818163B72A25CFCC00579C86"
  86 + BuildableName = "metaCode.app"
  87 + BlueprintName = "metaCode"
  88 + ReferencedContainer = "container:metaCode.xcodeproj">
  89 + </BuildableReference>
  90 + </BuildableProductRunnable>
  91 + </ProfileAction>
  92 + <AnalyzeAction
  93 + buildConfiguration = "Debug">
  94 + </AnalyzeAction>
  95 + <ArchiveAction
  96 + buildConfiguration = "Release"
  97 + revealArchiveInOrganizer = "YES">
  98 + </ArchiveAction>
  99 +</Scheme>
... ...
metaCode/Classes/Config/CNLiveConfigUserInfo.swift
... ... @@ -241,14 +241,24 @@ class StandSortManager: NSObject {
241 241 if have_id_auths.count == 0 {
242 242 //1.29 需求 如果第一次的时候没有进行排序,则把已经认证的放在第一位
243 243 let tempArray = NSMutableArray()
244   - for item in stands.reverseObjectEnumerator().allObjects {
  244 + var haveArray = Array<Any>()
  245 + for item in stands {
245 246 let listModel = item as! StandListModel
246 247 if listModel.auth {
247   - tempArray.insert(listModel, at: 0)
  248 + //2.21 需求把已经认证的第一次展示的时候再通过认证的时间先后顺序进行排序
  249 +// tempArray.insert(listModel, at: 0)
  250 + haveArray.append(listModel)
248 251 } else {
  252 + //2.21 需求把未进行认证的第一次展示的时候根据后台返回的排序顺序进行排序,如果用户在进行了排序,则按照用户的排序为主
249 253 tempArray.add(listModel)
250 254 }
251 255 }
  256 + haveArray = haveArray.sorted (by: { (item01, item02) -> Bool in
  257 + return (item01 as! StandListModel).createTime < (item02 as! StandListModel).createTime
  258 + })
  259 + haveArray.forEach { item in
  260 + tempArray.insert(item, at: 0)
  261 + }
252 262 return tempArray
253 263 }
254 264 print("allList接口里面===>\(have_id_auths)")
... ...
metaCode/Classes/Config/Database/CNLiveSaveAuthStateDB.swift 0 → 100644
  1 +//
  2 +// CNLiveSavePointDB.swift
  3 +// metaCode
  4 +//
  5 +// Created by open on 2023/11/15.
  6 +//
  7 +
  8 +import Foundation
  9 +
  10 +let CNLiveSaveAuthStateCacheKey = "kCNLiveSaveAuthStateCacheKey"
  11 +class CNLiveSaveAuthStateDB: NSObject {
  12 +
  13 + static let shared = CNLiveSaveAuthStateDB.init()
  14 +
  15 + open func save(object: MineStandInfoBaseModel, key: String) {
  16 + var temp_dic = NSMutableDictionary.init(contentsOfFile: userFileDir+"\(key)storage.plist")
  17 + if (temp_dic == nil) {
  18 + temp_dic = NSMutableDictionary.init()
  19 + }
  20 + temp_dic?.setObject((object.toJSON() ?? Dictionary()) as Dictionary, forKey: CNLiveSaveAuthStateCacheKey as NSCopying)
  21 + temp_dic?.write(toFile: userFileDir+"\(key)storage.plist", atomically: true)
  22 + }
  23 +
  24 + open func take(key: String) -> MineStandInfoBaseModel {
  25 + let temp_dic = NSMutableDictionary.init(contentsOfFile: userFileDir+"\(key)storage.plist")
  26 + if (temp_dic == nil) {
  27 + return MineStandInfoBaseModel()
  28 + }
  29 + let resp = temp_dic?.object(forKey: CNLiveSaveAuthStateCacheKey)
  30 + let listModel = dictionaryToModel(resp as! [String : Any], MineStandInfoBaseModel.self,"") as! MineStandInfoBaseModel
  31 + return listModel
  32 + }
  33 +
  34 + private lazy var userFileDir: String = {
  35 + let userFileDir = NSString()
  36 + var path: String = ""
  37 + path = "\(fileDir)/userId_\(UserInfoManager.shared.userInfo.uid)/"
  38 + let fileManager = FileManager.default
  39 + var isDir: ObjCBool = false
  40 + let exist: Bool = fileManager.fileExists(atPath: path, isDirectory: &isDir)
  41 + if !(isDir.boolValue && exist) {
  42 + do {
  43 + try fileManager.createDirectory(atPath: path, withIntermediateDirectories: true)
  44 + } catch {
  45 + debugPrint("文件目录创建失败")
  46 + return ""
  47 + }
  48 + }
  49 + return path as String
  50 + }()
  51 +
  52 + private lazy var fileDir: String = {
  53 + let path = "\(NSHomeDirectory())/Documents/metaCode/saveAuthState"
  54 + let fileManager = FileManager.default
  55 + var isDir: ObjCBool = false
  56 + let exist: Bool = fileManager.fileExists(atPath: path, isDirectory: &isDir)
  57 + if !(isDir.boolValue && exist) {
  58 + do {
  59 + try fileManager.createDirectory(atPath: path, withIntermediateDirectories: true)
  60 + } catch {
  61 + debugPrint("文件目录创建失败")
  62 + return ""
  63 + }
  64 + }
  65 + return path as String
  66 + }()
  67 +}
... ...
metaCode/Classes/Environment/CNLiveEnvironment.swift
... ... @@ -21,7 +21,7 @@ let APPId_wjj_b: String = CNLiveMCEnvironmentManager.shared.appId_wjj_b
21 21 ///网家家B端应用的APPKey
22 22 let APPKey_wjj_b: String = CNLiveMCEnvironmentManager.shared.appKey_wjj_b
23 23 ///当前应用的登录请求域名
24   -let APPLoginHost: String! = CNLiveMCEnvironmentManager.shared.loginHost
  24 +let APPLoginHost: String = CNLiveMCEnvironmentManager.shared.loginHost
25 25 ///当前应用的Secret
26 26 let APPSecret: String = CNLiveMCEnvironmentManager.shared.appSecret
27 27 ///当前应用的部分请求接口
... ...
metaCode/Classes/Main/LoginPage/ViewModel/CNLiveLoginViewModel.swift
... ... @@ -43,7 +43,8 @@ class CNLiveLoginViewModel : NSObject {
43 43 CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
44 44 CNLiveNetworking.setAllowRequestDefaultArgument(true)
45 45 CNLiveNetworking.setupShowDataResult(false)
46   - CNLiveNetworking.requestNetwork(with: .POST, urlString: APPLoginHost+"/open/api2/user/sendVerifyCode", param: param, cacheType: .networkOnly) { task, result, error in
  46 + CNLiveNetworking.setupShowResult(true)
  47 + CNLiveNetworking.requestNetwork(with: .POST, urlString: CNLiveMCEnvironmentManager.shared.loginHost+"/open/api2/user/sendVerifyCode", param: param, cacheType: .networkOnly) { task, result, error in
47 48 hiddenLoading()
48 49 if (error == nil) {
49 50 let resp = result as! NSDictionary
... ...
metaCode/Classes/Main/MinePage/Controller/CNLiveMineAddInfoViewController.swift
... ... @@ -85,7 +85,7 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel
85 85 super.viewDidLoad()
86 86 switch _show_type {
87 87 case .add:
88   - titleName = "添加身份"
  88 + titleName = "官方认证"
89 89 case .info:
90 90 titleName = "身份信息"
91 91 tableView.dragInteractionEnabled = true
... ... @@ -307,7 +307,7 @@ extension CNLiveMineAddInfoViewController {
307 307 return MineStandInfoTableViewCell()
308 308 }
309 309 let authModel = dataArray[indexPath.row] as! MineAuthListModel
310   - cell.setupWithAuthDataSource(icon: authModel.icon!, name: authModel.name!,number: authModel.code!)
  310 + cell.setupWithAuthDataSource(icon: authModel.icon!, name: authModel.name!,number: authModel.code!,identityId: "\(authModel.identityId)")
311 311 cell.userInteractionEnabledWhileDragging = false
312 312 return cell
313 313 }
... ...
metaCode/Classes/Main/MinePage/Controller/CNLiveMineAuthFormViewController.swift
... ... @@ -84,15 +84,43 @@ class CNLiveMineAuthFormViewController: CNLiveBaseViewController, UITableViewDel
84 84 }
85 85 cell.clickBlock = {[weak self] view in
86 86 guard let self = self else { return }
  87 + showLoading(message: "")
87 88 let titleLabel = view.viewWithTag(1000) as! UILabel
88 89 if titleLabel.text == "个人认证" {
89   - self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: _listModel, authType: .person), animated: true)
  90 + CNLiveMineViewModel.requestsStandInfo(identityId: "\(_listModel.id)", type: .nodate, authType: .person) {[self] result, respStatue in
  91 + if respStatue == .success {
  92 + let model = (result as! [MineStandInfoModel]).first
  93 + if model?.inputType == 17 || model == nil {
  94 + showMessage(message: "此权限对您暂未开放,请先到首页学习成长")
  95 + return
  96 + }
  97 + self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: self._listModel, authType: .person), animated: true)
  98 + }
  99 + }
90 100 }
91 101 if titleLabel.text == "企业认证" {
92   - self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: _listModel, authType: .enterprise), animated: true)
  102 + CNLiveMineViewModel.requestsStandInfo(identityId: "\(_listModel.id)", type: .nodate, authType: .enterprise) {[self] result, respStatue in
  103 + if respStatue == .success {
  104 + let model = (result as! [MineStandInfoModel]).first
  105 + if model?.inputType == 17 || model == nil {
  106 + showMessage(message: "此权限对您暂未开放,请先到首页学习成长")
  107 + return
  108 + }
  109 + self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: self._listModel, authType: .enterprise), animated: true)
  110 + }
  111 + }
93 112 }
94 113 if titleLabel.text == "机构认证" {
95   - self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: _listModel, authType: .agency), animated: true)
  114 + CNLiveMineViewModel.requestsStandInfo(identityId: "\(_listModel.id)", type: .nodate, authType: .agency) {[self] result, respStatue in
  115 + if respStatue == .success {
  116 + let model = (result as! [MineStandInfoModel]).first
  117 + if model?.inputType == 17 || model == nil {
  118 + showMessage(message: "此权限对您暂未开放,请先到首页学习成长")
  119 + return
  120 + }
  121 + self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: self._listModel, authType: .agency), animated: true)
  122 + }
  123 + }
96 124 }
97 125 }
98 126 let obj = dataArray[indexPath.section]
... ...
metaCode/Classes/Main/MinePage/Controller/CNLiveMineAuthResultViewController.swift
... ... @@ -205,7 +205,7 @@ class CNLiveMineAuthResultViewController: CNLiveBaseViewController {
205 205 self?.iDCardView.isHidden = false
206 206 self?.iDCardView.idModel = self?._listModel
207 207 self?.tipName.text = "恭喜您通过认证"
208   - self?.tipDesc.text = listBaseModel.name!.count > 0 ? "您已是\(listBaseModel.name ?? "")!" : "恭喜您通过认证"
  208 + self?.tipDesc.text = listBaseModel.name.count > 0 ? "您已是\(listBaseModel.name)" : "恭喜您通过认证"
209 209 self?._status = .default
210 210 self?.setNeedsStatusBarAppearanceUpdate()
211 211 NotificationCenter.default.post(name: Notification.Name.StandAuth.StandAuthNotificationSuccess, object: nil)
... ...
metaCode/Classes/Main/MinePage/Controller/CNLiveMineViewController.swift
... ... @@ -39,7 +39,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate,
39 39 dataArray.add([""])
40 40 let array01 : [Dictionary] = [["name":"我的身份","icon":"mine_header_icon_identity"]]
41 41 dataArray.add(array01)
42   - let array02 : [Dictionary] = [["name":"添加身份","icon":"mine_list_icon_add_identity"]]
  42 + let array02 : [Dictionary] = [["name":"官方认证","icon":"mine_list_icon_add_identity"]]
43 43 dataArray.add(array02)
44 44 let array03 : [Dictionary] = [["name":"帮助与反馈","icon":"mine_list_icon_help_feedback"],
45 45 ["name":"更多设置","icon":"mine_list_icon_set_more"]]
... ... @@ -50,7 +50,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate,
50 50 ["name":"新增优惠券","icon":"mine_list_icon_help_feedback"],
51 51 ["name":"优惠券管理","icon":"mine_list_icon_help_feedback"],
52 52 ["name":"抖音短视频","icon":"mine_list_icon_help_feedback"]]
53   -// dataArray.add(array04)
  53 + dataArray.add(array04)
54 54  
55 55 return dataArray
56 56 }()
... ...
metaCode/Classes/Main/MinePage/View/CNLiveMineHeaderView.swift
... ... @@ -274,7 +274,7 @@ extension MinePhotoUploadView {
274 274 })
275 275 }
276 276 if self!.temp_imageView == self!.imageView03 {
277   - let uploadKey = UploadManager.uploadImage(imageData: image.jpegData(compressionQuality: 1.0)! as NSData, progressBlock: {key, progress in
  277 + let _ = UploadManager.uploadImage(imageData: image.jpegData(compressionQuality: 1.0)! as NSData, progressBlock: {key, progress in
278 278 print("获取进度==>\(progress)")
279 279 }, successBlock: { [weak self] key,url in
280 280 self!.selectedImages.replaceObject(at: 2, with: image)
... ...
metaCode/Classes/Main/MinePage/View/CNLiveMineSubBodyListView.swift
... ... @@ -6,7 +6,7 @@
6 6 //
7 7  
8 8 import Foundation
9   -
  9 +import APButton
10 10 class MineInfoLListTableViewCell : UITableViewCell {
11 11  
12 12 lazy var mainView: UIImageView = {
... ... @@ -39,7 +39,7 @@ class MineInfoLListTableViewCell : UITableViewCell {
39 39  
40 40 lazy var addBtn: UIButton = {
41 41 let addBtn = UIButton.init(type: .custom)
42   - addBtn.setTitle(" 去添加 ", for: .normal)
  42 + addBtn.setTitle(" 去认证 ", for: .normal)
43 43 addBtn.setTitleColor(.white, for: .normal)
44 44 addBtn.backgroundColor = HexColor("#67C5FF")
45 45 addBtn.titleLabel?.font = BoldFont_15
... ... @@ -56,11 +56,11 @@ class MineInfoLListTableViewCell : UITableViewCell {
56 56 if is_auth {
57 57 addBtn.backgroundColor = HexColor("#DCDCDC")
58 58 addBtn.setTitleColor(HexColor("#666666"), for: .normal)
59   - addBtn.setTitle(" 已添加 ", for: .normal)
  59 + addBtn.setTitle(" 已认证 ", for: .normal)
60 60 }else {
61 61 addBtn.backgroundColor = HexColor("#67C5FF")
62 62 addBtn.setTitleColor(.white, for: .normal)
63   - addBtn.setTitle(" 去添加 ", for: .normal)
  63 + addBtn.setTitle(" 去认证 ", for: .normal)
64 64 }
65 65 }
66 66  
... ... @@ -130,6 +130,16 @@ class MineStandInfoTableViewCell: UITableViewCell {
130 130 return iconView
131 131 }()
132 132  
  133 + lazy var logoButton : APButton = {
  134 + let button = APButton()
  135 + button.layer.cornerRadius = adapt_length(length: 10)
  136 + button.layer.masksToBounds = true
  137 + button.isHidden = true
  138 + button.backgroundColor = .clear
  139 + button.activityIndicator.color = .gray
  140 + return button
  141 + }()
  142 +
133 143 lazy var titleLabel: UILabel = {
134 144 let titleLabel = UILabel.init()
135 145 titleLabel.backgroundColor = .clear
... ... @@ -158,11 +168,34 @@ class MineStandInfoTableViewCell: UITableViewCell {
158 168 return timeLabel
159 169 }()
160 170  
161   - public func setupWithAuthDataSource(icon: String, name: String,number: String) {
  171 + public func setupWithAuthDataSource(icon: String, name: String,number: String,identityId: String) {
162 172 iconView.kf.indicatorType = .activity
163 173 iconView.kf.setImage(with: URL(string: icon), placeholder: UIImage.imageWithColor(color: HexColor("#f9f9f9")!, size: CGSize(width: 50, height: 50)))
164 174 titleLabel.text = name
165 175 numberLabel.text = "编号:\(number)"
  176 + logoButton.isHidden = false
  177 + let infoModel = CNLiveSaveAuthStateDB.shared.take(key: identityId)
  178 + if infoModel.name.isEmpty && infoModel.identityId == 0 {
  179 + logoButton.startAnimating()
  180 + DispatchQueue.global().async {
  181 + CNLiveMineViewModel.requestsStandInfo(identityId: identityId, type: .havedate, authType: .agency) {[weak self] result, respStatue in
  182 + guard let self = self else { return }
  183 + logoButton.stopAnimating()
  184 + let sub_infoModel = CNLiveSaveAuthStateDB.shared.take(key: identityId)
  185 + if sub_infoModel.authInfos.count > 0 {
  186 + logoButton.setImage(UIImage(named: "mine_form_auth_person_yellow"), for: .normal)
  187 + } else {
  188 + logoButton.setImage(UIImage(named: "mine_form_auth_enter_yellow"), for: .normal)
  189 + }
  190 + }
  191 + }
  192 + } else {
  193 + if infoModel.authInfos.count > 0 {
  194 + logoButton.setImage(UIImage(named: "mine_form_auth_person_yellow"), for: .normal)
  195 + } else {
  196 + logoButton.setImage(UIImage(named: "mine_form_auth_enter_yellow"), for: .normal)
  197 + }
  198 + }
166 199 }
167 200  
168 201 public func setupWithMessageDataSource(icon: String, name: String,number: String, time: String) {
... ... @@ -188,6 +221,7 @@ class MineStandInfoTableViewCell: UITableViewCell {
188 221 mainView.addSubview(titleLabel)
189 222 mainView.addSubview(numberLabel)
190 223 mainView.addSubview(timeLabel)
  224 + mainView.addSubview(logoButton)
191 225  
192 226 setupConstraints()
193 227 }
... ... @@ -211,12 +245,17 @@ class MineStandInfoTableViewCell: UITableViewCell {
211 245 titleLabel.snp.makeConstraints { make in
212 246 make.centerY.equalToSuperview().offset(-15)
213 247 make.left.equalTo(iconView.snp.right).offset(10)
214   - make.right.equalToSuperview().offset(-30)
  248 +// make.right.equalToSuperview().offset(-30)
215 249 }
216 250 numberLabel.snp.makeConstraints { make in
217 251 make.centerY.equalToSuperview().offset(15)
218 252 make.left.equalTo(iconView.snp.right).offset(10)
219 253 }
  254 + logoButton.snp.makeConstraints { make in
  255 + make.centerY.equalTo(titleLabel)
  256 + make.left.equalTo(titleLabel.snp.right).offset(adapt_length(length: 5))
  257 + make.size.equalTo(adapt_length(length: 20))
  258 + }
220 259 }
221 260  
222 261 required init?(coder: NSCoder) {
... ...
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineBaseModel.swift
... ... @@ -229,15 +229,15 @@ class MineStandInfoBaseModel: BaseModel {
229 229 var authInfos = [MineStandInfoModel]()//个人认证
230 230 var enterpriseAuthInfos = [MineStandInfoModel]()//企业认证
231 231 var agencyAuthInfos = [MineStandInfoModel]()//机构认证
232   - var icon: String?
233   - var name: String?
  232 + var icon: String = ""
  233 + var name: String = ""
234 234 var identityId: Int = 0
235   - var code: String?
236   - var cardImg: String?
  235 + var code: String = ""
  236 + var cardImg: String = ""
237 237 var authTime: Int = 0
238 238 var userStatus: Int = 0
239   - var upPath: String?
240   - var downPath: String?
  239 + var upPath: String = ""
  240 + var downPath: String = ""
241 241 }
242 242  
243 243 class MineStandInfoModel: BaseModel {
... ...
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineViewModel.swift
... ... @@ -516,6 +516,7 @@ class CNLiveMineViewModel: NSObject {
516 516 }else if (type == .effect) {
517 517 resultBlock(newsModel,.success)
518 518 }else {
  519 + CNLiveSaveAuthStateDB.shared.save(object: newsModel, key: identityId)
519 520 if newsModel.authInfos.count > 0 {
520 521 let tempArray = NSMutableArray.init(array: newsModel.authInfos)
521 522 resultBlock(tempArray,.success)
... ... @@ -652,8 +653,8 @@ class CNLiveMineViewModel: NSObject {
652 653 CNLiveMineViewModel.requestsStandInfo(identityId: id, type: .effect, authType: authType) { result, respStatue in
653 654 if respStatue == .success {
654 655 let listBaseModel = result as! MineStandInfoBaseModel
655   - if listBaseModel.authTime > 0 || listBaseModel.code!.count > 0 {
656   - showMessage(message: listBaseModel.name!.count > 0 ? "恭喜您通过认证,您已是\(listBaseModel.name ?? "")" : "恭喜您通过认证")
  656 + if listBaseModel.authTime > 0 || listBaseModel.code.count > 0 {
  657 + showMessage(message: listBaseModel.name.count > 0 ? "恭喜您通过认证,您已是\(listBaseModel.name )" : "恭喜您通过认证")
657 658 resultBlock(listBaseModel, .success)
658 659 NotificationCenter.default.post(name: Notification.Name.StandAuth.StandAuthNotificationSuccess, object: nil)
659 660 } else {
... ...
metaCode/Classes/Main/VideoPage/Controller/CNLiveShortVideoViewController.swift
... ... @@ -379,7 +379,7 @@ extension CNLiveShortVideoViewController {
379 379 }
380 380 }
381 381 func listActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) {
382   - CNLiveShortVideoContentListView.showVideoContentListView(title: viewcell.homeModel.albumMsgModel!.albumName,dataArray: dataArray, result: {[weak self] listModel in
  382 + CNLiveShortVideoContentListView.showVideoContentListView(title: viewcell.homeModel.albumMsgModel!.albumName,dataArray: dataArray, episodeNow: viewcell.homeModel.albumMsgModel!.episodeNow, result: {[weak self] listModel in
383 383 guard let self = self else { return }
384 384 let index = self.dataArray.index(of: listModel) as NSInteger
385 385 self.playTheIndex(index: index)
... ...
metaCode/Classes/Main/VideoPage/View/CNLiveShortVideoCommentListView.swift
... ... @@ -415,6 +415,19 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel
415 415 return replyButton
416 416 }()
417 417  
  418 + lazy var deleteButton: UIButton = {
  419 + let deleteButton = APButton()
  420 + deleteButton.setTitleColor(.white, for: .normal)
  421 + deleteButton.activityIndicator.color = .white
  422 + deleteButton.backgroundColor = .clear
  423 + deleteButton.isHidden = true
  424 + deleteButton.setTitle("删除", for: .normal)
  425 + deleteButton.setTitleColor(HexColor("#969696"), for: .normal)
  426 + deleteButton.titleLabel?.font = medium_adapt_font(pointSize: 13)
  427 + deleteButton.addTarget(self, action: #selector(replyMethod), for: .touchUpInside)
  428 + return deleteButton
  429 + }()
  430 +
418 431 lazy var replyUnfoldButton: UIButton = {
419 432 let button = QMUIButton()
420 433 button.imagePosition = .right
... ... @@ -530,6 +543,13 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel
530 543 make.width.equalTo(40)
531 544 make.top.equalTo(commentLabel.snp.bottom).offset(10)
532 545 }
  546 + contentView.addSubview(deleteButton)
  547 + deleteButton.snp.makeConstraints { make in
  548 + make.left.equalTo(replyButton.snp.right).offset(adapt_length(length: 5))
  549 + make.height.equalTo(20)
  550 + make.width.equalTo(40)
  551 + make.top.equalTo(commentLabel.snp.bottom).offset(10)
  552 + }
533 553 contentView.addSubview(replyUnfoldButton)
534 554 replyUnfoldButton.snp.makeConstraints { make in
535 555 make.top.equalTo(timeLabel.snp.bottom)
... ... @@ -557,10 +577,11 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel
557 577 } else {
558 578 replyUnfoldButton.isHidden = true
559 579 }
  580 + replyButton.setTitle("回复", for: .normal)
560 581 if ((contentSid == UserInfoManager.shared.userInfo.uid) || (commentData.uid == UserInfoManager.shared.userInfo.uid)) {
561   - replyButton.setTitle("删除", for: .normal)
  582 + deleteButton.isHidden = false
562 583 } else {
563   - replyButton.setTitle("回复", for: .normal)
  584 + deleteButton.isHidden = true
564 585 }
565 586 DispatchQueue.main.async {[weak self] in
566 587 guard let self = self else { return }
... ... @@ -628,6 +649,7 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel
628 649  
629 650 @objc func replyMethod(button: UIButton) {
630 651 if button.titleLabel?.text == "回复" {
  652 + let uid = commentModel == nil ? replyItemModel.fromSid : commentModel.uid
631 653 CNLiveContentToolTextView.showCommentViewForCustom(withCommType: .reply, fromNick: commentModel == nil ? replyItemModel.fromNick : commentModel.nick, firstRespFace: false, successBlcok: {[weak self] commentString, toolbarView in
632 654 guard let self = self else { return }
633 655 CNLiveShortVideoViewModel.requestCommentWithReply(commentId: self.commentModel.commentId!, comment: commentString ?? "", toSid: self.commentModel.uid!, fromSid: UserInfoManager.shared.userInfo.uid, level: "1") {[weak self] result, respStatue in
... ... @@ -720,7 +742,6 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel
720 742  
721 743 @objc func replyUnfoldMethod(button: UIButton) {
722 744 showLoading(message: "")
723   - print("这里点击的时候走了多少次")
724 745 let replyModel: ShortVideoHomeCommentRListItemModel = self.dataSource.lastObject as! ShortVideoHomeCommentRListItemModel
725 746 CNLiveShortVideoViewModel.requestcommentWithReplyList(commentId: commentModel.commentId!, seqId: replyModel.seqId!) {[weak self] result, respStatue in
726 747 guard let self = self else { return }
... ...
metaCode/Classes/Main/VideoPage/View/CNLiveShortVideoContentListView.swift
... ... @@ -111,9 +111,9 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD
111 111 }
112 112 }
113 113  
114   - func setupWithDataSource(title: String,dataArray: NSMutableArray) {
  114 + func setupWithDataSource(title: String,dataArray: NSMutableArray,episodeNow: String) {
115 115 dataSource = dataArray
116   - titleLabel.text = title
  116 + titleLabel.text = "\(title)·\(episodeNow)集"
117 117 self.tableView.reloadData()
118 118 }
119 119  
... ... @@ -129,11 +129,11 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD
129 129 removeFromSuperview()
130 130 }
131 131  
132   - static public func showVideoContentListView(title: String,dataArray: NSMutableArray,result: @escaping CloseVideoListResultBlock) {
  132 + static public func showVideoContentListView(title: String,dataArray: NSMutableArray,episodeNow: String ,result: @escaping CloseVideoListResultBlock) {
133 133  
134 134 let pickerView = CNLiveShortVideoContentListView.init(frame: CGRect.zero)
135 135 pickerView.resultBlock = result
136   - pickerView.setupWithDataSource(title: title,dataArray: dataArray)
  136 + pickerView.setupWithDataSource(title: title,dataArray: dataArray,episodeNow: episodeNow)
137 137  
138 138 let delegate = UIApplication.shared.delegate as! AppDelegate
139 139 delegate.window?.addSubview(pickerView)
... ...
metaCode/Classes/Main/VideoPage/View/CNLiveShortVideoListTableViewCell.swift
... ... @@ -47,6 +47,7 @@ class CNLiveShortVideoListTableViewCell: UITableViewCell {
47 47 lazy var tipsLabel: UILabel = {
48 48 let label = UILabel()
49 49 label.textColor = UIColor.white
  50 + label.text = "当前内容需付费观看"
50 51 label.font = semibold_adapt_font(pointSize: 15)
51 52 label.textAlignment = .center
52 53 label.numberOfLines = 0
... ... @@ -142,6 +143,12 @@ class CNLiveShortVideoListTableViewCell: UITableViewCell {
142 143 return payView
143 144 }()
144 145  
  146 + lazy var grayMaskView: UIView = {
  147 + let grayMaskView = UIView()
  148 + grayMaskView.backgroundColor = UIColor.init(white: 0, alpha: 0.6)
  149 + return grayMaskView
  150 + }()
  151 +
145 152 //控制器承载图
146 153 lazy var coverImageView: UIImageView = {
147 154 let coverImageView = UIImageView()
... ... @@ -162,6 +169,7 @@ class CNLiveShortVideoListTableViewCell: UITableViewCell {
162 169 selectionStyle = .none
163 170  
164 171 contentView.addSubview(coverImageView)
  172 + contentView.addSubview(grayMaskView)
165 173 contentView.addSubview(shareBtn)
166 174 contentView.addSubview(commentBtn)
167 175 contentView.addSubview(likeBtn)
... ... @@ -226,6 +234,7 @@ class CNLiveShortVideoListTableViewCell: UITableViewCell {
226 234 self.iconBtn.isHidden = true
227 235 self.titleLabel.isHidden = true
228 236 self.descLabel.isHidden = true
  237 + self.grayMaskView.isHidden = false
229 238 self.tipsLabel.isHidden = false
230 239 self.payView.isHidden = false
231 240 } else {
... ... @@ -236,6 +245,7 @@ class CNLiveShortVideoListTableViewCell: UITableViewCell {
236 245 self.iconBtn.isHidden = false
237 246 self.titleLabel.isHidden = false
238 247 self.descLabel.isHidden = false
  248 + self.grayMaskView.isHidden = true
239 249 self.tipsLabel.isHidden = true
240 250 self.payView.isHidden = true
241 251 }
... ... @@ -311,6 +321,9 @@ class CNLiveShortVideoListTableViewCell: UITableViewCell {
311 321 make.bottom.equalTo(listBtn.snp.top).offset(-10)
312 322 make.height.equalTo(165)
313 323 }
  324 + grayMaskView.snp.makeConstraints { make in
  325 + make.edges.equalToSuperview()
  326 + }
314 327 }
315 328  
316 329  
... ... @@ -331,8 +344,8 @@ class CNLiveShortVideoListTableViewCell: UITableViewCell {
331 344 self.delegate.iconActionMethod(viewcell: self, button: button)
332 345 }
333 346  
334   - @objc func faviMothod(button: UIButton) {
335   - self.delegate.faviActionMethod(viewcell: self, button: button as! APButton)
  347 + @objc func faviMothod(button: APButton) {
  348 + self.delegate.faviActionMethod(viewcell: self, button: button)
336 349 }
337 350  
338 351 @objc func listMethod(button: UIButton) {
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_form_auth_enter_yellow.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_form_auth_enter_yellow@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_form_auth_enter_yellow@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_form_auth_enter_yellow.imageset/mine_form_auth_enter_yellow@2x.png 0 → 100644

918 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_form_auth_enter_yellow.imageset/mine_form_auth_enter_yellow@3x.png 0 → 100644

1.59 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_form_auth_person_yellow.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_form_auth_person_yellow@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_form_auth_person_yellow@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_form_auth_person_yellow.imageset/mine_form_auth_person_yellow@2x.png 0 → 100644

1018 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_form_auth_person_yellow.imageset/mine_form_auth_person_yellow@3x.png 0 → 100644

1.75 KB