package com.dreamspace.uucampus.ui.activity.Login;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.api.UUService;
import com.dreamspace.uucampus.common.ShareData;
import com.dreamspace.uucampus.common.utils.CommonUtils;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.common.utils.PreferenceUtils;
import com.dreamspace.uucampus.model.api.SendVerifyReq;
import com.dreamspace.uucampus.model.api.WeiXinLoginReq;
import com.dreamspace.uucampus.model.api.WeiXinLoginRes;
import com.dreamspace.uucampus.model.api.WeiXinRegisterReq;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by money on 2015/10/13.
* 微信授权后创建新用户
*/
public class BoundActvity extends AbsActivity implements Handler.Callback {
@Bind(R.id.bound_userName)
EditText boundUserName;
@Bind(R.id.bound_verify_code)
EditText boundVerifyCode;
@Bind(R.id.bound_get_code)
TextView boundGetCode;
@Bind(R.id.bound_button)
Button boundButton;
@Bind(R.id.bound_password)
EditText boundPassword;
@Bind(R.id.bound_pwd_confirm)
EditText boundPwdConfirm;
private String phoneNum = null;
private String code = null;
private String password = null;
private String passwordConfirm = null;
private UUService mService;
private int timer = 60;
private Handler mHandler;
private static final int BEGIN_TIMER = 23333;
private String text = "发送验证码";
@Override
protected int getContentView() {
return R.layout.activity_bound_page;
}
@Override
protected void prepareDatas() {
ButterKnife.bind(this);
mHandler = new Handler(this);
mService = ApiManager.getService(getApplicationContext());
}
@Override
protected void initViews() {
boundGetCode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sendVerifyCode();
}
});
boundButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneNum = boundUserName.getText().toString();
code = boundVerifyCode.getText().toString();
password = boundPassword.getText().toString();
passwordConfirm = boundPwdConfirm.getText().toString();
weChatRegister();
}
});
}
@Override
protected View getLoadingTargetView() {
return null;
}
//获取手机验证码
private void sendVerifyCode() {
if (isPhoneValid()) {
if (NetUtils.isNetworkConnected(this)) {
SendVerifyReq req = new SendVerifyReq();
req.setPhone_num(phoneNum);
mService.sendVerifyCode(req, new Callback<Response>() {
@Override
public void success(Response o, Response response) {
boundUserName.setEnabled(false);
mHandler.sendEmptyMessage(BEGIN_TIMER);
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
} else {
showNetWorkError();
}
}
}
//检查手机号码是否输入正确
private boolean isPhoneValid() {
phoneNum = boundUserName.getText().toString();
if (CommonUtils.isEmpty(phoneNum)) {
showToast("请先输入您的手机号");
return false;
}
if (phoneNum.length() != 11) {
showToast("请检查您的手机号是否正确");
boundUserName.requestFocus();
return false;
}
return true;
}
//检查验证码密码是否输入正确
private boolean isRestValid(){
if (CommonUtils.isEmpty(code)) {
showToast("请先输入您输入的验证码");
boundVerifyCode.requestFocus();
return false;
}
if(CommonUtils.isEmpty(password)){
showToast("请输入您设置的密码");
boundPassword.requestFocus();
return false;
}
if(CommonUtils.isEmpty(passwordConfirm)){
showToast("请再次输入您设置的密码");
boundPwdConfirm.requestFocus();
return false;
}
if(!password.equals(passwordConfirm)){
showToast("两次输入的密码不一致,请重新输入");
boundPwdConfirm.setText("");
boundPwdConfirm.requestFocus();
return false;
}
return true;
}
//微信注册新用户
private void weChatRegister() {
if(isPhoneValid()&&isRestValid()){
if(NetUtils.isNetworkConnected(this)){
WeiXinRegisterReq weiXinRegisterReq = new WeiXinRegisterReq();
weiXinRegisterReq.setPhone_num(phoneNum);
weiXinRegisterReq.setAccess_token(ShareData.weChatUser.getAccess_token());
weiXinRegisterReq.setCode(code);
weiXinRegisterReq.setOpen_id(ShareData.weChatUser.getOpenid());
weiXinRegisterReq.setPassword(password);
mService.weiXinRegister(weiXinRegisterReq, new Callback<Response>() {
@Override
public void success(Response o,Response response) {
weChatLogin();
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
}else{
showNetWorkError();
}
}
}
//微信登录获取access_token
private void weChatLogin() {
final WeiXinLoginReq weiXinLoginReq = new WeiXinLoginReq();
weiXinLoginReq.setOpen_id(ShareData.weChatUser.getOpenid());
weiXinLoginReq.setAccess_token(ShareData.weChatUser.getAccess_token());
mService.weiXinLogin(weiXinLoginReq, new Callback<WeiXinLoginRes>() {
@Override
public void success(WeiXinLoginRes weiXinLoginRes, Response response) {
PreferenceUtils.putString(BoundActvity.this.getApplicationContext(),
PreferenceUtils.Key.ACCESS, weiXinLoginRes.getAccess_token());
mHandler.removeMessages(BEGIN_TIMER);
readyGoThenKill(RegisterInfoActivity.class);
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
}
@Override
//获取验证码的间隔限制
public boolean handleMessage(Message message) {
if (message.what == BEGIN_TIMER) {
if (timer == 0) {
if (boundGetCode != null) {
boundGetCode.setText(text);
boundGetCode.setEnabled(true);
timer = 60;
}
} else {
if (boundGetCode != null) {
boundGetCode.setText(timer + "秒后重新发送");
timer--;
mHandler.sendEmptyMessageDelayed(BEGIN_TIMER, 1000);
}
}
}
return true;
}
}