宽窄优行-由【嘉易行】项目成品而来
无故事王国
2023-05-25 dc1998fc1ac124f6b9a0e434ccf91103dd936409
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//
//  HomeViewModel.swift
//  OKProject
//
//  Created by alvin_y on 2020/5/29.
//  Copyright © 2020 yangwang. All rights reserved.
//
 
import UIKit
import RxSwift
import RxCocoa
import HandyJSON
class HomeViewModel: YYViewModel {
    
    /// 业务类型Id
    let id = BehaviorRelay<Int>(value: 1)
    
    /// 数据类型(1:弹窗广告,2:底部广告,3=订单结束弹窗)
    let advertType = BehaviorRelay<Int>(value: 1)
    
    /// 弹窗广告
    let popUpAdvert = BehaviorRelay<[AdvertisingModel]>(value: [])
    
    /// 菜单
    let menu = BehaviorRelay<[BusinessTypeModel]>(value: [])
    
    /// 底部广告
    let bottomAdvert = BehaviorRelay<[AdvertisingModel]>(value: [])
    
    /// 查询开通城市
    lazy var queryBusinessTypeSubject = PublishSubject<RequestStatus>()
 
    lazy var queryShowModularSubject = PublishSubject<RequestStatus>()
    
    /// 获取用户详情
    func queryUserInfo()  {
        APIManager.shared.provider.rx
            .request(.queryUserInfo)
        .map(YYModel<UserInfoModel>.self)
        .validate()
        .subscribe(onSuccess: { [unowned self] (model) in
            guard let data = model.data else{return}
            app.userInfo.save(model: data)
        }) { (error) in
        }
        .disposed(by: disposeBag)
    }
    
    /// 获取广告
    func getAdvertising()  {
        requestSubject.onNext(.loading)
        APIManager.shared.provider.rx
            .request(.queryByType(type: advertType.value, code: YYLocationManager.shared.currentCityCode))
            .map(YYModel<[AdvertisingModel]>.self)
            .validate()
            .subscribe(onSuccess: { [unowned self] (model) in
                guard let data = model.data else {return}
                if self.advertType.value == 1{
                    self.popUpAdvert.accept(data)
                }else{
                    let data = data.prefix(3).map{$0 as AdvertisingModel}
                    self.bottomAdvert.accept(data)
                }
                self.requestSubject.onNext(.success(model.data))
            }) { (error) in
                self.requestSubject.onNext(.error(error))
        }
        .disposed(by: disposeBag)
    }
    
    /// 查询业务类型
    func queryBusinessType()  {
        queryBusinessTypeSubject.onNext(.loading)
        APIManager.shared.provider.rx
            .request(.queryBusinessType(province: YYLocationManager.shared.province, city: YYLocationManager.shared.currentCity, district: YYLocationManager.shared.district))
            .map(YYModel<[BusinessTypeModel]>.self)
            .validate()
            .subscribe(onSuccess: { [unowned self] (model) in
                guard var data = model.data else {return}
                for (value,item) in data.enumerated(){
                    if value == 0{
                        item.select = true
                    }
                }
 
                let m = BusinessTypeModel()
                m.name = "        "
                data.append(m)
 
 
                self.menu.accept(data)
                self.queryBusinessTypeSubject.onNext(.success(data))
            }) { (error) in
                self.queryBusinessTypeSubject.onNext(.error(error))
        }
        .disposed(by: disposeBag)
    }
    
    /// 通过Id查询业务类型
    func queryBusinessTypeById()  {
        queryBusinessTypeSubject.onNext(.loading)
        APIManager.shared.provider.rx
            .request(.queryBusinessTypeById(id: id.value))
            .map(YYModel<[BusinessTypeModel]>.self)
            .validate()
            .subscribe(onSuccess: { [unowned self] (model) in
                guard let data = model.data else {return}
                for (value,item) in data.enumerated(){
                    if value == 0{
                        item.select = true
                    }
                }
                self.menu.accept(data)
                self.queryBusinessTypeSubject.onNext(.success(model.data))
            }) { (error) in
                self.queryBusinessTypeSubject.onNext(.error(error))
        }
        .disposed(by: disposeBag)
    }
 
    func queryShowModular(){
        APIManager.shared.provider.rx.request(.getShowModular).map(YYModel<[ShowModularModel]>.self)
            .validate().subscribe(onSuccess: {model  in
                self.queryShowModularSubject.onNext(.success(model.data ?? []))
            }) { error in
                self.queryShowModularSubject.onNext(.error(error))
            }.disposed(by: disposeBag)
    }
}