Przeglądaj źródła

会员专属开关

詹子聪 5 lat temu
rodzic
commit
fd71a175a7

+ 11 - 0
app/src/main/java/com/itant/shibei/base/ApiService.java

@@ -1,6 +1,7 @@
 package com.itant.shibei.base;
 
 import com.itant.shibei.bean.BeiUser;
+import com.itant.shibei.bean.SystemBean;
 import com.itant.shibei.bean.UpgradeBean;
 import com.itant.shibei.ui.home.coupon.CouponBean;
 import com.itant.shibei.ui.home.goods.GoodsBean;
@@ -90,4 +91,14 @@ public interface ApiService {
     @GET("/shibei/api/getUpgradeInfo")
     Observable<BaseResponse<UpgradeBean>> getUpgradeInfo();
 
+    /*----------------------------------------系统配置信息----------------------------------------*/
+    /**获取系统配置信息*/
+    @GET("/shibei/api/getSystemConfig")
+    Observable<BaseResponse<SystemBean>> getSystemConfig();
+
+    /**设置是否VIP才能用API*/
+    @POST("/shibei/api/setApiConfig")
+    Observable<BaseResponse<String>> setApiConfig(@Query("isApiVipOnly") boolean isApiVipOnly);
+
+
 }

+ 17 - 0
app/src/main/java/com/itant/shibei/bean/SystemBean.java

@@ -0,0 +1,17 @@
+package com.itant.shibei.bean;
+
+
+/**
+ * 系统控制类
+ */
+public class SystemBean {
+    /**
+     * 模板Id
+     */
+    public long id;
+
+    /**
+     * 是否有VIP限制,true表示必须要VIP才能使用特殊服务,false表示免费开放中...
+     */
+    public boolean isVipLimit;
+}

+ 15 - 0
app/src/main/java/com/itant/shibei/ui/home/tool/ISystemView.java

@@ -0,0 +1,15 @@
+package com.itant.shibei.ui.home.tool;
+
+import com.itant.shibei.bean.SystemBean;
+import com.miekir.mvp.view.IView;
+
+/**
+ *
+ *
+ * @author Miekir
+ * @date 2020/7/8 19:44
+ */
+public interface ISystemView extends IView {
+    void onGetConfigResult(boolean success, String message, SystemBean resultBean);
+    void onSetApiResult(boolean success, String message, String resultBean);
+}

+ 74 - 0
app/src/main/java/com/itant/shibei/ui/home/tool/SystemPresenter.java

@@ -0,0 +1,74 @@
+package com.itant.shibei.ui.home.tool;
+
+import android.text.TextUtils;
+
+import com.itant.shibei.base.ApiService;
+import com.itant.shibei.bean.SystemBean;
+import com.itant.shibei.net.RetrofitHelper;
+import com.miekir.mvp.presenter.BasePresenter;
+import com.miekir.network.core.base.BaseObserver;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/8/20 19:18
+ * Description:
+ */
+public class SystemPresenter extends BasePresenter<ISystemView> {
+
+    /**
+     * 获取配置信息
+     */
+    public void getSystemConfig() {
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .getSystemConfig()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<SystemBean>() {
+                    @Override
+                    public void onSuccess(SystemBean result) {
+                        if (getView() != null) {
+                            getView().onGetConfigResult(true, "", result);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        if (getView() != null) {
+                            getView().onGetConfigResult(false, TextUtils.isEmpty(errMsg) ? "获取失败:"+e.getMessage() : errMsg, null);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * 设置API是否仅对会员开放
+     */
+    public void setApiConfig(boolean isApiVipOnly) {
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .setApiConfig(isApiVipOnly)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<String>() {
+                    @Override
+                    public void onSuccess(String result) {
+                        if (getView() != null) {
+                            getView().onSetApiResult(true, "", result);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        if (getView() != null) {
+                            getView().onSetApiResult(false, TextUtils.isEmpty(errMsg) ? "设置失败:"+e.getMessage() : errMsg, null);
+                        }
+                    }
+                });
+    }
+}

+ 35 - 1
app/src/main/java/com/itant/shibei/ui/home/tool/ToolFragment.java

@@ -3,10 +3,12 @@ package com.itant.shibei.ui.home.tool;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
+import android.widget.TextView;
 
 import androidx.annotation.Nullable;
 
 import com.itant.shibei.R;
+import com.itant.shibei.bean.SystemBean;
 import com.itant.shibei.constant.ConstantUrl;
 import com.itant.shibei.manager.UserInfoManager;
 import com.itant.shibei.ui.home.tool.json.JsonActivity;
@@ -15,6 +17,7 @@ import com.itant.shibei.ui.home.tool.yiji.YijiActivity;
 import com.itant.shibei.ui.mine.login.LoginActivity;
 import com.miekir.common.utils.ActivityTool;
 import com.miekir.common.utils.ToastTool;
+import com.miekir.mvp.presenter.InjectPresenter;
 import com.miekir.mvp.view.BaseMVPFragment;
 
 /**
@@ -22,17 +25,26 @@ import com.miekir.mvp.view.BaseMVPFragment;
  * @date 2020/6/18 16:48
  * Description: 工具界面
  */
-public class ToolFragment extends BaseMVPFragment implements View.OnClickListener {
+public class ToolFragment extends BaseMVPFragment implements View.OnClickListener, ISystemView {
+
+    @InjectPresenter
+    SystemPresenter mSystemPresenter;
+
+    private TextView tv_weather;
+    private TextView tv_yiji;
 
     @Override
     public void onCreateViewFinished(@Nullable Bundle savedInstanceState) {
         super.onCreateViewFinished(savedInstanceState);
 
+        tv_weather = rootView.findViewById(R.id.tv_weather);
+        tv_yiji = rootView.findViewById(R.id.tv_yiji);
         rootView.findViewById(R.id.fl_get_json).setOnClickListener(this);
         rootView.findViewById(R.id.fl_pc_template).setOnClickListener(this);
         rootView.findViewById(R.id.fl_weather).setOnClickListener(this);
         rootView.findViewById(R.id.fl_yiji).setOnClickListener(this);
         rootView.findViewById(R.id.fl_biao_qing).setOnClickListener(this);
+        mSystemPresenter.getSystemConfig();
     }
 
     @Override
@@ -86,4 +98,26 @@ public class ToolFragment extends BaseMVPFragment implements View.OnClickListene
                 break;
         }
     }
+
+    @Override
+    public void onGetConfigResult(boolean success, String message, SystemBean resultBean) {
+        if (!success || resultBean == null) {
+            return;
+        }
+
+        String tips;
+        if (resultBean.isVipLimit) {
+            tips = getResources().getString(R.string.api_tips_vip_only);
+        } else {
+            tips = getResources().getString(R.string.api_tips_free);
+        }
+
+        tv_weather.setText(tv_weather.getText().toString() + tips);
+        tv_yiji.setText(tv_yiji.getText().toString() + tips);
+    }
+
+    @Override
+    public void onSetApiResult(boolean success, String message, String resultBean) {
+
+    }
 }

+ 57 - 1
app/src/main/java/com/itant/shibei/ui/mine/MineActivity.java

@@ -6,27 +6,39 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.CompoundButton;
+import android.widget.Switch;
 import android.widget.TextView;
 
+import androidx.annotation.Nullable;
 import androidx.appcompat.app.AlertDialog;
 
 import com.itant.shibei.R;
 import com.itant.shibei.base.BaseBeiActivity;
 import com.itant.shibei.bean.BeiUser;
+import com.itant.shibei.bean.SystemBean;
 import com.itant.shibei.constant.ConstantString;
 import com.itant.shibei.manager.UserInfoManager;
 import com.itant.shibei.tool.StringTool;
 import com.itant.shibei.tool.TimeTool;
+import com.itant.shibei.ui.home.tool.ISystemView;
+import com.itant.shibei.ui.home.tool.SystemPresenter;
 import com.itant.shibei.ui.mine.coupon.AddCouponActivity;
 import com.itant.shibei.ui.mine.goods.AddGoodsActivity;
+import com.miekir.common.utils.ToastTool;
 import com.miekir.common.utils.ViewTool;
+import com.miekir.mvp.presenter.InjectPresenter;
 
-public class MineActivity extends BaseBeiActivity implements View.OnClickListener {
+public class MineActivity extends BaseBeiActivity implements View.OnClickListener, ISystemView, CompoundButton.OnCheckedChangeListener {
+
+    @InjectPresenter
+    SystemPresenter mSystemPresenter;
 
     // 当前金额
     private TextView tv_amount_rest;
     // 提现支付宝
     private TextView tv_cash_account;
+    private Switch switch_api;
 
     private BeiUser mUser;
 
@@ -51,12 +63,25 @@ public class MineActivity extends BaseBeiActivity implements View.OnClickListene
             ll_admin.setVisibility(View.GONE);
         }
 
+        switch_api = findViewById(R.id.switch_api);
+        switch_api.setOnCheckedChangeListener(this);
+
         tv_amount_rest = findViewById(R.id.tv_amount_rest);
         tv_cash_account = findViewById(R.id.tv_cash_account);
         tv_amount_rest.setText(String.format(ConstantString.MONEY_RMB, StringTool.longCent2Yuan(mUser.currentMoney)));
         tv_cash_account.setText("提现支付宝:" + mUser.cashAccount);
     }
 
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // 这个界面只有我才需要获取API设置
+        if (TextUtils.equals("[email protected]", mUser.email)) {
+            mSystemPresenter.getSystemConfig();
+        }
+    }
+
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
@@ -107,4 +132,35 @@ public class MineActivity extends BaseBeiActivity implements View.OnClickListene
     }
 
 
+    @Override
+    public void onGetConfigResult(boolean success, String message, SystemBean resultBean) {
+        if (!success || resultBean == null) {
+            return;
+        }
+
+        switch_api.setOnCheckedChangeListener(null);
+        switch_api.setChecked(resultBean.isVipLimit);
+        switch_api.setOnCheckedChangeListener(this);
+    }
+
+    @Override
+    public void onSetApiResult(boolean success, String message, String resultBean) {
+        dismissLoading();
+        if (success) {
+            ToastTool.showShort("设置成功");
+        } else {
+            ToastTool.showShort("设置失败");
+            switch_api.setOnCheckedChangeListener(null);
+            switch_api.setChecked(!switch_api.isChecked());
+            switch_api.setOnCheckedChangeListener(this);
+        }
+    }
+
+    @Override
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+        if (buttonView.getId() == switch_api.getId()) {
+            showLoading();
+            mSystemPresenter.setApiConfig(isChecked);
+        }
+    }
 }

+ 11 - 0
app/src/main/res/layout/activity_mine.xml

@@ -121,6 +121,17 @@
 
         <include layout="@layout/view_divider_common" />
 
+        <Switch
+            android:id="@+id/switch_api"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/height_tab_bar"
+            android:gravity="center_vertical"
+            android:layout_marginStart="@dimen/margin_default"
+            android:layout_marginEnd="@dimen/margin_default"
+            android:layout_marginTop="@dimen/margin_default"
+            android:text="API仅会员可用"/>
+
+        <include layout="@layout/view_divider_common" />
     </LinearLayout>
 
     <View

+ 4 - 2
app/src/main/res/layout/fragment_tool.xml

@@ -152,12 +152,13 @@
                 android:textStyle="bold"/>
 
             <TextView
+                android:id="@+id/tv_weather"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/margin_sss"
                 android:textColor="@color/gray_text_s"
                 android:textSize="@dimen/text_normal_s"
-                android:text="返回今日天气信息(免费开放中)"/>
+                android:text="返回今日天气信息"/>
         </LinearLayout>
     </FrameLayout>
     <include layout="@layout/view_divider_common" />
@@ -188,12 +189,13 @@
                 android:textStyle="bold"/>
 
             <TextView
+                android:id="@+id/tv_yiji"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/margin_sss"
                 android:textColor="@color/gray_text_s"
                 android:textSize="@dimen/text_normal_s"
-                android:text="返回当天宜忌信息(免费开放中)"/>
+                android:text="返回当天宜忌信息"/>
         </LinearLayout>
     </FrameLayout>
     <include layout="@layout/view_divider_common" />

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -4,4 +4,6 @@
     <string name="title_function">活动</string>
     <string name="title_notifications">活动</string>
     <string name="title_mine">我的</string>
+    <string name="api_tips_free">(免费开放中)</string>
+    <string name="api_tips_vip_only">(会员专属)</string>
 </resources>