SwiftMoyaNetWorkServiceUser.swift 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. //
  2. // SwiftMoyaNetWorkServiceUser.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/3/29.
  6. // Copyright © 2019 南鑫林. All rights reserved.
  7. //
  8. import Foundation
  9. import Moya
  10. import SwiftyJSON
  11. import ObjectMapper
  12. public class SwiftMoyaNetWorkServiceUser: NSObject {
  13. private static let sharedInstance = SwiftMoyaNetWorkServiceUser()
  14. private override init() {} // 私有化init方法
  15. public class func shared() -> SwiftMoyaNetWorkServiceUser {
  16. return sharedInstance
  17. }
  18. // MARK: - 第三方注册/登录
  19. /// 第三方注册/登录
  20. ///
  21. /// - Parameters:
  22. /// - loginType: 登录类型
  23. /// - open_id: 微信 open_id
  24. /// - union_id: 微信 string
  25. /// - avatar: 头像
  26. /// - username: 昵称
  27. /// - gender: 性别 1男 2女
  28. /// - completion: 回调
  29. func userTripartiteRegisterTLoginApi(loginType:LoginType = .weixin,open_id:String,union_id:String,avatar:String,username:String,gender:Int,completion: @escaping successCallBack) {
  30. var parameters = Dictionary<String,Any>()
  31. parameters.updateValue(open_id, forKey: "open_id")
  32. parameters.updateValue(union_id, forKey: "union_id")
  33. parameters.updateValue(avatar, forKey: "avatar")
  34. parameters.updateValue(username, forKey: "username")
  35. parameters.updateValue(gender, forKey: "gender")
  36. parameters.updateValue(loginType.rawValue, forKey: "login_type")
  37. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userWeiXinRegister(parameters: parameters)), completion: { (userModel) in
  38. UserModel.shared().setModel(model: userModel as! UserModel)
  39. VirusViewModel.registeredVirueRecordAddApi(completion: {})
  40. let userModel = userModel as! UserModel
  41. completion(userModel as Any)
  42. }) {
  43. (loadingStatus) in
  44. }
  45. }
  46. // MARK: - 手机注册/登录
  47. /// 手机注册/登录
  48. ///
  49. /// - Parameters:
  50. /// - mobile: 手机号
  51. /// - sms_code: 短信验证码
  52. /// - completion: 回调
  53. func userMobileRegisterApi(mobile:String,sms_code:String,invitationCode:String,completion: @escaping successCallBack) {
  54. if isMobileVerification(mobile: mobile) {
  55. var parameters = Dictionary<String,Any>()
  56. parameters.updateValue(mobile, forKey: "mobile")
  57. parameters.updateValue(sms_code, forKey: "sms_code")
  58. parameters.updateValue(invitationCode, forKey: "invite_code")
  59. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMobileRegister(parameters: parameters)), completion: { (userModel) in
  60. UserModel.shared().setModel(model: userModel as! UserModel)
  61. VirusViewModel.registeredVirueRecordAddApi(completion: {})
  62. completion("")
  63. }) {
  64. (loadingStatus) in
  65. }
  66. }
  67. }
  68. // MARK: - 手机密码登录
  69. /// 手机密码登录
  70. ///
  71. /// - Parameters:
  72. /// - mobile: 手机号
  73. /// - password: 密码
  74. /// - completion: 回调
  75. func userMobileLoginApi(mobile:String,password:String,completion: @escaping successCallBack) {
  76. if isMobileVerification(mobile: mobile) {
  77. var parameters = Dictionary<String,Any>()
  78. parameters.updateValue(mobile, forKey: "mobile")
  79. parameters.updateValue(password, forKey: "password")
  80. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMobileLogin(parameters: parameters)), completion: { (userModel) in
  81. UserModel.shared().setModel(model: userModel as! UserModel)
  82. completion("")
  83. }) {
  84. (loadingStatus) in
  85. }
  86. }
  87. }
  88. // MARK: - 刷新令牌
  89. /// 刷新令牌
  90. ///
  91. /// - Parameters:
  92. /// - completion: 回调
  93. func userRefreshApi(completion: @escaping successCallBack) {
  94. let parameters = Dictionary<String,Any>()
  95. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userRefresh(parameters: parameters)), completion: { (userModel) in
  96. UserModel.shared().setModel(model: userModel as! UserModel)
  97. completion("")
  98. }) {
  99. (loadingStatus) in
  100. }
  101. }
  102. // MARK: - 登出
  103. /// 登出
  104. ///
  105. /// - Parameters:
  106. /// - completion: 回调
  107. func userLogoutApi() {
  108. let parameters = Dictionary<String,Any>()
  109. SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userLogout(parameters: parameters)), completion: { (data) in
  110. // 设置友盟别名
  111. kAppDelegate.setLoginOut()
  112. }) {
  113. (loadingStatus) in
  114. }
  115. }
  116. // MARK: - 绑定手机号
  117. /// 绑定手机号
  118. ///
  119. /// - Parameters:
  120. /// - mobile: 手机号
  121. /// - smsCode: 验证码
  122. /// - unionId: 微信unioId
  123. /// - openId: 微信openId
  124. /// - completion: 回调
  125. func userBindMobileApi(mobile:String,smsCode:String,unionId:String,openId:String,invitationCode:String,completion: @escaping successCallBack) {
  126. if isMobileVerification(mobile: mobile) {
  127. var parameters = Dictionary<String,Any>()
  128. parameters.updateValue(mobile, forKey: "mobile")
  129. parameters.updateValue(smsCode, forKey: "sms_code")
  130. parameters.updateValue(unionId, forKey: "union_id")
  131. parameters.updateValue(openId, forKey: "open_id")
  132. parameters.updateValue(invitationCode, forKey: "invite_code")
  133. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userBindMobile(parameters: parameters)), completion: { (userModel) in
  134. UserModel.shared().setModel(model: userModel as! UserModel)
  135. completion("")
  136. }) {
  137. (loadingStatus) in
  138. }
  139. }
  140. }
  141. // MARK: - 换绑手机号码
  142. /// 换绑手机号码
  143. ///
  144. /// - Parameters:
  145. /// - mobile: 手机号
  146. /// - smsCode: 验证码
  147. /// - completion: 回调
  148. func userchangeBindMobileApi(mobile:String,smsCode:String,completion: @escaping successCallBack) {
  149. if isMobileVerification(mobile: mobile) {
  150. var parameters = Dictionary<String,Any>()
  151. parameters.updateValue(mobile, forKey: "mobile")
  152. parameters.updateValue(smsCode, forKey: "sms_code")
  153. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userchangeBindMobile(parameters: parameters)), completion: { (userModel) in
  154. UserModel.shared().setModel(model: userModel as! UserModel)
  155. completion("")
  156. }) {
  157. (loadingStatus) in
  158. }
  159. }
  160. }
  161. // MARK: - 检查是否绑定微信 绑定
  162. /// 检查是否绑定微信 绑定
  163. ///
  164. /// - Parameters:
  165. /// - umLoginModel: UMLoginModel
  166. /// - completion: 回调
  167. func userIsBindTripartiteBindApi(loginType:LoginType = .weixin,umLoginModel:UMLoginModel,completion: @escaping successCallBack) {
  168. var parameters = Dictionary<String,Any>()
  169. parameters.updateValue(umLoginModel.union_id, forKey: "union_id")
  170. parameters.updateValue(umLoginModel.open_id, forKey: "open_id")
  171. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userIsBindWeixin(parameters: parameters)), completion: {
  172. [weak self] (rootModel) in
  173. if rootModel.code == 0 {
  174. self?.userBindTripartiteApi(loginType:loginType, mobile: UserModel.shared().getModel()?.mobile ?? "", umLoginModel: umLoginModel, completion: completion)
  175. }else if rootModel.code == 1 {
  176. var nameStr : String = "微信"
  177. if loginType == .weixin {
  178. nameStr = "微信"
  179. }else if loginType == .qq {
  180. nameStr = "QQ"
  181. }
  182. AlertSheetView.alert(title: rootModel.msg ?? "此\(nameStr)号被其他账号绑定,是否要将此\(nameStr)号绑定至本账号,并解绑另一起账号?", cancelTitle: "取消", sureTitle: "确认", cancelBlock: { (popupView, index, string) in
  183. }, confirmBlock: { (popupView, index, string) in
  184. AlertSheetView.alert(title: "确认后,原账号将无法以此\(nameStr)登录,请确保原账号有其他登录方式,否则原账号将无法登录", cancelTitle: "取消", sureTitle: "确认", cancelBlock: { (popupView, index, string) in
  185. }, confirmBlock: {
  186. [weak self] (popupView, index, string) in
  187. self?.userBindTripartiteApi(loginType:loginType,mobile: UserModel.shared().getModel()?.mobile ?? "", umLoginModel: umLoginModel, completion: completion)
  188. })
  189. })
  190. }else {
  191. SwiftProgressHUD.shared().showText(rootModel.msg ?? "信息有误")
  192. }
  193. }) {
  194. (loadingStatus) in
  195. }
  196. }
  197. // MARK: - 绑定第三方
  198. /// 绑定第三方
  199. ///
  200. /// - Parameters:w
  201. /// - mobile: 手机号
  202. /// - umLoginModel: 微信模型
  203. /// - completion: 回调
  204. func userBindTripartiteApi(loginType:LoginType = .weixin,mobile:String,umLoginModel:UMLoginModel,completion: @escaping successCallBack) {
  205. if isMobileVerification(mobile: mobile) {
  206. var parameters = Dictionary<String,Any>()
  207. parameters.updateValue(mobile, forKey: "mobile")
  208. parameters.updateValue(umLoginModel.open_id, forKey: "open_id")
  209. parameters.updateValue(umLoginModel.union_id, forKey: "union_id")
  210. parameters.updateValue(umLoginModel.avatar, forKey: "avatar")
  211. parameters.updateValue(umLoginModel.username, forKey: "username")
  212. parameters.updateValue(umLoginModel.gender, forKey: "gender")
  213. parameters.updateValue(umLoginModel.gender, forKey: "gender")
  214. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userBindWeixin(parameters: parameters)), completion: { (userModel) in
  215. UserModel.shared().setModel(model: userModel as! UserModel)
  216. completion("")
  217. }) {
  218. (loadingStatus) in
  219. }
  220. }
  221. }
  222. // MARK: - 解绑微信
  223. /// 解绑微信
  224. ///
  225. /// - Parameters:
  226. /// - unionId: 微信unionId
  227. /// - openId: 微信openId
  228. /// - completion: 回调
  229. func userUnbindWeixinApi(completion: @escaping successCallBack) {
  230. var parameters = Dictionary<String,Any>()
  231. let userModel = UserModel.shared().getModel()
  232. parameters.updateValue(userModel?.bindWeixinUserModel?.unionId as Any, forKey: "union_id")
  233. parameters.updateValue(userModel?.bindWeixinUserModel?.unionId as Any, forKey: "open_id")
  234. if userModel?.mobile == nil || userModel?.mobile == "" {
  235. SwiftProgressHUD.shared().showText("暂时不可以解绑,请先绑定手机号")
  236. }else {
  237. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userUnbindWeixin(parameters: parameters)), completion: {(userModel) in
  238. UserModel.shared().setModel(model: userModel as! UserModel)
  239. completion("")
  240. }) {
  241. (loadingStatus) in
  242. }
  243. }
  244. }
  245. // MARK: - 设置密码
  246. /// 设置密码
  247. ///
  248. /// - Parameters:
  249. /// - mobile: 手机号
  250. /// - password: 密码
  251. /// - password_confirmation: 确认密码
  252. /// - completion: 回调
  253. func userSetPasswordApi(mobile:String,password:String,password_confirmation:String,completion: @escaping successCallBack) {
  254. if isMobileVerification(mobile: mobile) {
  255. var parameters = Dictionary<String,Any>()
  256. parameters.updateValue(mobile, forKey: "mobile")
  257. parameters.updateValue(password, forKey: "password")
  258. parameters.updateValue(password_confirmation, forKey: "password_confirmation")
  259. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSetPassword(parameters: parameters)), completion: {(rootModel) in
  260. SwiftProgressHUD.shared().showText(rootModel.msg!)
  261. if rootModel.code == 0 {
  262. let userModel = UserModel.shared().getModel()
  263. let setPasswordModel = SetPasswordModel(JSONString: rootModel.data ?? "")
  264. userModel?.isPassword = setPasswordModel?.isPassword
  265. UserModel.shared().setModel(model: userModel!)
  266. completion("")
  267. }
  268. }) {
  269. (loadingStatus) in
  270. }
  271. }
  272. }
  273. // MARK: - 用户自提点,快递地址列表
  274. /// 用户自提点,快递地址列表
  275. ///
  276. /// - Parameters:
  277. /// - type: 0所有列表,1自提列表,2快递
  278. /// - city_id: 城市id
  279. /// - completion: 回调
  280. func userSelfAndExpressAddressListApi(type:Int,completion: @escaping successCallBack) {
  281. var parameters = Dictionary<String,Any>()
  282. let loacationModel = LocationModel.shared().object()
  283. let baiduToCityModel = BaiduToCityFactory.shared.query(bjcityId: loacationModel!.cityCode)
  284. parameters.updateValue(baiduToCityModel.areaCode, forKey: "city_id")
  285. parameters.updateValue(type, forKey: "type")
  286. SwiftMoyaNetWorkManager.shared.requestObject(AddressManagerListModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userSelfAddressList(parameters: parameters)), completion: {(addressManagerListModel) in
  287. completion(addressManagerListModel)
  288. }) {
  289. (loadingStatus) in
  290. }
  291. }
  292. // MARK: - (新增、编辑)快递地址
  293. /// 新增、编辑)快递地址
  294. ///
  295. /// - Parameters:
  296. /// - id: 表id 修改适合传
  297. /// - contactName: 收货人
  298. /// - contactMobile: 联系电话
  299. /// - provinceId: 省id
  300. /// - provinceName: 省份名称
  301. /// - cityId: 城市id
  302. /// - cityName: 城市名称
  303. /// - areaId: 区id
  304. /// - areaName: 区名称
  305. /// - address: 详细地址
  306. /// - zipcode: 邮政编码 710110
  307. /// - completion: 回调
  308. func userAddExpressAddressApi(expressAddresModel:ExpressAddresModel, completion: @escaping successCallBack) {
  309. if isMobileVerification(mobile: expressAddresModel.contactMobile ?? "") {
  310. var parameters = Dictionary<String,Any>()
  311. parameters.updateValue(expressAddresModel.id ?? "", forKey: "id")
  312. parameters.updateValue(expressAddresModel.contactName ?? "", forKey: "contact_name")
  313. parameters.updateValue(expressAddresModel.contactMobile ?? "", forKey: "contact_mobile")
  314. parameters.updateValue(expressAddresModel.provinceId ?? "", forKey: "province_id")
  315. parameters.updateValue(expressAddresModel.provinceName ?? "", forKey: "province_name")
  316. parameters.updateValue(expressAddresModel.cityId ?? "", forKey: "city_id")
  317. parameters.updateValue(expressAddresModel.cityName ?? "", forKey: "city_name")
  318. parameters.updateValue(expressAddresModel.areaId ?? "", forKey: "area_id")
  319. parameters.updateValue(expressAddresModel.areaName ?? "", forKey: "area_name")
  320. parameters.updateValue(expressAddresModel.address ?? "", forKey: "address")
  321. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddExpressAddress(parameters: parameters)), completion: {(rootModel) in
  322. SwiftProgressHUD.shared().showText(rootModel.msg!)
  323. if rootModel.code == 0 {
  324. completion("")
  325. }
  326. }) {
  327. (loadingStatus) in
  328. }
  329. }
  330. }
  331. // MARK: - 设置(自提/快递)默认地址
  332. /// 设置(自提/快递)默认地址
  333. ///
  334. /// - Parameters:
  335. /// - id: 表id 修改适合传
  336. func userAddressIsDefaultApi(id:Int = 0,completion: @escaping successCallBack) {
  337. var parameters = Dictionary<String,Any>()
  338. parameters.updateValue(id, forKey: "id")
  339. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddressIsDefault(parameters: parameters)), completion: {
  340. (rootModel) in
  341. SwiftProgressHUD.shared().showText(rootModel.msg!)
  342. if rootModel.code == 0 {
  343. completion("")
  344. }
  345. SwiftMoyaNetWorkManager.shared.failCallback = {
  346. (loadingStatus) in
  347. }
  348. }) {
  349. (loadingStatus) in
  350. }
  351. }
  352. // MARK: - 删除(自提/快递)地址
  353. /// 删除(自提/快递)地址
  354. ///
  355. /// - Parameters:
  356. /// - id: 地址Id
  357. func userAddressDeleteApi(id:Int = 0,completion: @escaping successCallBack) {
  358. var parameters = Dictionary<String,Any>()
  359. parameters.updateValue(id, forKey: "id")
  360. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddressDelete(parameters: parameters)), completion: {
  361. (rootModel) in
  362. SwiftProgressHUD.shared().showText(rootModel.msg!)
  363. if rootModel.code == 0 {
  364. completion("")
  365. }
  366. }) {
  367. (loadingStatus) in
  368. }
  369. }
  370. // MARK: - 自提点收货人列表
  371. /// 自提点收货人列表
  372. ///
  373. /// - Parameter completion: 成功回调
  374. func userExpreesContactsListApi(completion: @escaping successCallBack) {
  375. let parameters = Dictionary<String,Any>()
  376. SwiftMoyaNetWorkManager.shared.requestObject(ContactListModel.self, target: MultiTarget(SwiftMoyaServiceUserApi.userExpreesContactsList(parameters: parameters)), completion: { (contactListModel) in
  377. completion(contactListModel)
  378. }) {
  379. (loadingStatus) in
  380. }
  381. }
  382. // MARK: - 获取默认快递信息
  383. /// 获取默认快递信息
  384. ///
  385. /// - Parameter completion: 成功回调
  386. func userDefaultExpressApi(completion: @escaping successCallBack) {
  387. let parameters = Dictionary<String,Any>()
  388. SwiftMoyaNetWorkManager.shared.requestObject(ExpressAddresModel.self, target: MultiTarget(SwiftMoyaServiceUserApi.userDefaultExpress(parameters: parameters)), completion: { (expressAddrModel) in
  389. completion(expressAddrModel as Any)
  390. }) {
  391. (loadingStatus) in
  392. }
  393. }
  394. // MARK: - 获取默认快递信息
  395. /// 获取默认快递信息
  396. ///
  397. /// - Parameter completion: 成功回调
  398. func userDefaultContactApi(completion: @escaping successCallBack) {
  399. let parameters = Dictionary<String,Any>()
  400. SwiftMoyaNetWorkManager.shared.requestObject(SelfMentionContactsModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userDefaultContact(parameters: parameters)), completion: {(contactMdl) in
  401. completion(contactMdl as Any)
  402. }) {
  403. (loadingStatus) in
  404. }
  405. }
  406. // MARK: - 新增、编辑 自提地址收货人信息
  407. /// 新增、编辑 自提地址收货人信息
  408. ///
  409. /// - Parameters:
  410. /// - id: 收货人id
  411. /// - mobile: 手机号码
  412. /// - name: 用户名
  413. /// - completion: 完成
  414. func userSaveExpreesContactsApi(id:Int = 0,mobile:String = "",name:String = "",completion: @escaping successCallBack) {
  415. if isMobileVerification(mobile: mobile) {
  416. if name.count <= 0 {
  417. SwiftProgressHUD.shared().showText("收货人信息不能为空")
  418. }else {
  419. var parameters = Dictionary<String,Any>()
  420. if id != 0 {
  421. parameters.updateValue(id, forKey: "id")
  422. }
  423. parameters.updateValue(mobile, forKey: "mobile")
  424. parameters.updateValue(name, forKey: "name")
  425. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSaveExpreesContacts(parameters: parameters)), completion: {
  426. (rootModel) in
  427. SwiftProgressHUD.shared().showText(rootModel.msg!)
  428. if rootModel.code == 0 {
  429. completion("")
  430. }
  431. }) {
  432. (loadingStatus) in
  433. }
  434. }
  435. }
  436. }
  437. // MARK: - 删除自提点收货人信息
  438. /// 删除自提点收货人信息
  439. ///
  440. /// - Parameters:
  441. /// - id: 收货人id
  442. /// - completion: 完成
  443. func userDelExpreesContactsApi(id:Int = 0,completion: @escaping successCallBack) {
  444. var parameters = Dictionary<String,Any>()
  445. parameters.updateValue(id, forKey: "id")
  446. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userDelExpreesContacts(parameters: parameters)), completion: {
  447. (rootModel) in
  448. SwiftProgressHUD.shared().showText(rootModel.msg!)
  449. if rootModel.code == 0 {
  450. completion("")
  451. }
  452. }) {
  453. (loadingStatus) in
  454. }
  455. }
  456. // MARK: - 自提点收货人信息,设置默认
  457. /// 自提点收货人信息,设置默认
  458. ///
  459. /// - Parameters:
  460. /// - id: 收货人id
  461. /// - completion: 完成
  462. func userSetExpreesContactsDefaultApi(id:Int = 0,completion: @escaping successCallBack) {
  463. var parameters = Dictionary<String,Any>()
  464. parameters.updateValue(id, forKey: "id")
  465. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSetExpreesContactsDefault(parameters: parameters)), completion: {
  466. (rootModel) in
  467. SwiftProgressHUD.shared().showText(rootModel.msg!)
  468. if rootModel.code == 0 {
  469. completion("")
  470. }
  471. }) {
  472. (loadingStatus) in
  473. }
  474. }
  475. // MARK: - 新增自提地址
  476. /// 新增自提地址
  477. ///
  478. /// - Parameters:
  479. /// - pickupNodeId: 自提点id
  480. /// - address: 详细地址
  481. /// - completion: 完成
  482. func userAddSelfAddressApi(cityId:Int = 0,cityName:String = "",pickupNodeId:Int = 0,address:String,completion: @escaping successCallBack) {
  483. var parameters = Dictionary<String,Any>()
  484. parameters.updateValue(cityId, forKey: "city_id")
  485. parameters.updateValue(cityName, forKey: "city_name")
  486. parameters.updateValue(pickupNodeId, forKey: "pickup_node_id")
  487. parameters.updateValue(address, forKey: "address")
  488. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userAddSelfAddress(parameters: parameters)), completion: {
  489. (rootModel) in
  490. SwiftProgressHUD.shared().showText(rootModel.msg!)
  491. if rootModel.code == 0 {
  492. completion("")
  493. }
  494. }) {
  495. (loadingStatus) in
  496. }
  497. }
  498. // MARK: - 设置用户配送方式
  499. /// 设置用户配送方式
  500. ///
  501. /// - Parameters:
  502. /// - deliveryMethodType: 0所有列表,1自提列表,2快递
  503. /// - completion: 返回
  504. func userSetDeliverTypeApi(deliveryMethodType:String = "2",completion: @escaping successCallBack) {
  505. var parameters = Dictionary<String,Any>()
  506. parameters.updateValue(deliveryMethodType, forKey: "deliver_type")
  507. SwiftMoyaNetWorkManager.shared.requestRootModel(target: MultiTarget(SwiftMoyaServiceUserApi.userSetDeliverType(parameters: parameters)), completion: {
  508. (rootModel) in
  509. SwiftProgressHUD.shared().showText(rootModel.msg!)
  510. if rootModel.code == 0 {
  511. // 设置成功更新本地存储数据
  512. let model = DeliveryMethodTypeModel.shared().getModel()
  513. model?.deliveryMethodType = deliveryMethodType
  514. DeliveryMethodTypeModel.shared().setModel(model: model!)
  515. completion("")
  516. }
  517. }) {
  518. (loadingStatus) in
  519. }
  520. }
  521. // MARK: - 修改用户性别
  522. /// 修改用户性别
  523. ///
  524. /// - Parameters:
  525. /// - gender: 0位置 1男 2女
  526. /// - completion: 回调
  527. func userGenderApi(gender:Int = 0,completion: @escaping successCallBack) {
  528. var parameters = Dictionary<String,Any>()
  529. parameters.updateValue(gender, forKey: "gender")
  530. SwiftMoyaNetWorkManager.shared.requestObject(SetGenderModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMemberUpdateGender(parameters: parameters)), completion: { (data) in
  531. let setGenderModel = data as? SetGenderModel
  532. // 设置成功更新本地存储数据
  533. let model = UserModel.shared().getModel()
  534. model?.gender = gender
  535. model?.avatarurl = setGenderModel?.avatar
  536. UserModel.shared().setModel(model: model!)
  537. completion("")
  538. }) {
  539. (loadingStatus) in
  540. }
  541. }
  542. // MARK: - 用户信息详情
  543. /// 用户信息详情
  544. ///
  545. /// - Parameter completion: 回调UserDetailModel
  546. func userMemberDetailApi(uid:Int,completion: @escaping successCallBack) {
  547. var parameters = Dictionary<String,Any>()
  548. parameters.updateValue(uid, forKey: "uid")
  549. SwiftMoyaNetWorkManager.shared.requestObject(UserDetailModel.self, target: MultiTarget(SwiftMoyaServiceUserApi.userMemberDetail(parameters: parameters)), completion: { (userDetailModel) in
  550. completion(userDetailModel)
  551. }) {
  552. (loadingStatus) in
  553. }
  554. }
  555. // MARK: - 更新用户信息详情
  556. /// 更新用户信息详情
  557. ///
  558. /// - Parameter completion: 回调UserDetailModel
  559. func userMemberDetailUpDateApi(avatar:String,userName:String,signature:String,completion: @escaping successCallBack) {
  560. if avatar == "" {
  561. SwiftProgressHUD.shared().showText("头像不能为空")
  562. return
  563. }else if userName == "" {
  564. SwiftProgressHUD.shared().showText("昵称不能为空")
  565. return
  566. }
  567. var parameters = Dictionary<String,Any>()
  568. parameters.updateValue(avatar, forKey: "avatar")
  569. parameters.updateValue(userName, forKey: "username")
  570. parameters.updateValue(signature, forKey: "signature")
  571. SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userMemberDetailUpDate(parameters: parameters)), completion: { (data) in
  572. let userModel = UserModel.shared().getModel()
  573. userModel?.avatarurl = avatar
  574. userModel?.username = userName
  575. UserModel.shared().setModel(model: userModel!)
  576. completion("")
  577. }) {
  578. (loadingStatus) in
  579. }
  580. }
  581. // MARK: - 用户关注列表
  582. /// 用户关注列表
  583. ///
  584. /// - Parameter completion: 回调UserDetailModel
  585. func userFollowsApi(uid:Int,page:Int = 1,completion: @escaping successCallBack,fail:@escaping failCallback) {
  586. var parameters = Dictionary<String,Any>()
  587. parameters.updateValue(uid, forKey: "uid")
  588. parameters.updateValue(page, forKey: "page")
  589. SwiftMoyaNetWorkManager.shared.requestObject(UserFollowsModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userFollows(parameters: parameters)), completion: { (userFollowsModel) in
  590. completion(userFollowsModel)
  591. }) {
  592. (loadingStatus) in
  593. fail(loadingStatus)
  594. }
  595. }
  596. // MARK: - 粉丝列表
  597. /// 粉丝列表
  598. ///
  599. /// - Parameter completion: 回调UserDetailModel
  600. func userFansApi(uid:Int,page:Int = 1,completion: @escaping successCallBack,fail:@escaping failCallback) {
  601. var parameters = Dictionary<String,Any>()
  602. parameters.updateValue(page, forKey: "page")
  603. parameters.updateValue(uid, forKey: "uid")
  604. SwiftMoyaNetWorkManager.shared.requestObject(UserFansModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userFans(parameters: parameters)), completion: { (userFansModel) in
  605. completion(userFansModel)
  606. }) {
  607. (loadingStatus) in
  608. }
  609. }
  610. // MARK: - 关注
  611. /// 关注
  612. ///
  613. /// - Parameters:
  614. /// - followUid: 被关注人id
  615. /// - completion: 回调
  616. func userFollowApi(followUid:Int,completion: @escaping successCallBack) {
  617. if UserModel.isTokenNil() {
  618. kAppDelegate.setLogin()
  619. }else {
  620. var parameters = Dictionary<String,Any>()
  621. parameters.updateValue(followUid, forKey: "follow_uid")
  622. SwiftMoyaNetWorkManager.shared.requestObject(FollowStatusModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userFollow(parameters: parameters)), completion: { (followStatusModel) in
  623. let followStatusModel = followStatusModel as? FollowStatusModel
  624. followStatusModel?.uid = followUid
  625. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "followApi"), object: followStatusModel)
  626. SwiftProgressHUD.shared().showText("已关注")
  627. completion(followStatusModel as Any)
  628. }) {
  629. (loadingStatus) in
  630. }
  631. }
  632. }
  633. // MARK: - 取消关注
  634. /// 取消关注
  635. ///
  636. /// - Parameters:
  637. /// - followUid: 被取消关注人id
  638. /// - completion: 回调
  639. func userCancelFollowApi(followUid:Int,completion: @escaping successCallBack) {
  640. if UserModel.isTokenNil() {
  641. kAppDelegate.setLogin()
  642. }else {
  643. var parameters = Dictionary<String,Any>()
  644. parameters.updateValue(followUid, forKey: "follow_uid")
  645. SwiftMoyaNetWorkManager.shared.requestObject(FollowStatusModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userCancelFollow(parameters: parameters)), completion: { (followStatusModel) in
  646. let followStatusModel = followStatusModel as? FollowStatusModel
  647. followStatusModel?.uid = followUid
  648. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "followApi"), object: followStatusModel)
  649. SwiftProgressHUD.shared().showText("已取消关注")
  650. completion(followStatusModel as Any)
  651. }) {
  652. (loadingStatus) in
  653. }
  654. }
  655. }
  656. // MARK: - 用户消息消息首页
  657. /// 用户消息消息首页
  658. ///
  659. /// - Parameter completion: 回调
  660. func userMemberMessageIndexApi(completion: @escaping successCallBack,fail:@escaping failCallback) {
  661. let parameters = Dictionary<String,Any>()
  662. SwiftMoyaNetWorkManager.shared.requestObject(MessageIndexModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMemberMessageIndex(parameters: parameters)), completion: { (messageIndexModel) in
  663. MessageIndexModel.shared.saveObject(model: messageIndexModel as! MessageIndexModel)
  664. completion(messageIndexModel)
  665. }) {
  666. (loadingStatus) in
  667. fail(loadingStatus)
  668. }
  669. }
  670. // MARK: - 用户消息列表
  671. /// 用户消息列表
  672. ///
  673. /// - Parameters:
  674. /// - messageShowTypes: 活动展示类型 0纯展示;1系统通知消息;2内容消息; 3活动消息; 4话题消息 ;5后台系统消息; 6评论消息; 7回复消息 ;8回复@ 消息;9攒内容消息 ;10收藏内容消息; 11分享内容消息 ;12关注消息
  675. /// - page: 分页
  676. /// - completion: 回调
  677. func userMemberMessageListApi(messageShowTypes:String,page:Int,completion: @escaping successCallBack,fail: @escaping failCallback) {
  678. var parameters = Dictionary<String,Any>()
  679. parameters.updateValue(messageShowTypes, forKey: "message_show_types")
  680. parameters.updateValue(page, forKey: "page")
  681. SwiftMoyaNetWorkManager.shared.requestObject(MessageListModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMemberMessageList(parameters: parameters)), completion: { (messageListModel) in
  682. completion(messageListModel)
  683. }) {
  684. (loadingStatus) in
  685. fail(loadingStatus)
  686. }
  687. }
  688. // MARK: - 用户消息阅读
  689. /// 用户消息阅读
  690. ///
  691. /// - Parameters:
  692. /// - messageShowTypes: 活动展示类型 0纯展示;1系统通知消息;2内容消息; 3活动消息; 4话题消息 ;5后台系统消息; 6评论消息; 7回复消息 ;8回复@ 消息;9攒内容消息 ;10收藏内容消息; 11分享内容消息 ;12关注消息
  693. /// - completion: 回调
  694. func userMemberReadMessageApi(messageShowTypes:String,completion: @escaping successCallBack) {
  695. var parameters = Dictionary<String,Any>()
  696. parameters.updateValue(messageShowTypes, forKey: "message_show_types")
  697. SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userMemberReadMessage(parameters: parameters)), completion: { (data) in
  698. completion("")
  699. }) {
  700. (loadingStatus) in
  701. }
  702. }
  703. // MARK: - 粉丝列表
  704. /// 粉丝列表
  705. ///
  706. /// - Parameter completion: 回调UserDetailModel
  707. func userMemberSearchMemberApi(userName:String,page:Int = 1,completion: @escaping successCallBack,fail: @escaping failCallback) {
  708. var parameters = Dictionary<String,Any>()
  709. parameters.updateValue(page, forKey: "page")
  710. parameters.updateValue(userName, forKey: "username")
  711. SwiftMoyaNetWorkManager.shared.requestObject(SearchMemberListModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMemberSearchMember(parameters: parameters)), completion: { (searchMemberListModel) in
  712. completion(searchMemberListModel)
  713. }) {
  714. (loadingStatus) in
  715. fail(loadingStatus)
  716. }
  717. }
  718. // MARK: - 获取U米
  719. /// 获取U米
  720. ///
  721. /// - Parameter completion: 回调
  722. func userMemberGetTotalBeanApi(completion: @escaping successCallBack) {
  723. let parameters = Dictionary<String,Any>()
  724. SwiftMoyaNetWorkManager.shared.requestObject(TotalBeanModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMemberGetTotalBean(parameters: parameters)), completion: { (totalBeanModel) in
  725. completion(totalBeanModel)
  726. }) {
  727. (loadingStatus) in
  728. }
  729. }
  730. // MARK: - 手机号码一键登录
  731. /// 手机号码一键登录
  732. ///
  733. /// - Parameter completion: 回调
  734. func userMobileAuthorizationLoginApi(token:String,completion: @escaping successCallBack) {
  735. var parameters = Dictionary<String,Any>()
  736. parameters.updateValue(token, forKey: "AccessToken")
  737. SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userMobileAuthorizationLogin(parameters: parameters)), completion: { (userModel) in
  738. UserModel.shared().setModel(model: userModel as! UserModel)
  739. VirusViewModel.registeredVirueRecordAddApi(completion: {})
  740. completion(userModel)
  741. }) {
  742. (loadingStatus) in
  743. }
  744. }
  745. }