first
This commit is contained in:
143
app/src/main/java/com/ckkj/water/mine/ChangePhoneActivity.java
Normal file
143
app/src/main/java/com/ckkj/water/mine/ChangePhoneActivity.java
Normal file
@@ -0,0 +1,143 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.ChangePhoneActivityBinding;
|
||||
import com.ckkj.water.login.LoginActivity;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.manager.ActivityManager;
|
||||
import com.ckkj.water.utils.manager.MingDengUserInfoManager;
|
||||
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @Description TODO
|
||||
* @systemUser 86133
|
||||
* @Author FengJingQi
|
||||
* @Date 04-08-2025 周二 14:03
|
||||
*/
|
||||
|
||||
public class ChangePhoneActivity extends BaseActivity<ChangePhoneActivityBinding, MinePresenter> implements MineContract.MineView {
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
||||
.titleBar(viewBinding.rlTitle)
|
||||
.init();
|
||||
viewBinding.includeTitle.tvTitle.setText("更换手机号");
|
||||
viewBinding.tvUserPhone.setText(MingDengUserInfoManager.getInstance().getUserInfo().getMobile());
|
||||
initListener();
|
||||
}
|
||||
|
||||
|
||||
private void initListener() {
|
||||
setClick(viewBinding.includeTitle.imgBack);
|
||||
setClick(viewBinding.tvGetCode);
|
||||
setClick(viewBinding.tvCommit);
|
||||
}
|
||||
|
||||
private void setClick(View view) {
|
||||
view.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()){
|
||||
case R.id.img_back:
|
||||
finish();
|
||||
break;
|
||||
|
||||
case R.id.tv_get_code:
|
||||
if(TextUtils.isEmpty(viewBinding.edPhoneNum.getText().toString().trim())){
|
||||
ToastUtil.showShort(mContext,"请填写手机号码");
|
||||
return;
|
||||
}
|
||||
if(!PhoneNumberUtils.checkPhoneNum(viewBinding.edPhoneNum.getText().toString().trim())){
|
||||
ToastUtil.showShort(mContext,"请填写正确的手机号码");
|
||||
return;
|
||||
}
|
||||
showLoadingDialog();
|
||||
break;
|
||||
|
||||
case R.id.tv_commit:
|
||||
if(TextUtils.isEmpty(viewBinding.edPhoneNum.getText().toString().trim())){
|
||||
ToastUtil.showShort(mContext,"请填写手机号码");
|
||||
return;
|
||||
}
|
||||
if(!PhoneNumberUtils.checkPhoneNum(viewBinding.edPhoneNum.getText().toString().trim())){
|
||||
ToastUtil.showShort(mContext,"请填写正确的手机号码");
|
||||
return;
|
||||
}
|
||||
if(TextUtils.isEmpty(viewBinding.edVerCode.getText().toString().trim())){
|
||||
ToastUtil.showShort(mContext,"请填写验证码");
|
||||
return;
|
||||
}
|
||||
if(viewBinding.edVerCode.getText().toString().trim().length() < 6){
|
||||
ToastUtil.showShort(mContext,"请填写6位验证码");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private CountDownTimer cdTimer = new CountDownTimer(60000, 1000) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
viewBinding.tvGetCode.setText("(" + millisUntilFinished / 1000 + ")秒后重发");
|
||||
viewBinding.tvGetCode.setSelected(true);
|
||||
viewBinding.tvGetCode.setClickable(false);
|
||||
viewBinding.tvGetCode.setTextColor(mContext.getColor(R.color.color_c8c8c8));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
viewBinding.tvGetCode.setText("重新发送");
|
||||
viewBinding.tvGetCode.setSelected(false);
|
||||
viewBinding.tvGetCode.setClickable(true);
|
||||
viewBinding.tvGetCode.setTextColor(mContext.getColor(R.color.color_zhu));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import static android.view.View.INVISIBLE;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseFragment;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.MineFragmentBinding;
|
||||
import com.ckkj.water.databinding.MineFragmentLayoutBinding;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2026/5/16
|
||||
* @description TODO: 个人中心
|
||||
*/
|
||||
public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding, MinePresenter>
|
||||
implements MineContract.MineView {
|
||||
@Override
|
||||
public void initData(Bundle state) {
|
||||
ImmersionBar.with(mContext)
|
||||
.statusBarColor(R.color.white)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(viewBinding.rlTitle)
|
||||
.init();
|
||||
viewBinding.includedTitle.imgBack.setVisibility(INVISIBLE);
|
||||
viewBinding.includedTitle.tvTitle.setText(getString(R.string.mine_center_title));
|
||||
initListener();
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
setClick(viewBinding.imgAvatar);
|
||||
setClick(viewBinding.linearPsdManage);
|
||||
}
|
||||
|
||||
private void setClick(View view) {
|
||||
view.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
public void onClick(View v){
|
||||
switch (v.getId()){
|
||||
case R.id.img_avatar:
|
||||
goTo(mContext, MineInfomationActivity.class,null);
|
||||
break;
|
||||
|
||||
case R.id.linear_psd_manage:
|
||||
goTo(mContext, PsdManageActivity.class,null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onNetChange(int netModel) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
269
app/src/main/java/com/ckkj/water/mine/MineFragment.java
Normal file
269
app/src/main/java/com/ckkj/water/mine/MineFragment.java
Normal file
@@ -0,0 +1,269 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.sdk.android.oss.ClientException;
|
||||
import com.alibaba.sdk.android.oss.ServiceException;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.esafirm.imagepicker.features.ImagePicker;
|
||||
import com.esafirm.imagepicker.model.Image;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.EventMessage;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseFragment;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.base.inter.UploadCallback;
|
||||
import com.ckkj.water.databinding.MineFragmentBinding;
|
||||
import com.ckkj.water.login.LoginActivity;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.LubanCompressUtil;
|
||||
import com.ckkj.water.utils.PreviewFileUtil;
|
||||
import com.ckkj.water.utils.click.ClickUtil;
|
||||
import com.ckkj.water.utils.dataUtil.FileUtil;
|
||||
import com.ckkj.water.utils.manager.MingDengUserInfoManager;
|
||||
import com.ckkj.water.utils.oss.OssUploadHelper;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
import com.ckkj.water.utils.time.ZYTimeUtils;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.lxj.xpopup.interfaces.OnSelectListener;
|
||||
import com.yalantis.ucrop.UCrop;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
import pub.devrel.easypermissions.EasyPermissions;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang 新分支
|
||||
* @date 2025/7/7
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class MineFragment extends BaseFragment<MineFragmentBinding, MinePresenter>
|
||||
implements MineContract.MineView {
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void initData(Bundle state) {
|
||||
viewBinding.includedTitle.imgBack.setVisibility(View.GONE);
|
||||
viewBinding.includedTitle.imgSetting.setVisibility(View.VISIBLE);
|
||||
ClickUtil.addClickPart(viewBinding.includedTitle.imgSetting, 50);
|
||||
ClickUtil.addClickPart(viewBinding.imgEdit, 50);
|
||||
viewBinding.includedTitle.tvTitle.setText("个人中心");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResumeInitData() {
|
||||
super.onResumeInitData();
|
||||
if (AppConfig.USER_LOGIN) {
|
||||
// mPresenter.getUserinfo();
|
||||
} else {
|
||||
viewBinding.tvDefaulBirthtime.setVisibility(View.VISIBLE);
|
||||
viewBinding.tvDefaulStar.setVisibility(View.VISIBLE);
|
||||
viewBinding.tvUserBirthTime.setVisibility(View.GONE);
|
||||
viewBinding.tvUserStar.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.img_user_head:
|
||||
if (!AppConfig.USER_LOGIN) {
|
||||
goTo(mContext, LoginActivity.class, null);
|
||||
return;
|
||||
}
|
||||
new XPopup.Builder(mContext).asBottomList("头像", new String[]{"上传头像", "查看大图"}, new OnSelectListener() {
|
||||
@Override
|
||||
public void onSelect(int position, String text) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
String readPermission = Manifest.permission.READ_EXTERNAL_STORAGE;
|
||||
if (!hasRecordPermission(readPermission)) {
|
||||
// 没有权限,只在ACTION_DOWN时去申请
|
||||
getPermissionRequst(readPermission, "相机、文件访问权限申请",
|
||||
"星语明灯需要您的授权,获取文件访问权限来修改头像", REQUEST_CODE_100);
|
||||
return;
|
||||
} else {
|
||||
imagePicker(1, REQUEST_CODE_100, MineFragment.this);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
String suffix = FileUtil.getFileSuffixWithQuestion(MingDengUserInfoManager.getInstance().getUserInfo().getAvatar());
|
||||
PreviewFileUtil.previewFiles(mContext, suffix, MingDengUserInfoManager.getInstance().getUserInfo().getAvatar());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}).show();
|
||||
break;
|
||||
|
||||
case R.id.img_setting:
|
||||
goTo(mContext, SettingsActivity.class, null);
|
||||
break;
|
||||
|
||||
case R.id.img_edit://编辑出生日期
|
||||
if (!AppConfig.USER_LOGIN) {
|
||||
goTo(mContext, LoginActivity.class, null);
|
||||
return;
|
||||
}
|
||||
// 发送EventBus消息,让MainActivity切换到FateFragment
|
||||
EventBus.getDefault().post(new EventMessage(EventMessage.SWITCH_TO_FATE_FRAGMENT));
|
||||
break;
|
||||
|
||||
case R.id.linear_tobe_vip:
|
||||
|
||||
case R.id.lienar_share_be_vip:
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == RESULT_OK) {
|
||||
switch (requestCode) {
|
||||
case 100://头像
|
||||
List<Image> images = ImagePicker.getImages(data);
|
||||
Uri sourceUri = Uri.fromFile(new File(images.get(0).getPath()));
|
||||
Uri destinationUri = Uri.fromFile(new File(mContext.getCacheDir(), "cropped_image.jpg"));
|
||||
UCrop.of(sourceUri, destinationUri)
|
||||
.withAspectRatio(1, 1) // 设置裁剪框比例,1:1 为正方形
|
||||
.withMaxResultSize(1000, 1000) // 设置裁剪后的最大图片尺寸
|
||||
.start(requireContext(), this);
|
||||
break;
|
||||
|
||||
case UCrop.REQUEST_CROP:
|
||||
showLoadingDialog();
|
||||
Uri resultUri = UCrop.getOutput(data);
|
||||
String filePath = resultUri.getPath();
|
||||
if (!TextUtils.isEmpty(filePath)) {
|
||||
getCompressFile(new File(filePath));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void getCompressFile(File file) {
|
||||
LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() {
|
||||
@Override
|
||||
public void success(File file) {
|
||||
if (file != null) {
|
||||
if (file.exists()) {
|
||||
long fileSizeInBytes = file.length(); // 获取文件大小(字节)
|
||||
long fileSizeInMB = fileSizeInBytes / (1024 * 1024); // 转换为MB
|
||||
String fileName = file.getName();
|
||||
if (fileSizeInMB > 5) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, "文件大小超出5M");
|
||||
return;
|
||||
}
|
||||
if (!fileName.toLowerCase().endsWith(".png") &&
|
||||
!fileName.toLowerCase().endsWith(".jpg") &&
|
||||
!fileName.toLowerCase().endsWith(".jpeg")) {
|
||||
ToastUtil.showShort(mContext, "文件格式不正确");
|
||||
hideDialogLoading();
|
||||
return;
|
||||
}
|
||||
List<String> filePath = new ArrayList<>();
|
||||
filePath.add(file.getPath());
|
||||
OssUploadHelper helper = new OssUploadHelper(mContext);
|
||||
helper.upload(AppConfig.UPLOAD_TYPE_200, fileName, filePath, new UploadCallback() {
|
||||
@Override
|
||||
public void onSuccess(List<String> urls) {
|
||||
mContext.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!TextUtils.isEmpty(urls.get(0))) {
|
||||
// mPresenter.updateUserAvatar(urls.get(0));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(ClientException clientException, ServiceException serviceException) {
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ToastUtil.showShort(mContext, "文件不存在");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(String failMsg) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNetChange(int netModel) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
|
||||
hidePermissionDialog();
|
||||
if (requestCode == REQUEST_CODE_100) {
|
||||
imagePicker(1, REQUEST_CODE_100, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.sdk.android.oss.ClientException;
|
||||
import com.alibaba.sdk.android.oss.ServiceException;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.MineInformationLayoutBinding;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.LubanCompressUtil;
|
||||
import com.ckkj.water.utils.PreviewFileUtil;
|
||||
import com.ckkj.water.utils.dataUtil.FileUtil;
|
||||
import com.ckkj.water.utils.manager.MingDengUserInfoManager;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
import com.esafirm.imagepicker.features.ImagePicker;
|
||||
import com.esafirm.imagepicker.model.Image;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.lxj.xpopup.interfaces.OnSelectListener;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import pub.devrel.easypermissions.EasyPermissions;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2026/5/16
|
||||
* @description TODO: 个人信息详情页面
|
||||
*/
|
||||
public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBinding, MinePresenter>
|
||||
implements MineContract.MineView, EasyPermissions.PermissionCallbacks{
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
||||
.titleBar(viewBinding.rlTitle)
|
||||
.init();
|
||||
viewBinding.includedTitle.tvTitle.setText(R.string.mine_infomation_title);
|
||||
initListener();
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
setClick(viewBinding.includedTitle.imgBack);
|
||||
setClick(viewBinding.imgAvatar);
|
||||
setClick(viewBinding.imgCamera);
|
||||
}
|
||||
|
||||
private void setClick(View view) {
|
||||
view.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
public void onClick(View v){
|
||||
switch (v.getId()){
|
||||
case R.id.img_back:
|
||||
finish();
|
||||
break;
|
||||
|
||||
case R.id.img_avatar:
|
||||
case R.id.img_camera:
|
||||
new XPopup.Builder(mContext).asBottomList("选择头像", new String[]{"上传头像", "查看大图"}, new OnSelectListener() {
|
||||
@Override
|
||||
public void onSelect(int position, String text) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
String readPermission = Manifest.permission.READ_EXTERNAL_STORAGE;
|
||||
if (!hasRecordPermission(readPermission)) {
|
||||
// 没有权限,只在ACTION_DOWN时去申请
|
||||
getPermissionRequst(readPermission,"相册权限申请",
|
||||
"智能浇水需要您的授权,获取相册修改头像",REQUEST_EVENT_CODE_10001);
|
||||
return;
|
||||
}else{
|
||||
imagePicker(1,PICK_IMAGE_REQUEST_100);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
String suffix = FileUtil.getFileSuffixWithQuestion(MingDengUserInfoManager.getInstance().getUserInfo().getAvatar());
|
||||
PreviewFileUtil.previewFiles(mContext, suffix, MingDengUserInfoManager.getInstance().getUserInfo().getAvatar());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}).show();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if(data != null){
|
||||
Bundle bundle = data.getExtras();
|
||||
if(resultCode == RESULT_OK){
|
||||
switch (requestCode){
|
||||
case PICK_IMAGE_REQUEST_100:
|
||||
showLoadingDialog();
|
||||
|
||||
List<Image> images = ImagePicker.getImages(data);
|
||||
if (images != null && !images.isEmpty()) {
|
||||
Image image = images.get(0);
|
||||
File file = new File(image.getPath());
|
||||
getCompressFile(file);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void getCompressFile(File file) {
|
||||
LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() {
|
||||
@Override
|
||||
public void success(File file) {
|
||||
if (file != null) {
|
||||
if (file.exists()) {
|
||||
long fileSizeInBytes = file.length(); // 获取文件大小(字节)
|
||||
long fileSizeInMB = fileSizeInBytes / (1024 * 1024); // 转换为MB
|
||||
String fileName = file.getName();
|
||||
if (fileSizeInMB > 5) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, "文件大小超出5M");
|
||||
return;
|
||||
}
|
||||
if (!fileName.toLowerCase().endsWith(".png") &&
|
||||
!fileName.toLowerCase().endsWith(".jpg") &&
|
||||
!fileName.toLowerCase().endsWith(".jpeg")) {
|
||||
ToastUtil.showShort(mContext, "文件格式不正确");
|
||||
hideDialogLoading();
|
||||
return;
|
||||
}
|
||||
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,"头像修改成功");
|
||||
|
||||
Glide.with(mContext)
|
||||
.load(file)
|
||||
.error(mContext.getDrawable(R.mipmap.icon_mine_user_head_defaul))
|
||||
.into(viewBinding.imgAvatar);
|
||||
} else {
|
||||
ToastUtil.showShort(mContext, "文件不存在");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(String failMsg) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
|
||||
hidePermissionDialog();
|
||||
if(requestCode == REQUEST_EVENT_CODE_10001){
|
||||
if(grantResults[0] == 0){
|
||||
imagePicker(1,PICK_IMAGE_REQUEST_100);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
82
app/src/main/java/com/ckkj/water/mine/PsdManageActivity.java
Normal file
82
app/src/main/java/com/ckkj/water/mine/PsdManageActivity.java
Normal file
@@ -0,0 +1,82 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.databinding.PasswordManLayoutBinding;
|
||||
import com.ckkj.water.login.ForgetPasswordActivity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2026/5/16
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
public class PsdManageActivity extends BaseActivity<PasswordManLayoutBinding, MinePresenter>
|
||||
implements MineContract.MineView {
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
||||
.titleBar(viewBinding.rlTitle)
|
||||
.init();
|
||||
viewBinding.includedTitle.tvTitle.setText(R.string.register_title);
|
||||
initListener();
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
setClick(viewBinding.includedTitle.imgBack);
|
||||
setClick(viewBinding.rlResetPsd);
|
||||
setClick(viewBinding.rlFindPsd);
|
||||
}
|
||||
|
||||
private void setClick(View view) {
|
||||
view.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
public void onClick(View v){
|
||||
switch (v.getId()){
|
||||
case R.id.img_back:
|
||||
finish();
|
||||
break;
|
||||
|
||||
case R.id.rl_reset_psd:
|
||||
|
||||
break;
|
||||
|
||||
case R.id.rl_find_psd:
|
||||
goTo(mContext, ForgetPasswordActivity.class,null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.databinding.ActivityRewardRecordLayoutBinding;
|
||||
import com.ckkj.water.mine.entity.InviteeRecordEntity;
|
||||
import com.ckkj.water.mine.entity.RecommendDataEntity;
|
||||
import com.ckkj.water.mine.entity.RewardRecordEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.RecommendImpl;
|
||||
import com.ckkj.water.mine.mvp.RecommendPresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/10/17
|
||||
* @description 奖励记录
|
||||
*/
|
||||
|
||||
public class RewardRecordsActivity extends BaseActivity<ActivityRewardRecordLayoutBinding, RecommendPresenter>
|
||||
implements MineContract.RecommendView {
|
||||
|
||||
private int mCurrentPage = 1;
|
||||
private static final int PAGE_SIZE = 10;
|
||||
|
||||
@Override
|
||||
public RecommendPresenter createPresenter() {
|
||||
return new RecommendPresenter(new RecommendImpl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(viewBinding.rlTitle) // 替换为你的标题栏View
|
||||
.keyboardEnable(true)
|
||||
.navigationBarDarkIcon(true)
|
||||
.init();
|
||||
viewBinding.includedTitle.tvTitle.setText("奖励记录");
|
||||
viewBinding.includedTitle.imgBack.setOnClickListener(c -> finish());
|
||||
|
||||
// 查询奖励记录
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
208
app/src/main/java/com/ckkj/water/mine/SettingsActivity.java
Normal file
208
app/src/main/java/com/ckkj/water/mine/SettingsActivity.java
Normal file
@@ -0,0 +1,208 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.EventMessage;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.BaseFragment;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.ActivitySettingsLayoutBinding;
|
||||
import com.ckkj.water.dialog.DialogAppUpdate;
|
||||
import com.ckkj.water.login.LoginActivity;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.AppInfoUtil;
|
||||
import com.ckkj.water.utils.manager.ActivityManager;
|
||||
import com.ckkj.water.utils.manager.MingDengUserInfoManager;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/8/18
|
||||
* @description TODO: 设置页面
|
||||
*/
|
||||
|
||||
public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding, MinePresenter>
|
||||
implements MineContract.MineView {
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(viewBinding.rlTitle) // 替换为你的标题栏View
|
||||
.keyboardEnable(true)
|
||||
.navigationBarDarkIcon(true)
|
||||
.init();
|
||||
viewBinding.includeTitle.tvTitle.setText("设置");
|
||||
viewBinding.includeTitle.imgBack.setOnClickListener(c -> finish());
|
||||
if(AppConfig.USER_LOGIN){
|
||||
viewBinding.tvUserPhone.setText(MingDengUserInfoManager.getInstance().getUserInfo().getMobile());
|
||||
viewBinding.tvLogOut.setVisibility(View.VISIBLE);
|
||||
}
|
||||
//获取本应用所占用的缓存
|
||||
displayCacheSize();
|
||||
try {
|
||||
// 获取 PackageManager 实例
|
||||
PackageManager packageManager = mContext.getPackageManager();
|
||||
// 获取应用信息
|
||||
PackageInfo packageInfo = packageManager.getPackageInfo(mContext.getPackageName(), 0);
|
||||
// 获取版本名称
|
||||
String versionName = packageInfo.versionName;
|
||||
viewBinding.tvVersionName.setText("version " + versionName);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()){
|
||||
|
||||
case R.id.rl_change_phone:
|
||||
goTo(mContext, ChangePhoneActivity.class,null);
|
||||
break;
|
||||
|
||||
case R.id.rl_check_version://版本检测
|
||||
//版本检测更新
|
||||
break;
|
||||
|
||||
case R.id.rl_commit_service:
|
||||
break;
|
||||
|
||||
case R.id.rl_set_cache:
|
||||
showLoadingDialog();
|
||||
clearCache();
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,"缓存清除成功");
|
||||
displayCacheSize();
|
||||
}
|
||||
},800);
|
||||
break;
|
||||
|
||||
case R.id.tv_log_out:
|
||||
showDialogtext(mContext.getResources().getDrawable(R.mipmap.img_location), false, false,true,
|
||||
"提示", "确定要退出当前账号?",
|
||||
"取消", "确定", new BaseFragment.OnDialogClick() {
|
||||
@Override
|
||||
public void onCancelClick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfirmClick() {
|
||||
MingDengUserInfoManager.getInstance().clearUser(mContext);
|
||||
ActivityManager.removeAllActivity();
|
||||
goTo(mContext, LoginActivity.class,null);
|
||||
EventBus.getDefault().post(new EventMessage(EventMessage.USER_LOGIN_LOST));
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case R.id.rl_user_agreement://用户协议
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt("from_requse_code",WebviewUserAgreement.AGREEMENT_CODE);
|
||||
goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundle);
|
||||
break;
|
||||
|
||||
case R.id.rl_user_privacy://隐私政策
|
||||
Bundle bundleYS = new Bundle();
|
||||
bundleYS.putInt("from_requse_code",WebviewUserAgreement.PRIVACY_CODE);
|
||||
goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundleYS);
|
||||
break;
|
||||
|
||||
case R.id.rl_log_off://注销账号
|
||||
goTo(mContext, UserLogOffAccountActivity.class,null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private boolean isForceUpdate;
|
||||
private DialogAppUpdate mUpdateDialog;
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
private void displayCacheSize() {
|
||||
long cacheSize = getCacheSize();
|
||||
String sizeString;
|
||||
if (cacheSize >= 1024 * 1024) {
|
||||
sizeString = String.format("%.2f MB", cacheSize / (1024.0 * 1024.0));
|
||||
} else {
|
||||
sizeString = String.format("%d KB", cacheSize / 1024);
|
||||
}
|
||||
viewBinding.tvCacheSize.setText(sizeString);
|
||||
}
|
||||
|
||||
private long getCacheSize() {
|
||||
File cacheDir = mContext.getCacheDir();
|
||||
return getFolderSize(cacheDir);
|
||||
}
|
||||
private long getFolderSize(File dir) {
|
||||
long size = 0;
|
||||
if (dir != null && dir.isDirectory()) {
|
||||
for (File file : dir.listFiles()) {
|
||||
if (file.isFile()) {
|
||||
size += file.length();
|
||||
} else {
|
||||
size += getFolderSize(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
private void clearCache() {
|
||||
File cacheDir = getCacheDir();
|
||||
deleteDir(cacheDir);
|
||||
}
|
||||
|
||||
private boolean deleteDir(File dir) {
|
||||
if (dir != null && dir.isDirectory()) {
|
||||
String[] children = dir.list();
|
||||
if (children != null) {
|
||||
for (String child : children) {
|
||||
deleteDir(new File(dir, child));
|
||||
}
|
||||
}
|
||||
}
|
||||
return dir.delete();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.UserLogOffActivityBinding;
|
||||
import com.ckkj.water.login.LoginActivity;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.manager.ActivityManager;
|
||||
import com.ckkj.water.utils.manager.MingDengUserInfoManager;
|
||||
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @Description 用户注销账号
|
||||
* @systemUser 86133
|
||||
* @Author FengJingQi
|
||||
* @Date 04-28-2025 周一 12:22
|
||||
*/
|
||||
|
||||
public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBinding, MinePresenter> implements MineContract.MineView {
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
||||
.titleBar(viewBinding.rlTitle)
|
||||
.init();
|
||||
viewBinding.includeTitle.tvTitle.setText("注销账号");
|
||||
if(AppConfig.USER_LOGIN){
|
||||
String phoneNum = MingDengUserInfoManager.getInstance().getUserInfo().getMobile();
|
||||
if(!TextUtils.isEmpty(phoneNum)){
|
||||
viewBinding.tvUserPhone.setText(PhoneNumberUtils.hidePhoneNumber(phoneNum));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()){
|
||||
case R.id.img_back:
|
||||
finish();
|
||||
break;
|
||||
|
||||
case R.id.tv_get_code:
|
||||
showLoadingDialog();
|
||||
break;
|
||||
|
||||
case R.id.tv_commit:
|
||||
if(TextUtils.isEmpty(viewBinding.edVerCode.getText().toString().trim())){
|
||||
ToastUtil.showShort(mContext,"请填写验证码");
|
||||
return;
|
||||
}
|
||||
if(viewBinding.edVerCode.getText().toString().trim().length() < 6){
|
||||
ToastUtil.showShort(mContext,"请填写6位验证码");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private CountDownTimer cdTimer = new CountDownTimer(60000, 1000) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
viewBinding.tvGetCode.setText("(" + millisUntilFinished / 1000 + ")秒后重发");
|
||||
viewBinding.tvGetCode.setSelected(true);
|
||||
viewBinding.tvGetCode.setClickable(false);
|
||||
viewBinding.tvGetCode.setTextColor(mContext.getColor(R.color.color_c8c8c8));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
viewBinding.tvGetCode.setText("重新发送");
|
||||
viewBinding.tvGetCode.setSelected(false);
|
||||
viewBinding.tvGetCode.setClickable(true);
|
||||
viewBinding.tvGetCode.setTextColor(mContext.getColor(R.color.color_zhu));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
136
app/src/main/java/com/ckkj/water/mine/WebviewUserAgreement.java
Normal file
136
app/src/main/java/com/ckkj/water/mine/WebviewUserAgreement.java
Normal file
@@ -0,0 +1,136 @@
|
||||
package com.ckkj.water.mine;
|
||||
|
||||
import android.net.http.SslError;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.webkit.JavascriptInterface;
|
||||
import android.webkit.SslErrorHandler;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivityNoP;
|
||||
import com.ckkj.water.databinding.ActivitySerivceWebLayoutBinding;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/5/13
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class WebviewUserAgreement extends BaseActivityNoP<ActivitySerivceWebLayoutBinding> {
|
||||
|
||||
public static final int AGREEMENT_CODE = 10001;
|
||||
public static final int PRIVACY_CODE = 10002;
|
||||
private int mFromRequest = -1;
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
||||
.titleBar(viewBinding.rlTitle)
|
||||
.init();
|
||||
Bundle bundle = getIntent().getExtras();
|
||||
mFromRequest = bundle.getInt("from_requse_code");
|
||||
viewBinding.mWvJieyou.setVisibility(View.VISIBLE);
|
||||
String fileUrl = "";
|
||||
//登录状态下,拼接token/userid/头像等参数进入聊天
|
||||
if(mFromRequest == AGREEMENT_CODE){
|
||||
viewBinding.includeTitle.tvTitle.setText("用户协议");
|
||||
fileUrl = AppConfig.USER_AGREEMENT;
|
||||
}else if(mFromRequest == PRIVACY_CODE){
|
||||
viewBinding.includeTitle.tvTitle.setText("隐私政策");
|
||||
fileUrl = AppConfig.USER_PRIVACY;
|
||||
}
|
||||
viewBinding.mWvJieyou.addJavascriptInterface(new JsInterface(), "Android");
|
||||
viewBinding.mWvJieyou.getSettings().setJavaScriptEnabled(true);
|
||||
viewBinding.mWvJieyou.getSettings().setUseWideViewPort(true);
|
||||
viewBinding.mWvJieyou.getSettings().setLoadWithOverviewMode(true);
|
||||
viewBinding.mWvJieyou.setHapticFeedbackEnabled(false);
|
||||
viewBinding.mWvJieyou.getSettings().setSupportZoom(true);
|
||||
viewBinding.mWvJieyou.getSettings().setAllowUniversalAccessFromFileURLs(true);
|
||||
viewBinding.mWvJieyou.getSettings().setDomStorageEnabled(true);
|
||||
|
||||
viewBinding.mWvJieyou.setLayerType(View.LAYER_TYPE_HARDWARE, null);
|
||||
// 设置允许JS弹窗
|
||||
viewBinding.mWvJieyou.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
|
||||
showLoadingDialog();
|
||||
viewBinding.mWvJieyou.setWebViewClient(new AppWebViewClients());
|
||||
// viewBinding.mWvJieyou.setWebChromeClient(new MyWebChromeClient());
|
||||
viewBinding.mWvJieyou.loadUrl(fileUrl);//确保跳转到另一个网页时仍然在当前WebView显示
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
viewBinding.mWvJieyou.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
|
||||
}
|
||||
viewBinding.mWvJieyou.setLayerType(WebView.LAYER_TYPE_HARDWARE, null);
|
||||
|
||||
viewBinding.includeTitle.imgBack.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//调用H5中的closeWs函数,结束当前会话
|
||||
}
|
||||
});
|
||||
viewBinding.includeTitle.imgBack.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public class JsInterface {
|
||||
/**
|
||||
* 关闭页面
|
||||
*/
|
||||
@JavascriptInterface
|
||||
public void finishActivity() {
|
||||
finish();
|
||||
}
|
||||
/**
|
||||
* 关闭页面
|
||||
*/
|
||||
@JavascriptInterface
|
||||
public void send(String msg) {
|
||||
}
|
||||
}
|
||||
|
||||
public class AppWebViewClients extends WebViewClient {
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||
view.loadUrl(url);
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
// // html加载完成之后,隐藏进度条
|
||||
hideDialogLoading();
|
||||
super.onPageFinished(view, url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
|
||||
handler.proceed();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.ckkj.water.mine.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Paint;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/8/27
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class ComboAdapter extends BaseQuickAdapter<MemberComboEntity, BaseViewHolder> {
|
||||
private Context mContext;
|
||||
private int mSelectPos = -1;
|
||||
|
||||
public int getmSelectPos() {
|
||||
return mSelectPos;
|
||||
}
|
||||
|
||||
public void setmSelectPos(int mSelectPos) {
|
||||
this.mSelectPos = mSelectPos;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public ComboAdapter(Context context, int layoutResId, @Nullable List<MemberComboEntity> data) {
|
||||
super(layoutResId, data);
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNewData(@Nullable List<MemberComboEntity> data) {
|
||||
super.setNewData(data);
|
||||
for(int i=0;i<data.size();i++){
|
||||
if(data.get(i).getId().equals("2")){
|
||||
mSelectPos = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder holder, MemberComboEntity item) {
|
||||
LinearLayout linearItem = holder.getView(R.id.linear_item);
|
||||
TextView tvOldPrice = holder.getView(R.id.tv_price_old);
|
||||
holder.setText(R.id.tv_combo_name,item.getName());
|
||||
if(!TextUtils.isEmpty(item.getOffers())){
|
||||
holder.setText(R.id.tv_jiesheng,item.getOffers());
|
||||
holder.setGone(R.id.tv_jiesheng,true);
|
||||
}else{
|
||||
holder.setGone(R.id.tv_jiesheng,false);
|
||||
}
|
||||
if(!TextUtils.isEmpty(item.getOriginal())){
|
||||
holder.setText(R.id.tv_price_old,item.getOriginal());
|
||||
holder.setGone(R.id.tv_price_old,true);
|
||||
tvOldPrice.setPaintFlags(tvOldPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
|
||||
}else{
|
||||
holder.setGone(R.id.tv_price_old,false);
|
||||
}
|
||||
holder.setText(R.id.tv_price_type,"¥" + item.getMoney() + "/" + item.getType());
|
||||
holder.setText(R.id.tv_price_day,"¥"+ item.getMoneyC());
|
||||
if(holder.getLayoutPosition() == mSelectPos){
|
||||
linearItem.setBackground(ContextCompat.getDrawable(mContext,R.drawable.shape_combo_selected));
|
||||
holder.setChecked(R.id.checkbox,true);
|
||||
}else{
|
||||
linearItem.setBackground(ContextCompat.getDrawable(mContext,R.drawable.shape_trans_touming));
|
||||
holder.setChecked(R.id.checkbox,false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.ckkj.water.mine.adapter;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.mine.entity.InviteeRecordEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/10/10
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class MyInvteeAdapter extends BaseQuickAdapter<InviteeRecordEntity.RowsDTO, BaseViewHolder> {
|
||||
|
||||
public MyInvteeAdapter(int layoutResId, @Nullable List<InviteeRecordEntity.RowsDTO> data) {
|
||||
super(layoutResId, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, InviteeRecordEntity.RowsDTO item) {
|
||||
// 处理手机号,将中间4位替换为****
|
||||
String phone = item.getInviteeMobile();
|
||||
String maskedPhone = maskPhone(phone);
|
||||
helper.setText(R.id.tv_phone, maskedPhone);
|
||||
helper.setText(R.id.tv_bind_time, item.getBindTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号脱敏处理,将中间4位替换为****
|
||||
* 例如:13812345678 -> 138****5678
|
||||
*/
|
||||
private String maskPhone(String phone) {
|
||||
if (phone == null || phone.length() != 11) {
|
||||
return phone; // 如果不是11位手机号,直接返回原值
|
||||
}
|
||||
return phone.substring(0, 3) + "****" + phone.substring(7);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.ckkj.water.mine.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.ckkj.water.R;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PublishCarImgAdapter extends BaseQuickAdapter<String,BaseViewHolder>{
|
||||
private Context mContext;
|
||||
private List<String> dataList;
|
||||
public PublishCarImgAdapter(Context context, int layoutResId, @Nullable List<String> data) {
|
||||
super(layoutResId, data);
|
||||
this.mContext = context;
|
||||
this.dataList = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNewData(@Nullable List<String> data) {
|
||||
super.setNewData(data);
|
||||
this.dataList = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, String item) {
|
||||
ImageView imgDelte = helper.getView(R.id.img_delete);
|
||||
ImageView imgPic = helper.getView(R.id.img_pic);
|
||||
if(dataList.size() == 1){
|
||||
if(TextUtils.isEmpty(item)){
|
||||
Glide.with(mContext).load(mContext.getDrawable(R.mipmap.icon_add_pic)).into(imgPic);
|
||||
imgDelte.setVisibility(View.GONE);
|
||||
}
|
||||
}else{
|
||||
if(helper.getLayoutPosition() == dataList.size() -1){
|
||||
if(helper.getLayoutPosition() == 3){
|
||||
if(!TextUtils.isEmpty(item)){
|
||||
Glide.with(mContext).load(item).into(imgPic);
|
||||
imgDelte.setVisibility(View.VISIBLE);
|
||||
}else{
|
||||
Glide.with(mContext).load(mContext.getDrawable(R.mipmap.icon_add_pic)).into(imgPic);
|
||||
imgDelte.setVisibility(View.GONE);
|
||||
}
|
||||
}else{
|
||||
Glide.with(mContext).load(mContext.getDrawable(R.mipmap.icon_add_pic)).into(imgPic);
|
||||
imgDelte.setVisibility(View.GONE);
|
||||
}
|
||||
}else{
|
||||
if(!TextUtils.isEmpty(item)){
|
||||
Glide.with(mContext).load(item).into(imgPic);
|
||||
imgDelte.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
helper.addOnClickListener(R.id.img_delete);
|
||||
helper.addOnClickListener(R.id.img_pic);
|
||||
}
|
||||
|
||||
public void removeItem(int position) {
|
||||
notifyItemRemoved(position);
|
||||
// 这里可以执行实际的删除操作,如items.remove(position)
|
||||
dataList.remove(position);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.ckkj.water.mine.entity;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/10/10
|
||||
* @description TODO: 邀请记录
|
||||
*/
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class InviteeRecordEntity implements Serializable {
|
||||
|
||||
@SerializedName("rows")
|
||||
private List<RowsDTO> rows;
|
||||
@SerializedName("total")
|
||||
private Integer total;
|
||||
@SerializedName("pageNum")
|
||||
private Integer pageNum;
|
||||
@SerializedName("pageSize")
|
||||
private Integer pageSize;
|
||||
@SerializedName("pages")
|
||||
private Integer pages;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class RowsDTO {
|
||||
@SerializedName("relationId")
|
||||
private Integer relationId;
|
||||
@SerializedName("inviteeMobile")
|
||||
private String inviteeMobile;
|
||||
@SerializedName("bindTime")
|
||||
private String bindTime;
|
||||
@SerializedName("bindStatus")
|
||||
private Integer bindStatus;
|
||||
@SerializedName("rewardStatus")
|
||||
private Integer rewardStatus;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.ckkj.water.mine.entity;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/8/27
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class MemberComboEntity implements Serializable {
|
||||
@SerializedName("id")
|
||||
private String id;
|
||||
@SerializedName("name")
|
||||
private String name;
|
||||
@SerializedName("type")
|
||||
private String type;
|
||||
@SerializedName("money")
|
||||
private String money;
|
||||
@SerializedName("money_c")
|
||||
private String moneyC;
|
||||
@SerializedName("offers")
|
||||
private String offers;
|
||||
@SerializedName("day")
|
||||
private String day;
|
||||
@SerializedName("original")
|
||||
private String original;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
package com.ckkj.water.mine.entity;
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ckkj.water.mine.entity;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/9/29
|
||||
* @description 邀请数据
|
||||
*/
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class RecommendDataEntity implements Serializable {
|
||||
|
||||
@SerializedName("totalInviteCount")
|
||||
private Integer totalInviteCount;
|
||||
@SerializedName("memberActiveCount")
|
||||
private Integer memberActiveCount;
|
||||
@SerializedName("rewardCount")
|
||||
private Integer rewardCount;
|
||||
@SerializedName("isBoundToOthers")
|
||||
private Boolean isBoundToOthers;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.ckkj.water.mine.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/5/26
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class ReportEntity implements Serializable {
|
||||
private String reportReason;
|
||||
private boolean isCheck;
|
||||
|
||||
public ReportEntity(String reportReason, boolean isCheck) {
|
||||
this.reportReason = reportReason;
|
||||
this.isCheck = isCheck;
|
||||
}
|
||||
|
||||
public String getReportReason() {
|
||||
return reportReason;
|
||||
}
|
||||
|
||||
public void setReportReason(String reportReason) {
|
||||
this.reportReason = reportReason;
|
||||
}
|
||||
|
||||
public boolean isCheck() {
|
||||
return isCheck;
|
||||
}
|
||||
|
||||
public void setCheck(boolean check) {
|
||||
isCheck = check;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.ckkj.water.mine.entity;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/10/17
|
||||
* @description TODO: 奖励记录
|
||||
*/
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class RewardRecordEntity implements Serializable {
|
||||
|
||||
@SerializedName("rows")
|
||||
private List<RowsDTO> rows;
|
||||
@SerializedName("total")
|
||||
private Integer total;
|
||||
@SerializedName("pageNum")
|
||||
private Integer pageNum;
|
||||
@SerializedName("pageSize")
|
||||
private Integer pageSize;
|
||||
@SerializedName("pages")
|
||||
private Integer pages;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class RowsDTO {
|
||||
@SerializedName("transactionId")
|
||||
private Integer transactionId;
|
||||
@SerializedName("transactionType")
|
||||
private String transactionType;
|
||||
@SerializedName("memberType")
|
||||
private String memberType;
|
||||
@SerializedName("actualPayment")
|
||||
private Double actualPayment;
|
||||
@SerializedName("discountAmount")
|
||||
private Double discountAmount;
|
||||
@SerializedName("memberDays")
|
||||
private Integer memberDays;
|
||||
@SerializedName("expireTime")
|
||||
private String expireTime;
|
||||
@SerializedName("beforeExpireTime")
|
||||
private String beforeExpireTime;
|
||||
@SerializedName("transactionStatus")
|
||||
private Integer transactionStatus;
|
||||
@SerializedName("remark")
|
||||
private String remark;
|
||||
@SerializedName("rewardTime")
|
||||
private String rewardTime;
|
||||
@SerializedName("rewardTypeDesc")
|
||||
private String rewardTypeDesc;
|
||||
}
|
||||
}
|
||||
42
app/src/main/java/com/ckkj/water/mine/mvp/MineContract.java
Normal file
42
app/src/main/java/com/ckkj/water/mine/mvp/MineContract.java
Normal file
@@ -0,0 +1,42 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
import com.ckkj.water.base.IView;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.login.mvp.LoginContract;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.InviteeRecordEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.entity.RecommendDataEntity;
|
||||
import com.ckkj.water.mine.entity.RewardRecordEntity;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/7/28
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class MineContract {
|
||||
public interface CallBack<T> {
|
||||
void success(T msg);
|
||||
void fail(String msg);
|
||||
}
|
||||
public interface DataModel{
|
||||
}
|
||||
|
||||
|
||||
|
||||
public interface MineView extends IView {
|
||||
}
|
||||
|
||||
public interface RecommendModel{
|
||||
}
|
||||
|
||||
public interface RecommendView extends IView {
|
||||
}
|
||||
}
|
||||
28
app/src/main/java/com/ckkj/water/mine/mvp/MineImpl.java
Normal file
28
app/src/main/java/com/ckkj/water/mine/mvp/MineImpl.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.login.mvp.LoginContract;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.network.NetWorkManager;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.annotations.NonNull;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/7/28
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class MineImpl implements MineContract.DataModel {
|
||||
|
||||
}
|
||||
41
app/src/main/java/com/ckkj/water/mine/mvp/MinePresenter.java
Normal file
41
app/src/main/java/com/ckkj/water/mine/mvp/MinePresenter.java
Normal file
@@ -0,0 +1,41 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.ckkj.water.base.BasePresenter;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.base.entity.UserInfoEntity;
|
||||
import com.ckkj.water.login.mvp.LoginContract;
|
||||
import com.ckkj.water.login.mvp.LoginImpl;
|
||||
import com.ckkj.water.main.MainContract;
|
||||
import com.ckkj.water.main.MainImpl;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.manager.MingDengUserInfoManager;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/7/28
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class MinePresenter extends BasePresenter<MineContract.MineView> {
|
||||
private MineImpl impl;
|
||||
|
||||
|
||||
public MinePresenter(MineImpl impl) {
|
||||
this.impl = impl;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取个人信息
|
||||
*/
|
||||
}
|
||||
27
app/src/main/java/com/ckkj/water/mine/mvp/RecommendImpl.java
Normal file
27
app/src/main/java/com/ckkj/water/mine/mvp/RecommendImpl.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
import com.ckkj.water.mine.entity.InviteeRecordEntity;
|
||||
import com.ckkj.water.mine.entity.RecommendDataEntity;
|
||||
import com.ckkj.water.mine.entity.RewardRecordEntity;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.network.NetWorkManager;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.annotations.NonNull;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/9/29
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class RecommendImpl implements MineContract.RecommendModel{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
import com.ckkj.water.base.BasePresenter;
|
||||
import com.ckkj.water.mine.entity.InviteeRecordEntity;
|
||||
import com.ckkj.water.mine.entity.RecommendDataEntity;
|
||||
import com.ckkj.water.mine.entity.RewardRecordEntity;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/9/29
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
public class RecommendPresenter extends BasePresenter<MineContract.RecommendView> {
|
||||
private RecommendImpl impl;
|
||||
|
||||
public RecommendPresenter(RecommendImpl impl) {
|
||||
this.impl = impl;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user