Ver código fonte

添加首页领奖弹窗逻辑

Pq 2 anos atrás
pai
commit
f6930cfc85

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

@@ -149,6 +149,8 @@ public abstract class WebConstants {
     public static final String SHARE_LIVE_URL = getBaseUrlH5() + "/#/shareLiveRoom?id=%s&userId=%s";
     //实名认证协议
     public static final String CERT_PROTOCOL_URL = getBaseUrlH5() + "/#/preViewProtocol";
+    //领奖地址
+    public static final String AWARD_URL = getBaseUrlH5() + "/#/awardActivity";
 
 
 }

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

@@ -181,4 +181,14 @@ public class WebStartHelper {
                 .withString(WebConstants.WEB_URL, WebConstants.CERT_PROTOCOL_URL)
                 .navigation();
     }
+
+    /**
+     * 打开领奖地址
+     */
+    public static void startAwardPage(){
+        ARouter.getInstance()
+                .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                .withString(WebConstants.WEB_URL, WebConstants.AWARD_URL)
+                .navigation();
+    }
 }

+ 39 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/AwardTipDialog.java

@@ -0,0 +1,39 @@
+package com.cooleshow.base.widgets.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+
+import com.cooleshow.base.R;
+import com.cooleshow.base.utils.helper.WebStartHelper;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/10/10.
+ */
+public class AwardTipDialog extends Dialog {
+
+    public AwardTipDialog(@NonNull Context context) {
+        super(context,R.style.DialogStyle);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.dialog_award_tip_layout);
+        findViewById(R.id.iv_close).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismiss();
+            }
+        });
+        findViewById(R.id.view_bg).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                WebStartHelper.startAwardPage();
+            }
+        });
+    }
+}

BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_award_bg.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_close_dialog_white_round.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_award_bg.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_close_dialog_white_round.png


+ 7 - 0
BaseLibrary/src/main/res/drawable/shape_award_bt_bg.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="10dp"/>
+    <gradient android:startColor="@color/color_59e5d5"
+        android:endColor="@color/color_2dc7aa"
+        android:angle="270"/>
+</shape>

+ 85 - 0
BaseLibrary/src/main/res/layout/dialog_award_tip_layout.xml

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <View
+        android:id="@+id/view_bg"
+        android:layout_width="258dp"
+        android:layout_height="0dp"
+        android:background="@drawable/bg_white_13dp"
+        app:layout_constraintBottom_toBottomOf="@+id/view_help_line_bottom"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        android:id="@+id/iv_top_bg"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="23dp"
+        android:src="@drawable/icon_award_bg"
+        app:layout_constraintLeft_toLeftOf="@+id/view_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_bg" />
+
+    <TextView
+        android:id="@+id/tv_tip_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="21dp"
+        android:text="您有待领取奖品"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_18"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="@+id/view_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_bg"
+        app:layout_constraintTop_toBottomOf="@+id/iv_top_bg" />
+
+    <TextView
+        android:id="@+id/tv_tip_des"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:text="您还有奖品未领取哦!"
+        android:textColor="@color/color_666666"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_tip_title"
+        app:layout_constraintRight_toRightOf="@+id/tv_tip_title"
+        app:layout_constraintTop_toBottomOf="@+id/tv_tip_title" />
+
+    <TextView
+        android:id="@+id/tv_award"
+        android:layout_width="169dp"
+        android:layout_height="39dp"
+        android:layout_marginTop="34dp"
+        android:background="@drawable/shape_award_bt_bg"
+        android:gravity="center"
+        android:text="立即领取"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_16"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_tip_des"
+        app:layout_constraintRight_toRightOf="@+id/tv_tip_des"
+        app:layout_constraintTop_toBottomOf="@+id/tv_tip_des" />
+
+    <View
+        android:id="@+id/view_help_line_bottom"
+        android:layout_width="1px"
+        android:layout_height="1px"
+        android:layout_marginTop="38dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_award" />
+
+
+    <ImageView
+        android:padding="30dp"
+        android:id="@+id/iv_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="17dp"
+        android:src="@drawable/icon_close_dialog_white_round"
+        app:layout_constraintLeft_toLeftOf="@+id/view_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_bg"
+        app:layout_constraintTop_toBottomOf="@+id/view_bg" />
+</androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -10,6 +10,7 @@ import com.cooleshow.base.bean.QueryParamsConfigBean;
 import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.student.bean.AddressBean;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.AwardStatusBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
 import com.cooleshow.student.bean.CourseTableDataBean;
 import com.cooleshow.student.bean.FriendInfoBean;
@@ -524,4 +525,12 @@ public interface APIService {
      */
     @GET(STUDENT_GROUP + "teacher/starOrUnStar")
     Observable<BaseResponse<Object>> followTeacher(@Query("starStatus") int starStatus, @Query("userId") String userId);
+
+    /**
+     * 获取领奖状态
+     *
+     * @return
+     */
+    @GET(STUDENT_GROUP + "activity/checkReceiveReward")
+    Observable<BaseResponse<AwardStatusBean>> getAwardStatus();
 }

+ 14 - 0
student/src/main/java/com/cooleshow/student/bean/AwardStatusBean.java

@@ -0,0 +1,14 @@
+package com.cooleshow.student.bean;
+
+import java.io.Serializable;
+
+/**
+ * Author by pq, Date on 2022/10/10.
+ */
+public class AwardStatusBean implements Serializable {
+
+    /**
+     * check :
+     */
+    public String check;//1可领取 0无
+}

+ 8 - 0
student/src/main/java/com/cooleshow/student/constants/CommonConfig.java

@@ -1,8 +1,16 @@
 package com.cooleshow.student.constants;
 
+import com.cooleshow.base.utils.SPUtils;
+import com.cooleshow.usercenter.helper.UserHelper;
+
 /**
  * Author by pq, Date on 2022/9/9.
  */
 public class CommonConfig {
     public static boolean isShowHomeFlashPage = true;//是否显示首页闪页弹窗,重新启动以及重新登录需要弹
+
+
+    public static boolean getTodayShowAwardIsCompleted() {
+        return UserHelper.getShowAwardDialogTipIsCompleted();
+    }
 }

+ 3 - 0
student/src/main/java/com/cooleshow/student/contract/HomeContract.java

@@ -2,6 +2,7 @@ package com.cooleshow.student.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.AwardStatusBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
 import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeHotMusicSheetBean;
@@ -47,6 +48,8 @@ public interface HomeContract {
         void getHotNewsError(int page);
 
         void followTeacherSuccess();
+
+        void getAwardStatus(AwardStatusBean awardStatusBean);
     }
 
     interface Presenter {

+ 17 - 0
student/src/main/java/com/cooleshow/student/presenter/main/HomePresenter.java

@@ -10,6 +10,7 @@ import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.base.utils.RequestBodyUtil;
 import com.cooleshow.student.api.APIService;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.AwardStatusBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
 import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeHotMusicSheetBean;
@@ -20,6 +21,7 @@ import com.cooleshow.student.bean.HotAlbumBean;
 import com.cooleshow.student.bean.RecommendTalentListBean;
 import com.cooleshow.student.bean.StudentUserInfo;
 import com.cooleshow.student.bean.TempLiveTeacherListBean;
+import com.cooleshow.student.constants.CommonConfig;
 import com.cooleshow.student.contract.HomeContract;
 
 import org.json.JSONException;
@@ -413,4 +415,19 @@ public class HomePresenter extends BasePresenter<HomeContract.HomeView> implemen
             }
         });
     }
+
+    public void getAwardStatus() {
+        if (CommonConfig.getTodayShowAwardIsCompleted()) {
+            //如果今日目标账号已经显示过就不再请求接口了
+            return;
+        }
+        addSubscribe(create(APIService.class).getAwardStatus(), new BaseObserver<AwardStatusBean>(getView()) {
+            @Override
+            protected void onSuccess(AwardStatusBean data) {
+                if (null != getView()) {
+                    getView().getAwardStatus(data);
+                }
+            }
+        });
+    }
 }

+ 6 - 0
student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java

@@ -42,6 +42,7 @@ import com.cooleshow.student.adapter.HomeTeacherStyleAdapter;
 import com.cooleshow.student.adapter.HomeVideoCourseAdapter;
 import com.cooleshow.student.adapter.HomeWonderfulInfoAdapter;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.AwardStatusBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
 import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeHotMusicSheetBean;
@@ -645,4 +646,9 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
     public void followTeacherSuccess() {
 
     }
+
+    @Override
+    public void getAwardStatus(AwardStatusBean awardStatusBean) {
+
+    }
 }

+ 24 - 0
student/src/main/java/com/cooleshow/student/ui/main/NewHomeFragment.java

@@ -24,6 +24,7 @@ import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.base.widgets.CommonItemDecoration;
+import com.cooleshow.base.widgets.dialog.AwardTipDialog;
 import com.cooleshow.student.R;
 import com.cooleshow.student.adapter.HomeBottomPageAdapter;
 import com.cooleshow.student.adapter.HomeGoodMusicSheetAdapter;
@@ -35,6 +36,7 @@ import com.cooleshow.student.adapter.HomeTalentStyleAdapter;
 import com.cooleshow.student.adapter.HomeVideoCourseAdapter;
 import com.cooleshow.student.adapter.NewHomeVideoCourseAdapter;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.AwardStatusBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
 import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeHotMusicSheetBean;
@@ -55,6 +57,7 @@ import com.cooleshow.student.widgets.AppBarLayoutStateChangeListener;
 import com.cooleshow.student.widgets.DialogUtils;
 import com.cooleshow.student.widgets.HomeHotAlbumDecoration;
 import com.cooleshow.student.widgets.HomeHotMusicSheetItemDecoration;
+import com.cooleshow.usercenter.helper.UserHelper;
 import com.google.android.material.appbar.AppBarLayout;
 import com.scwang.smart.refresh.layout.SmartRefreshLayout;
 import com.youth.banner.Banner;
@@ -388,6 +391,8 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
             presenter.userAccountPage();
             //获取热门曲目
             presenter.getHotMusicSheetList();
+            //获取领奖状态
+            presenter.getAwardStatus();
         }
     }
 
@@ -695,6 +700,25 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
     }
 
     @Override
+    public void getAwardStatus(AwardStatusBean awardStatusBean) {
+        if (isDetached()) {
+            return;
+        }
+        if (awardStatusBean != null && TextUtils.equals(awardStatusBean.check, "1")) {
+            showAwardTipDialog();
+        }
+    }
+
+    private void showAwardTipDialog() {
+        if (CommonConfig.getTodayShowAwardIsCompleted()) {
+            return;
+        }
+        AwardTipDialog awardTipDialog = new AwardTipDialog(getContext());
+        awardTipDialog.show();
+        UserHelper.setShowAwardDialogTipCompleted();
+    }
+
+    @Override
     public void onClick(View v) {
         int id = v.getId();
 

+ 23 - 1
usercenter/src/main/java/com/cooleshow/usercenter/helper/UserHelper.java

@@ -5,6 +5,7 @@ import android.text.TextUtils;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.data.net.CommonParamsHelper;
 import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.utils.DateUtil;
 import com.cooleshow.base.utils.SPUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.usercenter.R;
@@ -24,6 +25,7 @@ public class UserHelper {
     public static final String TEACHER_CERT_STATUS = "teacherCert";
     public static final String TEACHER_LIVE_FLAG_STATUS = "teacherLiveFlag";
     public static final String PRIVACY_KEY = "privacy_key";
+    public static final String AWARD_DIALOG_TIP_KEY = "award_dialog_tip_key";
 
     /**
      * 获取用户是否同意app隐私协议
@@ -179,7 +181,27 @@ public class UserHelper {
         SPUtils.getInstance().put(USER_AVATAR, "");
     }
 
-    public static void logout(){
+    /**
+     * 设置领奖弹窗提示已显示(控制每日只显示一次)
+     *
+     * @param
+     */
+    public static void setShowAwardDialogTipCompleted() {
+        String date = DateUtil.getTodayDate();
+        SPUtils.getInstance().put(AWARD_DIALOG_TIP_KEY + "_" + getUserId() + "_" + date, true);
+    }
+    /**
+     * 获取领奖弹窗提示是否已显示(控制每日只显示一次)
+     *
+     * @param
+     */
+    public static boolean getShowAwardDialogTipIsCompleted() {
+        String date = DateUtil.getTodayDate();
+        return SPUtils.getInstance().getBoolean(AWARD_DIALOG_TIP_KEY + "_" + getUserId() + "_" + date, false);
+    }
+
+
+    public static void logout() {
         ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
                 .navigation();
     }