浏览代码

增加svip类型显示,修改vip状态提示

Pq 1 年之前
父节点
当前提交
45f16064bf
共有 28 个文件被更改,包括 462 次插入79 次删除
  1. 83 0
      BaseLibrary/src/main/java/com/cooleshow/base/constanst/EVipType.java
  2. 46 0
      BaseLibrary/src/main/java/com/cooleshow/base/constanst/ExpireVipType.java
  3. 1 1
      BaseLibrary/src/main/java/com/cooleshow/base/utils/DateUtil.java
  4. 二进制
      BaseLibrary/src/main/res/drawable-xhdpi/icon_mine_svip_star.png
  5. 二进制
      BaseLibrary/src/main/res/drawable-xhdpi/icon_mine_vip_star.png
  6. 二进制
      BaseLibrary/src/main/res/drawable-xhdpi/icon_svip_enable_new.png
  7. 二进制
      BaseLibrary/src/main/res/drawable-xhdpi/icon_svip_tag.png
  8. 二进制
      BaseLibrary/src/main/res/drawable-xhdpi/icon_vip_enable_new.png
  9. 二进制
      BaseLibrary/src/main/res/drawable-xhdpi/icon_vip_tag.png
  10. 二进制
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_mine_svip_star.png
  11. 二进制
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_mine_vip_star.png
  12. 二进制
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_svip_enable_new.png
  13. 二进制
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_svip_tag.png
  14. 二进制
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_vip_enable_new.png
  15. 二进制
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_vip_tag.png
  16. 4 0
      BaseLibrary/src/main/res/values/colors.xml
  17. 57 20
      student/src/main/java/com/cooleshow/student/ui/main/MineFragment.java
  18. 二进制
      student/src/main/res/drawable-xhdpi/icon_mine_vip_star.png
  19. 二进制
      student/src/main/res/drawable-xxhdpi/icon_mine_vip_star.png
  20. 22 27
      student/src/main/res/layout/fragment_mine_layout.xml
  21. 27 4
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/HomePageActivity.java
  22. 56 8
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  23. 二进制
      teacher/src/main/res/drawable-xhdpi/icon_mine_vip_star.png
  24. 二进制
      teacher/src/main/res/drawable-xxhdpi/icon_mine_vip_star.png
  25. 0 1
      teacher/src/main/res/layout/activity_home_page_layout.xml
  26. 35 18
      teacher/src/main/res/layout/fragment_mine_layout.xml
  27. 66 0
      usercenter/src/main/java/com/cooleshow/usercenter/bean/StudentUserInfo.java
  28. 65 0
      usercenter/src/main/java/com/cooleshow/usercenter/bean/TeacherUserInfo.java

+ 83 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/EVipType.java

@@ -0,0 +1,83 @@
+package com.cooleshow.base.constanst;
+
+import com.cooleshow.base.R;
+
+/**
+ * Author by pq, Date on 2024/7/19.
+ */
+public enum EVipType {
+    VIP("VIP", "会员"),
+    SVIP("SVIP", "SVIP会员"),
+    NOT_VIP("NOT_VIP", "非会员"),
+    PERMANENT_SVIP("PERMANENT_SVIP", "永久SVIP");
+
+    private String id;
+    private String des;
+
+    EVipType(String id, String des) {
+        this.id = id;
+        this.des = des;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getDes() {
+        return des;
+    }
+
+    public void setDes(String des) {
+        this.des = des;
+    }
+
+    public static String getVipTip1(EVipType eVipType) {
+        if (eVipType == PERMANENT_SVIP) {
+            return "您已是";
+        }
+        if (eVipType == VIP) {
+            return "VIP有效期至";
+        }
+        if (eVipType == SVIP) {
+            return "SVIP有效期至";
+        }
+        return "";
+    }
+
+    public static int getVipStar(EVipType eVipType) {
+        if (eVipType == PERMANENT_SVIP || eVipType == SVIP) {
+            return R.drawable.icon_mine_svip_star;
+        }
+        if (eVipType == VIP) {
+            return R.drawable.icon_mine_vip_star;
+        }
+        return R.drawable.icon_mine_vip_star;
+    }
+
+    public static int getVipAvatarBorderColor(EVipType eVipType) {
+        if (eVipType == PERMANENT_SVIP || eVipType == SVIP) {
+            return R.color.color_f0af88;
+        }
+        if (eVipType == VIP) {
+            return R.color.color_fada9b;
+        }
+        return R.color.color_fada9b;
+    }
+
+
+    public static int getVipAvatarTag(EVipType eVipType) {
+        if (eVipType == PERMANENT_SVIP || eVipType == SVIP) {
+            return R.drawable.icon_svip_tag;
+        }
+        if (eVipType == VIP) {
+            return R.drawable.icon_vip_tag;
+        }
+        return R.drawable.icon_vip_tag;
+    }
+
+
+}

+ 46 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/ExpireVipType.java

@@ -0,0 +1,46 @@
+package com.cooleshow.base.constanst;
+
+import com.cooleshow.base.R;
+
+/**
+ * Author by pq, Date on 2024/7/19.
+ */
+public enum ExpireVipType {
+    VIP("VIP", "VIP已过期"),
+    SVIP("SVIP", "SVIP已过期"),
+    ALL_VIP("ALL_VIP", "会员已过期");
+
+    private String id;
+    private String des;
+
+    ExpireVipType(String id, String des) {
+        this.id = id;
+        this.des = des;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getDes() {
+        return des;
+    }
+
+    public void setDes(String des) {
+        this.des = des;
+    }
+
+    public static int getExpireVipStar(ExpireVipType eVipType) {
+        if (eVipType == SVIP) {
+            return R.drawable.icon_svip_enable_new;
+        }
+        if (eVipType == VIP) {
+            return R.drawable.icon_vip_enable_new;
+        }
+        return 0;
+    }
+}

+ 1 - 1
BaseLibrary/src/main/java/com/cooleshow/base/utils/DateUtil.java

@@ -18,7 +18,7 @@ public class DateUtil {
 
     private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";
     private static final SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+    public static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
     private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
     private static String mYear;
     private static String mMonth;

二进制
BaseLibrary/src/main/res/drawable-xhdpi/icon_mine_svip_star.png


二进制
BaseLibrary/src/main/res/drawable-xhdpi/icon_mine_vip_star.png


二进制
BaseLibrary/src/main/res/drawable-xhdpi/icon_svip_enable_new.png


二进制
BaseLibrary/src/main/res/drawable-xhdpi/icon_svip_tag.png


二进制
BaseLibrary/src/main/res/drawable-xhdpi/icon_vip_enable_new.png


二进制
BaseLibrary/src/main/res/drawable-xhdpi/icon_vip_tag.png


二进制
BaseLibrary/src/main/res/drawable-xxhdpi/icon_mine_svip_star.png


二进制
BaseLibrary/src/main/res/drawable-xxhdpi/icon_mine_vip_star.png


二进制
BaseLibrary/src/main/res/drawable-xxhdpi/icon_svip_enable_new.png


二进制
BaseLibrary/src/main/res/drawable-xxhdpi/icon_svip_tag.png


二进制
BaseLibrary/src/main/res/drawable-xxhdpi/icon_vip_enable_new.png


二进制
BaseLibrary/src/main/res/drawable-xxhdpi/icon_vip_tag.png


+ 4 - 0
BaseLibrary/src/main/res/values/colors.xml

@@ -208,4 +208,8 @@
     <color name="color_cecece">#cecece</color>
     <color name="color_20bea0">#20BEA0</color>
     <color name="color_c76e21">#C76E21</color>
+    <color name="color_502c0c">#502C0C</color>
+    <color name="color_ff623a">#FF623A</color>
+    <color name="color_f0af88">#F0AF88</color>
+    <color name="color_fada9b">#fada9b</color>
 </resources>

+ 57 - 20
student/src/main/java/com/cooleshow/student/ui/main/MineFragment.java

@@ -10,11 +10,15 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.EVipType;
 import com.cooleshow.base.constanst.EventConstants;
+import com.cooleshow.base.constanst.ExpireVipType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.DateUtil;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.PermissionUtils;
+import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.helper.PermissionTipHelper;
@@ -207,7 +211,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                         ARouter.getInstance().build(RouterPath.MineCenter.MINE_EQUIPMENT_TEST)
                                 .navigation();
                     } else {
-                        UiUtils.showPermissionTipDialog(getChildFragmentManager(),getContext(),"提示",getString(com.cooleshow.base.R.string.equipment_testing_hint));
+                        UiUtils.showPermissionTipDialog(getChildFragmentManager(), getContext(), "提示", getString(com.cooleshow.base.R.string.equipment_testing_hint));
                     }
                 });
     }
@@ -273,28 +277,11 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             return;
         }
         //头像
-        if (data.isVip == 1) {
-            mViewBinding.ivAvatar.setBorderColor(getResources().getColor(com.cooleshow.base.R.color.color_fce2b7));
-        } else {
-            mViewBinding.ivAvatar.setBorderColor(getResources().getColor(com.cooleshow.base.R.color.white));
-        }
         GlideUtils.INSTANCE.loadImage(getContext(), data.heardUrl, mViewBinding.ivAvatar, R.drawable.icon_student_default_head);
         mViewBinding.tvNickname.setText(data.username);
-        mViewBinding.ivVip.setImageResource(data.isVip == 1 ? com.cooleshow.base.R.drawable.icon_vip_able : com.cooleshow.base.R.drawable.icon_vip_enable);
+
         mViewBinding.tvCardId.setText("学号:" + data.userId);
-        if(data.isVip == 1){
-            mViewBinding.tvVipTip.setVisibility(View.GONE);
-            mViewBinding.groupVip.setVisibility(View.VISIBLE);
-            mViewBinding.tvValidity.setText(String.format("%d", data.membershipDays));
-        }else{
-            mViewBinding.tvVipTip.setVisibility(View.VISIBLE);
-            mViewBinding.groupVip.setVisibility(View.GONE);
-            if(!TextUtils.isEmpty(data.membershipEndTime)){
-                mViewBinding.tvVipTip.setText("会员已过期");
-            }else{
-                mViewBinding.tvVipTip.setText("暂未开通");
-            }
-        }
+        handleVipStyle(data);
         mViewBinding.tvFinishedClass.setText(data.finshClassHours + "");
         mViewBinding.tvResidueClass.setText(data.unfinshClassHours + "");
         mViewBinding.tvFocusTeacher.setText(data.starTeacherNum + "");
@@ -321,4 +308,54 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                     .navigation();
         }
     }
+
+    private void handleVipStyle(StudentUserInfo userInfo) {
+        try {
+            StudentUserInfo.VipBean userVip = userInfo.getUserVip();
+            EVipType eVipType;
+            if (userVip == null || TextUtils.isEmpty(userVip.getVipType())) {
+                eVipType = EVipType.NOT_VIP;
+            } else {
+                eVipType = EVipType.valueOf(userVip.getVipType());
+            }
+            if (eVipType == EVipType.NOT_VIP) {
+                //非会员
+                mViewBinding.ivVip.setVisibility(View.GONE);
+                mViewBinding.groupVip.setVisibility(View.GONE);
+                mViewBinding.tvVipTip.setVisibility(View.VISIBLE);
+                mViewBinding.ivAvatar.setBorderColor(getResources().getColor(R.color.white));
+                if (userVip != null && !TextUtils.isEmpty(userVip.getExpireVipType())) {
+                    ExpireVipType expireVipType = ExpireVipType.valueOf(userVip.getExpireVipType());
+                    int expireVipStar = ExpireVipType.getExpireVipStar(expireVipType);
+                    mViewBinding.tvVipTip.setText(expireVipType.getDes());
+                    mViewBinding.tvVipTip.setCompoundDrawablesWithIntrinsicBounds(expireVipStar, 0, 0, 0);
+                } else {
+                    //未开通会员
+                    mViewBinding.tvVipTip.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
+                    mViewBinding.tvVipTip.setText("您还未开通会员哦~");
+                }
+
+            } else {
+                mViewBinding.ivVip.setVisibility(View.VISIBLE);
+                mViewBinding.groupVip.setVisibility(View.VISIBLE);
+                mViewBinding.tvVipTip.setVisibility(View.GONE);
+
+                mViewBinding.ivAvatar.setBorderColor(getResources().getColor(EVipType.getVipAvatarBorderColor(eVipType)));
+                mViewBinding.ivVip.setImageResource(EVipType.getVipAvatarTag(eVipType));
+                mViewBinding.viewVipStar.setImageResource(EVipType.getVipStar(eVipType));
+                mViewBinding.tvValidityStart.setText(EVipType.getVipTip1(eVipType));
+                boolean isPermanentVip = eVipType == EVipType.PERMANENT_SVIP;
+                String timeTip;
+                if (isPermanentVip) {
+                    timeTip = EVipType.PERMANENT_SVIP.getDes();
+                } else {
+                    String t = eVipType == EVipType.VIP ? userVip.getVipEndDate() : userVip.getSvipEndDate();
+                    timeTip = DateUtil.dateFormat(t, "yyyy-MM-dd");
+                }
+                mViewBinding.tvValidity.setText(timeTip);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

二进制
student/src/main/res/drawable-xhdpi/icon_mine_vip_star.png


二进制
student/src/main/res/drawable-xxhdpi/icon_mine_vip_star.png


+ 22 - 27
student/src/main/res/layout/fragment_mine_layout.xml

@@ -101,7 +101,6 @@
             android:id="@+id/iv_vip"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:src="@drawable/icon_vip_enable"
             app:layout_constraintBottom_toBottomOf="@+id/vip_help_view"
             app:layout_constraintLeft_toLeftOf="@+id/iv_avatar"
             app:layout_constraintRight_toRightOf="@+id/iv_avatar"
@@ -171,13 +170,13 @@
             app:layout_constraintTop_toBottomOf="@+id/ll_user_id" />
 
 
-        <View
+        <ImageView
             android:id="@+id/view_vip_star"
             android:layout_width="@dimen/dp_19"
             android:layout_height="@dimen/dp_16"
-            android:layout_marginLeft="20dp"
+            android:layout_marginLeft="17dp"
             android:layout_marginTop="18dp"
-            android:background="@drawable/icon_mine_vip_star"
+            android:src="@drawable/icon_mine_vip_star"
             app:layout_constraintLeft_toLeftOf="@+id/view_vip_bg"
             app:layout_constraintTop_toTopOf="@+id/view_vip_bg" />
 
@@ -186,10 +185,15 @@
             android:id="@+id/tv_validity_start"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="8dp"
-            android:text="会员有效期剩余"
-            android:textColor="@color/color_7f6b3f"
+            android:layout_marginLeft="5dp"
+            android:text="VIP有效期剩余"
+            android:textColor="@color/color_502c0c"
             android:textSize="@dimen/sp_14"
+            android:textStyle="bold"
+            app:layout_constraintWidth_default="wrap"
+            app:layout_constraintHorizontal_bias="0"
+            app:layout_constraintHorizontal_chainStyle="packed"
+            app:layout_constraintRight_toLeftOf="@+id/tv_validity"
             app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
             app:layout_constraintLeft_toRightOf="@+id/view_vip_star"
             app:layout_constraintTop_toTopOf="@+id/view_vip_star" />
@@ -198,46 +202,37 @@
             android:id="@+id/tv_validity"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/color_7f6b3f"
+            android:textColor="@color/color_ff623a"
             android:textSize="@dimen/sp_14"
             android:textStyle="bold"
-            app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
+            app:layout_constraintBaseline_toBaselineOf="@+id/tv_validity_start"
+            app:layout_constraintRight_toLeftOf="@+id/im_vip"
             app:layout_constraintLeft_toRightOf="@+id/tv_validity_start"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_star"
             tools:text="321" />
 
-        <TextView
-            android:id="@+id/tv_validity_end"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="天"
-            android:textColor="@color/color_7f6b3f"
-            android:textSize="@dimen/sp_14"
-            app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
-            app:layout_constraintLeft_toRightOf="@+id/tv_validity"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_star" />
 
         <androidx.constraintlayout.widget.Group
             android:visibility="gone"
             android:id="@+id/group_vip"
-            tools:visibility="gone"
-            app:constraint_referenced_ids="tv_validity_end,tv_validity,tv_validity_start"
+            tools:visibility="visible"
+            app:constraint_referenced_ids="view_vip_star,tv_validity,tv_validity_start"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"/>
 
         <TextView
-            tools:visibility="visible"
+            android:drawablePadding="5dp"
+            tools:visibility="gone"
             android:visibility="gone"
             android:id="@+id/tv_vip_tip"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="8dp"
+            android:paddingStart="18dp"
             android:text="会员已过期"
             android:textColor="@color/color_7f6b3f"
             android:textSize="@dimen/sp_14"
-            app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
-            app:layout_constraintLeft_toRightOf="@+id/view_vip_star"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_star" />
+            app:layout_constraintBottom_toBottomOf="@+id/im_vip"
+            app:layout_constraintLeft_toLeftOf="@+id/view_vip_bg"
+            app:layout_constraintTop_toTopOf="@+id/im_vip" />
 
         <ImageView
             android:id="@+id/im_vip"

+ 27 - 4
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/HomePageActivity.java

@@ -11,8 +11,11 @@ import android.widget.TextView;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.constanst.EVipType;
+import com.cooleshow.base.constanst.ExpireVipType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.DateUtil;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.base.utils.UiUtils;
@@ -251,10 +254,8 @@ public class HomePageActivity extends BaseMVPActivity<ActivityHomePageLayoutBind
         viewBinding.tvCourseNumCompleted.setText(info.expTime);
         //未上课时数
         viewBinding.tvCourseNumNotStart.setText(info.unExpTime);
-        //vip
-        viewBinding.ivVip.setImageResource(info.isVip == 1 ? R.drawable.icon_vip_able_big : R.drawable.icon_vip_enable_big);
-        //头像
-        viewBinding.ivAvatar.setBorderColor(info.isVip == 1 ? getResources().getColor(com.cooleshow.base.R.color.color_fce2b7) : getResources().getColor(com.cooleshow.base.R.color.white));
+        //vip相关
+        handleVipStyle(info);
         GlideUtils.INSTANCE.loadImage(this, info.heardUrl, viewBinding.ivAvatar, R.drawable.icon_teacher_default_head);
         GlideUtils.INSTANCE.loadImageWhitVague(this, info.heardUrl, viewBinding.ivHeaderBg, R.drawable.bg_home_page_header);
         //学历认证 教资认证标签
@@ -276,6 +277,28 @@ public class HomePageActivity extends BaseMVPActivity<ActivityHomePageLayoutBind
         }
     }
 
+    private void handleVipStyle(TeacherUserInfo userInfo) {
+        try {
+            TeacherUserInfo.VipBean userVip = userInfo.getUserVip();
+            EVipType eVipType;
+            if (userVip == null || TextUtils.isEmpty(userVip.getVipType())) {
+                eVipType = EVipType.NOT_VIP;
+            } else {
+                eVipType = EVipType.valueOf(userVip.getVipType());
+            }
+            if (eVipType == EVipType.NOT_VIP) {
+                //非会员
+                viewBinding.ivVip.setVisibility(View.GONE);
+                viewBinding.ivAvatar.setBorderColor(getResources().getColor(R.color.white));
+            } else {
+                viewBinding.ivVip.setVisibility(View.VISIBLE);
+                viewBinding.ivAvatar.setBorderColor(getResources().getColor(EVipType.getVipAvatarBorderColor(eVipType)));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     private void updateCertStatusUI(int degreeFlag, int teacherFlag) {
         //学历认证
         if (degreeFlag == 1) {

+ 56 - 8
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -9,9 +9,12 @@ import com.alibaba.android.arouter.launcher.ARouter;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.EVipType;
 import com.cooleshow.base.constanst.EventConstants;
+import com.cooleshow.base.constanst.ExpireVipType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.DateUtil;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.UiUtils;
@@ -30,6 +33,7 @@ import com.cooleshow.teacher.helper.EventHelper;
 import com.cooleshow.teacher.presenter.main.MinePresenter;
 import com.cooleshow.teacher.widgets.dialog.BadgeDesDialog;
 import com.cooleshow.teacher.widgets.helper.MineFragmentToolsHelper;
+import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.bean.TeacherUserInfo;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -118,12 +122,9 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             return;
         }
         liveFlag = teacherUserInfo.liveFlag;
+        //vip相关
+        handleVipStyle(teacherUserInfo);
         //头像
-        if (teacherUserInfo.isVip == 1) {
-            mViewBinding.ivAvatar.setBorderColor(getResources().getColor(com.cooleshow.base.R.color.color_fce2b7));
-        } else {
-            mViewBinding.ivAvatar.setBorderColor(getResources().getColor(com.cooleshow.base.R.color.white));
-        }
         GlideUtils.INSTANCE.loadImage(requireContext(), teacherUserInfo.heardUrl, mViewBinding.ivAvatar, R.drawable.icon_teacher_default_head);
         //昵称
         String teacherName = UserHelper.getTeacherName(teacherUserInfo.username, teacherUserInfo.userId);
@@ -141,7 +142,6 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         } else {
             mViewBinding.ratingBar.setRating(0);
         }
-        mViewBinding.ivVip.setImageResource(teacherUserInfo.isVip == 1 ? com.cooleshow.base.R.drawable.icon_vip_able : com.cooleshow.base.R.drawable.icon_vip_enable);
         mViewBinding.llBadge.setData(teacherUserInfo.tag);
         updateCertStatusUI(teacherUserInfo.degreeFlag, teacherUserInfo.teacherFlag);
         //粉丝数
@@ -150,8 +150,6 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         mViewBinding.tvCourseNumCompleted.setText(teacherUserInfo.expTime);
         //未上课时数
         mViewBinding.tvCourseNumNotStart.setText(teacherUserInfo.unExpTime);
-        //会员天数
-        mViewBinding.tvValidity.setText(teacherUserInfo.membershipDays);
         //达人认证状态
         this.teacherCertStatus = teacherUserInfo.entryStatus;
         if (TextUtils.equals(teacherUserInfo.entryStatus, TeacherInfoConstants.ENTRY_STATUS_DOING)) {
@@ -516,4 +514,54 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             mViewBinding.tvPromoteIncomeTip.setText(String.format("累计收益%s元", incomeBean.amountShare));
         }
     }
+
+    private void handleVipStyle(TeacherUserInfo userInfo) {
+        try {
+            TeacherUserInfo.VipBean userVip = userInfo.getUserVip();
+            EVipType eVipType;
+            if (userVip == null || TextUtils.isEmpty(userVip.getVipType())) {
+                eVipType = EVipType.NOT_VIP;
+            } else {
+                eVipType = EVipType.valueOf(userVip.getVipType());
+            }
+            if (eVipType == EVipType.NOT_VIP) {
+                //非会员
+                mViewBinding.ivVip.setVisibility(View.GONE);
+                mViewBinding.groupVip.setVisibility(View.GONE);
+                mViewBinding.tvVipTip.setVisibility(View.VISIBLE);
+                mViewBinding.ivAvatar.setBorderColor(getResources().getColor(R.color.white));
+                if (userVip != null && !TextUtils.isEmpty(userVip.getExpireVipType())) {
+                    ExpireVipType expireVipType = ExpireVipType.valueOf(userVip.getExpireVipType());
+                    int expireVipStar = ExpireVipType.getExpireVipStar(expireVipType);
+                    mViewBinding.tvVipTip.setText(expireVipType.getDes());
+                    mViewBinding.tvVipTip.setCompoundDrawablesWithIntrinsicBounds(expireVipStar, 0, 0, 0);
+                } else {
+                    //未开通会员
+                    mViewBinding.tvVipTip.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
+                    mViewBinding.tvVipTip.setText("您还未开通会员哦~");
+                }
+
+            } else {
+                mViewBinding.ivVip.setVisibility(View.VISIBLE);
+                mViewBinding.groupVip.setVisibility(View.VISIBLE);
+                mViewBinding.tvVipTip.setVisibility(View.GONE);
+
+                mViewBinding.ivAvatar.setBorderColor(getResources().getColor(EVipType.getVipAvatarBorderColor(eVipType)));
+                mViewBinding.ivVip.setImageResource(EVipType.getVipAvatarTag(eVipType));
+                mViewBinding.viewVipStar.setImageResource(EVipType.getVipStar(eVipType));
+                mViewBinding.tvValidityStart.setText(EVipType.getVipTip1(eVipType));
+                boolean isPermanentVip = eVipType == EVipType.PERMANENT_SVIP;
+                String timeTip;
+                if (isPermanentVip) {
+                    timeTip = EVipType.PERMANENT_SVIP.getDes();
+                } else {
+                    String t = eVipType == EVipType.VIP ? userVip.getVipEndDate() : userVip.getSvipEndDate();
+                    timeTip = DateUtil.dateFormat(t, "yyyy-MM-dd");
+                }
+                mViewBinding.tvValidity.setText(timeTip);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

二进制
teacher/src/main/res/drawable-xhdpi/icon_mine_vip_star.png


二进制
teacher/src/main/res/drawable-xxhdpi/icon_mine_vip_star.png


+ 0 - 1
teacher/src/main/res/layout/activity_home_page_layout.xml

@@ -152,7 +152,6 @@
                     android:id="@+id/iv_vip"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:src="@drawable/icon_vip_enable_big"
                     app:layout_constraintLeft_toRightOf="@+id/view_vip_help_line"
                     app:layout_constraintTop_toBottomOf="@+id/view_vip_help_line" />
 

+ 35 - 18
teacher/src/main/res/layout/fragment_mine_layout.xml

@@ -421,9 +421,9 @@
         <ImageView
             android:id="@+id/view_vip_star"
             android:layout_width="@dimen/dp_19"
-            android:layout_height="@dimen/dp_18"
-            android:layout_marginLeft="20dp"
-            android:layout_marginTop="14dp"
+            android:layout_height="@dimen/dp_16"
+            android:layout_marginLeft="17dp"
+            android:layout_marginTop="18dp"
             android:src="@drawable/icon_mine_vip_star"
             app:layout_constraintLeft_toLeftOf="@+id/view_vip_bg"
             app:layout_constraintTop_toTopOf="@+id/view_vip_bg" />
@@ -433,10 +433,15 @@
             android:id="@+id/tv_validity_start"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="8dp"
-            android:text="会员有效期剩余"
-            android:textColor="@color/color_7f6b3f"
+            android:layout_marginLeft="5dp"
+            android:text="VIP有效期剩余"
+            android:textColor="@color/color_502c0c"
             android:textSize="@dimen/sp_14"
+            android:textStyle="bold"
+            app:layout_constraintWidth_default="wrap"
+            app:layout_constraintHorizontal_bias="0"
+            app:layout_constraintHorizontal_chainStyle="packed"
+            app:layout_constraintRight_toLeftOf="@+id/tv_validity"
             app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
             app:layout_constraintLeft_toRightOf="@+id/view_vip_star"
             app:layout_constraintTop_toTopOf="@+id/view_vip_star" />
@@ -445,34 +450,46 @@
             android:id="@+id/tv_validity"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="0"
-            android:textColor="@color/color_7f6b3f"
+            android:textColor="@color/color_ff623a"
             android:textSize="@dimen/sp_14"
             android:textStyle="bold"
-            app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
+            app:layout_constraintBaseline_toBaselineOf="@+id/tv_validity_start"
+            app:layout_constraintRight_toLeftOf="@+id/im_vip"
             app:layout_constraintLeft_toRightOf="@+id/tv_validity_start"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_star"
             tools:text="321" />
 
+        <androidx.constraintlayout.widget.Group
+            android:visibility="gone"
+            android:id="@+id/group_vip"
+            tools:visibility="visible"
+            app:constraint_referenced_ids="view_vip_star,tv_validity,tv_validity_start"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
         <TextView
+            android:drawablePadding="5dp"
+            tools:visibility="gone"
+            android:visibility="gone"
+            android:id="@+id/tv_vip_tip"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="天"
+            android:paddingStart="18dp"
+            android:text="会员已过期"
             android:textColor="@color/color_7f6b3f"
             android:textSize="@dimen/sp_14"
-            app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
-            app:layout_constraintLeft_toRightOf="@+id/tv_validity"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_star" />
+            app:layout_constraintBottom_toBottomOf="@+id/im_vip"
+            app:layout_constraintLeft_toLeftOf="@+id/view_vip_bg"
+            app:layout_constraintTop_toTopOf="@+id/im_vip" />
 
         <ImageView
             android:id="@+id/im_vip"
-            android:layout_width="@dimen/dp_74"
-            android:layout_height="@dimen/dp_26"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="12dp"
             android:layout_marginRight="16dp"
             android:background="@drawable/icon_mine_vip_center"
-            app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
             app:layout_constraintRight_toRightOf="@+id/view_vip_bg"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_star" />
+            app:layout_constraintTop_toTopOf="@+id/view_vip_bg" />
 
 
         <View

+ 66 - 0
usercenter/src/main/java/com/cooleshow/usercenter/bean/StudentUserInfo.java

@@ -72,6 +72,15 @@ public class StudentUserInfo implements Serializable {
 
     private String tenantGroupId;
     private String tenantGroupName;
+    private VipBean userVip;
+
+    public VipBean getUserVip() {
+        return userVip;
+    }
+
+    public void setUserVip(VipBean userVip) {
+        this.userVip = userVip;
+    }
 
     public String getTenantGroupId() {
         return tenantGroupId;
@@ -120,4 +129,61 @@ public class StudentUserInfo implements Serializable {
     public void setTenantAlbumEndTime(String tenantAlbumEndTime) {
         this.tenantAlbumEndTime = tenantAlbumEndTime;
     }
+
+    public static class VipBean{
+        private String expireVipType;
+        private String vipType;
+        private String vipEndDate;
+        private String svipEndDate;
+        private String vipEndDays;
+        private String svipEndDays;
+
+        public String getExpireVipType() {
+            return expireVipType;
+        }
+
+        public void setExpireVipType(String expireVipType) {
+            this.expireVipType = expireVipType;
+        }
+
+        public String getVipType() {
+            return vipType;
+        }
+
+        public void setVipType(String vipType) {
+            this.vipType = vipType;
+        }
+
+        public String getVipEndDate() {
+            return vipEndDate;
+        }
+
+        public void setVipEndDate(String vipEndDate) {
+            this.vipEndDate = vipEndDate;
+        }
+
+        public String getSvipEndDate() {
+            return svipEndDate;
+        }
+
+        public void setSvipEndDate(String svipEndDate) {
+            this.svipEndDate = svipEndDate;
+        }
+
+        public String getVipEndDays() {
+            return vipEndDays;
+        }
+
+        public void setVipEndDays(String vipEndDays) {
+            this.vipEndDays = vipEndDays;
+        }
+
+        public String getSvipEndDays() {
+            return svipEndDays;
+        }
+
+        public void setSvipEndDays(String svipEndDays) {
+            this.svipEndDays = svipEndDays;
+        }
+    }
 }

+ 65 - 0
usercenter/src/main/java/com/cooleshow/usercenter/bean/TeacherUserInfo.java

@@ -100,7 +100,15 @@ public class TeacherUserInfo implements Serializable {
 
     private int tenantAlbumStatus;//0:没有专辑 1:有,但是未解锁,2:有,且已解锁
 
+    private VipBean userVip;
 
+    public VipBean getUserVip() {
+        return userVip;
+    }
+
+    public void setUserVip(VipBean userVip) {
+        this.userVip = userVip;
+    }
 
     public String getDefaultSubject() {
         if (!TextUtils.equals(defaultSubject, "0")) {
@@ -148,4 +156,61 @@ public class TeacherUserInfo implements Serializable {
     public void setTenantAlbumStatus(int tenantAlbumStatus) {
         this.tenantAlbumStatus = tenantAlbumStatus;
     }
+
+    public static class VipBean{
+        private String expireVipType;
+        private String vipType;
+        private String vipEndDate;
+        private String svipEndDate;
+        private String vipEndDays;
+        private String svipEndDays;
+
+        public String getExpireVipType() {
+            return expireVipType;
+        }
+
+        public void setExpireVipType(String expireVipType) {
+            this.expireVipType = expireVipType;
+        }
+
+        public String getVipType() {
+            return vipType;
+        }
+
+        public void setVipType(String vipType) {
+            this.vipType = vipType;
+        }
+
+        public String getVipEndDate() {
+            return vipEndDate;
+        }
+
+        public void setVipEndDate(String vipEndDate) {
+            this.vipEndDate = vipEndDate;
+        }
+
+        public String getSvipEndDate() {
+            return svipEndDate;
+        }
+
+        public void setSvipEndDate(String svipEndDate) {
+            this.svipEndDate = svipEndDate;
+        }
+
+        public String getVipEndDays() {
+            return vipEndDays;
+        }
+
+        public void setVipEndDays(String vipEndDays) {
+            this.vipEndDays = vipEndDays;
+        }
+
+        public String getSvipEndDays() {
+            return svipEndDays;
+        }
+
+        public void setSvipEndDays(String svipEndDays) {
+            this.svipEndDays = svipEndDays;
+        }
+    }
 }