瀏覽代碼

增加机构端消息盒子

Pq 1 年之前
父節點
當前提交
88211bd852

+ 12 - 0
institution/src/main/java/com/cooleshow/institution/stu/api/APIService.java

@@ -3,15 +3,19 @@ package com.cooleshow.institution.stu.api;
 import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.institution.stu.bean.ActivationCodeNumBean;
 import com.cooleshow.institution.stu.bean.AppHomeBean;
+import com.cooleshow.institution.stu.bean.CountOfUnreadBean;
 import com.cooleshow.institution.stu.bean.HomeAlbumListBean;
 import com.cooleshow.institution.stu.bean.HomeHotMusicSheetBean;
 import com.cooleshow.institution.stu.bean.HotAlbumBean;
 import com.cooleshow.institution.stu.bean.SystemMessageBean;
 import com.cooleshow.usercenter.bean.SetDetailBean;
 
+import java.util.List;
+
 import io.reactivex.rxjava3.core.Observable;
 import okhttp3.RequestBody;
 import retrofit2.http.Body;
+import retrofit2.http.GET;
 import retrofit2.http.POST;
 import retrofit2.http.Path;
 
@@ -98,4 +102,12 @@ public interface APIService {
      */
     @POST(STUDENT_GROUP + "sysMessage/setRead/{id}")
     Observable<BaseResponse<Object>> setCurrentRead(@Path("id") long id);
+
+    /**
+     * 查询用户未读消息条数
+     *
+     * @return
+     */
+    @GET(STUDENT_GROUP + "sysMessage/queryCountOfUnread")
+    Observable<BaseResponse<List<CountOfUnreadBean>>> queryCountOfUnread();
 }

+ 12 - 0
institution/src/main/java/com/cooleshow/institution/stu/bean/CountOfUnreadBean.java

@@ -0,0 +1,12 @@
+package com.cooleshow.institution.stu.bean;
+
+/**
+ * 创建日期:2022/5/25 10:15
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class CountOfUnreadBean {
+    public String key;
+    public int value;
+}

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

@@ -1,8 +1,11 @@
 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.StudentUserInfo;
 
+import java.util.List;
+
 /**
  * Author by pq, Date on 2023/9/11.
  */
@@ -10,5 +13,8 @@ public interface MineContract {
     public interface MineContractView extends BaseView{
 
         void queryUserInfoSuccess(StudentUserInfo data);
+
+        void queryCountOfUnreadSuccess(List<CountOfUnreadBean> data);
+
     }
 }

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

@@ -2,11 +2,15 @@ package com.cooleshow.institution.stu.presenter;
 
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
+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.StudentUserInfo;
 import com.cooleshow.usercenter.data.api.UserApi;
 
+import java.util.List;
+
 /**
  * Author by pq, Date on 2023/9/12.
  */
@@ -21,4 +25,16 @@ public class MinePresenter extends BasePresenter<MineContract.MineContractView>
             }
         });
     }
+
+    public void queryCountOfUnread() {
+
+        addSubscribe(create(APIService.class).queryCountOfUnread(), new BaseObserver<List<CountOfUnreadBean>>(getView()) {
+            @Override
+            protected void onSuccess(List<CountOfUnreadBean> data) {
+                if (getView() != null) {
+                    getView().queryCountOfUnreadSuccess(data);
+                }
+            }
+        });
+    }
 }

+ 43 - 1
institution/src/main/java/com/cooleshow/institution/stu/ui/main/MineFragment.java

@@ -13,16 +13,20 @@ import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.institution.stu.R;
+import com.cooleshow.institution.stu.bean.CountOfUnreadBean;
 import com.cooleshow.institution.stu.constants.JGWebConstants;
 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.StudentUserInfo;
 
+import java.util.List;
+
 /**
  * Author by pq, Date on 2023/9/13.
  */
-public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePresenter> implements View.OnClickListener {
+public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePresenter> implements View.OnClickListener, MineContract.MineContractView {
     @Override
     protected void initView(View rootView) {
         Utils.setHeadView(mViewBinding.viewStatusBar, getContext(), 0);
@@ -47,6 +51,7 @@ public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePrese
         mViewBinding.tvUserProtocol.setOnClickListener(this);
         mViewBinding.tvPrivacyPolicy.setOnClickListener(this);
         mViewBinding.tvAboutUs.setOnClickListener(this);
+        mViewBinding.imMessage.setOnClickListener(this);
     }
 
     @Override
@@ -59,6 +64,12 @@ public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePrese
         return new MinePresenter();
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+        presenter.queryCountOfUnread();
+    }
+
     public void refreshUserInfo(StudentUserInfo data) {
         if (isDetached()) {
             return;
@@ -160,5 +171,36 @@ public class MineFragment extends BaseMVPFragment<FgMineLayoutBinding, MinePrese
             JGWebStartHelper.startActivationCodePage();
             return;
         }
+        if(id == R.id.im_message){
+            ARouter.getInstance().build(RouterPath.JGCenter.MESSAGE_BOX)
+                    .navigation();
+            return;
+        }
+    }
+
+    @Override
+    public void queryUserInfoSuccess(StudentUserInfo data) {
+
+    }
+
+    @Override
+    public void queryCountOfUnreadSuccess(List<CountOfUnreadBean> data) {
+        if (isDetached()) {
+            return;
+        }
+        if (null == data || data.size() == 0) {
+            mViewBinding.viewUnreadMessage.setVisibility(View.GONE);
+            return;
+        }
+        int totalCount = 0;
+        for (CountOfUnreadBean datum : data) {
+            totalCount += datum.value;
+        }
+        if (totalCount > 0) {
+            mViewBinding.viewUnreadMessage.setText(String.valueOf(totalCount));
+            mViewBinding.viewUnreadMessage.setVisibility(View.VISIBLE);
+        } else {
+            mViewBinding.viewUnreadMessage.setVisibility(View.GONE);
+        }
     }
 }

二進制
institution/src/main/res/drawable-xhdpi/jg_icon_top_message.png


二進制
institution/src/main/res/drawable-xxhdpi/jg_icon_top_message.png


+ 0 - 5
institution/src/main/res/drawable/bg_red_ovil.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="oval">
-    <solid android:color="@color/color_ff1313" />
-</shape>

+ 6 - 0
institution/src/main/res/drawable/jg_bg_red_ovil.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#ff1036" />
+    <corners android:radius="15dp"/>
+    <stroke android:color="@color/white" android:width="1dp"/>
+</shape>

+ 34 - 1
institution/src/main/res/layout/fg_mine_layout.xml

@@ -60,12 +60,45 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="4dp"
-            android:padding="16dp"
+            android:paddingStart="7dp"
+            android:paddingEnd="14dp"
+            android:paddingTop="14dp"
+            android:paddingBottom="14dp"
             android:src="@drawable/jg_icon_setting"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/view_status_bar" />
 
 
+        <ImageView
+            android:id="@+id/im_message"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="7dp"
+            android:src="@drawable/jg_icon_top_message"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_setting"
+            app:layout_constraintRight_toLeftOf="@+id/iv_setting"
+            app:layout_constraintTop_toTopOf="@+id/iv_setting" />
+
+        <TextView
+            android:paddingEnd="6dp"
+            android:paddingStart="6dp"
+            android:textSize="@dimen/sp_10"
+            android:gravity="center"
+            tools:text="1"
+            android:textStyle="bold"
+            android:textColor="@color/white"
+            android:minWidth="@dimen/dp_15"
+            android:id="@+id/view_unread_message"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_15"
+            android:layout_marginTop="5dp"
+            android:layout_marginRight="1dp"
+            android:background="@drawable/jg_bg_red_ovil"
+            android:visibility="gone"
+            app:layout_constraintRight_toRightOf="@+id/im_message"
+            app:layout_constraintTop_toTopOf="@+id/im_message"
+            tools:visibility="visible" />
+
         <de.hdodenhof.circleimageview.CircleImageView
             android:id="@+id/iv_avatar"
             android:layout_width="68dp"

+ 1 - 1
institution/src/main/res/layout/jg_layout_message_nox_item.xml

@@ -31,7 +31,7 @@
         android:layout_width="@dimen/dp_6"
         android:layout_height="@dimen/dp_6"
         android:visibility="gone"
-        android:background="@drawable/bg_red_ovil"
+        android:background="@drawable/jg_bg_red_ovil"
         app:layout_constraintLeft_toRightOf="@+id/tv_title"
         app:layout_constraintTop_toTopOf="@+id/im_type" />