// // SwiftMoyaNetWorkServiceUser.swift // RainbowPlanet // // Created by 南鑫林 on 2019/3/29. // Copyright © 2019 南鑫林. All rights reserved. // import Foundation import Moya import SwiftyJSON import ObjectMapper public class SwiftMoyaNetWorkServiceUser: NSObject { private static let sharedInstance = SwiftMoyaNetWorkServiceUser() private override init() {} // 私有化init方法 public class func shared() -> SwiftMoyaNetWorkServiceUser { return sharedInstance } /// 数据回调 typealias apiCallBack = (Any) -> (Void) // MARK: - 微信注册/登录 /// 微信注册/登录 /// /// - Parameters: /// - open_id: 微信 open_id /// - union_id: 微信 string /// - avatar: 头像 /// - username: 昵称 /// - gender: 性别 1男 2女 /// - completion: 回调 func userWeiXinRegisterApi(open_id:String,union_id:String,avatar:String,username:String,gender:Int,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(open_id, forKey: "open_id") parameters.updateValue(union_id, forKey: "union_id") parameters.updateValue(avatar, forKey: "avatar") parameters.updateValue(username, forKey: "username") parameters.updateValue(gender, forKey: "gender") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userWeiXinRegister(parameters: parameters))) { (userModel) in let userModel = userModel as! UserModel SwiftProgressHUD.shared().hide() completion(userModel as Any) } } // MARK: - 手机注册/登录 /// 手机注册/登录 /// /// - Parameters: /// - mobile: 手机号 /// - sms_code: 短信验证码 /// - completion: 回调 func userMobileRegisterApi(mobile:String,sms_code:String,invitationCode:String,completion: @escaping apiCallBack) { if isMobileVerification(mobile: mobile) { var parameters = Dictionary() parameters.updateValue(mobile, forKey: "mobile") parameters.updateValue(sms_code, forKey: "sms_code") parameters.updateValue(invitationCode, forKey: "invite_code") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMobileRegister(parameters: parameters))) { (userModel) in UserModel.shared().setModel(model: userModel as! UserModel) SwiftProgressHUD.shared().hide() completion("") } } } // MARK: - 手机密码登录 /// 手机密码登录 /// /// - Parameters: /// - mobile: 手机号 /// - password: 密码 /// - completion: 回调 func userMobileLoginApi(mobile:String,password:String,completion: @escaping apiCallBack) { if isMobileVerification(mobile: mobile) { var parameters = Dictionary() parameters.updateValue(mobile, forKey: "mobile") parameters.updateValue(password, forKey: "password") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMobileLogin(parameters: parameters))) { (userModel) in UserModel.shared().setModel(model: userModel as! UserModel) SwiftProgressHUD.shared().hide() completion("") } } } // MARK: - 刷新令牌 /// 刷新令牌 /// /// - Parameters: /// - completion: 回调 func userRefreshApi(completion: @escaping apiCallBack) { let parameters = Dictionary() SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userRefresh(parameters: parameters))) { (userModel) in UserModel.shared().setModel(model: userModel as! UserModel) SwiftProgressHUD.shared().hide() completion("") } } // MARK: - 登出 /// 登出 /// /// - Parameters: /// - completion: 回调 func userLogoutApi() { let parameters = Dictionary() SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userLogout(parameters: parameters))) { (data) in kAppDelegate.setLoginController() SwiftProgressHUD.shared().hide() } } // MARK: - 绑定手机号 /// 绑定手机号 /// /// - Parameters: /// - mobile: 手机号 /// - smsCode: 验证码 /// - unionId: 微信unioId /// - openId: 微信openId /// - completion: 回调 func userBindMobileApi(mobile:String,smsCode:String,unionId:String,openId:String,invitationCode:String,completion: @escaping apiCallBack) { if isMobileVerification(mobile: mobile) { var parameters = Dictionary() parameters.updateValue(mobile, forKey: "mobile") parameters.updateValue(smsCode, forKey: "sms_code") parameters.updateValue(unionId, forKey: "union_id") parameters.updateValue(openId, forKey: "open_id") parameters.updateValue(invitationCode, forKey: "invite_code") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userBindMobile(parameters: parameters))) { (userModel) in UserModel.shared().setModel(model: userModel as! UserModel) SwiftProgressHUD.shared().hide() completion("") } } } // MARK: - 检查是否绑定微信 绑定 /// 检查是否绑定微信 绑定 /// /// - Parameters: /// - umLoginModel: UMLoginModel /// - completion: 回调 func userIsBindWeixinBindApi(umLoginModel:UMLoginModel,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(umLoginModel.union_id, forKey: "union_id") parameters.updateValue(umLoginModel.open_id, forKey: "open_id") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userIsBindWeixin(parameters: parameters))) { [weak self] (rootModel) in if rootModel.code == 0 { SwiftProgressHUD.shared().hide() self?.userBindWeixinApi(mobile: UserModel.shared().getModel()?.mobile ?? "", umLoginModel: umLoginModel, completion: completion) }else if rootModel.code == 1 { SwiftProgressHUD.shared().hide() AlertSheetView.alert(title: rootModel.msg ?? "此微信号被其他账号绑定,是否要将此微信号绑定至本账号,并解绑另一起账号?", cancelTitle: "取消", sureTitle: "确认", cancelBlock: { (popupView, index, string) in }, confirmBlock: { (popupView, index, string) in AlertSheetView.alert(title: "确认后,原账号将无法以此微信登录,请确保原账号有其他登录方式,否则原账号将无法登录", cancelTitle: "取消", sureTitle: "确认", cancelBlock: { (popupView, index, string) in }, confirmBlock: { [weak self] (popupView, index, string) in self?.userBindWeixinApi(mobile: UserModel.shared().getModel()?.mobile ?? "", umLoginModel: umLoginModel, completion: completion) }) }) }else { SwiftProgressHUD.shared().showText(rootModel.msg ?? "信息有误") } } } // MARK: - 绑定手号 /// 绑定手机号 /// /// - Parameters:w /// - mobile: 手机号 /// - umLoginModel: 微信模型 /// - completion: 回调 func userBindWeixinApi(mobile:String,umLoginModel:UMLoginModel,completion: @escaping apiCallBack) { if isMobileVerification(mobile: mobile) { var parameters = Dictionary() parameters.updateValue(mobile, forKey: "mobile") parameters.updateValue(umLoginModel.open_id, forKey: "open_id") parameters.updateValue(umLoginModel.union_id, forKey: "union_id") parameters.updateValue(umLoginModel.avatar, forKey: "avatar") parameters.updateValue(umLoginModel.username, forKey: "username") parameters.updateValue(umLoginModel.gender, forKey: "gender") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userBindWeixin(parameters: parameters))) { (userModel) in UserModel.shared().setModel(model: userModel as! UserModel) SwiftProgressHUD.shared().hide() completion("") } } } // MARK: - 解绑微信 /// 解绑微信 /// /// - Parameters: /// - unionId: 微信unionId /// - openId: 微信openId /// - completion: 回调 func userUnbindWeixinApi(completion: @escaping apiCallBack) { var parameters = Dictionary() let userModel = UserModel.shared().getModel() parameters.updateValue(userModel!.unionId! as Any, forKey: "union_id") parameters.updateValue(userModel!.openId! as Any, forKey: "open_id") if userModel?.mobile == nil || userModel?.mobile == "" { SwiftProgressHUD.shared().showText("暂时不可以解绑,请先绑定手机号") }else { SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userUnbindWeixin(parameters: parameters))) {(userModel) in UserModel.shared().setModel(model: userModel as! UserModel) SwiftProgressHUD.shared().hide() completion("") } } } // MARK: - 设置密码 /// 设置密码 /// /// - Parameters: /// - mobile: 手机号 /// - password: 密码 /// - password_confirmation: 确认密码 /// - completion: 回调 func userSetPasswordApi(mobile:String,password:String,password_confirmation:String,completion: @escaping apiCallBack) { if isMobileVerification(mobile: mobile) { var parameters = Dictionary() parameters.updateValue(mobile, forKey: "mobile") parameters.updateValue(password, forKey: "password") parameters.updateValue(password_confirmation, forKey: "password_confirmation") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSetPassword(parameters: parameters))) {(rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { let userModel = UserModel.shared().getModel() let setPasswordModel = SetPasswordModel(JSONString: rootModel.data ?? "") userModel?.isPassword = setPasswordModel?.isPassword UserModel.shared().setModel(model: userModel!) completion("") } } } } // MARK: - 用户自提点,快递地址列表 /// 用户自提点,快递地址列表 /// /// - Parameters: /// - type: 0所有列表,1自提列表,2快递 /// - city_id: 城市id /// - completion: 回调 func userSelfAndExpressAddressListApi(type:Int,completion: @escaping apiCallBack) { var parameters = Dictionary() let loacationModel = LocationModel.shared().getLocationModel() let baiduToCityModel = BaiduToCityFactory.shared.query(bjcityId: loacationModel!.cityCode) parameters.updateValue(baiduToCityModel.areaCode, forKey: "city_id") parameters.updateValue(type, forKey: "type") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(AddressManagerListModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userSelfAddressList(parameters: parameters))) {(addressManagerListModel) in SwiftProgressHUD.shared().hide() completion(addressManagerListModel) } } // MARK: - (新增、编辑)快递地址 /// 新增、编辑)快递地址 /// /// - Parameters: /// - id: 表id 修改适合传 /// - contactName: 收货人 /// - contactMobile: 联系电话 /// - provinceId: 省id /// - provinceName: 省份名称 /// - cityId: 城市id /// - cityName: 城市名称 /// - areaId: 区id /// - areaName: 区名称 /// - address: 详细地址 /// - zipcode: 邮政编码 710110 /// - completion: 回调 func userAddExpressAddressApi(expressAddresModel:ExpressAddresModel, completion: @escaping apiCallBack) { if isMobileVerification(mobile: expressAddresModel.contactMobile ?? "") { var parameters = Dictionary() parameters.updateValue(expressAddresModel.id ?? "", forKey: "id") parameters.updateValue(expressAddresModel.contactName ?? "", forKey: "contact_name") parameters.updateValue(expressAddresModel.contactMobile ?? "", forKey: "contact_mobile") parameters.updateValue(expressAddresModel.provinceId ?? "", forKey: "province_id") parameters.updateValue(expressAddresModel.provinceName ?? "", forKey: "province_name") parameters.updateValue(expressAddresModel.cityId ?? "", forKey: "city_id") parameters.updateValue(expressAddresModel.cityName ?? "", forKey: "city_name") parameters.updateValue(expressAddresModel.areaId ?? "", forKey: "area_id") parameters.updateValue(expressAddresModel.areaName ?? "", forKey: "area_name") parameters.updateValue(expressAddresModel.address ?? "", forKey: "address") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddExpressAddress(parameters: parameters))) {(rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { completion("") } } } } // MARK: - 设置(自提/快递)默认地址 /// 设置(自提/快递)默认地址 /// /// - Parameters: /// - id: 表id 修改适合传 func userAddressIsDefaultApi(id:Int = 0,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(id, forKey: "id") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddressIsDefault(parameters: parameters))) { (rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { completion("") } } } // MARK: - 删除(自提/快递)地址 /// 删除(自提/快递)地址 /// /// - Parameters: /// - id: 地址Id func userAddressDeleteApi(id:Int = 0,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(id, forKey: "id") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddressDelete(parameters: parameters))) { (rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { completion("") } } } // MARK: - 自提点收货人列表 /// 自提点收货人列表 /// /// - Parameter completion: 成功回调 func userExpreesContactsListApi(completion: @escaping apiCallBack) { let parameters = Dictionary() SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(ContactListModel.self, target: MultiTarget(SwiftMoyaServiceUserApi.userExpreesContactsList(parameters: parameters))) { (contactListModel) in SwiftProgressHUD.shared().hide() completion(contactListModel) } } // MARK: - 获取默认快递信息 /// 获取默认快递信息 /// /// - Parameter completion: 成功回调 func userDefaultExpressApi(completion: @escaping apiCallBack) { let parameters = Dictionary() SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(ExpressAddresModel.self, target: MultiTarget(SwiftMoyaServiceUserApi.userDefaultExpress(parameters: parameters))) { (expressAddrModel) in SwiftProgressHUD.shared().hide() completion(expressAddrModel as Any) } } // MARK: - 获取默认快递信息 /// 获取默认快递信息 /// /// - Parameter completion: 成功回调 func userDefaultContactApi(completion: @escaping apiCallBack) { let parameters = Dictionary() SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(SelfMentionContactsModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userDefaultContact(parameters: parameters))) {(contactMdl) in SwiftProgressHUD.shared().hide() completion(contactMdl as Any) } } // MARK: - 新增、编辑 自提地址收货人信息 /// 新增、编辑 自提地址收货人信息 /// /// - Parameters: /// - id: 收货人id /// - mobile: 手机号码 /// - name: 用户名 /// - completion: 完成 func userSaveExpreesContactsApi(id:Int = 0,mobile:String = "",name:String = "",completion: @escaping apiCallBack) { if isMobileVerification(mobile: mobile) { if name.count <= 0 { SwiftProgressHUD.shared().showText("收货人信息不能为空") }else { var parameters = Dictionary() if id != 0 { parameters.updateValue(id, forKey: "id") } parameters.updateValue(mobile, forKey: "mobile") parameters.updateValue(name, forKey: "name") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSaveExpreesContacts(parameters: parameters))) { (rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { completion("") } } } } } // MARK: - 删除自提点收货人信息 /// 删除自提点收货人信息 /// /// - Parameters: /// - id: 收货人id /// - completion: 完成 func userDelExpreesContactsApi(id:Int = 0,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(id, forKey: "id") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userDelExpreesContacts(parameters: parameters))) { (rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { completion("") } } } // MARK: - 自提点收货人信息,设置默认 /// 自提点收货人信息,设置默认 /// /// - Parameters: /// - id: 收货人id /// - completion: 完成 func userSetExpreesContactsDefaultApi(id:Int = 0,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(id, forKey: "id") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSetExpreesContactsDefault(parameters: parameters))) { (rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { completion("") } } } // MARK: - 新增自提地址 /// 新增自提地址 /// /// - Parameters: /// - pickupNodeId: 自提点id /// - address: 详细地址 /// - completion: 完成 func userAddSelfAddressApi(cityId:Int = 0,cityName:String = "",pickupNodeId:Int = 0,address:String,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(cityId, forKey: "city_id") parameters.updateValue(cityName, forKey: "city_name") parameters.updateValue(pickupNodeId, forKey: "pickup_node_id") parameters.updateValue(address, forKey: "address") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddSelfAddress(parameters: parameters))) { (rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { completion("") } } } // MARK: - 设置用户配送方式 /// 设置用户配送方式 /// /// - Parameters: /// - deliveryMethodType: 0所有列表,1自提列表,2快递 /// - completion: 返回 func userSetDeliverTypeApi(deliveryMethodType:String = "2",completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(deliveryMethodType, forKey: "deliver_type") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSetDeliverType(parameters: parameters))) { (rootModel) in SwiftProgressHUD.shared().showText(rootModel.msg!) if rootModel.code == 0 { // 设置成功更新本地存储数据 let model = DeliveryMethodTypeModel.shared().getModel() model?.deliveryMethodType = deliveryMethodType DeliveryMethodTypeModel.shared().setModel(model: model!) completion("") } } } // MARK: - 修改用户性别 /// 修改用户性别 /// /// - Parameters: /// - gender: 0位置 1男 2女 /// - completion: 回调 func userGenderApi(gender:Int = 0,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(gender, forKey: "gender") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userMemberUpdateGender(parameters: parameters))) { (data) in // 设置成功更新本地存储数据 let model = UserModel.shared().getModel() model?.gender = gender UserModel.shared().setModel(model: model!) SwiftProgressHUD.shared().hide() completion("") } } // MARK: - 用户信息详情 /// 用户信息详情 /// /// - Parameter completion: 回调UserDetailModel func userMemberDetailApi(uid:Int,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(uid, forKey: "uid") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserDetailModel.self, target: MultiTarget(SwiftMoyaServiceUserApi.userMemberDetail(parameters: parameters))) { (userDetailModel) in SwiftProgressHUD.shared().hide() completion(userDetailModel) } } // MARK: - 更新用户信息详情 /// 更新用户信息详情 /// /// - Parameter completion: 回调UserDetailModel func userMemberDetailUpDateApi(avatar:String,userName:String,signature:String,completion: @escaping apiCallBack) { if avatar == "" { SwiftProgressHUD.shared().showText("头像不能为空") return }else if userName == "" { SwiftProgressHUD.shared().showText("昵称不能为空") return } var parameters = Dictionary() parameters.updateValue(avatar, forKey: "avatar") parameters.updateValue(userName, forKey: "username") parameters.updateValue(signature, forKey: "signature") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userMemberDetailUpDate(parameters: parameters))) { (data) in SwiftProgressHUD.shared().hide() let userModel = UserModel.shared().getModel() userModel?.avatarurl = avatar userModel?.username = userName UserModel.shared().setModel(model: userModel!) completion("") } } // MARK: - 用户关注列表 /// 用户关注列表 /// /// - Parameter completion: 回调UserDetailModel func userFollowsApi(uid:Int,page:Int = 1,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(uid, forKey: "uid") parameters.updateValue(page, forKey: "page") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserFollowsModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userFollows(parameters: parameters))) { (userFollowsModel) in SwiftProgressHUD.shared().hide() completion(userFollowsModel) } } // MARK: - 粉丝列表 /// 粉丝列表 /// /// - Parameter completion: 回调UserDetailModel func userFansApi(uid:Int,page:Int = 1,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(page, forKey: "page") parameters.updateValue(uid, forKey: "uid") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(UserFansModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userFans(parameters: parameters))) { (userFansModel) in SwiftProgressHUD.shared().hide() completion(userFansModel) } } // MARK: - 关注 /// 关注 /// /// - Parameters: /// - followUid: 被关注人id /// - completion: 回调 func userFollowApi(followUid:Int,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(followUid, forKey: "follow_uid") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(FollowStatusModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userFollow(parameters: parameters))) { (followStatusModel) in SwiftProgressHUD.shared().showText("已关注") completion(followStatusModel) } } // MARK: - 取消关注 /// 取消关注 /// /// - Parameters: /// - followUid: 被取消关注人id /// - completion: 回调 func userCancelFollowApi(followUid:Int,completion: @escaping apiCallBack) { var parameters = Dictionary() parameters.updateValue(followUid, forKey: "follow_uid") SwiftProgressHUD.shared().showWait() SwiftMoyaNetWorkManager.shared.requestObject(FollowStatusModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userCancelFollow(parameters: parameters))) { (followStatusModel) in SwiftProgressHUD.shared().showText("已取消关注") completion(followStatusModel) } } }