Explorar el Código

修改个人资料完成

南鑫林 hace 5 años
padre
commit
6c2df9e46b

+ 23 - 1
RainbowPlanet/RainbowPlanet/Modules/MineModule/ModifyData/View/ModifyDataAvatarView.swift

@@ -11,6 +11,10 @@ import UIKit
 class ModifyDataAvatarView: BaseView {
 
 
+
+    typealias ImageUrlClosureName = (_ imgUrl: String) -> Void
+    var imageUrlClosureName : ImageUrlClosureName?
+    
     override func setupViews() {
         backgroundColor = .white
         addSubview(avatarButton)
@@ -62,7 +66,7 @@ class ModifyDataAvatarView: BaseView {
     func alertPhotoAndCameraManager() {
         PhotoAndCameraManager.shared().photoAndCameraManagerImageBlock = {
             [weak self] image in
-            self?.avatarButton.setBackgroundImage(image, for: UIControl.State.normal)
+            self?.configUploadSingleImgApi(imageArray: [image])
         }
         UIAlertController.showConfirmActionSheet(camera: { (cameraAction) in
             PhotoAndCameraManager.shared().authorizeCamera()
@@ -70,5 +74,23 @@ class ModifyDataAvatarView: BaseView {
             PhotoAndCameraManager.shared().authorizePhoto()
         }
     }
+    
+    var userDetailModel: UserDetailModel? {
+        didSet {
+            avatarButton.kf.setBackgroundImage(with: kURLImage(name: userDetailModel?.avatar ?? ""), for: UIControl.State.normal, placeholder: kImage(name: "defaul_tavatar"))
+        }
+    }
 
 }
+
+extension ModifyDataAvatarView {
+    func configUploadSingleImgApi(imageArray: Array<UIImage>) {
+        SwiftMoyaNetWorkServiceConfig.shared().configUploadSingleImgApi(imageArray: imageArray) {
+            [weak self] (imageUrl) -> (Void) in
+            self?.avatarButton.setBackgroundImage(imageArray[0], for: UIControl.State.normal)
+            if let imageUrlClosureName = self?.imageUrlClosureName {
+                imageUrlClosureName(imageUrl as! String)
+            }
+        }
+    }
+}

+ 22 - 0
RainbowPlanet/RainbowPlanet/Modules/MineModule/ModifyData/View/ModifyDataNickNameSignView.swift

@@ -12,6 +12,12 @@ class ModifyDataNickNameSignView: BaseView {
     
     var nickNameTextViewSize : CGSize?
     var signNameTextViewSize : CGSize?
+    
+    typealias NickNameClosureName = (_ nickName: String) -> Void
+    var nickNameClosureName : NickNameClosureName?
+    
+    typealias SignNameClosureName = (_ signName: String) -> Void
+    var signNameClosureName : SignNameClosureName?
         
     override func setupViews() {
         backgroundColor = .white
@@ -108,6 +114,10 @@ class ModifyDataNickNameSignView: BaseView {
                 make.right.equalTo(-14)
                 make.height.equalTo((self?.nickNameTextViewSize?.height ?? 23))
             }
+            
+            if let nickNameClosureName = self?.nickNameClosureName {
+                nickNameClosureName(self?.nickNameTextView.text ?? "")
+            }
  
         }).disposed(by: disposeBag)
         return nickNameTextView
@@ -164,9 +174,21 @@ class ModifyDataNickNameSignView: BaseView {
                 make.height.equalTo((self?.signNameTextViewSize?.height ?? 23))
             }
             
+            if let signNameClosureName = self?.signNameClosureName {
+                signNameClosureName(self?.signNameTextView.text ?? "")
+            }
+            
         }).disposed(by: disposeBag)
         return signNameTextView
     }()
+    
+    var userDetailModel: UserDetailModel? {
+        didSet {
+            nickNameTextView.text = userDetailModel?.username
+            signNameTextView.text = userDetailModel?.signature
+
+        }
+    }
 
 }
 

+ 40 - 1
RainbowPlanet/RainbowPlanet/Modules/MineModule/ModifyData/ViewController/ModifyDataViewController.swift

@@ -10,6 +10,18 @@ import UIKit
 
 class ModifyDataViewController: BaseViewController {
     
+    var userDetailModel: UserDetailModel? {
+        didSet {
+            avatar = userDetailModel?.avatar
+            userName = userDetailModel?.username
+            signature = userDetailModel?.signature
+        }
+    }
+    
+    var avatar : String?
+    var userName : String?
+    var signature : String?
+    
     override func viewDidLoad() {
         super.viewDidLoad()
         setupViews()
@@ -26,19 +38,46 @@ class ModifyDataViewController: BaseViewController {
     }
     
     override func setupData() {
+        //保存
         navigationBar.onClickRightButton = {
-            
+            [weak self] in
+            self?.userMemberDetailUpDateApi()
         }
     }
     
     lazy var modifyDataAvatarView: ModifyDataAvatarView = {
         let modifyDataAvatarView = ModifyDataAvatarView(frame: CGRect(x: 0, y: 10+kNavBarTotalHeight, width: kScreenWidth, height: 148))
+        modifyDataAvatarView.userDetailModel = userDetailModel
+        modifyDataAvatarView.imageUrlClosureName = {
+            [weak self] avatar in
+            self?.avatar = avatar
+        }
         return modifyDataAvatarView
     }()
     
     lazy var modifyDataNickNameSignView: ModifyDataNickNameSignView = {
         let modifyDataNickNameSignView = ModifyDataNickNameSignView(frame: CGRect(x: 0, y: 10+148+10+kNavBarTotalHeight, width: kScreenWidth, height: 112))
+        modifyDataNickNameSignView.userDetailModel = userDetailModel
+        modifyDataNickNameSignView.nickNameClosureName = {
+            [weak self] userName in
+            self?.userName = userName
+        }
+        modifyDataNickNameSignView.signNameClosureName = {
+            [weak self] signature in
+            self?.signature = signature
+        }
         return modifyDataNickNameSignView
     }()
 
 }
+
+extension ModifyDataViewController {
+    
+    /// 保存更新用户信息
+    func userMemberDetailUpDateApi() {
+        SwiftMoyaNetWorkServiceUser.shared().userMemberDetailUpDateApi(avatar: self.avatar ?? "", userName: self.userName ?? "", signature: self.signature ?? "") { (data) -> (Void) in
+            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "UserMemberDetail"), object: nil)
+            self.navigationController?.popViewController(animated: true)
+        }
+    }
+}

+ 1 - 0
RainbowPlanet/RainbowPlanet/Modules/MineModule/PersonalCenter/PersonalCenterView/PersonViewUserAndOtherHeaderView.swift

@@ -200,6 +200,7 @@ class PersonViewUserAndOtherHeaderView: BaseView {
         editButton.rx.tap.subscribe(onNext: {[weak self] (data) in
             let currentVC = editButton.findViewController() as? BaseViewController
             let vc = ModifyDataViewController()
+            vc.userDetailModel = self?.userDetailModel
             currentVC?.navigationController?.pushViewController(vc, animated: true)
         }).disposed(by: disposeBag)
         return editButton

+ 16 - 3
RainbowPlanet/RainbowPlanet/Modules/MineModule/PersonalCenter/UserPersonalCenter/ViewController/UserPersonalCenterViewController.swift

@@ -10,9 +10,15 @@ import UIKit
 import JXSegmentedView
 import RxSwift
 
-
 class UserPersonalCenterViewController: BaseViewController {
     
+    deinit {
+        if observe != nil {
+            NotificationCenter.default.removeObserver(observe!)
+        }
+    }
+    weak var observe : NSObjectProtocol?
+    
     let JXTableHeaderViewHeight: Int = Int(140 + kNavBarTotalHeight + 109 + 104)
     let JXheightForHeaderInSection: Int = 44
     var cmsTemplateTitles = ["发布 0", "收藏 0", "分享 0"]
@@ -89,6 +95,11 @@ class UserPersonalCenterViewController: BaseViewController {
         }).disposed(by: disposeBag)
         // 获取用户信息
         userMemberDetailApi()
+        // 更新用户信息
+        observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("UserMemberDetail"), object: nil, queue: OperationQueue.main) {
+            [weak self] (notification) in
+            self?.userMemberDetailApi()
+        }
         
     }
     
@@ -106,14 +117,16 @@ class UserPersonalCenterViewController: BaseViewController {
     /// 编辑
     func pushModifyData() {
         let vc = ModifyDataViewController()
+        vc.userDetailModel = self.userDetailModel
         self.navigationController?.pushViewController(vc, animated: true)
-        
     }
     
     lazy var avatarButton: UIButton = {
         let avatarButton = UIButton(type: UIButton.ButtonType.custom)
         avatarButton.setImage(kImage(name: "defaul_tavatar"), for: UIControl.State.normal)
         avatarButton.alpha = 0
+        avatarButton.cornerRadius = 10
+        avatarButton.masksToBounds = true
         avatarButton.rx.tap.subscribe(onNext: {[weak self] (data) in
             self?.pushModifyData()
         }).disposed(by: disposeBag)
@@ -212,7 +225,7 @@ extension UserPersonalCenterViewController {
             self?.userDetailModel = userDetailModel as? UserDetailModel
             self?.userHeaderView.userDetailModel = self?.userDetailModel
             self?.navigationBar.backgroundImageView.kf.setImage(with: kURLImage(name: self?.userDetailModel?.backgroundImg ?? "pic_preload"), placeholder: kImage(name: "pic_preload"))
-            self?.avatarButton.kf.setBackgroundImage(with: kURLImage(name: self?.userDetailModel?.avatar ?? ""), for: UIControl.State.normal, placeholder: kImage(name: "defaul_tavatar"))
+            self?.avatarButton.kf.setImage(with: kURLImage(name: self?.userDetailModel?.avatar ?? ""), for: UIControl.State.normal, placeholder: kImage(name: "defaul_tavatar"))
             self?.nameButton.setTitle(self?.userDetailModel?.username, for: UIControl.State.normal)
 
         }

+ 27 - 0
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceUser/SwiftMoyaNetWorkServiceUser.swift

@@ -559,5 +559,32 @@ public class SwiftMoyaNetWorkServiceUser: NSObject {
             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<String,Any>()
+        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("")
+        }
+    }
 
 }

+ 15 - 4
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceUser/SwiftMoyaServiceUserApi.swift

@@ -105,6 +105,10 @@ public let kUserMemberUpdateGenderApi = "/user/v2/member/updateGender"
 /// 用户详情
 public let kUserMemberDetailApi = "/user/v2/member"
 
+// MARK: - 修改用户头像昵称签名
+/// 修改用户头像昵称签名
+public let kUserMemberDetailUpDateApi = "/user/v2/member"
+
 /// 用户
 ///
 /// - userLogout: 登出
@@ -154,6 +158,7 @@ public enum SwiftMoyaServiceUserApi {
     case userSetDeliverType(parameters:Dictionary<String, Any>)
     case userMemberUpdateGender(parameters:Dictionary<String, Any>)
     case userMemberDetail(parameters:Dictionary<String, Any>)
+    case userMemberDetailUpDate(parameters:Dictionary<String, Any>)
     
 }
 
@@ -184,7 +189,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
              .userAddSelfAddress,
              .userSetDeliverType,
              .userMemberUpdateGender,
-             .userMemberDetail
+             .userMemberDetail,
+             .userMemberDetailUpDate
             :
             return URL(string: kApiDataPrefix())!
         }
@@ -240,6 +246,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
             return kUserMemberUpdateGenderApi
         case .userMemberDetail:
             return kUserMemberDetailApi
+        case .userMemberDetailUpDate:
+            return kUserMemberDetailUpDateApi
         }
     }
 
@@ -263,7 +271,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
         case .userAddressIsDefault,
              .userSetDeliverType,
              .userSetExpreesContactsDefault,
-             .userMemberUpdateGender
+             .userMemberUpdateGender,
+             .userMemberDetailUpDate
             :
             return .put
         case .userSelfAddressList,
@@ -308,7 +317,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
              .userAddSelfAddress(var parameters),
              .userSetDeliverType(var parameters),
              .userMemberUpdateGender(var parameters),
-             .userMemberDetail(var parameters)
+             .userMemberDetail(var parameters),
+             .userMemberDetailUpDate(var parameters)
             :
             let sign = SwiftSign.shared().sign(signType:.AccessToken, parameters: parameters)
             parameters.updateValue(sign, forKey: "sign")
@@ -354,7 +364,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
              .userAddSelfAddress,
              .userSetDeliverType,
              .userMemberUpdateGender,
-             .userMemberDetail
+             .userMemberDetail,
+             .userMemberDetailUpDate
             :
             return (headerParameters(headerType: .tokenHeader) as! [String : String])
         case .userLogout,