Commit b62d4d75 authored by pete谢兆麟's avatar pete谢兆麟

工作经验逻辑

parent 3ef508f1
...@@ -86,6 +86,7 @@ ...@@ -86,6 +86,7 @@
04C6936F2B7350E7004C1758 /* YHEducationDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C6936E2B7350E7004C1758 /* YHEducationDetailVC.swift */; }; 04C6936F2B7350E7004C1758 /* YHEducationDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C6936E2B7350E7004C1758 /* YHEducationDetailVC.swift */; };
04C693712B735C6F004C1758 /* YHQualificationDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C693702B735C6F004C1758 /* YHQualificationDetailVC.swift */; }; 04C693712B735C6F004C1758 /* YHQualificationDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C693702B735C6F004C1758 /* YHQualificationDetailVC.swift */; };
04C8F4832B7216D800ADF59B /* YHUserInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */; }; 04C8F4832B7216D800ADF59B /* YHUserInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */; };
04D5C5662B8ED92600190021 /* YHBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D5C5652B8ED92600190021 /* YHBaseModel.swift */; };
04E86E092B707ACE00A35F4B /* YHPhoneLoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E082B707ACE00A35F4B /* YHPhoneLoginViewController.swift */; }; 04E86E092B707ACE00A35F4B /* YHPhoneLoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E082B707ACE00A35F4B /* YHPhoneLoginViewController.swift */; };
04E86E0B2B70C13300A35F4B /* YHCodeSueecssViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E0A2B70C13300A35F4B /* YHCodeSueecssViewController.swift */; }; 04E86E0B2B70C13300A35F4B /* YHCodeSueecssViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E0A2B70C13300A35F4B /* YHCodeSueecssViewController.swift */; };
04E86E0D2B70D51D00A35F4B /* YHWebViewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E0C2B70D51D00A35F4B /* YHWebViewViewController.swift */; }; 04E86E0D2B70D51D00A35F4B /* YHWebViewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E0C2B70D51D00A35F4B /* YHWebViewViewController.swift */; };
...@@ -381,6 +382,7 @@ ...@@ -381,6 +382,7 @@
04C6936E2B7350E7004C1758 /* YHEducationDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHEducationDetailVC.swift; sourceTree = "<group>"; }; 04C6936E2B7350E7004C1758 /* YHEducationDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHEducationDetailVC.swift; sourceTree = "<group>"; };
04C693702B735C6F004C1758 /* YHQualificationDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHQualificationDetailVC.swift; sourceTree = "<group>"; }; 04C693702B735C6F004C1758 /* YHQualificationDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHQualificationDetailVC.swift; sourceTree = "<group>"; };
04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUserInfoHeaderView.swift; sourceTree = "<group>"; }; 04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUserInfoHeaderView.swift; sourceTree = "<group>"; };
04D5C5652B8ED92600190021 /* YHBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseModel.swift; sourceTree = "<group>"; };
04E86E082B707ACE00A35F4B /* YHPhoneLoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPhoneLoginViewController.swift; sourceTree = "<group>"; }; 04E86E082B707ACE00A35F4B /* YHPhoneLoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPhoneLoginViewController.swift; sourceTree = "<group>"; };
04E86E0A2B70C13300A35F4B /* YHCodeSueecssViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCodeSueecssViewController.swift; sourceTree = "<group>"; }; 04E86E0A2B70C13300A35F4B /* YHCodeSueecssViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCodeSueecssViewController.swift; sourceTree = "<group>"; };
04E86E0C2B70D51D00A35F4B /* YHWebViewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHWebViewViewController.swift; sourceTree = "<group>"; }; 04E86E0C2B70D51D00A35F4B /* YHWebViewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHWebViewViewController.swift; sourceTree = "<group>"; };
...@@ -601,13 +603,6 @@ ...@@ -601,13 +603,6 @@
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
040FA3352B6F700F0069D17F /* M */ = {
isa = PBXGroup;
children = (
);
path = M;
sourceTree = "<group>";
};
041B52852B565798007EBCEB /* IM */ = { 041B52852B565798007EBCEB /* IM */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -856,6 +851,14 @@ ...@@ -856,6 +851,14 @@
path = "Child(子女)"; path = "Child(子女)";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
04D5C5642B8ED91200190021 /* M */ = {
isa = PBXGroup;
children = (
04D5C5652B8ED92600190021 /* YHBaseModel.swift */,
);
path = M;
sourceTree = "<group>";
};
04E86E212B81E9FA00A35F4B /* Recovered References */ = { 04E86E212B81E9FA00A35F4B /* Recovered References */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -1460,7 +1463,7 @@ ...@@ -1460,7 +1463,7 @@
A5ACE91E2B4564F7002C94D2 /* Base */ = { A5ACE91E2B4564F7002C94D2 /* Base */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
040FA3352B6F700F0069D17F /* M */, 04D5C5642B8ED91200190021 /* M */,
A5ACE91F2B4564F7002C94D2 /* C */, A5ACE91F2B4564F7002C94D2 /* C */,
A5ACE9232B4564F7002C94D2 /* V */, A5ACE9232B4564F7002C94D2 /* V */,
); );
...@@ -1997,6 +2000,7 @@ ...@@ -1997,6 +2000,7 @@
04E86E6E2B87388100A35F4B /* YHCompanyViewModel.swift in Sources */, 04E86E6E2B87388100A35F4B /* YHCompanyViewModel.swift in Sources */,
A5FD63CB2B63D6C300D1D9DA /* YHInformationFillTipsCell.swift in Sources */, A5FD63CB2B63D6C300D1D9DA /* YHInformationFillTipsCell.swift in Sources */,
04C693712B735C6F004C1758 /* YHQualificationDetailVC.swift in Sources */, 04C693712B735C6F004C1758 /* YHQualificationDetailVC.swift in Sources */,
04D5C5662B8ED92600190021 /* YHBaseModel.swift in Sources */,
04E86E492B8445F400A35F4B /* YHWorkActionView.swift in Sources */, 04E86E492B8445F400A35F4B /* YHWorkActionView.swift in Sources */,
A5ACE9272B4564F7002C94D2 /* YHLoginViewController.swift in Sources */, A5ACE9272B4564F7002C94D2 /* YHLoginViewController.swift in Sources */,
); );
......
//
// YHBaseModel.swift
// galaxy
//
// Created by EDY on 2024/2/28.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import HandyJSON
class YHBaseModel: HandyJSON {
required init() {
}
}
...@@ -355,6 +355,7 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource ...@@ -355,6 +355,7 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource
} else if indexPath.row == 4 { } else if indexPath.row == 4 {
//工作经历 //工作经历
let vc = YHWorkExperienceListViewController() let vc = YHWorkExperienceListViewController()
vc.orderId = orderId ?? 0
navigationController?.pushViewController(vc) navigationController?.pushViewController(vc)
} else if indexPath.row == 5 { } else if indexPath.row == 5 {
......
...@@ -53,7 +53,7 @@ class YHMainApplicantInformationViewController: YHBaseViewController { ...@@ -53,7 +53,7 @@ class YHMainApplicantInformationViewController: YHBaseViewController {
stepView = { stepView = {
let step = YHStepView() let step = YHStepView()
step.dataSource = ["初始信息", "证件上传", "基本信息", "证件信息"] step.dataSource = ["初始信息", "证件上传", "证件信息", "基本信息"]
step.block = { [weak self] (index) in step.block = { [weak self] (index) in
guard let self = self else { return } guard let self = self else { return }
self.updateDataSource() self.updateDataSource()
......
...@@ -7,19 +7,9 @@ ...@@ -7,19 +7,9 @@
// //
import Foundation import Foundation
import SmartCodable
struct YHCountryMessage: SmartCodable { class YHCountryMessage: YHBaseModel {
var name_cn: String? var name_cn: String?
var name_en: String? var name_en: String?
var code: String? var code: String?
init(name_cn: String? = nil, name_en: String? = nil, code: String? = nil) {
self.name_cn = name_cn
self.name_en = name_en
self.code = code
}
init() {
}
} }
...@@ -7,58 +7,57 @@ ...@@ -7,58 +7,57 @@
// //
import Foundation import Foundation
import SmartCodable
struct YHMainInformationModel: SmartCodable { class YHMainInformationModel: YHBaseModel {
var id: Int? = 0 var id: Int = 0
var order_id: String? = "" var order_id: String = ""
var nationality: String? = "" var nationality: String = ""
var is_handled: Int? = 0 var is_handled: Int = 0
var username: String? = "" var username: String = ""
var used_name: String? = "" var used_name: String = ""
var birthday: String? = "" var birthday: String = ""
var age: String? = "" var age: String = ""
var birth_place_aboard: Int? = 0 var birth_place_aboard: Int = 0
var sex: Int? = 0 var sex: Int = 0
var married: Int? = 0 var married: Int = 0
var mobile: String? = "" var mobile: String = ""
var email: String? = "" var email: String = ""
var address_aboard: Int? = 0 var address_aboard: Int = 0
var has_hk_id: Int? = 0 var has_hk_id: Int = 0
var hk_id_number: String? = "" var hk_id_number: String = ""
var step: Int? = 0 var step: Int = 0
var surname: String? = "" var surname: String = ""
var is_live_oversea_year: Int? = 0 var is_live_oversea_year: Int = 0
var username_pinyin: YHUserNameModel? = YHUserNameModel() var username_pinyin: YHUserNameModel = YHUserNameModel()
var birth_place: YHAddressModel? = YHAddressModel() var birth_place: YHAddressModel = YHAddressModel()
var address: YHAddressModel? = YHAddressModel() var address: YHAddressModel = YHAddressModel()
var certificates: YHCertificatesModels? = YHCertificatesModels() var certificates: YHCertificatesModels = YHCertificatesModels()
} }
struct YHUserNameModel: SmartCodable { class YHUserNameModel: YHBaseModel {
var family_name: String? = "" var family_name: String = ""
var given_name: String? = "" var given_name: String = ""
} }
struct YHAddressModel: SmartCodable { class YHAddressModel: YHBaseModel {
var area: [String]? = [] var area: [String] = []
var country: String? = "" var country: String = ""
var details: String? = "" var details: String = ""
var foreign: String? = "" var foreign: String = ""
} }
struct YHCertificatesModels: SmartCodable { class YHCertificatesModels: YHBaseModel {
var hk_macao_pass: YHCertificatesModel? = YHCertificatesModel() var hk_macao_pass: YHCertificatesModel = YHCertificatesModel()
var passport: YHCertificatesModel? = YHCertificatesModel() var passport: YHCertificatesModel = YHCertificatesModel()
var cn_identity_card: YHCertificatesModel? = YHCertificatesModel() var cn_identity_card: YHCertificatesModel = YHCertificatesModel()
} }
struct YHCertificatesModel: SmartCodable { class YHCertificatesModel: YHBaseModel {
var number: String? = "" var number: String = ""
var issue_at: String? = "" var issue_at: String = ""
var issue_date_start_at: String? = "" var issue_date_start_at: String = ""
var issue_date_end_at: String? = "" var issue_date_end_at: String = ""
var img_front: String? = "" var img_front: String = ""
var img_back: String? = "" var img_back: String = ""
var passport_type: String? = "" var passport_type: String = ""
} }
...@@ -360,17 +360,15 @@ class YHItemView: UIView { ...@@ -360,17 +360,15 @@ class YHItemView: UIView {
extension YHItemView: UITextFieldDelegate { extension YHItemView: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) { func textFieldDidEndEditing(_ textField: UITextField) {
dataSource?.message = textField.text
if let block = block {
block(dataSource ?? YHItemModel())
}
} }
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newText = (textField.text! as NSString).replacingCharacters(in: range, with: string) let newText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
dataSource?.message = newText var data = dataSource ?? YHItemModel()
data.message = newText
if let block = block { if let block = block {
block(dataSource ?? YHItemModel()) block(data)
} }
return true return true
} }
......
...@@ -17,15 +17,12 @@ class YHSelectCountryViewModel: NSObject { ...@@ -17,15 +17,12 @@ class YHSelectCountryViewModel: NSObject {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.OrderInformation.countryInformation + "?keyword = \(key)" let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.OrderInformation.countryInformation + "?keyword = \(key)"
YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
//// printLog("model 是 ==> \(model)") let dic = json.data as? [Any]
let dic = json.data guard let resultArray = [YHCountryMessage].deserialize(from: dic) else {
guard let resultArray = [YHCountryMessage].deserialize(array: dic as? [Any]) else {
callBackBlock([],nil) callBackBlock([],nil)
return return
} }
callBackBlock(resultArray, nil) callBackBlock(resultArray, nil)
} failBlock: { err in } failBlock: { err in
callBackBlock([],err) callBackBlock([],err)
......
...@@ -15,7 +15,8 @@ class YHWorkExperienceListViewController: YHBaseViewController { ...@@ -15,7 +15,8 @@ class YHWorkExperienceListViewController: YHBaseViewController {
var dataSource: [YHWorkItemListModel]? var dataSource: [YHWorkItemListModel]?
var viewModel: YHWorkItemListViewModel? var viewModel: YHWorkItemListViewModel?
var isMore: Bool = false var isMore: Bool = false
var orderId: Int = 0
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
viewModel = YHWorkItemListViewModel() viewModel = YHWorkItemListViewModel()
...@@ -26,7 +27,7 @@ class YHWorkExperienceListViewController: YHBaseViewController { ...@@ -26,7 +27,7 @@ class YHWorkExperienceListViewController: YHBaseViewController {
} }
func getData() { func getData() {
viewModel?.requestWorkList("133969", callBackBlock: {[weak self] success, error in viewModel?.requestWorkList("\(orderId)", callBackBlock: {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
self.dataSource = success self.dataSource = success
self.tableView.reloadData() self.tableView.reloadData()
...@@ -112,6 +113,7 @@ extension YHWorkExperienceListViewController: UITableViewDelegate, UITableViewDa ...@@ -112,6 +113,7 @@ extension YHWorkExperienceListViewController: UITableViewDelegate, UITableViewDa
guard let self = self else { return } guard let self = self else { return }
let vc = YHWorkExperienceViewController() let vc = YHWorkExperienceViewController()
vc.workExperienceID = "\(model.id ?? 0)" vc.workExperienceID = "\(model.id ?? 0)"
vc.orderID = self.orderId
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.pushViewController(vc, animated: true)
} }
cell.deleteBlock = {[weak self] model in cell.deleteBlock = {[weak self] model in
...@@ -128,6 +130,7 @@ extension YHWorkExperienceListViewController: UITableViewDelegate, UITableViewDa ...@@ -128,6 +130,7 @@ extension YHWorkExperienceListViewController: UITableViewDelegate, UITableViewDa
cell.newWorkBlock = {[weak self] in cell.newWorkBlock = {[weak self] in
guard let self = self else { return } guard let self = self else { return }
let vc = YHWorkExperienceViewController() let vc = YHWorkExperienceViewController()
vc.orderID = self.orderId
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.pushViewController(vc, animated: true)
} }
return cell return cell
......
...@@ -18,6 +18,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -18,6 +18,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
var introductionDataSource: [YHWorkExperienceProjectModel]? var introductionDataSource: [YHWorkExperienceProjectModel]?
var fileDataSource: [String]? var fileDataSource: [String]?
var workExperienceID: String? var workExperienceID: String?
var orderID: Int = 0
var isMore: Bool = false var isMore: Bool = false
override func viewDidLoad() { override func viewDidLoad() {
...@@ -101,7 +102,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -101,7 +102,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
let bottom = YHBottomNextView() let bottom = YHBottomNextView()
bottom.nextblock = { [weak self] in bottom.nextblock = { [weak self] in
guard let self = self else { return } guard let self = self else { return }
self.viewModel.saveWorkDetail(1, callBackBlock: {[weak self] flag, model in self.viewModel.saveWorkDetail(1, orderID: self.orderID, callBackBlock: {[weak self] flag, model in
guard let self = self else { return } guard let self = self else { return }
self.stepView.currentIndex = self.stepView.currentIndex + 1 self.stepView.currentIndex = self.stepView.currentIndex + 1
self.updateDataSource() self.updateDataSource()
...@@ -109,7 +110,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -109,7 +110,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
} }
bottom.saveBlock = { [weak self] in bottom.saveBlock = { [weak self] in
guard let self = self else { return } guard let self = self else { return }
self.viewModel.saveWorkDetail(0, callBackBlock: {[weak self] flag, model in self.viewModel.saveWorkDetail(0, orderID: self.orderID, callBackBlock: {[weak self] flag, model in
guard let self = self else { return } guard let self = self else { return }
}) })
} }
......
...@@ -7,9 +7,8 @@ ...@@ -7,9 +7,8 @@
// //
import UIKit import UIKit
import SmartCodable
struct YHCompanyModel: SmartCodable { class YHCompanyModel: YHBaseModel {
var current_page: Int? var current_page: Int?
var first_page_url: String? var first_page_url: String?
var from: Int? var from: Int?
...@@ -23,7 +22,7 @@ struct YHCompanyModel: SmartCodable { ...@@ -23,7 +22,7 @@ struct YHCompanyModel: SmartCodable {
var data: [YHCompanyModelListModel]? var data: [YHCompanyModelListModel]?
} }
struct YHCompanyModelListModel: SmartCodable { class YHCompanyModelListModel: YHBaseModel {
var id: Int? var id: Int?
var name: String? var name: String?
var customer_num: Int? var customer_num: Int?
......
...@@ -7,9 +7,8 @@ ...@@ -7,9 +7,8 @@
// //
import UIKit import UIKit
import SmartCodable
struct YHWorkExampleModel: SmartCodable { class YHWorkExampleModel: YHBaseModel {
var type: Int? var type: Int?
var industry: String? var industry: String?
var wduty_list: [String]? var wduty_list: [String]?
......
...@@ -7,56 +7,55 @@ ...@@ -7,56 +7,55 @@
// //
import Foundation import Foundation
import SmartCodable
struct YHWorkExperienceDetailModel: SmartCodable { class YHWorkExperienceDetailModel: YHBaseModel {
var id: Int? var id: Int = 0
var order_id: Int? var order_id: Int = 0
var company_name: String? var company_name: String = ""
var is_famous_enterprise: Int? var is_famous_enterprise: Int = 0
var duty: String? var duty: String = ""
var entry_time: String? var entry_time: String = ""
var departure_time: String? var departure_time: String = ""
var industry: String? var industry: String = ""
var location: YHAddressModel? var location: YHAddressModel = YHAddressModel()
var location_aboard: Int? var location_aboard: Int = 0
var professional_level: Int? var professional_level: Int = 0
var professional_other: String? var professional_other: String = ""
var position: String? var position: String = ""
var remark: String? var remark: String = ""
var old_id: Int? var old_id: Int = 0
var created_at: String? var created_at: String = ""
var updated_at: String? var updated_at: String = ""
var is_show: Int? var is_show: Int = 0
var deleted_at: String? var deleted_at: String = ""
var operator_name: String? var operator_name: String = ""
var operator_english_name: String? var operator_english_name: String = ""
var operator_id: Int? var operator_id: Int = 0
var work_certificate: String? var work_certificate: String = ""
var executives_certificate: String? var executives_certificate: String = ""
var is_executives: Int? var is_executives: Int = 0
var wduty: String? var wduty: String = ""
var highlights: String? var highlights: String = ""
var file: [String]? var file: [String] = []
var not_need_upload_file: Int? var not_need_upload_file: Int = 0
var company_member_total: Int? var company_member_total: Int = 0
var administrative_level: Int? var administrative_level: Int = 0
var company_manage_total: Int? var company_manage_total: Int = 0
var top_manager_start_at: String? var top_manager_start_at: String = ""
var top_manager_end_at: String? var top_manager_end_at: String = ""
var master_of_important_project: Int? var master_of_important_project: Int = 0
var match_listing: Int? var match_listing: Int = 0
var is_synthetic: Int? var is_synthetic: Int = 0
var step: Int? var step: Int = 0
var create_from_appid: Int? var create_from_appid: Int = 0
var update_from_appid: Int? var update_from_appid: Int = 0
var international_work_experience: Int? var international_work_experience: Int = 0
var turnover: Int? var turnover: Int = 0
var business_nature: String? var business_nature: String = ""
var company_website: String? var company_website: String = ""
var company_introduce: String? var company_introduce: String = ""
var business_remark: String? var business_remark: String = ""
var is_project_introduction: Int? var is_project_introduction: Int = 0
var customer_center_id: Int? var customer_center_id: Int = 0
var projects: [String]? var projects: [String] = []
} }
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
import UIKit import UIKit
import SmartCodable import SmartCodable
struct YHWorkExperienceProjectModel: SmartCodable { class YHWorkExperienceProjectModel: YHBaseModel {
var id: Int? var id: Int?
var order_id: Int? var order_id: Int?
var work_id: Int? var work_id: Int?
......
...@@ -7,16 +7,15 @@ ...@@ -7,16 +7,15 @@
// //
import UIKit import UIKit
import SmartCodable
struct YHWorkModel: SmartCodable { class YHWorkModel: YHBaseModel {
var count: Int? var count: Int?
var list: [YHWorkItemListModel]? var list: [YHWorkItemListModel]?
} }
struct YHWorkItemListModel: SmartCodable { class YHWorkItemListModel: YHBaseModel {
var id: Int? var id: Int?
var order_id: Int? var order_id: Int?
var company_name: String? var company_name: String?
......
...@@ -14,12 +14,12 @@ class YHCompanyViewModel: YHBaseViewModel { ...@@ -14,12 +14,12 @@ class YHCompanyViewModel: YHBaseViewModel {
} }
func requestCompany(_ key: String, callBackBlock:@escaping (_ success: [YHCompanyModelListModel]?, _ error:YHErrorModel?)->()) { func requestCompany(_ key: String, callBackBlock:@escaping (_ success: [YHCompanyModelListModel]?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + "frontend/workInfo/company-search?company=\(key)&page_size=20" let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.company + "?company=\(key)&page_size=20"
YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
let dic = json.data let dic = json.data
guard let result = YHCompanyModel.deserialize(dict: dic as? [AnyHashable : Any]) else { guard let result = YHCompanyModel.deserialize(from: dic as? Dictionary) else {
callBackBlock([],nil) callBackBlock([],nil)
return return
} }
......
...@@ -16,12 +16,12 @@ class YHWorkIntroductionViewModel: YHBaseViewModel { ...@@ -16,12 +16,12 @@ class YHWorkIntroductionViewModel: YHBaseViewModel {
} }
func requestIntroducetionExample(callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) { func requestIntroducetionExample(callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + "frontend/workInfo/item-example" let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.projectExample
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
let dic = json.data let dic = json.data
guard let result = [YHWorkExampleModel].deserialize(array: dic as? [Any]) else { guard let result = [YHWorkExampleModel].deserialize(from: dic as? [Any]) else {
callBackBlock(false,nil) callBackBlock(false,nil)
return return
} }
...@@ -34,16 +34,16 @@ class YHWorkIntroductionViewModel: YHBaseViewModel { ...@@ -34,16 +34,16 @@ class YHWorkIntroductionViewModel: YHBaseViewModel {
// 0保存 1下一步 // 0保存 1下一步
func saveWorkProjectDetail(_ workModel: YHWorkExperienceDetailModel, projectModel: YHWorkExperienceProjectModel, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) { func saveWorkProjectDetail(_ workModel: YHWorkExperienceDetailModel, projectModel: YHWorkExperienceProjectModel, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["app_id": workModel.create_from_appid ?? 0, let params: [String : Any] = ["app_id": workModel.create_from_appid,
"id": projectModel.id ?? 0, "id": projectModel.id ?? 0,
"order_id": workModel.order_id ?? 0, "order_id": workModel.order_id,
"project_end_time": projectModel.project_end_time ?? "", "project_end_time": projectModel.project_end_time ?? "",
"project_highlights": projectModel.project_highlights ?? 0, "project_highlights": projectModel.project_highlights ?? 0,
"project_name": projectModel.project_name ?? 0, "project_name": projectModel.project_name ?? 0,
"project_start_time": projectModel.project_start_time ?? "", "project_start_time": projectModel.project_start_time ?? "",
"work_id": workModel.id ?? 0 "work_id": workModel.id
] ]
let strUrl = YHBaseUrlManager.shared.curURL() + "frontend/workInfo/project/save" let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveProject
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
guard let self = self else { return } guard let self = self else { return }
callBackBlock(true, nil) callBackBlock(true, nil)
......
...@@ -17,12 +17,12 @@ class YHWorkItemListViewModel: YHBaseViewModel { ...@@ -17,12 +17,12 @@ class YHWorkItemListViewModel: YHBaseViewModel {
} }
func requestWorkList(_ orderId: String, callBackBlock:@escaping (_ success: [YHWorkItemListModel]?, _ error:YHErrorModel?)->()) { func requestWorkList(_ orderId: String, callBackBlock:@escaping (_ success: [YHWorkItemListModel]?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + "frontend/workInfo/list?order_id=\(orderId)" let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.list + "?order_id=\(orderId)"
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
let dic = json.data let dic = json.data
guard let result = YHWorkModel.deserialize(dict: dic as? [AnyHashable : Any]) else { guard let result = YHWorkModel.deserialize(from: dic as? Dictionary) else {
callBackBlock([],nil) callBackBlock([],nil)
return return
} }
...@@ -35,7 +35,7 @@ class YHWorkItemListViewModel: YHBaseViewModel { ...@@ -35,7 +35,7 @@ class YHWorkItemListViewModel: YHBaseViewModel {
func requestDeleteWorkExperience(_ orderId: String, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) { func requestDeleteWorkExperience(_ orderId: String, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["id": orderId] let params: [String : Any] = ["id": orderId]
let strUrl = YHBaseUrlManager.shared.curURL() + "frontend/workInfo/del" let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.del
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
......
...@@ -114,4 +114,31 @@ class YHAllApiName { ...@@ -114,4 +114,31 @@ class YHAllApiName {
// 主申请人国家信息 // 主申请人国家信息
static let countryInformation = "infoflow/country" static let countryInformation = "infoflow/country"
} }
struct WorkExperience {
//工作经验列表
static let list = "infoflow/work/list"
//工作经验详情
static let detail = "infoflow/work/detail"
//工作经验保存
static let save = "infoflow/work/save"
static let saveAll = "infoflow/work/save-all"
//公司列表
static let company = "infoflow/company/search"
//工作经历删除
static let del = "infoflow/work/del"
//工作经历参考模版
static let example = "infoflow/work/getWorkExampleList"
static let projectExample = "infoflow/work/getWorkProjectExampleList"
//工作经验项目保存
static let saveProject = "infoflow/work/saveWorkProject"
//工作经验项目列表
static let projectList = "infoflow/work/getWorkProjectList"
//工作经验项目列表
static let projectDetail = "infoflow/work/getWorkProjectDetail"
//删除工作经验项目
static let projectDel = "infoflow/work/delWorkProject"
//识别附件
static let ocrFileContent = "infoflow/work/getOcrFileContent"
}
} }
...@@ -100,15 +100,10 @@ class YHNetRequest: NSObject { ...@@ -100,15 +100,10 @@ class YHNetRequest: NSObject {
} }
private func testToken(_ requestHeader:inout HTTPHeaders) { private func testToken(_ requestHeader:inout HTTPHeaders) {
//杜宇的账号
// requestHeader.add(name: "token", value: "eyJpdiI6Ik5aeEVDclZTK0FISEFBZUgxN2VkdGc9PSIsInZhbHVlIjoiRFRJOHlObzVrZlp4T2tVYW1MSE1ZK0Z3dXlyK3p4QlczNmxsTXdkdW5GQVY4Q2VqZlNNUDdrdVpsb0JcLytpYmJheUp2MWZTUE5pOWgrVWRLdEtIUkx4R1wvS3F6SmRSQ0dWeFVXanFINGkyRWNMTXB4TVlcLzhjXC9NSzVoMFwvZ1ZOaVIwb0VqWlo1VERPSHY2RWJhME1RdWtkXC8yanBQdm9lMWM4WXJVK1BnMDd6SncwVVlWMDNnbSswSnM3eVwveFRRck03M3pOaDFSc3g0UmlYMTJQdmZpSkhUWHVMa21RV2xRbXBkalVTTUFicmFaN2NVNXl1ZTJOeEJoKzhrMnZtdzdvM1U5Qmh4WXNiSEFERUpiZHNWNkxoM2ZkVVRUdFlMMU1MQnIyaWNxNSt4S1NocDVEbnNqeHphUCtVVk1qTlVnMk1ydVNPamJ0c2tDQ1wvWFk1SkxtSWtDMU9oT3ZqaFpuNU5aVUVicHpYVU56VnlqK01Cb20welJMbkQrcTFWOHFUbzlPK0RGdDRcLzJ1T094MjNjYTVZZmJcL2txRE93cEFUYzlKWWdVWE9cLzFnYnVwTFZ4VUtqMFQ5QlgzZitDQjhyNURpU3p0bktqblBicUxPekNBcWRWM0g0WklSOEc0T0RPVkNBMGZQdEtWV3ZqN3IrcHZDYm9UNjREdnA3U1RZY1Z1dFE3K1RRM2F2eGY0QXc2dGlha0RBUDVpVHdFWE53dzl2eVczVk9VNTJSa1Fzb1J4ZGd0c0RCdktPQ1FWOUQ5Y0krckQ3bFc4NkNJMHliSXlnNGtYU1ZCUHRZWTdCKzA5d1wvdldzWTlpeUdYaEg4eGhITHpRSUthMWpSVlZvZVhwZ3BvamxCTHFSUXJmQ1hQNThYbUNNanZnVGs0b3RDTUFmYkdsYTEzeEtnTXJpZVU0QnJHWDJoUk9sUklzaFFhUkJiNWk0Z2E0cUUwejU4RmF2RnE4Z2U0eEo3VmZ2SmFMTlVacFBvSFlZUmM2N3liVTdhTk5NWU9YS0xtalk3QUN3NWV2UTlPeE5hMmk0aHU4MSt0YjNJQytFczRMa2l6XC9jV0Jxc01QYU0yYXdTXC92RXBxTFNVOVd6SlwvRm9KM21jUHlcL2diRlMyU3REeEl0K1RxSjRuck8xaXlOaWY4NXVzMVBibXpVSEZJWkVZQnFUd2k5TUVJcDUwUEFjTmljTzYyaWFYaFkzZUtkR294d29LUzBUTFF1Y0xxbWtMNFF4ZlZkN2k4YktEUnRGekU3OEdaN2J3TUR4T2FpVHRKaGlqRWNcL2c5dlwvOUVEVmdLNUhBSk1wSGV5UXVoOFJydlczc09HU1EyeXI4SFZZQmJJQWx1cGFIaXhmK1VJNmdoNmwrOElMZXFxSHZtazQreW84RFBlOXFnVDI2bm1tZWl0K01OcU1DSGJEQXdnWW9Hc0ptWFVJbXVXdEpyT2FKUHprTzJ1MkxFSEViZGV4cFpuOWRXK3dUdVR4bmJHZ1VRRGJycFRBME5lWUtaT0JCYjViSWVvcVJ3RXllb2tQZ1VkUWFqVWo0UHQzMUQwWVMwZ05rTTU0Nk1QQUdxTm9rZFNISVYrTG5DWlArNkt5RkZxajdZN1luakRKQVdUaVpnOUhCUExYMEVKRXRRT3QyZTI4cU9TdlBrbWxVZkFLSWZFbXNha3lCZUhFRVpyTmxQOERjbVwvMytCc0JpNnZcL1Nvek9yR2pUWGF2XC9VMzN4OEY5T3VsdUNGRFNWbHZZMnBzNHhMeEdIR21majBOOUJNbEhlK1J4S3dFTnlJamdTeFQyTWlTTlhCUWxnSDF6VmNhWHIzVGpoREY5clB2XC9uZHZjSm1iTHZ1bjFIUUFRait6dUJlUk1WQ1FhdXFoN002YlQ5MVwvQVMzYzJJQ0RFR1czdEtqMFBTQT09IiwibWFjIjoiOGVlZjBmNTVmMzEwNjhkZjVmYTlkYzAwYzllMjJmNjUyZmRmN2U1ODFiZTIzNzRjMDVjMTNiOTNhOWRhMmVkYSJ9")
//明杰的账号
// requestHeader.add(name: "token", value: "eyJpdiI6InM0a3dcL1hQYUtPOENKOXNJYzRoMHJnPT0iLCJ2YWx1ZSI6Ik12dW9PUWI2SGRIZDF1cGVrREZ0b2tyd3ZLeUJkVXp5am9vRWhhYVVNRnRyT0FNNW· 、dlNW9cL1BpMFBSS1RKd3B6Y2dyaVM0aHV0NXlIcXJkc1MxdG11d3hMZ3RsZHJ4aGNiRnZLZDJ0Q0NSYndUMUNuODRaYW1lQk1KZ0FqTFFVbTZ1TllMTGdtY1dlV0ZkRm5TeW9Vc1FYY09ZMFMrbGo4TmRnZ0syOWRhUFFRbjBjWDFDKzEwQWxLWjExNWJ5R3VxRGNEbWN0K0Z6Z1VieFIrMmdSbTZ6dU9CZGdFcDJlTktPMTY2cHYyeGhKVXpSNVhxT0VTQjRCa05OTE9aalQzWVFPczRpS1lldk16Zk9BUmZYbnRybDVoVXdRZWM3V1BUV3J0NkIxRHBCT3JDd1czQ0Q3YjU4cnVxVE5Lb0ZnbnlmMWN1RU9ocnU1ZE5pUmVDS21CbmhWTDdxTmYrRCtNNHZLQzdNXC9Bb0lRWXdNcE5HNW5ielwvWGtCZmpKNlNHWW9MaE94TXNSOURlemVSSkNkUXVveFJkUHVWbFIyeXNVZFJ3K0pXNElUWVhLSXpvUGNQek1cLzRBc3BaRE1lUVdKSENCS0FJdjFyeUVBSnNXeTZcL0RNajJIeFF0QUdndzBWRllOQ2R5UzZMK3lqdFZTanRxbXhmeGFrRVRJOE95enA1cUl0VzVjUytpVnBkRTFXMm9uQytobG1vWTlRQWhvNGN4THdRSTUyS0tub29xK25VZkNIb1FVOEh6YktGbjgzdjQ0NlA1cVc0aWNqYWp6OElSb3Vlb0ZPWmVzdVRLQW5SejVJa09kUDIrZW5jbmVtTzYyOFwvQnRTV3ExZVFhOWh4XC9BbDUxaHNRSDlIXC96QThkVGlBcEVkOUZCelBIV21WVXZ0OFlQaWtsclFPOXJzOXFoeGc1QXcyeEgwU2NqcWxXb2g4aTJBK2tCZkxoNjBTU1VrNDEwWWxVUW50STcyMFwvQjlCU2lxc3RSRGFOemdJTDN5NGRhN1RLSHVXVlFVRHdWN1dIVGppTVFNZEkzMWU4ckpXZ1lcL3BKRENnZGpuR0ZaTlpBVFowMVRWc1dpOFEzcERUY3RjXC9nUGYrTkxLdkFGSlc3b0dSUWVuQkRVR2tzZVN2UDFEdCtKNnNMMHNQZnJaT0tGV293OHMxXC9WZ1V5Z0dmM1VLeFM5QVdvVGVcL2IrS0Y3M0Zya0tQbXl6ZTNkWm00V1hZUUdiY3p5UVwvZWthUVlkNGV6cVlNaDMwazJNS0FoejlLT3FlZlBzWklnWkRZclhwUmFqTzk1VWF2eHJ1c1pqYzI2eThqOEJVZDZIbUt1dE81VjZoM0xiWm1NOVBrcjlhM1djOUJvb3VLTjJ2VTJvMzd3MHA1cmRuSWxTMGgzclYrUHF0NnFRN1BPSE4rM1ZTWWF5VlBTWE56aTV0U3Y5M0NrcDNBYVFHTTJvOUsyR1Y4S2k3N05CZUFDMk4xUVwvVWZKSUdiMjdmOXIxSXZjSTdvaGhMSHFISk12N2xDdlRrZUloaVBMS0cyMkVrclhcL3loenQ1MTF2V0lORDZyVmZMaytiWVJyMnk4SzhDRktQSFRQR1FoTFpQZHBzUllRbUUza3NaXC9lMXFSSFZud05JTWo1UkVTTXZjZmZucUF3Mzh2OVpkT2QyaVQ2VXRFVHltRW1MQjlzaHh1Ym02YW1LRUphSVNUeEltMWN5WGxRdlgzSE96V0ErbDdldnQ0ZkRjdGxsQVVpRFZCdnlMSnVrSW5aS3BrT3FRbDh0NWR0TWoxdjNMb3ZUVEJwbkVMbzJjeHRibGJJTGlMOHhSU0tNaTk5VHJxSk9xanRIOTMreVVmZm5lXC82SThIXC9iVXFudW9VOVd1S1RNYlwvbzF5b2V0bDVtRWNkalBTdkVVRGFPVlE9PSIsIm1hYyI6IjNkOTZlZDhiOTVlNmUxZmVlMzZmNDIyYmMzYTc4N2Y2ZmE0ZTI3MGI2YjQxZGVkZGRmMTY0N2IyOGZiM2RhNjYifQ==")
//金龙的账号 //金龙的账号
requestHeader.add(name: "token", value: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTE2MDcwNjQsImkiOjE0NDg0MTczMjc0MjE2LCJ1Ijoi6ZO25rKz6ZuG5ZuiIiwiciI6InN1cGVyX2FwcCJ9.KwTWdaLy5UG4LLs6i-D9ne0RflRTT5v4zvu-66yihDE") requestHeader.add(name: "token", value: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTE2MDcwNjQsImkiOjE0NDg0MTczMjc0MjE2LCJ1Ijoi6ZO25rKz6ZuG5ZuiIiwiciI6InN1cGVyX2FwcCJ9.KwTWdaLy5UG4LLs6i-D9ne0RflRTT5v4zvu-66yihDE")
// requestHeader.add(name: "token", value:"eyJpdiI6InhISTlXZjA2cXE5Z2pqMDZDa2NrTkE9PSIsInZhbHVlIjoiR3NkRVR0dVdjWE5GN2N3UmNiU0xobVYzZTR6SXlGXC9XVEhWV0xcL1F1YXVBOU9jRDlFZ2pOanBcL1RBMUVkUDlRQ2xhREx0c3dKeHNJQjMwaVVuYkloZHBiUXQzZkJlS2dTWDJrTE90K2FpM0FDWm10a3FFUGZpdW90TDNscStud0tSenRRV2kyV3JVbEZ6eXppUHZ5ajFQMXpBejh0YUZ4Z0VPZkwwdEtwXC9mNjh4bWQySGpSS2pzVkJ1Y3ZrbGFKdGVsMkhkRXJrTlRHbzkxcVdkcE1yWXRja2xDRHVmRUhhdU9ybkJmXC9VRVJnY2RXeVpXMzZVc2h2eUsxYVRmSXR0QXB1WjVsaDBLTllVOEtKWUhSTE5yNXFvYWlaQzdQSWZ0T0V2VTZwTFJjb25OZGdYbE1lNHZOZ0ZWcWhWWkhnUm8rWGJqSE1Jdm1DY3hlWVliY2F0YkplZFwvQ0pMMndtdHFBQUF0MjJYTFNZYk14Tzh0d0g1K2c2M1U2bXFZY3JUbXptbEhCSXR5R3hFZ0JHNmpXTHgzeTJvc0Z2UXpENk5LOTlBN0VjWE8rNmYzTklBN3d0YVVPb2VyS0lNK3FINUZlTmR6UTlBdENuZEtDKzE3emwxMGxvaEc1Sm1mc0E3Y251cU5xcjd4ZzdSbHNNQ2xoRUc4VUJTR24zQ1lRSE5VRGtUd0s0ZTljSlRxRmdwMFVqY0RsMjQwcm1SaVdSN29lNjYrd1JDSlwvSUtiSWpneFpuR2VzeUFBbzNBUUh2MnNVTFZ5bXVLTGVLNFM5TjdzdXpaM1ZFRDdvRUVlRFF0QUY4d2pXcmF4NkFwMGVodXRVUFlxVGhVRmVpYlwvRUJFT05idFhyeXp4TUtcLzN0MlVcL3ZIc2dWSncxaW55TDVUVXFIWjZZMUdHakJKVnpzRkxGeE52RWdLaW9WT0tCb3pTQW1xelNwaTRaQmtGeEpITjVEUU44Q3VGSnBGdzdOcFRyTE9sYmFTT3RrMDJYU3l0XC9PcVJ1OXo2MUpJdm5XSHZFZ0lIMGh5OGR2TEJkNTZjVHFKM1hSYnVEbm9vVFU1VUUzcmRDZ3JhZWRYQWZ1cU9aajVKMHdOMGpxczBSVU5GejNrNzk3bnVBa210dFdCblVBaUs5Y0VIWmxCdE04UlV6T2NEN3ZTN2E0MEhRYmlCNGk3V2xZN1R2ZUM4cVVZZ1Rlb1BndmFcL2phemNnbEhKb05QeHhxa1BldFFqK2ErcWZmYWs1RnNPWEpNK0x4MFo4MTU4OEttZTNxeDMrcCtkNUVwSUd4b1krOXRFdU1UNVFxZyszXC9Lb21TSG5hSFI2OVRVWmxIRm9UcTRlU2kyNWF6K1pQR3lMK1MyS0FvQ2ZFaTViTmdybm1xQ1BscVMzM2tjeUFCQVlvZFdPMTJTb2ttZDl2Q3BuTXVvTnJkUDRpa0g5cE4rWlRcL1l2MWdNdmY0MFVsMFArWWYzWVNmMW5oUnkwWk1mTVc3WUluU3dyQUM4TTZBbHJac0lOMDNiYVhVWks2TCs3QnN0VDlOXC9xaEwyUEtmblVmOXpcL3hoekQ1K3JKWVozVWxrdElKbTdWTHpaMnk2bXFQQ0VJalR1TVpIc1d4bmJjVVIwdTR1VXY1M1wvMEJMODVTWkNreVpCVmh3MWRDeERROGh5YnVsMkVKV2poMFwvYnZHakMycHJmQjUycDQ3b3laUUlTSjdmaDdFMnFtTHhIN1RvUnhhcUhCWXkybkhoMlFwZUVtM0VPUVZrcXp3S0lLMFwvOUtvZnhibE1ZUnp0bGVkcGdqTlp0dGV0cGhCa3hjUmxZXC96SWRFXC83OWxEUnRma1MyYnZqWGhMN0lSM0x2Z0NCTWxIR0pUYjByWDN4Y3JCT3JLTzFzUWkzS3NYTDVDZVJ3MmhEbXlXSENqYWc9PSIsIm1hYyI6Ijc1YmU5YTE4ZGEwNzExZGJlZWQ0MzZhNGVkNWE1NGMzYmE1YWFjNjBhYTgxYjFlYjUyN2M1Yzc4ZjkwNTcyNmMifQ==")
} }
///  链式语法 ///  链式语法
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment