MVP登录注册跳转

来源:互联网 发布:linux命令记录日志 编辑:程序博客网 时间:2024/05/18 09:12
先添加依赖:
compile 'com.squareup.okhttp3:okhttp:3.9.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
    compile 'com.google.code.gson:gson:2.8.2'
    compile 'com.youth.banner:banner:1.4.10'
    compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'

    compile 'com.facebook.fresco:fresco:1.5.0'

net网络请求:

HttpUtils:

package mvpframework.bwie.com.a1509aproject.net;import java.util.Map;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.logging.HttpLoggingInterceptor;/** * Created by peng on 2017/11/7. * 网络请求工具类 */public class HttpUtils {    private static HttpUtils httpUtils;    private final OkHttpClient client;    private HttpUtils() {        //创建OkHttpClient        //创建拦截器        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();        logging.setLevel(HttpLoggingInterceptor.Level.BODY);        client = new OkHttpClient.Builder()                .addInterceptor(logging)                .build();    }    public static HttpUtils getHttpUtils() {        if (httpUtils == null) {            synchronized (HttpUtils.class) {                if (httpUtils == null) {                    httpUtils = new HttpUtils();                }            }        }        return httpUtils;    }    /**     * GET请求     *     * @param url      请求地址     * @param callback 回调     */    public void doGet(String url, Callback callback) {        Request request = new Request.Builder().url(url).build();        client.newCall(request).enqueue(callback);    }    /**     * POST请求     *     * @param url      请求地址     * @param params   请求的参数     * @param callback 回调     */    public void doPost(String url, Map<String, String> params, Callback callback) {        //这里可以加网络判断        //判断参数        if (params == null || params.size() == 0) {            throw new RuntimeException("params is null!!!");        }        // 创建Request        FormBody.Builder builder = new FormBody.Builder();        for (Map.Entry<String, String> entry : params.entrySet()) {            builder.add(entry.getKey(), entry.getValue());        }        FormBody formBody = builder.build();        Request request = new Request.Builder()                .url(url)                .post(formBody)                .build();        client.newCall(request).enqueue(callback);    }}
Api:

package mvpframework.bwie.com.a1509aproject.net;/** * Created by peng on 2017/11/7. */public interface Api {    public static boolean isOnline = false;    public static final String DEV = "http://120.27.23.105/";    public static final String WROK = "";    public static final String HOST = isOnline ? WROK : DEV;    public static final String LOGIN = HOST + "user/login";//登陆    public static final String REGISTER = HOST + "user/reg";//注册    public static final String CLASS = HOST + "product/getCatagory";//分类    public static final String PRODUCT_CATAGORY = HOST + "product/getProductCatagory";//商品子分类接口}
OnNetListener:

package mvpframework.bwie.com.a1509aproject.net;/** * Created by peng on 2017/11/7. * 网络请求回调接口 */public interface OnNetListener<T> {    //成功回调    public void onSuccess(T t);    //失败回调    public void onFailure(Exception e);}

appceng:
返回上一层:




import android.app.Application;


import com.facebook.drawee.backends.pipeline.Fresco;


/**
 * Created by peng on 2017/11/9.
 */


public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}
Model层:
登录接口:
package mvpframework.bwie.com.a1509aproject.model.IModel;


import mvpframework.bwie.com.a1509aproject.bean.LoginBean;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;


/**
 * Created by peng on 2017/11/7.
 */


public interface ILoginModel {
    public void login(String account, String pwd, OnNetListener<LoginBean> onNetListener);
}
登录:
package mvpframework.bwie.com.a1509aproject.model;


import com.google.gson.Gson;


import java.io.IOException;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;


import mvpframework.bwie.com.a1509aproject.bean.LoginBean;
import mvpframework.bwie.com.a1509aproject.model.IModel.ILoginModel;
import mvpframework.bwie.com.a1509aproject.net.Api;
import mvpframework.bwie.com.a1509aproject.net.HttpUtils;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;


/**
 * Created by peng on 2017/11/7.
 */


public class LoginModel extends BaseModel implements ILoginModel {
    @Override
    public void login(String account, String pwd, final OnNetListener<LoginBean> onNetListener) {
        Map<String, String> params = new HashMap<>();
        params.put("mobile", account);
        params.put("password", pwd);
        HttpUtils.getHttpUtils().doPost(Api.LOGIN, params, new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onFailure(e);
                    }
                });
            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                final LoginBean loginBean = new Gson().fromJson(string, (Type) LoginBean.class);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onSuccess(loginBean);
                    }
                });
            }
        });
    }






}
注册接口:
package mvpframework.bwie.com.a1509aproject.model.IModel;


import mvpframework.bwie.com.a1509aproject.bean.BaseBean;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;


/**
 * Created by peng on 2017/11/7.
 */


public interface IRegisterModel {
    public void register(String account, String pwd, OnNetListener<BaseBean> onNetListener);
}
注册:
package mvpframework.bwie.com.a1509aproject.model;


import com.google.gson.Gson;


import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


import mvpframework.bwie.com.a1509aproject.bean.BaseBean;
import mvpframework.bwie.com.a1509aproject.model.IModel.IRegisterModel;
import mvpframework.bwie.com.a1509aproject.net.Api;
import mvpframework.bwie.com.a1509aproject.net.HttpUtils;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;


/**
 * Created by peng on 2017/11/7.
 * 真正的网络请求,去注册
 */


public class RegisterModel extends BaseModel implements IRegisterModel {
    @Override
    public void register(String account, String pwd, final OnNetListener<BaseBean> onNetListener) {
        Map<String, String> params = new HashMap<>();
        params.put("mobile", account);
        params.put("password", pwd);
        HttpUtils.getHttpUtils().doPost(Api.REGISTER, params, new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onFailure(e);
                    }
                });
            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                final BaseBean baseBean = new Gson().fromJson(string, BaseBean.class);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onSuccess(baseBean);
                    }
                });
            }
        });
    }
}
成功跳界面转接口:
package mvpframework.bwie.com.a1509aproject.model.IModel;


import mvpframework.bwie.com.a1509aproject.bean.Catagory;
import mvpframework.bwie.com.a1509aproject.bean.ProductCatagoryBean;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;


/**
 * Created by peng on 2017/11/7.
 */


public interface IClassModel {
    public void getCatagory(OnNetListener<Catagory> onNetListener);


    public void getProductCatagory(String cid, OnNetListener<ProductCatagoryBean> onNetListener);
}
成功跳界面转:
package mvpframework.bwie.com.a1509aproject.model;


import com.google.gson.Gson;


import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


import mvpframework.bwie.com.a1509aproject.bean.Catagory;
import mvpframework.bwie.com.a1509aproject.bean.ProductCatagoryBean;
import mvpframework.bwie.com.a1509aproject.model.IModel.IClassModel;
import mvpframework.bwie.com.a1509aproject.net.Api;
import mvpframework.bwie.com.a1509aproject.net.HttpUtils;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;


/**
 * Created by peng on 2017/11/7.
 * 获取分类的model
 */


public class ClassModel extends BaseModel implements IClassModel {


    @Override
    public void getCatagory(final OnNetListener<Catagory> onNetListener) {
        HttpUtils.getHttpUtils().doGet(Api.CLASS, new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onFailure(e);
                    }
                });
            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                final Catagory catagory = new Gson().fromJson(string, Catagory.class);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onSuccess(catagory);
                    }
                });
            }
        });
    }


    @Override
    public void getProductCatagory(String cid, final OnNetListener<ProductCatagoryBean> onNetListener) {
        Map<String, String> params = new HashMap<>();
        params.put("cid", cid);
        HttpUtils.getHttpUtils().doPost(Api.PRODUCT_CATAGORY, params, new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onFailure(e);
                    }
                });
            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                final ProductCatagoryBean productCatagoryBean = new Gson().fromJson(string, ProductCatagoryBean.class);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onSuccess(productCatagoryBean);
                    }
                });
            }
        });
    }




}
集合所有Model父类:
package mvpframework.bwie.com.a1509aproject.model;


import android.os.Handler;
import android.os.Looper;


/**
 * Created by peng on 2017/11/7.
 * 所有Model的父类,里面主要是封装了Handler,避免每一个Model都去创建一个Handler
 */




public class BaseModel {
    protected Handler handler = new Handler(Looper.getMainLooper());
}
Presenter层:
登录层:
package mvpframework.bwie.com.a1509aproject.presenter;


import android.text.TextUtils;


import java.util.regex.Matcher;
import java.util.regex.Pattern;


import mvpframework.bwie.com.a1509aproject.bean.LoginBean;
import mvpframework.bwie.com.a1509aproject.model.IModel.ILoginModel;
import mvpframework.bwie.com.a1509aproject.model.IModel.IRegisterModel;
import mvpframework.bwie.com.a1509aproject.model.LoginModel;
import mvpframework.bwie.com.a1509aproject.model.RegisterModel;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;
import mvpframework.bwie.com.a1509aproject.view.IView.IMainActivity;


/**
 * Created by peng on 2017/11/7.
 * MainActiivty对应的 P 层
 */


public class MainPresenter {
    private IMainActivity iMainActivity;
    private final ILoginModel iLoginModel;
    private final IRegisterModel iRegisterModel;


    public MainPresenter(IMainActivity iMainActivity) {
        this.iMainActivity = iMainActivity;
        iLoginModel = new LoginModel();
        iRegisterModel = new RegisterModel();
    }


    public void login() {
        String account = iMainActivity.getAccount();
        String pwd = iMainActivity.getPwd();
        //判断账号密码是否正确
        if (checkAccount(account) && checkPwd(pwd)) {
            //去调用model,进行登陆
            iLoginModel.login(account, pwd, new OnNetListener<LoginBean>() {
                @Override
                public void onSuccess(LoginBean loginBean) {
                    //保存登陆成功后的数据,可以保存到SP,也可以保存到数据库
                    iMainActivity.show(loginBean.getMsg());
                    //跳转到分类界面
                    iMainActivity.toClassAc();
                }


                @Override
                public void onFailure(Exception e) {


                }
            });
        }


    }


    private boolean checkPwd(String pwd) {
        if (TextUtils.isEmpty(pwd)) {
            //给用户提示,输入的账号不能为空
            iMainActivity.show("请输入密码");
            return false;
        }


        if (pwd.length() != 6) {
            iMainActivity.show("请输入6位密码");
            return false;
        }
        return true;
    }




    /**
     * 验证手机号是否正确
     *
     * @param account
     */
    private boolean checkAccount(String account) {
        if (TextUtils.isEmpty(account)) {
            //给用户提示,输入的账号不能为空
            iMainActivity.show("请输入账号");
            return false;
        }
        if (!isMobileNO(account)) {
            iMainActivity.show("请输入正确的手机号");
            return false;
        }
        return true;
    }




    /*
    判断是否是手机号
     */
    public static boolean isMobileNO(String mobiles) {
        Pattern p = Pattern.compile("^(13[0-9]|14[57]|15[0-35-9]|17[6-8]|18[0-9])[0-9]{8}$");
        Matcher m = p.matcher(mobiles);
        return m.matches();
    }




    public void register() {
        //其实就是跳转到注册页面
        iMainActivity.toRegisterAc();
    }
}
注册类:
package mvpframework.bwie.com.a1509aproject.presenter;


import android.text.TextUtils;


import java.util.regex.Matcher;
import java.util.regex.Pattern;


import mvpframework.bwie.com.a1509aproject.bean.BaseBean;
import mvpframework.bwie.com.a1509aproject.model.IModel.IRegisterModel;
import mvpframework.bwie.com.a1509aproject.model.RegisterModel;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;
import mvpframework.bwie.com.a1509aproject.view.IView.IRegisterActivity;


/**
 * Created by peng on 2017/11/7.
 * MainActiivty对应的 P 层
 */


public class RegisterPresenter {
    private IRegisterActivity iRegisterActivity;
    private final IRegisterModel iRegisterModel;


    public RegisterPresenter(IRegisterActivity iRegisterActivity) {
        this.iRegisterActivity = iRegisterActivity;
        iRegisterModel = new RegisterModel();
    }




    private boolean checkPwd(String pwd) {
        if (TextUtils.isEmpty(pwd)) {
            //给用户提示,输入的账号不能为空
            iRegisterActivity.show("请输入密码");
            return false;
        }


        if (pwd.length() != 6) {
            iRegisterActivity.show("请输入6位密码");
            return false;
        }
        return true;
    }




    /**
     * 验证手机号是否正确
     *
     * @param account
     */
    private boolean checkAccount(String account) {
        if (TextUtils.isEmpty(account)) {
            //给用户提示,输入的账号不能为空
            iRegisterActivity.show("请输入账号");
            return false;
        }
        if (!isMobileNO(account)) {
            iRegisterActivity.show("请输入正确的手机号");
            return false;
        }
        return true;
    }




    /*
    判断是否是手机号
     */
    public static boolean isMobileNO(String mobiles) {
        Pattern p = Pattern.compile("^(13[0-9]|14[57]|15[0-35-9]|17[6-8]|18[0-9])[0-9]{8}$");
        Matcher m = p.matcher(mobiles);
        return m.matches();
    }




    public void register() {
        String account = iRegisterActivity.getAccount();
        String pwd = iRegisterActivity.getPwd();
        //判断账号密码是否正确
        if (checkAccount(account) && checkPwd(pwd)) {
            iRegisterModel.register(account, pwd, new OnNetListener<BaseBean>() {
                @Override
                public void onSuccess(BaseBean baseBean) {
                    //成功以后,回到登陆界面
                    if (baseBean.getCode().equals("1")) {
                        iRegisterActivity.show(baseBean.getMsg());
                    } else {
                        iRegisterActivity.show(baseBean.getMsg());
                        iRegisterActivity.finishAc();
                    }
                }


                @Override
                public void onFailure(Exception e) {


                }
            });
        }


    }
}
跳转界面:
package mvpframework.bwie.com.a1509aproject.presenter;


import java.util.List;


import mvpframework.bwie.com.a1509aproject.bean.Catagory;
import mvpframework.bwie.com.a1509aproject.bean.ProductCatagoryBean;
import mvpframework.bwie.com.a1509aproject.model.ClassModel;
import mvpframework.bwie.com.a1509aproject.model.IModel.IClassModel;
import mvpframework.bwie.com.a1509aproject.net.OnNetListener;
import mvpframework.bwie.com.a1509aproject.view.IView.IClassActivity;


/**
 * Created by peng on 2017/11/7.
 */


public class ClassPresenter {


    private final IClassModel iclassModel;
    private IClassActivity iClassActivity;


    public ClassPresenter(IClassActivity iClassActivity) {
        this.iClassActivity = iClassActivity;
        iclassModel = new ClassModel();
    }


    public void getProductCatagory(String cid) {
        iclassModel.getProductCatagory(cid + "", new OnNetListener<ProductCatagoryBean>() {
            @Override
            public void onSuccess(ProductCatagoryBean productCatagoryBean) {
                //给二级列表设置数据
                iClassActivity.showElvData(productCatagoryBean.getData());
            }


            @Override
            public void onFailure(Exception e) {


            }
        });
    }


    //获取分类
    public void getCatagory() {
        iclassModel.getCatagory(new OnNetListener<Catagory>() {
            @Override
            public void onSuccess(Catagory catagory) {
                iClassActivity.showData(catagory.getData());
                //拿到右侧第一条数据
                List<Catagory.DataBean> dataBean = catagory.getData();
                int cid = dataBean.get(0).getCid();
                //获取右侧的数据
                getProductCatagory(cid + "");
            }


            @Override
            public void onFailure(Exception e) {


            }
        });
    }
}


用于保存已经开启的Activity;
package mvpframework.bwie.com.a1509aproject.utils;


import android.app.Activity;


import java.util.LinkedList;
import java.util.List;


/**
 * Created by peng on 2017/11/7.
 * 用于保存已经开启的Activity
 */


public class ActivityStroreUtil {
    private static List<Activity> list = new LinkedList<>();


    /**
     * 用集合保存所有开启的Activity
     *
     * @param ac
     */
    public static void addActivity(Activity ac) {
        list.add(ac);
    }


    /**
     * 关闭已经开启的Activity
     */
    public void finishAll() {
        for (Activity ac : list) {
            if (ac != null)
                ac.finish();


        }
    }


}
view层:
调用 ActivityStroreUtil;
package mvpframework.bwie.com.a1509aproject.view;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;


import mvpframework.bwie.com.a1509aproject.utils.ActivityStroreUtil;


public class BaseActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityStroreUtil.addActivity(this);
    }


}
主类接口:
package mvpframework.bwie.com.a1509aproject.view.IView;


/**
 * Created by peng on 2017/11/7.
 */


public interface IMainActivity {
    public String getAccount();


    public String getPwd();


    public void show(String str);


    public void toRegisterAc();


    public void toClassAc();
}


主类:


package mvpframework.bwie.com.a1509aproject.view;


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


import mvpframework.bwie.com.a1509aproject.R;
import mvpframework.bwie.com.a1509aproject.presenter.MainPresenter;
import mvpframework.bwie.com.a1509aproject.view.IView.IMainActivity;


/**
 *
 */
public class MainActivity extends BaseActivity implements View.OnClickListener, IMainActivity {


    private ImageView mIvBack;
    /**
     * 手机号
     */
    private EditText mEtPhone;
    /**
     * 请输入密码
     */
    private EditText mEtPwd;
    private ImageView mIvPwd;
    /**
     * 登陆
     */
    private Button mBtLogin;
    /**
     * 请注册
     */
    private TextView mTvRegister;
    private MainPresenter mainPresenter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //关联presenter
        mainPresenter = new MainPresenter(this);
        initView();
    }


    private void initView() {
        mIvBack = (ImageView) findViewById(R.id.iv_back);
        mEtPhone = (EditText) findViewById(R.id.et_phone);
        mEtPwd = (EditText) findViewById(R.id.et_pwd);
        mIvPwd = (ImageView) findViewById(R.id.iv_pwd);
        mBtLogin = (Button) findViewById(R.id.bt_login);
        mBtLogin.setOnClickListener(this);
        mTvRegister = (TextView) findViewById(R.id.tv_register);
        mTvRegister.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_login:
                mainPresenter.login();
                break;
            case R.id.tv_register:
                //注册
                mainPresenter.register();
                break;
        }
    }


    @Override
    public String getAccount() {
        return mEtPhone.getText().toString().trim();
    }


    @Override
    public String getPwd() {
        return mEtPwd.getText().toString().trim();
    }


    @Override
    public void show(String str) {
        Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
    }


    @Override
    public void toRegisterAc() {
        Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
        startActivity(intent);
    }


    @Override
    public void toClassAc() {
        Intent intent = new Intent(MainActivity.this, ClassActivity.class);
        startActivity(intent);
    }
}
注册接口:
package mvpframework.bwie.com.a1509aproject.view.IView;


/**
 * Created by peng on 2017/11/7.
 */


public interface IRegisterActivity {
    public String getAccount();


    public String getPwd();


    public void finishAc();


    public void show(String str);
}


注册页面:
package mvpframework.bwie.com.a1509aproject.view;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;


import mvpframework.bwie.com.a1509aproject.R;
import mvpframework.bwie.com.a1509aproject.presenter.RegisterPresenter;
import mvpframework.bwie.com.a1509aproject.view.IView.IRegisterActivity;


public class RegisterActivity extends AppCompatActivity implements IRegisterActivity, View.OnClickListener {


    private ImageView mIvBack;
    /**
     * 手机号
     */
    private EditText mEtPhone;
    /**
     * 请输入密码
     */
    private EditText mEtPwd;
    private ImageView mIvPwd;
    /**
     * 注册
     */
    private Button mBtLogin;
    private RegisterPresenter registerPresenter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        registerPresenter = new RegisterPresenter(this);
        initView();
    }


    private void initView() {
        mIvBack = (ImageView) findViewById(R.id.iv_back);
        mEtPhone = (EditText) findViewById(R.id.et_phone);
        mEtPwd = (EditText) findViewById(R.id.et_pwd);
        mIvPwd = (ImageView) findViewById(R.id.iv_pwd);
        mBtLogin = (Button) findViewById(R.id.bt_login);
        mBtLogin.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.bt_login:
                //注册
                registerPresenter.register();
                break;
        }
    }


    @Override
    public String getAccount() {
        return mEtPhone.getText().toString().trim();
    }


    @Override
    public String getPwd() {
        return mEtPwd.getText().toString().trim();
    }


    @Override
    public void finishAc() {
        finish();
    }


    @Override
    public void show(String str) {
        Toast.makeText(RegisterActivity.this, str, Toast.LENGTH_SHORT).show();
    }
}
bean层:
成功失败:
package mvpframework.bwie.com.a1509aproject.bean;


/**
 * Created by peng on 2017/11/7.
 */


public class BaseBean {
    private String code;
    private String msg;


    public String getCode() {
        return code;
    }


    public void setCode(String code) {
        this.code = code;
    }


    public String getMsg() {
        return msg;
    }


    public void setMsg(String msg) {
        this.msg = msg;
    }
}





原创粉丝点击