WanPai/Network/Services.swift | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
WanPai/Root/Login/VC/BindPhoneVC.swift | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
WanPai/Root/Login/VC/BindPhoneVC.xib | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
WanPai/Root/Login/VC/LoginRegOrForgotVC.swift | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
WanPai/Root/Login/VC/LoginRegOrForgotVC.xib | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
WanPai/Network/Services.swift
@@ -137,12 +137,13 @@ return NetworkRequest.request(params: params, method: .post, progress: true) } class func wxPhoneBind(phone:String,code:String,openId:String)->Observable<BaseResponse<SimpleModel>>{ class func wxPhoneBind(phone:String,code:String,openId:String,invitePhone:String? = nil)->Observable<BaseResponse<SimpleModel>>{ let params = ParamsAppender.build(url: All_Url) .interface(url: "/account/base/appUser/bind") .append(key: "phone", value: phone) .append(key: "openId", value: openId) .append(key: "code", value: code) .append(key: "invitePhone", value: invitePhone) return NetworkRequest.request(params: params, method: .post, progress: true) } @@ -154,12 +155,13 @@ return NetworkRequest.request(params: params, method: .post, progress: true) } class func register(phone:String,password:String,code:String)->Observable<BaseResponse<SimpleModel>>{ class func register(phone:String,password:String,code:String,invitePhone:String? = nil)->Observable<BaseResponse<SimpleModel>>{ let params = ParamsAppender.build(url: All_Url) .interface(url: "/account/base/appUser/addAppUser") .append(key: "phone", value: phone) .append(key: "password", value: password.jq_md5String().lowercased()) .append(key: "code", value: code) .append(key: "invitePhone", value: invitePhone) return NetworkRequest.request(params: params, method: .post, progress: true) } WanPai/Root/Login/VC/BindPhoneVC.swift
@@ -14,6 +14,7 @@ @IBOutlet weak var tf_phone: QMUITextField! @IBOutlet weak var tf_code: QMUITextField! @IBOutlet weak var btn_code: UIButton! @IBOutlet weak var tf_invitePhone: QMUITextField! private var wxUserInfoModel:WechatUserInfoModel! private var token:String! @@ -53,7 +54,14 @@ alert(msg: "请输入验证码");return } Services.wxPhoneBind(phone: tf_phone.text!, code: tf_code.text!, openId: wxUserInfoModel.openid).subscribe(onNext: {[weak self] data in var invitePhone:String? if !tf_invitePhone.isEmpty{ guard tf_phone.text!.jq_isPhone else { alert(msg: "请输入正确的推广手机号码");return } } Services.wxPhoneBind(phone: tf_phone.text!, code: tf_code.text!, openId: wxUserInfoModel.openid,invitePhone: invitePhone).subscribe(onNext: {[weak self] data in guard let weakSelf = self else { return } if data.code == 200{ alertSuccess(msg: "绑定成功") WanPai/Root/Login/VC/BindPhoneVC.xib
@@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22154" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <device id="retina6_12" orientation="portrait" appearance="light"/> <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22130"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> <capability name="Named colors" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="System colors in document resources" minToolsVersion="11.0"/> @@ -14,6 +14,7 @@ <connections> <outlet property="btn_code" destination="HBj-1e-rHP" id="aVH-jy-57q"/> <outlet property="tf_code" destination="uLi-4i-BeV" id="U7P-Sg-0pn"/> <outlet property="tf_invitePhone" destination="VXM-nS-KT3" id="gWF-rF-AoS"/> <outlet property="tf_phone" destination="38t-oZ-Tdy" id="fBc-VT-npA"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> </connections> @@ -131,16 +132,56 @@ <action selector="bindAction:" destination="-1" eventType="touchUpInside" id="FDP-to-B1Y"/> </connections> </button> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mwx-FU-gHa"> <rect key="frame" x="40" y="321" width="313" height="50"/> <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_phone" translatesAutoresizingMaskIntoConstraints="NO" id="dIe-9P-FaY"> <rect key="frame" x="31" y="16" width="16" height="18"/> </imageView> <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="推广手机号(可选)" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="VXM-nS-KT3" customClass="QMUITextField"> <rect key="frame" x="75" y="0.0" width="228" height="50"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> <textInputTraits key="textInputTraits" keyboardType="numberPad"/> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> <integer key="value" value="11"/> </userDefinedRuntimeAttribute> <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/> </userDefinedRuntimeAttribute> </userDefinedRuntimeAttributes> </textField> </subviews> <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstItem="dIe-9P-FaY" firstAttribute="centerY" secondItem="mwx-FU-gHa" secondAttribute="centerY" id="BxU-WY-43M"/> <constraint firstAttribute="trailing" secondItem="VXM-nS-KT3" secondAttribute="trailing" constant="10" id="SGl-8u-KSv"/> <constraint firstItem="VXM-nS-KT3" firstAttribute="leading" secondItem="dIe-9P-FaY" secondAttribute="trailing" constant="28" id="acx-eY-Z4g"/> <constraint firstAttribute="height" constant="50" id="bsR-AW-q4M"/> <constraint firstAttribute="bottom" secondItem="VXM-nS-KT3" secondAttribute="bottom" id="dPd-j8-bfp"/> <constraint firstItem="VXM-nS-KT3" firstAttribute="top" secondItem="mwx-FU-gHa" secondAttribute="top" id="xep-Dk-sG7"/> <constraint firstItem="dIe-9P-FaY" firstAttribute="leading" secondItem="mwx-FU-gHa" secondAttribute="leading" constant="31" id="zHI-bv-jIc"/> </constraints> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> <real key="value" value="25"/> </userDefinedRuntimeAttribute> </userDefinedRuntimeAttributes> </view> </subviews> <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstItem="WPl-pn-8JJ" firstAttribute="top" secondItem="7pY-Sh-GDo" secondAttribute="bottom" constant="30" id="0pd-fR-HyH"/> <constraint firstItem="mwx-FU-gHa" firstAttribute="trailing" secondItem="7iL-m6-Iwb" secondAttribute="trailing" id="8GK-7D-hNR"/> <constraint firstItem="7iL-m6-Iwb" firstAttribute="top" secondItem="WPl-pn-8JJ" secondAttribute="bottom" constant="20" id="EUo-p4-szH"/> <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="E2r-yp-uyh" secondAttribute="trailing" constant="40" id="VGa-zn-Nhc"/> <constraint firstItem="WPl-pn-8JJ" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="a84-vJ-qRX"/> <constraint firstItem="7pY-Sh-GDo" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="20" id="bSg-Zi-eW3"/> <constraint firstItem="mwx-FU-gHa" firstAttribute="leading" secondItem="7iL-m6-Iwb" secondAttribute="leading" id="eI6-Nw-SFE"/> <constraint firstItem="E2r-yp-uyh" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="fKj-JO-wQI"/> <constraint firstItem="mwx-FU-gHa" firstAttribute="top" secondItem="7iL-m6-Iwb" secondAttribute="bottom" constant="20" id="g4a-Vp-qHi"/> <constraint firstItem="7iL-m6-Iwb" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="iCb-l2-b9e"/> <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="WPl-pn-8JJ" secondAttribute="trailing" constant="40" id="qSE-TR-Ja9"/> <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="E2r-yp-uyh" secondAttribute="bottom" constant="10" id="tWf-9w-2cf"/> WanPai/Root/Login/VC/LoginRegOrForgotVC.swift
@@ -17,8 +17,10 @@ @IBOutlet weak var tf_phone: QMUITextField! @IBOutlet weak var tf_code: QMUITextField! @IBOutlet weak var tf_pwd: QMUITextField! required init(type:GetSMSCodeType) { @IBOutlet weak var tf_invitePhone: QMUITextField! @IBOutlet weak var view_invite: UIView! @IBOutlet weak var view_placeholder: UIView! required init(type:GetSMSCodeType) { super.init(nibName: nil, bundle: nil) self.type = type } @@ -31,6 +33,9 @@ super.viewDidLoad() title = type.titleStr tf_pwd.maximumTextLength = 18 view_invite.isHidden = type != .register view_placeholder.isHidden = type != .register } @IBAction func eyeAction(_ sender: UIButton) { @@ -45,14 +50,22 @@ guard !tf_pwd.text!.isEmpty else {alertError(msg: tf_pwd.placeholder!);return} guard tf_pwd.text!.jq_isComplexPassword else {alertError(msg: "请输入6-18位包含数字和字母的密码");return} let phone = tf_phone.text! let pwd = tf_pwd.text! let code = tf_code.text! switch type{ case .register: Services.register(phone: phone, password: pwd, code: code).subscribe(onNext: { result in var invitePhone:String? if !tf_invitePhone.isEmpty{invitePhone = tf_invitePhone.text!} if invitePhone != nil{ guard tf_phone.text!.jq_isPhone else { alert(msg: "请输入正确的推广手机号码");return } } Services.register(phone: phone, password: pwd, code: code,invitePhone: invitePhone).subscribe(onNext: { result in alertSuccess(msg: "注册成功") DispatchQueue.main.asyncAfter(wallDeadline: .now()+1) { app.registerAndLoginSuccess() WanPai/Root/Login/VC/LoginRegOrForgotVC.xib
@@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22154" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <device id="retina6_12" orientation="portrait" appearance="light"/> <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22130"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> <capability name="Named colors" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="System colors in document resources" minToolsVersion="11.0"/> @@ -13,9 +13,12 @@ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="LoginRegOrForgotVC" customModule="WanPai" customModuleProvider="target"> <connections> <outlet property="tf_code" destination="gNj-6t-p9o" id="dc4-A0-9gm"/> <outlet property="tf_invitePhone" destination="Tyv-H1-ya9" id="2NV-Ot-rA5"/> <outlet property="tf_phone" destination="t2b-ES-vps" id="chL-vl-tdC"/> <outlet property="tf_pwd" destination="xxp-hE-Y3y" id="ce7-Z5-2g7"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> <outlet property="view_invite" destination="khS-aY-eIa" id="RJV-gI-KqF"/> <outlet property="view_placeholder" destination="yL2-ki-hg8" id="Lkp-6r-JmA"/> </connections> </placeholder> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> @@ -161,7 +164,7 @@ </userDefinedRuntimeAttributes> </view> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vri-pP-hU6"> <rect key="frame" x="100" y="423" width="193" height="40"/> <rect key="frame" x="100" y="502" width="193" height="40"/> <color key="backgroundColor" name="FE6E0D"/> <constraints> <constraint firstAttribute="height" constant="40" id="9Zu-bi-eqQ"/> @@ -179,11 +182,67 @@ <action selector="completeAction:" destination="-1" eventType="touchUpInside" id="T4h-wV-1He"/> </connections> </button> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="UlJ-UL-n5e"> <rect key="frame" x="40" y="384" width="313" height="98"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qjx-Ow-Cs2"> <rect key="frame" x="0.0" y="0.0" width="313" height="24"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstAttribute="height" constant="24" id="Nhk-hZ-Au2"/> </constraints> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="khS-aY-eIa"> <rect key="frame" x="0.0" y="24" width="313" height="50"/> <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_phone" translatesAutoresizingMaskIntoConstraints="NO" id="ann-JZ-F4D"> <rect key="frame" x="31" y="16" width="16" height="18"/> </imageView> <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="推广手机号(可选)" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Tyv-H1-ya9" customClass="QMUITextField"> <rect key="frame" x="75" y="0.0" width="228" height="50"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> <textInputTraits key="textInputTraits" keyboardType="numberPad"/> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> <integer key="value" value="11"/> </userDefinedRuntimeAttribute> <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/> </userDefinedRuntimeAttribute> </userDefinedRuntimeAttributes> </textField> </subviews> <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="trailing" secondItem="Tyv-H1-ya9" secondAttribute="trailing" constant="10" id="9PP-Md-R9L"/> <constraint firstItem="Tyv-H1-ya9" firstAttribute="leading" secondItem="ann-JZ-F4D" secondAttribute="trailing" constant="28" id="CQh-af-AYU"/> <constraint firstItem="ann-JZ-F4D" firstAttribute="leading" secondItem="khS-aY-eIa" secondAttribute="leading" constant="31" id="HJj-ap-d8Z"/> <constraint firstItem="ann-JZ-F4D" firstAttribute="centerY" secondItem="khS-aY-eIa" secondAttribute="centerY" id="I9r-yF-a6Y"/> <constraint firstAttribute="bottom" secondItem="Tyv-H1-ya9" secondAttribute="bottom" id="qzC-kZ-wwV"/> <constraint firstItem="Tyv-H1-ya9" firstAttribute="top" secondItem="khS-aY-eIa" secondAttribute="top" id="tgs-dl-FUc"/> <constraint firstAttribute="height" constant="50" id="zZ9-UN-4pG"/> </constraints> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> <real key="value" value="25"/> </userDefinedRuntimeAttribute> </userDefinedRuntimeAttributes> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yL2-ki-hg8"> <rect key="frame" x="0.0" y="74" width="313" height="24"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstAttribute="height" constant="24" id="jup-bX-8BC"/> </constraints> </view> </subviews> </stackView> </subviews> <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstItem="vri-pP-hU6" firstAttribute="top" secondItem="gqc-3H-F7Y" secondAttribute="bottom" constant="39" id="1bl-mL-MaS"/> <constraint firstItem="UlJ-UL-n5e" firstAttribute="leading" secondItem="gqc-3H-F7Y" secondAttribute="leading" id="21i-Ga-DSv"/> <constraint firstItem="gqc-3H-F7Y" firstAttribute="trailing" secondItem="H0l-HL-WQ6" secondAttribute="trailing" id="27v-LX-ziP"/> <constraint firstItem="ju4-6O-Lwi" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="5vk-us-g5I"/> <constraint firstItem="H0l-HL-WQ6" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="6Ty-7f-3BQ"/> @@ -193,14 +252,17 @@ <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="H0l-HL-WQ6" secondAttribute="trailing" constant="40" id="IaL-rX-bcc"/> <constraint firstItem="AjG-PX-mug" firstAttribute="leading" secondItem="H0l-HL-WQ6" secondAttribute="leading" id="J9d-bS-7OG"/> <constraint firstItem="vri-pP-hU6" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="Mmn-Zj-0z7"/> <constraint firstItem="UlJ-UL-n5e" firstAttribute="trailing" secondItem="gqc-3H-F7Y" secondAttribute="trailing" id="Wrw-aE-4gS"/> <constraint firstItem="ju4-6O-Lwi" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="20" id="ZoS-rs-UOK"/> <constraint firstItem="AjG-PX-mug" firstAttribute="trailing" secondItem="H0l-HL-WQ6" secondAttribute="trailing" id="aeA-76-2dC"/> <constraint firstItem="H0l-HL-WQ6" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="bow-BN-4vw"/> <constraint firstItem="vri-pP-hU6" firstAttribute="top" secondItem="UlJ-UL-n5e" secondAttribute="bottom" constant="20" id="dZS-ib-5qF"/> <constraint firstItem="AjG-PX-mug" firstAttribute="top" secondItem="H0l-HL-WQ6" secondAttribute="bottom" constant="20" id="ewl-qX-Y7E"/> <constraint firstItem="UlJ-UL-n5e" firstAttribute="top" secondItem="gqc-3H-F7Y" secondAttribute="bottom" id="mPi-3s-xNe"/> <constraint firstItem="gqc-3H-F7Y" firstAttribute="top" secondItem="AjG-PX-mug" secondAttribute="bottom" constant="24" id="mtp-Is-iBP"/> <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="vri-pP-hU6" secondAttribute="trailing" constant="100" id="wnH-HW-tKv"/> </constraints> <point key="canvasLocation" x="140" y="21"/> <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/> </view> </objects> <resources>