Browse Source

增加机构端首页激活码提示弹窗流程

Pq 1 year ago
parent
commit
71245bec18
21 changed files with 484 additions and 0 deletions
  1. 9 0
      institution/src/main/java/com/cooleshow/institution/stu/api/APIService.java
  2. 250 0
      institution/src/main/java/com/cooleshow/institution/stu/bean/ActivationCodeNumBean.java
  3. 8 0
      institution/src/main/java/com/cooleshow/institution/stu/constants/JGWebStartHelper.java
  4. 4 0
      institution/src/main/java/com/cooleshow/institution/stu/contract/MainContract.java
  5. 24 0
      institution/src/main/java/com/cooleshow/institution/stu/presenter/MainPresenter.java
  6. 27 0
      institution/src/main/java/com/cooleshow/institution/stu/ui/main/MainActivity.java
  7. 51 0
      institution/src/main/java/com/cooleshow/institution/stu/widget/ActivationCodeTipDialog.java
  8. BIN
      institution/src/main/res/drawable-xhdpi/jg_activation_code_title.png
  9. BIN
      institution/src/main/res/drawable-xhdpi/jg_activition_code_bottom_bg.png
  10. BIN
      institution/src/main/res/drawable-xhdpi/jg_activition_code_center_bg.png
  11. BIN
      institution/src/main/res/drawable-xhdpi/jg_bg_activation_code_tip.png
  12. BIN
      institution/src/main/res/drawable-xhdpi/jg_close_dialog.png
  13. BIN
      institution/src/main/res/drawable-xxhdpi/jg_activation_code_title.png
  14. BIN
      institution/src/main/res/drawable-xxhdpi/jg_activition_code_bottom_bg.png
  15. BIN
      institution/src/main/res/drawable-xxhdpi/jg_activition_code_center_bg.png
  16. BIN
      institution/src/main/res/drawable-xxhdpi/jg_bg_activation_code_tip.png
  17. BIN
      institution/src/main/res/drawable-xxhdpi/jg_close_dialog.png
  18. 6 0
      institution/src/main/res/drawable/shape_ff3460_to_ff7b57_25dp.xml
  19. 5 0
      institution/src/main/res/drawable/shape_ffe3e3_15dp.xml
  20. 99 0
      institution/src/main/res/layout/dialog_activation_code_tip_layout.xml
  21. 1 0
      institution/src/main/res/values/colors.xml

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

@@ -1,6 +1,7 @@
 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.HomeHotMusicSheetBean;
 import com.cooleshow.institution.stu.bean.HotAlbumBean;
@@ -52,4 +53,12 @@ public interface APIService {
      */
     @POST(AUTH_GROUP + "user/submitSetDetail")
     Observable<BaseResponse<SetDetailBean>> submitSetDetail(@Body RequestBody body);
+
+    /**
+     * app首页热门专辑
+     *
+     * @return
+     */
+    @POST(STUDENT_GROUP + "tenantActivationCode/page")
+    Observable<BaseResponse<ActivationCodeNumBean>> getActivationCodeNum(@Body RequestBody body);
 }

+ 250 - 0
institution/src/main/java/com/cooleshow/institution/stu/bean/ActivationCodeNumBean.java

@@ -0,0 +1,250 @@
+package com.cooleshow.institution.stu.bean;
+
+import java.util.List;
+
+/**
+ * Author by pq, Date on 2023/9/14.
+ */
+public class ActivationCodeNumBean {
+
+    /**
+     * current : 0
+     * extra : {"activationCode":"","activationPhone":"","activationStatus":true,"activationTime":"","activationUserId":0,"activationUserName":"","activeQuantity":0,"createTime":"","id":0,"purchaseCycle":0,"purchaseQuantity":0,"sendStatus":"","tenantAlbumId":0,"tenantAlbumPurchaseId":0,"tenantId":0,"updateTime":""}
+     * limit : 0
+     * next : true
+     * pages : 0
+     * prev : true
+     * rows : [{"activationCode":"","activationPhone":"","activationStatus":true,"activationTime":"","activationUserId":0,"activationUserName":"","activeQuantity":0,"createTime":"","id":0,"purchaseCycle":0,"purchaseQuantity":0,"sendStatus":"","tenantAlbumId":0,"tenantAlbumPurchaseId":0,"tenantId":0,"updateTime":""}]
+     * total : 0
+     */
+
+    private int current;
+    private int limit;
+    private boolean next;
+    private int pages;
+    private boolean prev;
+    private int total;
+    private List<RowsBean> rows;
+
+    public int getCurrent() {
+        return current;
+    }
+
+    public void setCurrent(int current) {
+        this.current = current;
+    }
+
+    public int getLimit() {
+        return limit;
+    }
+
+    public void setLimit(int limit) {
+        this.limit = limit;
+    }
+
+    public boolean isNext() {
+        return next;
+    }
+
+    public void setNext(boolean next) {
+        this.next = next;
+    }
+
+    public int getPages() {
+        return pages;
+    }
+
+    public void setPages(int pages) {
+        this.pages = pages;
+    }
+
+    public boolean isPrev() {
+        return prev;
+    }
+
+    public void setPrev(boolean prev) {
+        this.prev = prev;
+    }
+
+    public int getTotal() {
+        return total;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+
+    public List<RowsBean> getRows() {
+        return rows;
+    }
+
+    public void setRows(List<RowsBean> rows) {
+        this.rows = rows;
+    }
+
+    public static class RowsBean {
+        /**
+         * activationCode :
+         * activationPhone :
+         * activationStatus : true
+         * activationTime :
+         * activationUserId : 0
+         * activationUserName :
+         * activeQuantity : 0
+         * createTime :
+         * id : 0
+         * purchaseCycle : 0
+         * purchaseQuantity : 0
+         * sendStatus :
+         * tenantAlbumId : 0
+         * tenantAlbumPurchaseId : 0
+         * tenantId : 0
+         * updateTime :
+         */
+
+        private String activationCode;
+        private String activationPhone;
+        private boolean activationStatus;
+        private String activationTime;
+        private int activationUserId;
+        private String activationUserName;
+        private int activeQuantity;
+        private String createTime;
+        private int id;
+        private int purchaseCycle;
+        private int purchaseQuantity;
+        private String sendStatus;
+        private int tenantAlbumId;
+        private int tenantAlbumPurchaseId;
+        private int tenantId;
+        private String updateTime;
+
+        public String getActivationCode() {
+            return activationCode;
+        }
+
+        public void setActivationCode(String activationCode) {
+            this.activationCode = activationCode;
+        }
+
+        public String getActivationPhone() {
+            return activationPhone;
+        }
+
+        public void setActivationPhone(String activationPhone) {
+            this.activationPhone = activationPhone;
+        }
+
+        public boolean isActivationStatus() {
+            return activationStatus;
+        }
+
+        public void setActivationStatus(boolean activationStatus) {
+            this.activationStatus = activationStatus;
+        }
+
+        public String getActivationTime() {
+            return activationTime;
+        }
+
+        public void setActivationTime(String activationTime) {
+            this.activationTime = activationTime;
+        }
+
+        public int getActivationUserId() {
+            return activationUserId;
+        }
+
+        public void setActivationUserId(int activationUserId) {
+            this.activationUserId = activationUserId;
+        }
+
+        public String getActivationUserName() {
+            return activationUserName;
+        }
+
+        public void setActivationUserName(String activationUserName) {
+            this.activationUserName = activationUserName;
+        }
+
+        public int getActiveQuantity() {
+            return activeQuantity;
+        }
+
+        public void setActiveQuantity(int activeQuantity) {
+            this.activeQuantity = activeQuantity;
+        }
+
+        public String getCreateTime() {
+            return createTime;
+        }
+
+        public void setCreateTime(String createTime) {
+            this.createTime = createTime;
+        }
+
+        public int getId() {
+            return id;
+        }
+
+        public void setId(int id) {
+            this.id = id;
+        }
+
+        public int getPurchaseCycle() {
+            return purchaseCycle;
+        }
+
+        public void setPurchaseCycle(int purchaseCycle) {
+            this.purchaseCycle = purchaseCycle;
+        }
+
+        public int getPurchaseQuantity() {
+            return purchaseQuantity;
+        }
+
+        public void setPurchaseQuantity(int purchaseQuantity) {
+            this.purchaseQuantity = purchaseQuantity;
+        }
+
+        public String getSendStatus() {
+            return sendStatus;
+        }
+
+        public void setSendStatus(String sendStatus) {
+            this.sendStatus = sendStatus;
+        }
+
+        public int getTenantAlbumId() {
+            return tenantAlbumId;
+        }
+
+        public void setTenantAlbumId(int tenantAlbumId) {
+            this.tenantAlbumId = tenantAlbumId;
+        }
+
+        public int getTenantAlbumPurchaseId() {
+            return tenantAlbumPurchaseId;
+        }
+
+        public void setTenantAlbumPurchaseId(int tenantAlbumPurchaseId) {
+            this.tenantAlbumPurchaseId = tenantAlbumPurchaseId;
+        }
+
+        public int getTenantId() {
+            return tenantId;
+        }
+
+        public void setTenantId(int tenantId) {
+            this.tenantId = tenantId;
+        }
+
+        public String getUpdateTime() {
+            return updateTime;
+        }
+
+        public void setUpdateTime(String updateTime) {
+            this.updateTime = updateTime;
+        }
+    }
+}

+ 8 - 0
institution/src/main/java/com/cooleshow/institution/stu/constants/JGWebStartHelper.java

@@ -71,4 +71,12 @@ public class JGWebStartHelper {
                 .withString(WebConstants.WEB_URL, JGWebConstants.STUDENT_MUSIC_ALBUM)
                 .navigation();
     }
+    public static void startActivationCodePage() {
+        //热门专辑
+        ARouter.getInstance()
+                .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                .withString(WebConstants.WEB_URL, JGWebConstants.STUDENT_MUSIC_ALBUM)
+                .navigation();
+    }
+
 }

+ 4 - 0
institution/src/main/java/com/cooleshow/institution/stu/contract/MainContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.institution.stu.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.institution.stu.bean.ActivationCodeNumBean;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 
 /**
@@ -10,5 +11,8 @@ public interface MainContract {
     public interface MainContractView extends BaseView{
 
         void queryUserInfoSuccess(StudentUserInfo data);
+
+        void getActivationCodeNumSuccess(ActivationCodeNumBean data);
+
     }
 }

+ 24 - 0
institution/src/main/java/com/cooleshow/institution/stu/presenter/MainPresenter.java

@@ -2,11 +2,16 @@ package com.cooleshow.institution.stu.presenter;
 
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
 import com.cooleshow.institution.stu.api.APIService;
+import com.cooleshow.institution.stu.bean.ActivationCodeNumBean;
 import com.cooleshow.institution.stu.contract.MainContract;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.data.api.UserApi;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 /**
  * Author by pq, Date on 2023/9/12.
  */
@@ -21,4 +26,23 @@ public class MainPresenter extends BasePresenter<MainContract.MainContractView>
             }
         });
     }
+
+    public void queryActivationCodeNum() {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("activationStatus", false);
+            jsonObject.put("page", 1);
+            jsonObject.put("rows", Integer.MAX_VALUE);
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+        addSubscribe(create(APIService.class).getActivationCodeNum(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<ActivationCodeNumBean>(getView()) {
+            @Override
+            protected void onSuccess(ActivationCodeNumBean data) {
+                if (getView() != null) {
+                    getView().getActivationCodeNumSuccess(data);
+                }
+            }
+        });
+    }
 }

+ 27 - 0
institution/src/main/java/com/cooleshow/institution/stu/ui/main/MainActivity.java

@@ -24,9 +24,11 @@ import com.cooleshow.chatmodule.ui.ChatFragment;
 import com.cooleshow.chatmodule.utils.helper.IMThemManager;
 import com.cooleshow.institution.stu.R;
 import com.cooleshow.institution.stu.adapter.HomePageAdapter;
+import com.cooleshow.institution.stu.bean.ActivationCodeNumBean;
 import com.cooleshow.institution.stu.contract.MainContract;
 import com.cooleshow.institution.stu.databinding.ActivityInstitutionMainLayoutBinding;
 import com.cooleshow.institution.stu.presenter.MainPresenter;
+import com.cooleshow.institution.stu.widget.ActivationCodeTipDialog;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.tbruyelle.rxpermissions3.RxPermissions;
@@ -51,6 +53,7 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
     private ChatFragment mChatFragment;
     private HomeFragment mHomeFragment;
     private boolean isNeedSetPushId = true;
+    private boolean isShowActivationCodeTip = true;
     private IUnReadMessageObserver mUnReadMessageObserver = new IUnReadMessageObserver() {
         @Override
         public void onTotalUnreadMessageCountChanged(long totalUnreadCount) {
@@ -62,6 +65,7 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarDarkMode(this);
         EventBus.getDefault().register(this);
     }
 
@@ -157,11 +161,18 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
         presenter.queryUserInfo();
     }
 
+    private void showActivationCodeTipDialog(String tip) {
+        ActivationCodeTipDialog codeTipDialog = new ActivationCodeTipDialog(this);
+        codeTipDialog.show();
+        codeTipDialog.setText(tip);
+    }
+
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void loadEventBus(LoginStatusEvent event) {
         if (event != null && event.eventCode == LoginStatusConstants.LOGIN_OUT) {
             IMCenter.getInstance().logoutIM();
             isNeedSetPushId = true;
+            isShowActivationCodeTip = true;
             LogUtils.i("pq", "LoginStatusEvent:logout");
             finish();
         }
@@ -177,6 +188,22 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
         connectIM();
         bindPushId();
         refreshUserInfo(data);
+        //获取激活码信息
+        if (isShowActivationCodeTip) {
+            presenter.queryActivationCodeNum();
+        }
+    }
+
+    @Override
+    public void getActivationCodeNumSuccess(ActivationCodeNumBean data) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (data != null && data.getRows() != null && data.getRows().size() > 0) {
+            String tip = "共" + data.getRows().size() + "个";
+            showActivationCodeTipDialog(tip);
+            isShowActivationCodeTip = false;
+        }
     }
 
     private void refreshUserInfo(StudentUserInfo data) {

+ 51 - 0
institution/src/main/java/com/cooleshow/institution/stu/widget/ActivationCodeTipDialog.java

@@ -0,0 +1,51 @@
+package com.cooleshow.institution.stu.widget;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.cooleshow.institution.stu.R;
+import com.cooleshow.institution.stu.constants.JGWebStartHelper;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2023/9/14.
+ */
+public class ActivationCodeTipDialog extends Dialog {
+
+    private TextView mTvNum;
+
+    public ActivationCodeTipDialog(@NonNull Context context) {
+        super(context, com.cooleshow.base.R.style.BaseDialog);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.dialog_activation_code_tip_layout);
+        mTvNum = findViewById(R.id.tv_num);
+        findViewById(R.id.tv_confirm).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                JGWebStartHelper.startActivationCodePage();
+            }
+        });
+        ImageView iv_close = findViewById(R.id.iv_close);
+        iv_close.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismiss();
+            }
+        });
+    }
+
+    public void setText(String tip) {
+        if (mTvNum != null) {
+            mTvNum.setText(tip);
+        }
+    }
+}

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


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


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


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


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


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


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


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


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


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


+ 6 - 0
institution/src/main/res/drawable/shape_ff3460_to_ff7b57_25dp.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="#FF3460"
+        android:endColor="#FF7B57"/>
+    <corners android:radius="25dp"/>
+</shape>

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

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

+ 99 - 0
institution/src/main/res/layout/dialog_activation_code_tip_layout.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/cs_info"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+
+        <ImageView
+            android:id="@+id/iv_bg"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/jg_bg_activation_code_tip"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/jg_activation_code_title"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_bg"
+            app:layout_constraintRight_toRightOf="@+id/iv_bg"
+            app:layout_constraintTop_toTopOf="@+id/iv_bg" />
+
+        <ImageView
+            android:id="@+id/iv_center"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/jg_activition_code_center_bg"
+            app:layout_constraintBottom_toTopOf="@+id/view_point"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_bg"
+            app:layout_constraintRight_toRightOf="@+id/iv_bg" />
+
+        <ImageView
+            android:id="@+id/iv_bottom"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:src="@drawable/jg_activition_code_bottom_bg"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_bg"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_bg"
+            app:layout_constraintRight_toRightOf="@+id/iv_bg" />
+
+        <View
+            android:id="@+id/view_point"
+            android:layout_width="1px"
+            android:layout_height="1px"
+            android:layout_marginTop="20dp"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_bottom"
+            app:layout_constraintTop_toTopOf="@+id/iv_bottom" />
+
+        <TextView
+            android:id="@+id/tv_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="28dp"
+            android:background="@drawable/shape_ffe3e3_15dp"
+            android:paddingStart="16dp"
+            android:paddingTop="4dp"
+            android:paddingEnd="16dp"
+            android:paddingBottom="4dp"
+            android:textColor="@color/color_f25756"
+            android:textSize="@dimen/sp_14"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_center"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_center"
+            app:layout_constraintRight_toRightOf="@+id/iv_center"
+            tools:text="共32个" />
+
+        <TextView
+            android:id="@+id/tv_confirm"
+            android:layout_width="0dp"
+            android:layout_height="46dp"
+            android:layout_marginStart="20dp"
+            android:layout_marginEnd="20dp"
+            android:layout_marginBottom="26dp"
+            android:background="@drawable/shape_ff3460_to_ff7b57_25dp"
+            android:gravity="center"
+            android:text="去激活"
+            android:textColor="@color/white"
+            android:textSize="@dimen/sp_17"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_bottom"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_bottom"
+            app:layout_constraintRight_toRightOf="@+id/iv_bottom" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <ImageView
+        android:id="@+id/iv_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="29dp"
+        android:src="@drawable/jg_close_dialog" />
+</LinearLayout>

+ 1 - 0
institution/src/main/res/values/colors.xml

@@ -8,4 +8,5 @@
     <color name="color_fe2451">#FE2451</color>
     <color name="color_777777">#777777</color>
     <color name="color_fe2c57">#FE2C57</color>
+    <color name="color_f25756">#F25756</color>
 </resources>