Browse Source

修改机构端我的页面专辑信息显示规则

Pq 2 months ago
parent
commit
be4cf87171

+ 3 - 0
institution/src/main/java/com/cooleshow/institution/stu/contract/MineContract.java

@@ -2,6 +2,7 @@ package com.cooleshow.institution.stu.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.institution.stu.bean.CountOfUnreadBean;
+import com.cooleshow.usercenter.bean.JGAlbumInfoBean;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 
 import java.util.List;
@@ -18,5 +19,7 @@ public interface MineContract {
 
         void updateUserCustomerServiceSuccess(String data);
 
+        void queryUserAlbumInfoSuccess(JGAlbumInfoBean data);
+
     }
 }

+ 12 - 0
institution/src/main/java/com/cooleshow/institution/stu/presenter/MinePresenter.java

@@ -6,6 +6,7 @@ import com.cooleshow.institution.stu.api.APIService;
 import com.cooleshow.institution.stu.bean.CountOfUnreadBean;
 import com.cooleshow.institution.stu.contract.MainContract;
 import com.cooleshow.institution.stu.contract.MineContract;
+import com.cooleshow.usercenter.bean.JGAlbumInfoBean;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.data.api.UserApi;
 
@@ -26,6 +27,17 @@ public class MinePresenter extends BasePresenter<MineContract.MineContractView>
         });
     }
 
+    public void queryAlbumInfo() {
+        addSubscribe(create(UserApi.class).queryAlbumInfo(), new BaseObserver<JGAlbumInfoBean>(getView()) {
+            @Override
+            protected void onSuccess(JGAlbumInfoBean data) {
+                if (getView() != null) {
+                    getView().queryUserAlbumInfoSuccess(data);
+                }
+            }
+        });
+    }
+
     public void queryCountOfUnread() {
 
         addSubscribe(create(APIService.class).queryCountOfUnread(), new BaseObserver<List<CountOfUnreadBean>>(getView()) {

+ 23 - 0
institution/src/main/java/com/cooleshow/institution/stu/ui/main/MineFragment.java

@@ -29,6 +29,7 @@ import com.cooleshow.institution.stu.constants.JGWebStartHelper;
 import com.cooleshow.institution.stu.contract.MineContract;
 import com.cooleshow.institution.stu.databinding.FgMineLayoutBinding;
 import com.cooleshow.institution.stu.presenter.MinePresenter;
+import com.cooleshow.usercenter.bean.JGAlbumInfoBean;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 
 import java.util.ArrayList;
@@ -57,6 +58,7 @@ public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePrese
     @Override
     protected void initView(View rootView) {
         Utils.setHeadView(mViewBinding.viewStatusBar, getContext(), 0);
+        UiUtils.setTextMarquee(mViewBinding.tvTrainToolsTitle);
     }
 
     @Override
@@ -145,6 +147,7 @@ public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePrese
     public void onResume() {
         super.onResume();
         presenter.queryCountOfUnread();
+        presenter.queryAlbumInfo();
     }
 
     public void refreshUserInfo(StudentUserInfo data) {
@@ -271,6 +274,26 @@ public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePrese
         }
     }
 
+    @Override
+    public void queryUserAlbumInfoSuccess(JGAlbumInfoBean data) {
+        if (isDetached()) {
+            return;
+        }
+        if (mViewBinding != null && mViewBinding.tvTrainToolsTitle != null) {
+            data.handleTipLogic();
+            mViewBinding.tvGoOpen.setText(data.getOpenText());
+            mViewBinding.tvTrainToolsTitle.setText(data.getShowTitle());
+            mViewBinding.tvTrainToolsTip.setText(data.getShowTip());
+            String timeStr = data.getShowTime();
+            if (!TextUtils.isEmpty(timeStr)) {
+                mViewBinding.tvTrainTimeTip.setVisibility(View.VISIBLE);
+                mViewBinding.tvTrainTimeTip.setText(timeStr);
+            } else {
+                mViewBinding.tvTrainTimeTip.setVisibility(View.GONE);
+            }
+        }
+    }
+
     private void openCustomerService() {
         ChatHelper.getInstance().goChat(customerId, "");
     }

BIN
institution/src/main/res/drawable-xhdpi/jg_bg_mine_open_vip.png


BIN
institution/src/main/res/drawable-xxhdpi/jg_bg_mine_open_vip.png


+ 55 - 12
institution/src/main/res/layout/fg_mine_layout.xml

@@ -190,11 +190,11 @@
         </FrameLayout>
 
         <ImageView
-            android:visibility="gone"
             android:id="@+id/iv_vip_tag"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:src="@drawable/jg_icon_vip_no_open"
+            android:visibility="gone"
             app:layout_constraintBottom_toBottomOf="@+id/view_avatar_bottom_point"
             app:layout_constraintLeft_toLeftOf="@+id/view_avatar_bottom_point"
             app:layout_constraintRight_toRightOf="@+id/view_avatar_bottom_point"
@@ -232,22 +232,58 @@
                 android:layout_height="wrap_content"
                 android:layout_marginStart="12dp"
                 android:src="@drawable/icon_train_tools_title"
+                android:visibility="gone"
+                app:layout_constraintBottom_toTopOf="@+id/tv_train_tools_tip"
+                app:layout_constraintLeft_toRightOf="@+id/iv_tools_tag1"
+                app:layout_constraintTop_toTopOf="@+id/iv_train_tools_bg"
+                app:layout_constraintVertical_chainStyle="packed" />
+
+            <TextView
+                android:id="@+id/tv_train_tools_title"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="10dp"
+                android:layout_marginEnd="9dp"
+                android:ellipsize="marquee"
+                android:includeFontPadding="false"
+                android:singleLine="true"
+                android:text="训练工具"
+                android:textColor="@color/color_131415"
+                android:textSize="@dimen/sp_14"
+                android:textStyle="bold"
                 app:layout_constraintBottom_toTopOf="@+id/tv_train_tools_tip"
                 app:layout_constraintLeft_toRightOf="@+id/iv_tools_tag1"
+                app:layout_constraintRight_toLeftOf="@+id/tv_go_open"
                 app:layout_constraintTop_toTopOf="@+id/iv_train_tools_bg"
                 app:layout_constraintVertical_chainStyle="packed" />
 
+
             <TextView
                 android:id="@+id/tv_train_tools_tip"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="5dp"
+                android:layout_marginTop="3dp"
                 android:includeFontPadding="false"
                 android:text="曲目训练教程"
+                android:textColor="@color/color_80000000"
                 android:textSize="@dimen/sp_12"
                 app:layout_constraintBottom_toBottomOf="@+id/iv_train_tools_bg"
-                app:layout_constraintLeft_toLeftOf="@+id/iv_tools_tag2"
-                app:layout_constraintTop_toBottomOf="@+id/iv_tools_tag2" />
+                app:layout_constraintLeft_toLeftOf="@+id/tv_train_tools_title"
+                app:layout_constraintTop_toBottomOf="@+id/tv_train_tools_title" />
+
+            <TextView
+                android:visibility="gone"
+                android:id="@+id/tv_train_time_tip"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="1dp"
+                android:includeFontPadding="false"
+                android:paddingStart="4dp"
+                android:textColor="@color/color_fe2451"
+                android:textSize="@dimen/sp_12"
+                app:layout_constraintBaseline_toBaselineOf="@+id/tv_train_tools_tip"
+                app:layout_constraintLeft_toRightOf="@+id/tv_train_tools_tip"
+                tools:text="2025-11-07" />
 
             <ImageView
                 android:layout_width="wrap_content"
@@ -258,11 +294,18 @@
                 app:layout_constraintRight_toRightOf="@+id/iv_train_tools_bg"
                 app:layout_constraintTop_toTopOf="@+id/iv_train_tools_bg" />
 
-            <ImageView
+            <TextView
+                android:id="@+id/tv_go_open"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginEnd="13dp"
-                android:src="@drawable/icon_mine_train_tools_look"
+                android:background="@drawable/jg_bg_mine_open_vip"
+                android:gravity="center"
+                android:text="去开通"
+                android:textColor="@color/white"
+                android:includeFontPadding="false"
+                android:textSize="@dimen/sp_13"
+                android:textStyle="bold"
                 app:layout_constraintBottom_toBottomOf="@+id/iv_train_tools_bg"
                 app:layout_constraintRight_toRightOf="@+id/iv_train_tools_bg"
                 app:layout_constraintTop_toTopOf="@+id/iv_train_tools_bg" />
@@ -445,11 +488,11 @@
 
         <View
             android:id="@+id/view_point2"
+            android:layout_width="1px"
+            android:layout_height="1px"
             android:layout_marginBottom="1dp"
             app:layout_constraintBottom_toBottomOf="@+id/cs_tools"
-            app:layout_constraintLeft_toLeftOf="parent"
-            android:layout_width="1px"
-            android:layout_height="1px"/>
+            app:layout_constraintLeft_toLeftOf="parent" />
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/cs_common_function"
@@ -685,11 +728,11 @@
 
 
             <androidx.constraintlayout.widget.Group
-                android:visibility="gone"
                 android:id="@+id/group_customer"
-                app:constraint_referenced_ids="iv_customer_arrow,tv_customer,view_line12"
                 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,view_line12" />
         </androidx.constraintlayout.widget.ConstraintLayout>
     </androidx.constraintlayout.widget.ConstraintLayout>
 </ScrollView>

+ 111 - 0
usercenter/src/main/java/com/cooleshow/usercenter/bean/JGAlbumInfoBean.java

@@ -0,0 +1,111 @@
+package com.cooleshow.usercenter.bean;
+
+import android.text.TextUtils;
+
+import com.cooleshow.base.utils.DateUtil;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Author by pq, Date on 2025/3/31.
+ */
+public class JGAlbumInfoBean {
+    private String tenantAlbumName;
+    private String endTime;
+
+    private String showTitle;
+    private String showTip;
+    private String showTime;
+    private boolean isOpen;
+
+    public boolean isOpen() {
+        return isOpen;
+    }
+
+    public void setOpen(boolean open) {
+        isOpen = open;
+    }
+
+    public String getShowTitle() {
+        return showTitle;
+    }
+
+    public void setShowTitle(String showTitle) {
+        this.showTitle = showTitle;
+    }
+
+    public String getShowTip() {
+        return showTip;
+    }
+
+    public void setShowTip(String showTip) {
+        this.showTip = showTip;
+    }
+
+    public String getShowTime() {
+        return showTime;
+    }
+
+    public void setShowTime(String showTime) {
+        this.showTime = showTime;
+    }
+
+    public String getTenantAlbumName() {
+        return tenantAlbumName;
+    }
+
+    public void setTenantAlbumName(String tenantAlbumName) {
+        this.tenantAlbumName = tenantAlbumName;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getOpenText() {
+        return isOpen ? "去续费" : "去开通";
+    }
+
+    public void handleTipLogic() {
+        if (!TextUtils.isEmpty(getEndTime())) {
+            try {
+                Date date = DateUtil.str2Date(getEndTime());
+                boolean after = DateUtil.isAfter(date,DateUtil.now());
+                if (after) {
+                    //生效
+                    String s = DateUtil.date2Str(date, "yyyy-MM-dd");
+                    setTip(true, getTenantAlbumName(), "有效期至", s);
+                    return;
+                }
+                //过期
+                long dayDiffInt = DateUtil.getDayDiffInt(date, DateUtil.now());
+                if (dayDiffInt <= 7) {
+                    String time = String.format(Locale.getDefault(), "%d天", dayDiffInt);
+                    setTip(true, getTenantAlbumName(), "已过期", time);
+                    return;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            setDefaultTip();
+        } else {
+            setDefaultTip();
+        }
+    }
+
+    private void setDefaultTip() {
+        setTip(false, "训练教程", "您暂未开通训练教程", null);
+    }
+
+    private void setTip(boolean isOpen, String title, String tip, String time) {
+        setOpen(isOpen);
+        setShowTitle(title);
+        setShowTip(tip);
+        setShowTime(time);
+    }
+}

+ 10 - 0
usercenter/src/main/java/com/cooleshow/usercenter/data/api/UserApi.kt

@@ -8,6 +8,7 @@ import com.cooleshow.base.data.net.BaseResponse
 import com.cooleshow.usercenter.bean.AuthQrcodeResultBean
 import com.cooleshow.usercenter.bean.FeedBackRecordListBean
 import com.cooleshow.usercenter.bean.FeedBackTypeBean
+import com.cooleshow.usercenter.bean.JGAlbumInfoBean
 import com.cooleshow.usercenter.bean.StudentUserInfo
 import com.cooleshow.usercenter.bean.TeacherUserInfo
 import com.cooleshow.usercenter.bean.UserLoginInfo
@@ -282,4 +283,13 @@ interface UserApi {
         @Url url: String?,
         @Body body: RequestBody?
     ): Observable<BaseResponse<AuthQrcodeResultBean?>?>?
+
+
+    /**
+     * 查询机构端学院开通的专辑信息
+     *
+     * @return
+     */
+    @GET(BaseConstant.STUDENT_GROUP + "userTenantAlbumRecord/lastRecord")
+    fun queryAlbumInfo(): Observable<BaseResponse<JGAlbumInfoBean?>?>?
 }