100 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Swift
		
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Swift
		
	
	
	
| //
 | |
| //  RoleHomeAboutController.swift
 | |
| //  Crush
 | |
| //
 | |
| //  Created by Leon on 2025/7/24.
 | |
| //
 | |
| 
 | |
| import JXPagingView
 | |
| import UIKit
 | |
| class RoleHomeAboutController: CLViewController<RoleHomeAboutView> {
 | |
|     var aiId: Int?
 | |
|     var page: Int = 1
 | |
| 
 | |
|     var info: AIRoleInfo?
 | |
|     var datas: [AIRoleGiftReceivedList]?
 | |
|     var listViewDidScrollCallback: ((UIScrollView) -> Void)?
 | |
|     
 | |
|     override func viewDidLoad() {
 | |
|         super.viewDidLoad()
 | |
| 
 | |
|         setupViews()
 | |
|         setupDatas()
 | |
|         setupEvents()
 | |
|     }
 | |
| 
 | |
|     private func setupViews() {
 | |
|         navigationView.isHidden = true
 | |
|         
 | |
|         container.container.scrollView.delegate = self
 | |
|     }
 | |
| 
 | |
|     private func setupDatas() {
 | |
|         loadStatistics()
 | |
|         loadGifts()
 | |
|     }
 | |
| 
 | |
|     private func setupEvents() {
 | |
|     }
 | |
| 
 | |
|     // MARK: - Public
 | |
| 
 | |
|     func loadStatistics() {
 | |
|         guard let id = aiId else { return }
 | |
| 
 | |
|         AIRoleProvider.request(.aiRoleStatistics(aiId: id), modelType: AIRoleStatisticsResponse.self) { [weak self] result in
 | |
|             switch result {
 | |
|             case let .success(success):
 | |
|                 self?.container.configStat(data: success)
 | |
|             case let .failure(failure):
 | |
|                 dlog(failure)
 | |
|             }
 | |
|         }
 | |
|         // Load Gifts
 | |
|     }
 | |
| 
 | |
|     func loadGifts() {
 | |
|         guard let id = aiId else { return }
 | |
|         var paramas = [String: Any]()
 | |
|         paramas.updateValue(id, forKey: "aiId")
 | |
|         let page = ["pn": page, "ps": 10]
 | |
|         paramas.updateValue(page, forKey: "page")
 | |
|         AIRoleProvider.request(.aiRoleGotGiftList(params: paramas), modelType: ResponseContentPageData<AIRoleGiftReceivedList>.self) { [weak self] result in
 | |
|             switch result {
 | |
|             case let .success(success):
 | |
|                 self?.datas = success?.datas
 | |
|                 self?.container.configGifts(data: success?.datas)
 | |
|             case .failure:
 | |
|                 break
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     func config(info: AIRoleInfo?) {
 | |
|         self.info = info
 | |
|         guard let data = info else { return }
 | |
| 
 | |
|         container.config(info: data)
 | |
|     }
 | |
| }
 | |
| 
 | |
| extension RoleHomeAboutController: UIScrollViewDelegate{
 | |
|     func scrollViewDidScroll(_ scrollView: UIScrollView) {
 | |
|         listViewDidScrollCallback?(scrollView)
 | |
|     }
 | |
| }
 | |
| 
 | |
| extension RoleHomeAboutController: JXPagingViewListViewDelegate {
 | |
|     func listView() -> UIView {
 | |
|         return view
 | |
|     }
 | |
| 
 | |
|     func listScrollView() -> UIScrollView {
 | |
|         return container.container.scrollView
 | |
|     }
 | |
| 
 | |
|     func listViewDidScrollCallback(callback: @escaping (UIScrollView) -> Void) {
 | |
|         listViewDidScrollCallback = callback
 | |
|     }
 | |
| }
 |