Explorar el Código

处理学生端 首页-我的页面样式和逻辑改动

Pq hace 4 meses
padre
commit
fbede30af2
Se han modificado 23 ficheros con 309 adiciones y 99 borrados
  1. 2 1
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  2. 7 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/WebStartHelper.java
  3. 4 0
      BaseLibrary/src/main/res/values/colors.xml
  4. 9 0
      student/src/main/java/com/cooleshow/student/api/APIService.java
  5. 41 0
      student/src/main/java/com/cooleshow/student/bean/VipTipBean.java
  6. 4 0
      student/src/main/java/com/cooleshow/student/contract/MineContract.java
  7. 15 0
      student/src/main/java/com/cooleshow/student/presenter/main/MinePresenter.java
  8. 87 30
      student/src/main/java/com/cooleshow/student/ui/main/MineFragment.java
  9. BIN
      student/src/main/res/drawable-xhdpi/bg_mine_free_card_info_tag.png
  10. BIN
      student/src/main/res/drawable-xhdpi/bg_mine_svip_info_tag.png
  11. BIN
      student/src/main/res/drawable-xhdpi/bg_mine_vip_info_tag.png
  12. BIN
      student/src/main/res/drawable-xhdpi/icon_mine_free_card_tip_arrow.png
  13. BIN
      student/src/main/res/drawable-xhdpi/icon_mine_vip_tip_arrow.png
  14. BIN
      student/src/main/res/drawable-xxhdpi/bg_mine_free_card_info_tag.png
  15. BIN
      student/src/main/res/drawable-xxhdpi/bg_mine_svip_info_tag.png
  16. BIN
      student/src/main/res/drawable-xxhdpi/bg_mine_vip_info_tag.png
  17. BIN
      student/src/main/res/drawable-xxhdpi/icon_mine_free_card_tip_arrow.png
  18. BIN
      student/src/main/res/drawable-xxhdpi/icon_mine_vip_tip_arrow.png
  19. 6 0
      student/src/main/res/drawable/shape_mine_free_card_bg.xml
  20. 6 0
      student/src/main/res/drawable/shape_mine_svip_info_bg.xml
  21. 6 0
      student/src/main/res/drawable/shape_mine_vip_info_bg.xml
  22. 95 68
      student/src/main/res/layout/fragment_mine_layout.xml
  23. 27 0
      usercenter/src/main/java/com/cooleshow/usercenter/bean/StudentUserInfo.java

+ 2 - 1
BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java

@@ -188,6 +188,7 @@ public abstract class WebConstants {
     public static final String APPOINTMENT_VIDEO_COURSE = getBaseUrlH5() + "/#/videoDetail?groupId=%s";//约课视频课
     public static final String TEACHER_VIP_COURSE_SETTING = getBaseUrlH5() + "/#/practiceSetting?tabs=vip";//老师端VIP课设置
 
-    public static final String TEACHER_APPOINTMENT_COURSE_SETTING = getBaseUrlH5() + "/#/practiceSettingTimer ";//老师端约课时间段配置
+    public static final String TEACHER_APPOINTMENT_COURSE_SETTING = getBaseUrlH5() + "/#/practiceSettingTimer";//老师端约课时间段配置
+    public static final String STUDENT_FREE_CARD = getBaseUrlH5() + "/#/discount-card";//畅学卡
 }
 

+ 7 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/WebStartHelper.java

@@ -310,4 +310,11 @@ public class WebStartHelper {
                 .navigation();
 
     }
+
+    public static void startFreeCard() {
+        ARouter.getInstance()
+                .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                .withString(WebConstants.WEB_URL, WebConstants.STUDENT_FREE_CARD)
+                .navigation();
+    }
 }

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

@@ -228,4 +228,8 @@
     <color name="color_80000000">#80000000</color>
     <color name="color_dfdfdf">#DFDFDF</color>
     <color name="color_fff4e6">#FFF4E6</color>
+    <color name="color_622200">#622200</color>
+    <color name="color_cc622200">#cc622200</color>
+    <color name="color_006eb0">#006EB0</color>
+    <color name="color_cc005ba2">#cc005BA2</color>
 </resources>

+ 9 - 0
student/src/main/java/com/cooleshow/student/api/APIService.java

@@ -607,4 +607,13 @@ public interface APIService {
      */
     @GET(STUDENT_GROUP + "index/summary")
     Observable<BaseResponse<HomeStatisticsInfoBean>> getPracticeAndCourseInfo();
+
+    /**
+     * 获取修改名称限制时间
+     *
+     * @param
+     * @return
+     */
+    @GET(STUDENT_GROUP + "sysConfig/queryByParamName")
+    Observable<BaseResponse<QueryParamsConfigBean>> querySysConfigByParamName(@Query("paramName") String name);
 }

+ 41 - 0
student/src/main/java/com/cooleshow/student/bean/VipTipBean.java

@@ -0,0 +1,41 @@
+package com.cooleshow.student.bean;
+
+import android.text.TextUtils;
+
+/**
+ * Author by pq, Date on 2024/11/28.
+ */
+public class VipTipBean {
+
+    /**
+     * cardType : VIP
+     * tips : 双十二特惠,多重好礼!
+     */
+
+    private String cardType;
+    private String tips;
+
+    public String getCardType() {
+        return cardType;
+    }
+
+    public void setCardType(String cardType) {
+        this.cardType = cardType;
+    }
+
+    public String getTips() {
+        return tips;
+    }
+
+    public void setTips(String tips) {
+        this.tips = tips;
+    }
+
+    public boolean isVipCard(){
+        return TextUtils.equals(cardType,"VIP");
+    }
+
+    public boolean isFreeStudyCard(){
+        return TextUtils.equals(cardType,"DISCOUNT");
+    }
+}

+ 4 - 0
student/src/main/java/com/cooleshow/student/contract/MineContract.java

@@ -1,5 +1,6 @@
 package com.cooleshow.student.contract;
 
+import com.cooleshow.base.bean.QueryParamsConfigBean;
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 
@@ -14,6 +15,9 @@ public interface MineContract {
         void queryUserInfoSuccess(StudentUserInfo data);
 
         void updateUserCustomerServiceSuccess(String data);
+
+        void queryVipTipsSuccess(QueryParamsConfigBean data);
+
     }
 
     interface Presenter {

+ 15 - 0
student/src/main/java/com/cooleshow/student/presenter/main/MinePresenter.java

@@ -1,5 +1,6 @@
 package com.cooleshow.student.presenter.main;
 
+import com.cooleshow.base.bean.QueryParamsConfigBean;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.student.api.APIService;
@@ -13,6 +14,20 @@ import com.cooleshow.usercenter.bean.StudentUserInfo;
  * 类说明:
  */
 public class MinePresenter extends BasePresenter<MineContract.MineView> implements MineContract.Presenter {
+
+    public void queryVipTipsAndUserInfo(){
+        String paramName = "vip_open_tips";
+        addSubscribe(create(APIService.class).querySysConfigByParamName(paramName), new BaseObserver<QueryParamsConfigBean>(getView()) {
+            @Override
+            protected void onSuccess(QueryParamsConfigBean data) {
+                if (getView() != null) {
+                    getView().queryVipTipsSuccess(data);
+                }
+                queryUserInfo();
+            }
+        });
+    }
+
     @Override
     public void queryUserInfo() {
         addSubscribe(create(APIService.class).queryUserInfo(), new BaseObserver<StudentUserInfo>(getView()) {

+ 87 - 30
student/src/main/java/com/cooleshow/student/ui/main/MineFragment.java

@@ -3,38 +3,37 @@ package com.cooleshow.student.ui.main;
 import android.Manifest;
 import android.text.TextUtils;
 import android.view.View;
-import android.widget.TextView;
 
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.bean.QueryParamsConfigBean;
 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.GsonUtils;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.WebStartHelper;
-import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.student.R;
-import com.cooleshow.student.adapter.ItemMarkAdapter;
 import com.cooleshow.student.adapter.MineItemMarkAdapter;
+import com.cooleshow.student.bean.VipTipBean;
 import com.cooleshow.student.contract.MineContract;
 import com.cooleshow.student.databinding.FragmentMineLayoutBinding;
 import com.cooleshow.student.helper.EventHelper;
 import com.cooleshow.student.presenter.main.MinePresenter;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
+import com.google.gson.reflect.TypeToken;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 
+import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -46,7 +45,7 @@ import java.util.List;
  */
 public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, MinePresenter> implements MineContract.MineView, View.OnClickListener {
     private String customerId = "";
-
+    private List<VipTipBean> vipTips;
 
     @Override
     public void onClick(View view) {
@@ -64,7 +63,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 ARouter.getInstance().build(RouterPath.MineCenter.MINE_SETTING)
                         .navigation();
                 break;
-            case R.id.im_vip:
+            case R.id.view_vip_info_bg:
                 if (UiUtils.isFastClick()) {
                     return;
                 }
@@ -207,6 +206,10 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                     presenter.updateUserCustomerService();
                 }
                 break;
+            case R.id.view_free_card_info_bg:
+                //畅学卡
+                WebStartHelper.startFreeCard();
+                break;
         }
     }
 
@@ -243,7 +246,8 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
     @Override
     protected void initView(View rootView) {
         Utils.setHeadView(mViewBinding.viewStatusBar, getContext(), 0);
-        mViewBinding.imVip.setOnClickListener(this);
+        mViewBinding.viewVipInfoBg.setOnClickListener(this);
+        mViewBinding.viewFreeCardInfoBg.setOnClickListener(this);
         rv_mark = mViewBinding.rvMark;
         mViewBinding.ivAvatar.setOnClickListener(this);
         mViewBinding.ivSetting.setOnClickListener(this);
@@ -281,7 +285,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
     @Override
     public void onResume() {
         super.onResume();
-        presenter.queryUserInfo();
+        presenter.queryVipTipsAndUserInfo();
     }
 
     @Override
@@ -338,6 +342,17 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         }
     }
 
+    @Override
+    public void queryVipTipsSuccess(QueryParamsConfigBean data) {
+        if (isDetached()) {
+            return;
+        }
+        String paramValue = data.paramValue;
+        Type type = new TypeToken<List<VipTipBean>>() {
+        }.getType();
+        vipTips = GsonUtils.fromJson(paramValue, type);
+    }
+
     private void handleVipStyle(StudentUserInfo userInfo) {
         try {
             StudentUserInfo.VipBean userVip = userInfo.getUserVip();
@@ -350,44 +365,86 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             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("您还未开通会员哦~");
-                }
-
+//                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("您还未开通会员哦~");
+//                }
+                mViewBinding.tvVipTitle.setText("开通会员");
+                mViewBinding.tvVipTip.setText(getVipDefaultTip());
             } 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;
+                int vipBgDrawable = R.drawable.shape_mine_vip_info_bg;
+                int vipTagDrawable = R.drawable.bg_mine_vip_info_tag;
+                String vipText;
                 if (isPermanentVip) {
-                    timeTip = EVipType.PERMANENT_SVIP.getDes();
+                    timeTip = "您已是永久SVIP会员";
+                    vipText = "SVIP";
+                    vipBgDrawable = R.drawable.shape_mine_svip_info_bg;
+                    vipTagDrawable = R.drawable.bg_mine_svip_info_tag;
                 } else {
                     String t = eVipType == EVipType.VIP ? userVip.getVipEndDate() : userVip.getSvipEndDate();
-                    timeTip = " " + DateUtil.dateFormat(t, "yyyy-MM-dd");
+                    vipBgDrawable = eVipType == EVipType.SVIP ? R.drawable.shape_mine_svip_info_bg : R.drawable.shape_mine_vip_info_bg;
+                    vipTagDrawable = eVipType == EVipType.SVIP ? R.drawable.bg_mine_svip_info_tag : R.drawable.bg_mine_vip_info_tag;
+                    timeTip = "有效期至" + DateUtil.dateFormat(t, "yyyy-MM-dd");
+                    vipText = eVipType.getId();
                 }
-                mViewBinding.tvValidity.setText(timeTip);
+                mViewBinding.tvVipTitle.setText(String.format("%s会员", vipText));
+                mViewBinding.ivVipTagBg.setImageResource(vipTagDrawable);
+                mViewBinding.viewVipInfoBg.setBackgroundResource(vipBgDrawable);
+                mViewBinding.tvVipTip.setText(timeTip);
+            }
+
+
+            //畅学卡
+            boolean discountCardFlag = userInfo.isDiscountCardFlag();//是否开通畅学卡
+            if (discountCardFlag) {
+                String t = userInfo.getDiscountEndTime();
+                String tip = "有效期至" + DateUtil.dateFormat(t, "yyyy-MM-dd");
+                mViewBinding.tvFreeCardTip.setText(tip);
+            } else {
+                mViewBinding.tvFreeCardTip.setText(getFreeCardDefaultTip());
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
+    private String getVipDefaultTip() {
+        if (vipTips != null && vipTips.size() > 0) {
+            for (int i = 0; i < vipTips.size(); i++) {
+                VipTipBean vipTipBean = vipTips.get(i);
+                if (vipTipBean.isVipCard()) {
+                    return vipTipBean.getTips();
+                }
+            }
+        }
+        return "";
+    }
+
+    private String getFreeCardDefaultTip() {
+        if (vipTips != null && vipTips.size() > 0) {
+            for (int i = 0; i < vipTips.size(); i++) {
+                VipTipBean vipTipBean = vipTips.get(i);
+                if (vipTipBean.isFreeStudyCard()) {
+                    return vipTipBean.getTips();
+                }
+            }
+        }
+        return "";
+    }
+
     private void openCustomerService() {
         ChatHelper.getInstance().goChat(customerId, "");
     }

BIN
student/src/main/res/drawable-xhdpi/bg_mine_free_card_info_tag.png


BIN
student/src/main/res/drawable-xhdpi/bg_mine_svip_info_tag.png


BIN
student/src/main/res/drawable-xhdpi/bg_mine_vip_info_tag.png


BIN
student/src/main/res/drawable-xhdpi/icon_mine_free_card_tip_arrow.png


BIN
student/src/main/res/drawable-xhdpi/icon_mine_vip_tip_arrow.png


BIN
student/src/main/res/drawable-xxhdpi/bg_mine_free_card_info_tag.png


BIN
student/src/main/res/drawable-xxhdpi/bg_mine_svip_info_tag.png


BIN
student/src/main/res/drawable-xxhdpi/bg_mine_vip_info_tag.png


BIN
student/src/main/res/drawable-xxhdpi/icon_mine_free_card_tip_arrow.png


BIN
student/src/main/res/drawable-xxhdpi/icon_mine_vip_tip_arrow.png


+ 6 - 0
student/src/main/res/drawable/shape_mine_free_card_bg.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient android:startColor="#E8F6FF"
+        android:endColor="#9DD7FF"/>
+    <corners android:radius="10dp"/>
+</shape>

+ 6 - 0
student/src/main/res/drawable/shape_mine_svip_info_bg.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient android:startColor="#FFEDE0"
+        android:endColor="#FFC7A2"/>
+    <corners android:radius="10dp"/>
+</shape>

+ 6 - 0
student/src/main/res/drawable/shape_mine_vip_info_bg.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient android:startColor="#FFF7E0"
+        android:endColor="#FFE2A2"/>
+    <corners android:radius="10dp"/>
+</shape>

+ 95 - 68
student/src/main/res/layout/fragment_mine_layout.xml

@@ -169,103 +169,130 @@
                 android:textSize="@dimen/sp_11" />
         </LinearLayout>
 
+
         <View
-            android:id="@+id/view_vip_bg"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/dp_82"
-            android:layout_marginLeft="21dp"
+            android:id="@+id/view_vip_info_bg"
+            android:layout_width="0dp"
+            android:layout_height="72dp"
+            android:layout_marginStart="14dp"
             android:layout_marginTop="20dp"
-            android:layout_marginRight="21dp"
-            android:background="@drawable/icon_mine_vip_bg"
+            android:background="@drawable/shape_mine_vip_info_bg"
             app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toLeftOf="@+id/view_free_card_info_bg"
             app:layout_constraintTop_toBottomOf="@+id/ll_user_id" />
 
+        <View
+            android:id="@+id/view_free_card_info_bg"
+            android:layout_width="0dp"
+            android:layout_height="72dp"
+            android:layout_marginStart="11dp"
+            android:layout_marginEnd="14dp"
+            android:background="@drawable/shape_mine_free_card_bg"
+            app:layout_constraintLeft_toRightOf="@+id/view_vip_info_bg"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="@+id/view_vip_info_bg" />
 
         <ImageView
-            android:id="@+id/view_vip_star"
-            android:layout_width="@dimen/dp_18"
-            android:layout_height="@dimen/dp_18"
-            android:layout_marginLeft="17dp"
-            android:src="@drawable/icon_mine_vip_star"
-            app:layout_constraintBottom_toBottomOf="@+id/im_vip"
-            app:layout_constraintLeft_toLeftOf="@+id/view_vip_bg"
-            app:layout_constraintTop_toTopOf="@+id/im_vip" />
-
-
-        <TextView
-            android:id="@+id/tv_validity_start"
+            android:id="@+id/iv_vip_tag_bg"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="5dp"
-            android:text="VIP有效期剩余"
-            android:textColor="@color/color_502c0c"
-            android:textSize="@dimen/sp_14"
-            app:layout_constraintBottom_toBottomOf="@+id/view_vip_star"
-            app:layout_constraintHorizontal_bias="0"
-            app:layout_constraintHorizontal_chainStyle="packed"
-            app:layout_constraintLeft_toRightOf="@+id/view_vip_star"
-            app:layout_constraintRight_toLeftOf="@+id/tv_validity"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_star"
-            app:layout_constraintWidth_default="wrap" />
+            android:layout_marginEnd="3dp"
+            android:src="@drawable/bg_mine_vip_info_tag"
+            app:layout_constraintBottom_toBottomOf="@+id/view_vip_info_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_vip_info_bg"
+            app:layout_constraintTop_toTopOf="@+id/view_vip_info_bg" />
 
         <TextView
-            android:id="@+id/tv_validity"
+            android:id="@+id/tv_vip_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/color_ff623a"
+            android:drawableEnd="@drawable/icon_mine_vip_tip_arrow"
+            android:drawablePadding="2dp"
+            android:paddingStart="10dp"
+            android:text="开通会员"
+            android:textColor="@color/color_622200"
             android:textSize="@dimen/sp_14"
             android:textStyle="bold"
-            app:layout_constraintBaseline_toBaselineOf="@+id/tv_validity_start"
-            app:layout_constraintLeft_toRightOf="@+id/tv_validity_start"
-            app:layout_constraintRight_toLeftOf="@+id/im_vip"
-            tools:text="321" />
+            app:layout_constraintBottom_toTopOf="@+id/tv_vip_tip"
+            app:layout_constraintLeft_toLeftOf="@+id/view_vip_info_bg"
+            app:layout_constraintTop_toTopOf="@+id/view_vip_info_bg"
+            app:layout_constraintVertical_chainStyle="packed" />
 
 
-        <androidx.constraintlayout.widget.Group
-            android:id="@+id/group_vip"
+        <TextView
+            android:id="@+id/tv_vip_tip"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="5dp"
+            android:ellipsize="end"
+            android:maxLines="1"
+            android:paddingStart="10dp"
+            android:paddingEnd="10dp"
+            android:textColor="@color/color_cc622200"
+            android:textSize="@dimen/sp_12"
+            app:layout_constraintBottom_toBottomOf="@+id/view_vip_info_bg"
+            app:layout_constraintLeft_toLeftOf="@+id/view_vip_info_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_vip_info_bg"
+            app:layout_constraintTop_toBottomOf="@+id/tv_vip_title"
+            tools:text="双十二特惠,多重好礼!" />
+
+
+
+        <ImageView
+            android:id="@+id/iv_free_card_tag_bg"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:visibility="gone"
-            app:constraint_referenced_ids="view_vip_star,tv_validity,tv_validity_start"
-            tools:visibility="visible" />
+            android:layout_marginEnd="3dp"
+            android:src="@drawable/bg_mine_free_card_info_tag"
+            app:layout_constraintBottom_toBottomOf="@+id/view_free_card_info_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_free_card_info_bg"
+            app:layout_constraintTop_toTopOf="@+id/view_free_card_info_bg" />
 
         <TextView
-            android:id="@+id/tv_vip_tip"
+            android:id="@+id/tv_free_card_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:drawablePadding="5dp"
-            android:paddingStart="18dp"
-            android:text="会员已过期"
-            android:textColor="@color/color_502c0c"
+            android:drawableEnd="@drawable/icon_mine_free_card_tip_arrow"
+            android:drawablePadding="2dp"
+            android:paddingStart="10dp"
+            android:text="开通畅学卡"
+            android:textColor="@color/color_006eb0"
             android:textSize="@dimen/sp_14"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="@+id/im_vip"
-            app:layout_constraintLeft_toLeftOf="@+id/view_vip_bg"
-            app:layout_constraintTop_toTopOf="@+id/im_vip"
-            tools:visibility="gone" />
+            android:textStyle="bold"
+            app:layout_constraintBottom_toTopOf="@+id/tv_free_card_tip"
+            app:layout_constraintLeft_toLeftOf="@+id/view_free_card_info_bg"
+            app:layout_constraintTop_toTopOf="@+id/view_free_card_info_bg"
+            app:layout_constraintVertical_chainStyle="packed" />
 
-        <ImageView
-            android:id="@+id/im_vip"
-            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_constraintRight_toRightOf="@+id/view_vip_bg"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_bg" />
 
+        <TextView
+            android:id="@+id/tv_free_card_tip"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="5dp"
+            android:ellipsize="end"
+            android:maxLines="1"
+            android:paddingStart="10dp"
+            android:paddingEnd="10dp"
+            android:textColor="@color/color_cc005ba2"
+            android:textSize="@dimen/sp_12"
+            app:layout_constraintBottom_toBottomOf="@+id/view_free_card_info_bg"
+            app:layout_constraintLeft_toLeftOf="@+id/view_free_card_info_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_free_card_info_bg"
+            app:layout_constraintTop_toBottomOf="@+id/tv_free_card_title"
+            tools:text="约课低至75折!" />
 
         <LinearLayout
             android:id="@+id/ll_number"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/dp_100"
+            android:layout_height="@dimen/dp_80"
             android:layout_marginLeft="@dimen/dp_12"
-            android:layout_marginTop="@dimen/dp_49"
+            android:layout_marginTop="@dimen/dp_12"
             android:layout_marginRight="@dimen/dp_12"
             android:background="@drawable/bg_white_10dp"
             android:orientation="horizontal"
             app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toTopOf="@+id/view_vip_bg">
+            app:layout_constraintTop_toBottomOf="@+id/view_vip_info_bg">
 
             <LinearLayout
                 android:id="@+id/ll_finished_class"
@@ -626,9 +653,9 @@
             android:layout_marginLeft="@dimen/dp_12"
             android:layout_marginTop="@dimen/dp_10"
             android:layout_marginRight="@dimen/dp_12"
+            android:background="@drawable/bg_white_10dp"
             android:paddingTop="10dp"
             android:paddingBottom="10dp"
-            android:background="@drawable/bg_white_10dp"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/view_serve_tools">
 
@@ -687,9 +714,9 @@
             android:layout_marginLeft="@dimen/dp_12"
             android:layout_marginTop="@dimen/dp_10"
             android:layout_marginRight="@dimen/dp_12"
-            android:paddingBottom="10dp"
-            android:paddingTop="10dp"
             android:background="@drawable/bg_white_10dp"
+            android:paddingTop="10dp"
+            android:paddingBottom="10dp"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/cs_menu">
 
@@ -787,11 +814,11 @@
 
 
             <androidx.constraintlayout.widget.Group
-                android:visibility="gone"
                 android:id="@+id/group_customer"
-                app:constraint_referenced_ids="iv_customer_arrow,tv_customer"
                 android:layout_width="wrap_content"
-                android:layout_height="wrap_content"/>
+                android:layout_height="wrap_content"
+                android:visibility="gone"
+                app:constraint_referenced_ids="iv_customer_arrow,tv_customer" />
 
         </androidx.constraintlayout.widget.ConstraintLayout>
     </androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -76,6 +76,33 @@ public class StudentUserInfo implements Serializable {
     private String imCustomerId;
     private int customerServiceNum;
     private String userType;
+    private boolean discountCardFlag;
+    private String discountStartTime;
+    private String discountEndTime;
+
+    public String getDiscountStartTime() {
+        return discountStartTime;
+    }
+
+    public void setDiscountStartTime(String discountStartTime) {
+        this.discountStartTime = discountStartTime;
+    }
+
+    public String getDiscountEndTime() {
+        return discountEndTime;
+    }
+
+    public void setDiscountEndTime(String discountEndTime) {
+        this.discountEndTime = discountEndTime;
+    }
+
+    public boolean isDiscountCardFlag() {
+        return discountCardFlag;
+    }
+
+    public void setDiscountCardFlag(boolean discountCardFlag) {
+        this.discountCardFlag = discountCardFlag;
+    }
 
     public String getSubjectId() {
         return subjectId;