From 33c477716876d25d550f067bf6158471aa791794 Mon Sep 17 00:00:00 2001 From: itgaojian Date: Mon, 20 Feb 2023 18:09:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=BD=91=E7=BB=9C=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E5=99=A8=E6=B7=BB=E5=8A=A0areacode=E5=8F=82=E6=95=B0=E3=80=81?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95=E9=80=89?= =?UTF-8?q?=E9=A1=B9bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 38 +- .../com/tengshisoft/BaseMyApplication.java | 8 + .../retrofit_net/conver/AreaInterceptor.java | 16 +- .../widget/views/BottomCancelOrderDialog.java | 20 +- .../activity/ActivityMainActivity.java | 367 +++++++++++++----- .../moduleactivity/net/ApiActivity.java | 17 +- .../res/layout/activity_activity_main.xml | 81 +++- .../activitys/base/SplashActivity.java | 2 +- .../cultural/fragment/HomeFragment.java | 3 + 9 files changed, 417 insertions(+), 135 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a320ea9..3f27d90 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,9 @@ android { sangzhuzi { applicationId "com.tenlion.cultural.sangzhuzi" dimension 'market' - resValue "string", "APP_CHANNEL", "sangzhuzi" + resValue ("string", "APP_CHANNEL", "sangzhuzi") + resValue ("string", "CITY_CODE", "540202000000") + resValue ("string", "CITY_ID", "640676") manifestPlaceholders = [CHANNEL_VALUE: "sangzhuzi", APP_LOGO : "@drawable/app_logo", CITY_ID : "640676", @@ -64,6 +66,8 @@ android { applicationId "com.tenlion.cultural.nanmulin" dimension 'market' resValue "string", "APP_CHANNEL", "nanmulin" + resValue ("string", "CITY_CODE", "540221000000") + resValue ("string", "CITY_ID", "640865") manifestPlaceholders = [CHANNEL_VALUE: "nanmulin", APP_LOGO : "@drawable/app_logo", CITY_ID : "640865", @@ -75,6 +79,8 @@ android { applicationId "com.tenlion.cultural.jiangzi" dimension 'market' resValue "string", "APP_CHANNEL", "jiangzi" + resValue ("string", "CITY_CODE", "540222000000") + resValue ("string", "CITY_ID", "641029") manifestPlaceholders = [CHANNEL_VALUE: "jiangzi", APP_LOGO : "@drawable/app_logo", CITY_ID : "641029", @@ -86,6 +92,8 @@ android { applicationId "com.tenlion.cultural.dingri" dimension 'market' resValue "string", "APP_CHANNEL", "dingri" + resValue ("string", "CITY_CODE", "540223000000") + resValue ("string", "CITY_ID", "641204") manifestPlaceholders = [CHANNEL_VALUE: "dingri", APP_LOGO : "@drawable/app_logo", CITY_ID : "641204", @@ -97,6 +105,8 @@ android { applicationId "com.tenlion.cultural.sajia" dimension 'market' resValue "string", "APP_CHANNEL", "sajia" + resValue ("string", "CITY_CODE", "540224000000") + resValue ("string", "CITY_ID", "641393") manifestPlaceholders = [CHANNEL_VALUE: "sajia", APP_LOGO : "@drawable/app_logo", CITY_ID : "641393", @@ -108,6 +118,8 @@ android { applicationId "com.tenlion.cultural.lazi" dimension 'market' resValue "string", "APP_CHANNEL", "lazi" + resValue ("string", "CITY_CODE", "540225000000") + resValue ("string", "CITY_ID", "641512") manifestPlaceholders = [CHANNEL_VALUE: "lazi", APP_LOGO : "@drawable/app_logo", CITY_ID : "641512", @@ -119,6 +131,8 @@ android { applicationId "com.tenlion.cultural.angren" dimension 'market' resValue "string", "APP_CHANNEL", "angren" + resValue ("string", "CITY_CODE", "540226000000") + resValue ("string", "CITY_ID", "641622") manifestPlaceholders = [CHANNEL_VALUE: "angren", APP_LOGO : "@drawable/app_logo", CITY_ID : "641622", @@ -130,6 +144,8 @@ android { applicationId "com.tenlion.cultural.xietongmen" dimension 'market' resValue "string", "APP_CHANNEL", "xietongmen" + resValue ("string", "CITY_CODE", "540227000000") + resValue ("string", "CITY_ID", "641825") manifestPlaceholders = [CHANNEL_VALUE: "xietongmen", APP_LOGO : "@drawable/app_logo", CITY_ID : "641825", @@ -141,6 +157,8 @@ android { applicationId "com.tenlion.cultural.bailang" dimension 'market' resValue "string", "APP_CHANNEL", "bailang" + resValue ("string", "CITY_CODE", "540228000000") + resValue ("string", "CITY_ID", "641940") manifestPlaceholders = [CHANNEL_VALUE: "bailang", APP_LOGO : "@drawable/app_logo", CITY_ID : "641940", @@ -152,6 +170,8 @@ android { applicationId "com.tenlion.cultural.renbu" dimension 'market' resValue "string", "APP_CHANNEL", "renbu" + resValue ("string", "CITY_CODE", "540229000000") + resValue ("string", "CITY_ID", "642063") manifestPlaceholders = [CHANNEL_VALUE: "renbu", APP_LOGO : "@drawable/app_logo", CITY_ID : "642063", @@ -163,6 +183,8 @@ android { applicationId "com.tenlion.cultural.kangma" dimension 'market' resValue "string", "APP_CHANNEL", "kangma" + resValue ("string", "CITY_CODE", "540230000000") + resValue ("string", "CITY_ID", "642146") manifestPlaceholders = [CHANNEL_VALUE: "kangma", APP_LOGO : "@drawable/app_logo", CITY_ID : "642146", @@ -174,6 +196,8 @@ android { applicationId "com.tenlion.cultural.dingjie" dimension 'market' resValue "string", "APP_CHANNEL", "dingjie" + resValue ("string", "CITY_CODE", "540231000000") + resValue ("string", "CITY_ID", "642203") manifestPlaceholders = [CHANNEL_VALUE: "dingjie", APP_LOGO : "@drawable/app_logo", CITY_ID : "642203", @@ -185,6 +209,8 @@ android { applicationId "com.tenlion.cultural.zhongba" dimension 'market' resValue "string", "APP_CHANNEL", "zhongba" + resValue ("string", "CITY_CODE", "540232000000") + resValue ("string", "CITY_ID", "642284") manifestPlaceholders = [CHANNEL_VALUE: "zhongba", APP_LOGO : "@drawable/app_logo", CITY_ID : "642284", @@ -196,6 +222,8 @@ android { applicationId "com.tenlion.cultural.yadong" dimension 'market' resValue "string", "APP_CHANNEL", "yadong" + resValue ("string", "CITY_CODE", "540233000000") + resValue ("string", "CITY_ID", "642356") manifestPlaceholders = [CHANNEL_VALUE: "yadong", APP_LOGO : "@drawable/app_logo", CITY_ID : "642356", @@ -207,6 +235,8 @@ android { applicationId "com.tenlion.cultural.jilong" dimension 'market' resValue "string", "APP_CHANNEL", "jilong" + resValue ("string", "CITY_CODE", "540234000000") + resValue ("string", "CITY_ID", "642389") manifestPlaceholders = [CHANNEL_VALUE: "jilong", APP_LOGO : "@drawable/app_logo", CITY_ID : "642389", @@ -218,6 +248,8 @@ android { applicationId "com.tenlion.cultural.nielamu" dimension 'market' resValue "string", "APP_CHANNEL", "nielamu" + resValue ("string", "CITY_CODE", "540235000000") + resValue ("string", "CITY_ID", "642437") manifestPlaceholders = [CHANNEL_VALUE: "nielamu", APP_LOGO : "@drawable/app_logo", CITY_ID : "642437", @@ -229,6 +261,8 @@ android { applicationId "com.tenlion.cultural.saga" dimension 'market' resValue "string", "APP_CHANNEL", "saga" + resValue ("string", "CITY_CODE", "540236000000") + resValue ("string", "CITY_ID", "642489") manifestPlaceholders = [CHANNEL_VALUE: "saga", APP_LOGO : "@drawable/app_logo", CITY_ID : "642489", @@ -240,6 +274,8 @@ android { applicationId "com.tenlion.cultural.gangba" dimension 'market' resValue "string", "APP_CHANNEL", "gangba" + resValue ("string", "CITY_CODE", "540237000000") + resValue ("string", "CITY_ID", "642536") manifestPlaceholders = [CHANNEL_VALUE: "gangba", APP_LOGO : "@drawable/app_logo", CITY_ID : "642536", diff --git a/app/src/main/java/com/tengshisoft/BaseMyApplication.java b/app/src/main/java/com/tengshisoft/BaseMyApplication.java index 23fdc53..4b61c7d 100755 --- a/app/src/main/java/com/tengshisoft/BaseMyApplication.java +++ b/app/src/main/java/com/tengshisoft/BaseMyApplication.java @@ -12,7 +12,9 @@ import com.baidu.mapapi.SDKInitializer; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.sucstepsoft.cm_utils.core.widget.refresh.CustomRefreshHeader; +import com.sucstepsoft.cm_utils.utils.UserLgUtils; import com.sucstepsoft.cm_utils.utils.toast.ToastUtils; +import com.tengshisoft.cultural.R; import cn.jiguang.share.android.api.JShareInterface; import cn.leo.magic.screen.MagicScreenAdapter; @@ -46,6 +48,12 @@ public class BaseMyApplication extends Application { ToastUtils.init(this); ToastUtils.setGravity(Gravity.TOP, 0, 80); + getConfigCityCode(); + } + + private void getConfigCityCode() { + UserLgUtils.setCityCode(this.getResources().getString(R.string.CITY_CODE)); + UserLgUtils.setCityId(this.getResources().getString(R.string.CITY_ID)); } private void initShare() { diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java index fd30d99..4020b21 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java @@ -37,12 +37,16 @@ public class AreaInterceptor implements Interceptor { // String cityId = UserLgUtils.getCityId(); //判断是否需要添加 List baseUrlName = originalRequest.headers("is_need_area"); - if (baseUrlName.size() <= 0) { - //需要添加 - HttpUrl modifiedUrl = originalRequest.url().newBuilder() - .addPathSegment(areaCode) - .build(); - request = originalRequest.newBuilder().url(modifiedUrl).build(); + if (baseUrlName.size() > 0) { + if(Boolean.parseBoolean(baseUrlName.get(0))){ + //需要添加 + HttpUrl modifiedUrl = originalRequest.url().newBuilder() + .addPathSegment(areaCode) + .build(); + request = originalRequest.newBuilder().url(modifiedUrl).build(); + }else{ + request = originalRequest; + } } else { request = originalRequest; } diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BottomCancelOrderDialog.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BottomCancelOrderDialog.java index a6a99b4..ebd32bb 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BottomCancelOrderDialog.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BottomCancelOrderDialog.java @@ -56,7 +56,8 @@ public class BottomCancelOrderDialog extends Dialog { private View view; private List list; - private BottomCancelOrderDialog(Context context, boolean isCancelable, boolean isBackCancelable, int gravity, List list) { + private BottomCancelOrderDialog(Context context, boolean isCancelable, boolean isBackCancelable, int gravity, + List list) { super(context, R.style.dialog_full_screen); this.context = context; this.gravity = gravity; @@ -74,10 +75,19 @@ public class BottomCancelOrderDialog extends Dialog { EditText etRemark = view.findViewById(R.id.et_remark); RecyclerView rlvReason = view.findViewById(R.id.rlv_reason); rlvReason.setLayoutManager(new LinearLayoutManager(context)); + if (list != null && list.size() > 0) { + list.get(0).setCheck(true); + } DicSelAdapter adapter = new DicSelAdapter(context, list); rlvReason.setAdapter(adapter); adapter.addOnItemClickListener(baseDictionaryBean -> { - baseDictionaryBean.setCheck(!baseDictionaryBean.isCheck()); + for (BaseDictionaryBean b : list) { + if (b.getDataId().equals(baseDictionaryBean.getDataId())) { + b.setCheck(true); + } else { + b.setCheck(false); + } + } adapter.setData(list); }); tvCancel.setOnClickListener(v -> this.dismiss()); @@ -141,7 +151,8 @@ public class BottomCancelOrderDialog extends Dialog { //请求获得焦点 editText.requestFocus(); //调用系统输入法 - InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + InputMethodManager inputManager = + (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0); } } @@ -232,7 +243,8 @@ public class BottomCancelOrderDialog extends Dialog { } public BottomCancelOrderDialog build() { - return new BottomCancelOrderDialog(this.mContext, this.isCancelable, this.mIsBackable, this.mGravity, this.list); + return new BottomCancelOrderDialog(this.mContext, this.isCancelable, this.mIsBackable, this.mGravity, + this.list); } } diff --git a/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/activity/ActivityMainActivity.java b/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/activity/ActivityMainActivity.java index cbebddf..486799b 100755 --- a/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/activity/ActivityMainActivity.java +++ b/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/activity/ActivityMainActivity.java @@ -1,40 +1,74 @@ package com.tengshisoft.moduleactivity.activity; -import android.content.Intent; +import android.graphics.Color; +import android.graphics.Typeface; +import android.text.TextUtils; +import android.view.View; import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; -import com.bumptech.glide.Glide; +import com.alibaba.android.arouter.launcher.ARouter; +import com.google.android.material.tabs.TabLayout; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.sucstepsoft.cm_utils.constant.PathConfig; +import com.sucstepsoft.cm_utils.core.beans.BaseDictionaryBean; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView; +import com.sucstepsoft.cm_utils.utils.ExceptionHandler; import com.tengshisoft.moduleactivity.R; import com.tengshisoft.moduleactivity.R2; -import com.tengshisoft.moduleijkplayer.controller.CompleteView; -import com.tengshisoft.moduleijkplayer.controller.ErrorView; -import com.tengshisoft.moduleijkplayer.controller.GestureView; -import com.tengshisoft.moduleijkplayer.controller.LiveControlView; -import com.tengshisoft.moduleijkplayer.controller.PrepareView; -import com.tengshisoft.moduleijkplayer.controller.StandardVideoController; -import com.tengshisoft.moduleijkplayer.controller.TitleView; -import com.tengshisoft.moduleijkplayer.controller.VodControlView; -import com.tengshisoft.moduleijkplayer.player.VideoView; -import com.tengshisoft.moduleijkplayer.util.L; +import com.tengshisoft.moduleactivity.adapter.ActivityAdapter; +import com.tengshisoft.moduleactivity.beans.ActivityListBeans; +import com.tengshisoft.moduleactivity.net.ApiActivity; + +import java.util.ArrayList; +import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * 活动主页 */ @Route(path = PathConfig.PATH_MODULEACTIVITY_ACTIVITY_MAIN) public class ActivityMainActivity extends BaseActivity { + public static final int STATE_LOAD = 1234;//加载中 + public static final int STATE_ERROR = 1235;//加载失败 + public static final int STATE_SUCCESS = 1236;//加载成功 + public static final int STATE_EMPTY = 1237;//无数据 + @BindView(R2.id.rlv_content) + RecyclerView mRlvContent; + @BindView(R2.id.xtl_type) + TabLayout mTlType; + @BindView(R2.id.pb_loading) + ProgressBar mPbLoading; + @BindView(R2.id.iv_empty) + ImageView mIvEmpty; + @BindView(R2.id.tv_hint) + TypeFaceTextView mTvHint; @BindView(R2.id.srl_content) - SmartRefreshLayout mLayout; - @BindView(R2.id.vv_player) - VideoView mVvPlayer; + SmartRefreshLayout mSrlContent; private Unbinder mBind; + private String mStatus; + private int mCurrentPageNo = 1; + private Disposable mD; + private List mDatas; + private ActivityAdapter mAdapter; + private int mTotalSize = 0; + private String mCurrentType; + private Typeface mTypeface; + @Override protected int setLayoutId() { @@ -45,103 +79,228 @@ public class ActivityMainActivity extends BaseActivity { public void initData() { mBind = ButterKnife.bind(this); mTvBaseTitle.setText("活动主页"); - refreshView(STATE_LOAD_SUCCESS); - mLayout.setEnableRefresh(false); - mLayout.setEnableLoadMore(false); - StandardVideoController controller = new StandardVideoController(mActivity); - controller.setEnableOrientation(true); - PrepareView prepareView = new PrepareView(this);//准备播放界面 - ImageView thumb = prepareView.findViewById(R.id.thumb);//封面图 - Glide.with(this).load(R.drawable.ic_img_default).into(thumb); - controller.addControlComponent(prepareView); - prepareView.setClickStart(); - CompleteView completeView = new CompleteView(this); - controller.addControlComponent(completeView);//自动完成播放界面 - ErrorView errorView = new ErrorView(this); - controller.addControlComponent(errorView);//错误界面 - - TitleView titleView = new TitleView(this);//标题栏 - controller.addControlComponent(titleView); - - //根据是否为直播设置不同的底部控制条 - boolean isLive = false; - if (isLive) { - controller.addControlComponent(new LiveControlView(this));//直播控制条 - } else { - VodControlView vodControlView = new VodControlView(this);//点播控制条 - controller.addControlComponent(vodControlView); - } - GestureView gestureControlView = new GestureView(this);//滑动控制视图 - controller.addControlComponent(gestureControlView); - controller.setCanChangePosition(!isLive); - //设置标题 - titleView.setTitle("测试"); - mVvPlayer.setVideoController(controller); - mVvPlayer.setUrl("rtmp://192.168.0.104:1935/live/device0001"); - mVvPlayer.addOnStateChangeListener(mOnStateChangeListener); - mVvPlayer.start(); - } - - private VideoView.OnStateChangeListener mOnStateChangeListener = new VideoView.SimpleOnStateChangeListener() { - @Override - public void onPlayerStateChanged(int playerState) { - switch (playerState) { - case VideoView.PLAYER_NORMAL://小屏 - break; - case VideoView.PLAYER_FULL_SCREEN://全屏 - break; + refreshView(STATE_LOAD_LOADING); + mTypeface = Typeface.createFromAsset(mActivity.getAssets(), "fonts/zhangti.TTF"); + mDatas = new ArrayList<>(); + getTypeList(); + mAdapter = new ActivityAdapter(mActivity, mDatas); + mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); + mRlvContent.setAdapter(mAdapter); + mAdapter.addOnItemClickListener(this::showDetail); + mSrlContent.setOnLoadMoreListener(refreshLayout -> { + if (mTotalSize > mDatas.size()) { + ++mCurrentPageNo; + mSrlContent.setNoMoreData(false); + getActivityListDataByType(mCurrentPageNo); + } else { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(true); } - } - - @Override - public void onPlayStateChanged(int playState) { - switch (playState) { - case VideoView.STATE_IDLE: - break; - case VideoView.STATE_PREPARING: - //在STATE_PREPARING时设置setMute(true)可实现静音播放 -// mVideoView.setMute(true); - break; - case VideoView.STATE_PREPARED: - break; - case VideoView.STATE_PLAYING: - //需在此时获取视频宽高 - int[] videoSize = mVvPlayer.getVideoSize(); - L.d("视频宽:" + videoSize[0]); - L.d("视频高:" + videoSize[1]); - break; - case VideoView.STATE_PAUSED: - break; - case VideoView.STATE_BUFFERING: - break; - case VideoView.STATE_BUFFERED: - break; - case VideoView.STATE_PLAYBACK_COMPLETED: - break; - case VideoView.STATE_ERROR: - break; + }); + mSrlContent.setOnRefreshListener(refreshLayout -> { + if (!TextUtils.isEmpty(mCurrentType)) { + mCurrentPageNo = 1; + mTotalSize = 0; + mDatas.clear(); + getActivityListDataByType(mCurrentPageNo); + } else { + mSrlContent.finishRefresh(); } + }); + } + + + private void getTypeList() { + RetrofitManager.getInstance() + .create(ApiActivity.class) + .getActivityTypeList("e36ad682-c6b4-44fe-a05c-889a5ff7c284") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List baseDictionaryBeans) { + if (baseDictionaryBeans != null && baseDictionaryBeans.size() > 0) { + for (int i = 0; i < baseDictionaryBeans.size(); i++) { + BaseDictionaryBean bean = baseDictionaryBeans.get(i); + View view = View.inflate(mActivity, R.layout.item_tab_custom_view, null); + TypeFaceTextView textView = view.findViewById(R.id.tv_tab_title); + textView.setText(bean.getDataName()); + TabLayout.Tab tab = mTlType.newTab(); + tab.setTag(bean); + tab.setCustomView(view); + mTlType.addTab(tab); + } + mCurrentType = baseDictionaryBeans.get(0).getDataId(); + mTlType.setTabIndicatorFullWidth(false); + mTlType.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + setState(STATE_LOAD); + View tabView = tab.getCustomView(); + tabView.findViewById(R.id.iv_right).setVisibility(View.VISIBLE); + tabView.findViewById(R.id.iv_Left).setVisibility(View.VISIBLE); + TextView tvTab = tabView.findViewById(R.id.tv_tab_title); + tvTab.setTextColor(Color.RED); + BaseDictionaryBean bean = (BaseDictionaryBean) tab.getTag(); + mCurrentType = bean.getDataId(); + mCurrentPageNo = 1; + mTotalSize = 0; + getActivityListDataByType(mCurrentPageNo); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + View tabView = tab.getCustomView(); + tabView.findViewById(R.id.iv_right).setVisibility(View.INVISIBLE); + tabView.findViewById(R.id.iv_Left).setVisibility(View.INVISIBLE); + TextView tvTab = tabView.findViewById(R.id.tv_tab_title); + tvTab.setTextColor(Color.GRAY); + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + + } + }); + View customView = mTlType.getTabAt(0).getCustomView(); + customView.findViewById(R.id.iv_right).setVisibility(View.VISIBLE); + customView.findViewById(R.id.iv_Left).setVisibility(View.VISIBLE); + TextView tvTab = customView.findViewById(R.id.tv_tab_title); + tvTab.setTextColor(Color.RED); + refreshView(STATE_LOAD_SUCCESS); + setState(STATE_LOAD); + getActivityListDataByType(mCurrentPageNo); + } else { + refreshView(STATE_LOAD_EMPTY); + } + } + + @Override + public void onError(Throwable e) { + refreshView(STATE_LOAD_ERROR); + } + + @Override + public void onComplete() { + + } + }); + + } + + private void getActivityListDataByType(int page) { + RetrofitManager.getInstance() + .create(ApiActivity.class) + .getActivityListByType(mCurrentType, page + "") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(ActivityListBeans activityListBeans) { + if (page == 1) { + //第一次 + if (activityListBeans.getRows() != null && activityListBeans.getRows().size() > 0) { + mDatas = activityListBeans.getRows(); + mAdapter.setData(mDatas); + mTotalSize = activityListBeans.getTotal(); + mSrlContent.finishRefresh(); + mSrlContent.setNoMoreData(false); + setState(STATE_SUCCESS); + } else { + mSrlContent.finishRefresh(); + mSrlContent.setNoMoreData(true); + setState(STATE_EMPTY); + } + } else { + //多次 + if (activityListBeans.getRows() != null && activityListBeans.getRows().size() > 0) { + mDatas.addAll(activityListBeans.getRows()); + mAdapter.setData(mDatas); + mSrlContent.finishLoadMore(); + } else { + mSrlContent.setNoMoreData(true); + } + } + } + + @Override + public void onError(Throwable e) { + setState(STATE_ERROR); + ExceptionHandler.handleException(e); + mSrlContent.finishRefresh(); + mSrlContent.setNoMoreData(true); + } + + @Override + public void onComplete() { + + } + }); + } + + public void showDetail(ActivityListBeans.RowsBean rowsBean) { + ARouter.getInstance() + .build(PathConfig.PATH_MODULEACTIVITY_ACTIVITY_DETAIL) + .withString("id", rowsBean.getActivityLibraryId()) + .navigation(); + } + + +// @Override +// protected void refreshView() { +// getTypeList(); +// } +// +// @Override +// protected void loadMoreData() { +// mSrlView.finishLoadMore(); +// } + + private void setState(int state) { + switch (state) { + case STATE_LOAD: + mRlvContent.setVisibility(View.GONE); + mTvHint.setVisibility(View.VISIBLE); + mTvHint.setText("加载中..."); + mIvEmpty.setVisibility(View.GONE); + mPbLoading.setVisibility(View.VISIBLE); + break; + case STATE_EMPTY: + mRlvContent.setVisibility(View.GONE); + mTvHint.setVisibility(View.VISIBLE); + mTvHint.setText("暂无数据"); + mIvEmpty.setVisibility(View.VISIBLE); + mPbLoading.setVisibility(View.GONE); + break; + case STATE_SUCCESS: + mRlvContent.setVisibility(View.VISIBLE); + mTvHint.setVisibility(View.GONE); + mIvEmpty.setVisibility(View.GONE); + mPbLoading.setVisibility(View.GONE); + break; + case STATE_ERROR: + mRlvContent.setVisibility(View.GONE); + mTvHint.setVisibility(View.VISIBLE); + mTvHint.setText("数据加载失败,请稍后重试"); + mIvEmpty.setVisibility(View.VISIBLE); + mPbLoading.setVisibility(View.GONE); + break; } - }; - - @Override - protected void onPause() { - super.onPause(); - mVvPlayer.pause(); } - @Override - protected void onResume() { - super.onResume(); - mVvPlayer.pause(); - } @Override protected void onDestroy() { - mOnStateChangeListener = null; - if (mVvPlayer != null) { - mVvPlayer.release(); - } if (mBind != null) { mBind.unbind(); } diff --git a/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/net/ApiActivity.java b/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/net/ApiActivity.java index 13344db..afd7c07 100755 --- a/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/net/ApiActivity.java +++ b/moduleactivity/src/main/java/com/tengshisoft/moduleactivity/net/ApiActivity.java @@ -2,8 +2,6 @@ package com.tengshisoft.moduleactivity.net; import com.sucstepsoft.cm_utils.core.beans.BaseDictionaryBean; import com.sucstepsoft.cm_utils.core.beans.BaseSuccessBean; -import com.sucstepsoft.cm_utils.core.beans.UserLoginBean; -import com.sucstepsoft.cm_utils.core.retrofit_net.bean.UserBean; import com.tengshisoft.moduleactivity.beans.ActivityDetail; import com.tengshisoft.moduleactivity.beans.ActivityListBeans; import com.tengshisoft.moduleactivity.beans.MineActivityListBean; @@ -43,8 +41,10 @@ public interface ApiActivity { * @param page * @return */ - @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json"}) - @GET("app/activitylibrary/listpageactivitylibraryrelease") + @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json", "is_need_area" + + ":true"}) +// @GET("app/activitylibrary/listpageactivitylibraryrelease") 原接口 + @GET("app/activitylibrary/listpageactivitylibraryfornetrelease") Observable getActivityListByType(@Query("activityType") String type, @Query("page") String page); /** @@ -62,7 +62,8 @@ public interface ApiActivity { * @param id * @return */ - @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json","is_need_area:false"}) + @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json", "is_need_area" + + ":false"}) @GET("app/dictionaryself/listdictionarybyparentidrelease/{dictionaryParentId}") Observable> getActivityTypeList(@Path("dictionaryParentId") String id); @@ -78,7 +79,8 @@ public interface ApiActivity { //GET /app/activitylibrary/getactivitylibrarybyid/{activityLibraryId} @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json"}) @GET("app/activitylibrary/getactivitylibrarybyid/{activityLibraryId}") - Observable getActivityByIdToken(@Path("activityLibraryId") String id, @Header("token") String token); + Observable getActivityByIdToken(@Path("activityLibraryId") String id, + @Header("token") String token); /** * 报名 @@ -96,7 +98,8 @@ public interface ApiActivity { */ @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json"}) @GET("app/activityuserapply/cancelapply/{activityid}/{activityApplyUserId}") - Observable doCancelSignUp(@Path("activityid") String id, @Path("activityApplyUserId") String aId, @Header("token") String token); + Observable doCancelSignUp(@Path("activityid") String id, @Path("activityApplyUserId") String aId + , @Header("token") String token); /** * 获取验证码 diff --git a/moduleactivity/src/main/res/layout/activity_activity_main.xml b/moduleactivity/src/main/res/layout/activity_activity_main.xml index 6b746e6..f515d7c 100755 --- a/moduleactivity/src/main/res/layout/activity_activity_main.xml +++ b/moduleactivity/src/main/res/layout/activity_activity_main.xml @@ -1,18 +1,75 @@ - + android:layout_height="wrap_content" + android:orientation="vertical" + android:theme="@style/Theme.AppCompat"> - - \ No newline at end of file + android:layout_height="wrap_content" + android:background="@drawable/shape_tab_bg"> + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java index e18c3b4..8784c5e 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java @@ -39,7 +39,7 @@ public class SplashActivity extends BaseActivity { refreshView(STATE_LOAD_SUCCESS); ImmersionBar.with(this).init(); mRlTitleBar1.setVisibility(View.GONE); - getCityCode(); +// getCityCode(); PermissionUtils.permission(PermissionConstants.STORAGE, PermissionConstants.LOCATION, PermissionConstants.PHONE) .callback(new PermissionUtils.SimpleCallback() { @Override diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java index 1963710..946adc3 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java @@ -783,6 +783,9 @@ public class HomeFragment extends BaseFragment { */ private void chooseFuncPage(MainFuncBean mainFuncBean) { if ("精彩活动".equals(mainFuncBean.getTitle())) { + ARouter.getInstance() + .build(PathConfig.PATH_MODULEACTIVITY_ACTIVITY_MAIN) + .navigation(); // TODO mMainActivity.setCurrentPage(1, "活动"); } else if ("场馆导航".equals(mainFuncBean.getTitle())) { mMainActivity.setCurrentPage(2, "场馆"); From ba54f69bdf7c16e4ce9155a677031237084828d4 Mon Sep 17 00:00:00 2001 From: itgaojian Date: Tue, 21 Feb 2023 18:03:41 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E9=97=BB=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E3=80=81=E5=8E=BB=E9=99=A4=E7=9B=B4=E6=92=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/retrofit_net/BaseUrlApi.java | 6 +- .../core/retrofit_net/api/BaseApiService.java | 4 +- .../retrofit_net/conver/AreaInterceptor.java | 2 +- .../widget/views/BaseFunctionAdapter.java | 2 +- .../moduleactivity/net/ApiActivity.java | 5 +- .../fragments/CulturalMainFragment.java | 20 +- .../modulecultural/net/CulturalApi.java | 13 +- .../activitys/base/SplashActivity.java | 10 +- .../activitys/news/NewsDetailActivity.java | 2 +- .../cultural/beans/NewsDetailBean.java | 421 ++++++++++++++++++ .../cultural/fragment/HomeFragment.java | 235 +++++----- .../cultural/fragment/NewsFragment.java | 1 + .../mudulemain/cultural/net/HomeApi.java | 39 +- .../src/main/res/layout/fragment_home.xml | 9 +- .../tengshisoft/moduleplace/net/ApiPlace.java | 7 +- 15 files changed, 608 insertions(+), 168 deletions(-) create mode 100644 modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/NewsDetailBean.java diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java index a7cbb9e..dea0e7f 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java @@ -16,10 +16,12 @@ public class BaseUrlApi { // public static final String BASE_SYSTEM_IP = "http://121.36.71.250:58050/xzszwhy/"; // public static final String IP = "http://49.233.36.36:58099/xzszwhy/";/* 测试IP */ public static final String IP = "http://v3.xzszwhy.cn/xzszwhy/";/* 测试IP */ + // public static final String IP = "http://192.168.0.120:8081/xzszwhy/";/* 测试IP */ public static final String IP_URL = "http://v3.xzszwhy.cn/";/* 测试IP */ + // public static final String IP_URL = "http://192.168.0.120:8081/";/* 测试IP */ // public static final String IP = "https://www.wgink.ink/usercenter/";/* 正式IP */ // public static final String IP = "https://www.xzszwhy.cn/usercenter/";/* 正式IP */ - // public static final String BASE_SYSTEM_IP = "http://192.168.0.115:8082/"; +// public static final String BASE_SYSTEM_IP = "http://192.168.0.120:8081/xzszwhy/"; public static final String BASE_SYSTEM_IP = "http://v3.xzszwhy.cn/xzszwhy/"; // public static final String BASE_SYSTEM_IP = "https://www.xzszwhy.cn/"; // public static final String IP = "http://192.168.0.113:7001/usercenter/";/* 测试IP */ @@ -75,7 +77,7 @@ public class BaseUrlApi { // public static final String BASE_NEWS_DETAIL = "http://192.168.0.104/";//新闻 - public static final String BASE_NEWS_DETAIL = BASE_SYSTEM_IP;//新闻 + public static final String BASE_NEWS_DETAIL = IP_URL;//新闻 // public static final String BASE_IMG_URL = BASE_IP + "route/file/download/true/"; // GET /app/appversion/downloadapp/{appVersionId} public static final String APP_DOWNLOAD_URL = BASE_URL + "app/appversion/download/" + PathConfig.APP_VERSION_ID; diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java index 953ba3d..6da51f3 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java @@ -86,7 +86,7 @@ public interface BaseApiService { * * @return */ - @Headers({"Content-Type: application/json", "Accept: application/json", "is_need_area:false"}) + @Headers({"Content-Type: application/json", "Accept: application/json", "need_area:false"}) @GET("app/appversion/get-number/{appVersionId}") Observable doCheckAppVersion(@Path("appVersionId") String appVersionId); @@ -271,7 +271,7 @@ public interface BaseApiService { * @return */ @Headers({"Content-Type:application/json", "Accept:application/json"}) - @GET("app/dataarea/getareabyidrelease/{areaId}") + @GET("app/area/getrelease/{areaId}") Observable getAreaListByPid(@Path("areaId") String id); /** diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java index 4020b21..bc3f793 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/AreaInterceptor.java @@ -36,7 +36,7 @@ public class AreaInterceptor implements Interceptor { // } // String cityId = UserLgUtils.getCityId(); //判断是否需要添加 - List baseUrlName = originalRequest.headers("is_need_area"); + List baseUrlName = originalRequest.headers("need_area"); if (baseUrlName.size() > 0) { if(Boolean.parseBoolean(baseUrlName.get(0))){ //需要添加 diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BaseFunctionAdapter.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BaseFunctionAdapter.java index 71d50c0..abb8b74 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BaseFunctionAdapter.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/BaseFunctionAdapter.java @@ -34,7 +34,7 @@ public class BaseFunctionAdapter extends BaseRecyclerAdapter getActivityListByType(@Query("activityType") String type, @Query("page") String page); @@ -62,7 +61,7 @@ public interface ApiActivity { * @param id * @return */ - @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json", "is_need_area" + + @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json", "need_area" + ":false"}) @GET("app/dictionaryself/listdictionarybyparentidrelease/{dictionaryParentId}") Observable> getActivityTypeList(@Path("dictionaryParentId") String id); diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/fragments/CulturalMainFragment.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/fragments/CulturalMainFragment.java index 2b791d8..9c43bf6 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/fragments/CulturalMainFragment.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/fragments/CulturalMainFragment.java @@ -1,22 +1,20 @@ package com.tengshisoft.modulecultural.fragments; -import android.net.MacAddress; import android.view.View; import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.ethanhua.skeleton.RecyclerViewSkeletonScreen; import com.ethanhua.skeleton.Skeleton; import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; import com.sucstepsoft.cm_utils.constant.PathConfig; import com.sucstepsoft.cm_utils.core.beans.FuncBean; import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.widget.base.BaseFragment; -import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; import com.sucstepsoft.cm_utils.utils.ExceptionHandler; import com.tengshisoft.modulecultural.R; import com.tengshisoft.modulecultural.R2; @@ -28,9 +26,6 @@ import com.tengshisoft.modulecultural.net.CulturalApi; import java.util.ArrayList; import java.util.List; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -60,8 +55,13 @@ public class CulturalMainFragment extends BaseFragment { private Disposable mD1; private LegacyMainAdapter mMainAdapter; private List mFuncStr = new ArrayList<>(); - private String[] mTitls = new String[]{"非物质文化遗产数据库", "文化直播", "文化分享"}; - private int[] mIcons = new int[]{R.drawable.ic_cultural_icon, R.drawable.ic_cultural_icon, R.drawable.ic_cultural_icon}; + + // private String[] mTitls = new String[]{"非物质文化遗产数据库", "文化直播", "文化分享"}; + // private int[] mIcons = new int[]{R.drawable.ic_cultural_icon, R.drawable.ic_cultural_icon, R.drawable.ic_cultural_icon}; + + private String[] mTitls = new String[]{"非物质文化遗产数据库", "文化分享"}; + private int[] mIcons = new int[]{R.drawable.ic_cultural_icon, R.drawable.ic_cultural_icon}; + private List mFuncBeans = new ArrayList<>(); private RecyclerViewSkeletonScreen mSkeleton; diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/net/CulturalApi.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/net/CulturalApi.java index f59ccd3..0b3ebf5 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/net/CulturalApi.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/net/CulturalApi.java @@ -1,6 +1,5 @@ package com.tengshisoft.modulecultural.net; -import com.sucstepsoft.cm_utils.core.beans.BaseDictionaryBean; import com.sucstepsoft.cm_utils.core.beans.BaseSuccessBean; import com.sucstepsoft.cm_utils.core.beans.DictionaryBean; import com.tengshisoft.modulecultural.bean.ActivityLogBean; @@ -46,14 +45,14 @@ public interface CulturalApi { /** * 获取非遗列表 */ - @Headers({"base_url_name:legacy", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:legacy", "Content-Type:application/json", "Accept:application/json","need_area:true"}) @GET("app/intangiblelibrary/listpageintangiblelibraryrelease") Observable getLegacyList(@Query("page") String page); /** * 获取非遗列表 */ - @Headers({"base_url_name:legacy", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:legacy", "Content-Type:application/json", "Accept:application/json" ,"need_area:true"}) @GET("app/intangiblelibrary/listpageintangiblelibraryrelease") Observable getLegacyListByType(@Query("page") String page, @Query("rows") String rows, @Query("libraryDirectoriesId") String id); @@ -234,7 +233,7 @@ public interface CulturalApi { * 志愿者活动列表 * GET /app/volunteerservice/listpagevolunteerservicerelease */ - @Headers({"base_url_name:volunteer", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:volunteer", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) @GET("app/volunteerservice/listpagevolunteerservicerelease") Observable getVolunteerActivityList(@Query("rows") String rows, @Query("page") String page); @@ -331,7 +330,7 @@ public interface CulturalApi { * 直播回放列表 * http://192.168.0.104:8084/live/ */ - @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json","is_need_area:false"}) + @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json", "need_area:false"}) @GET("app/liveplan/listpageliveplanrelease") Observable getLiveRecord(@Query("page") String page); @@ -339,7 +338,7 @@ public interface CulturalApi { * 直播详情 * http://192.168.0.104:8084/live/app/liveplan/listpageliveplanrelease */ - @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json" ,"is_need_area:false"}) + @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json", "need_area:false"}) @GET("app/liveplan/getliveplanbyidrelease/{livePlanId}") Observable getLiveDetail(@Path("livePlanId") String id); @@ -347,7 +346,7 @@ public interface CulturalApi { * 直播回放文件 * GET /app/liverecord/listpageliverecordrelease/{planId} */ - @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json" ,"is_need_area:false"}) + @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json", "need_area:false"}) @GET("app/liverecord/listpageliverecordrelease/{planId}") Observable getLiveFiles(@Path("planId") String id, @Query("page") String page); diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java index 8784c5e..d9498c9 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/SplashActivity.java @@ -39,7 +39,7 @@ public class SplashActivity extends BaseActivity { refreshView(STATE_LOAD_SUCCESS); ImmersionBar.with(this).init(); mRlTitleBar1.setVisibility(View.GONE); -// getCityCode(); + getConfigAppName(); PermissionUtils.permission(PermissionConstants.STORAGE, PermissionConstants.LOCATION, PermissionConstants.PHONE) .callback(new PermissionUtils.SimpleCallback() { @Override @@ -88,16 +88,10 @@ public class SplashActivity extends BaseActivity { /** * 获取城市代码 */ - private void getCityCode() { - String cityCode = ""; - String cityId = ""; + private void getConfigAppName() { try { ApplicationInfo info = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); - cityCode = String.valueOf(info.metaData.get("CITY_CODE")); - cityId = String.valueOf(info.metaData.get("CITY_ID")); - UserLgUtils.setCityCode(cityCode); - UserLgUtils.setCityId(cityId); String appName = String.valueOf(info.metaData.get("APP_NAME")); UserLgUtils.setAppName(appName); } catch (Exception e) { diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsDetailActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsDetailActivity.java index a86d2aa..249fde2 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsDetailActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsDetailActivity.java @@ -1092,4 +1092,4 @@ public class NewsDetailActivity extends BaseActivity { super.onDestroy(); } -} +} \ No newline at end of file diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/NewsDetailBean.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/NewsDetailBean.java new file mode 100644 index 0000000..0a06f9e --- /dev/null +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/NewsDetailBean.java @@ -0,0 +1,421 @@ +package com.tengshisoft.mudulemain.cultural.beans; + +import java.util.List; + +/** + * 新闻详情 + */ +public class NewsDetailBean { + + private String contentCoverId; + private List fileList; + private String gmtCreate; + private String newsContentAuthor; + private String newsContentCheckContent; + private String newsContentCheckStatus; + private String newsContentCheckTime; + private String newsContentCheckUser; + private String newsContentCheckUserId; + private int newsContentCollectionNumber; + private int newsContentCommentNumber; + private String newsContentContent; + private List newsContentCoverList; + private int newsContentHotNumber; + private String newsContentId; + private String newsContentLabel; + private List newsContentLabelList; + private int newsContentLikeNumber; + private String newsContentLink; + private String newsContentMusic; + private String newsContentPublishDepartment; + private String newsContentPublishStatus; + private String newsContentPublishTime; + private String newsContentResource; + private int newsContentScore; + private String newsContentSummary; + private String newsContentTitle; + private String newsContentType; + private int newsContentVisitNumber; + private String newsDirectoriesId; + private String newsDirectoriesName; + private String newsTypesettingId; + private String templateRecordUrl; + private String typesettingCode; + private String typesettingImage; + private String typesettingName; + + public String getContentCoverId() { + return contentCoverId; + } + + public void setContentCoverId(String contentCoverId) { + this.contentCoverId = contentCoverId; + } + + public List getFileList() { + return fileList; + } + + public void setFileList(List fileList) { + this.fileList = fileList; + } + + public String getGmtCreate() { + return gmtCreate; + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public String getNewsContentAuthor() { + return newsContentAuthor; + } + + public void setNewsContentAuthor(String newsContentAuthor) { + this.newsContentAuthor = newsContentAuthor; + } + + public String getNewsContentCheckContent() { + return newsContentCheckContent; + } + + public void setNewsContentCheckContent(String newsContentCheckContent) { + this.newsContentCheckContent = newsContentCheckContent; + } + + public String getNewsContentCheckStatus() { + return newsContentCheckStatus; + } + + public void setNewsContentCheckStatus(String newsContentCheckStatus) { + this.newsContentCheckStatus = newsContentCheckStatus; + } + + public String getNewsContentCheckTime() { + return newsContentCheckTime; + } + + public void setNewsContentCheckTime(String newsContentCheckTime) { + this.newsContentCheckTime = newsContentCheckTime; + } + + public String getNewsContentCheckUser() { + return newsContentCheckUser; + } + + public void setNewsContentCheckUser(String newsContentCheckUser) { + this.newsContentCheckUser = newsContentCheckUser; + } + + public String getNewsContentCheckUserId() { + return newsContentCheckUserId; + } + + public void setNewsContentCheckUserId(String newsContentCheckUserId) { + this.newsContentCheckUserId = newsContentCheckUserId; + } + + public int getNewsContentCollectionNumber() { + return newsContentCollectionNumber; + } + + public void setNewsContentCollectionNumber(int newsContentCollectionNumber) { + this.newsContentCollectionNumber = newsContentCollectionNumber; + } + + public int getNewsContentCommentNumber() { + return newsContentCommentNumber; + } + + public void setNewsContentCommentNumber(int newsContentCommentNumber) { + this.newsContentCommentNumber = newsContentCommentNumber; + } + + public String getNewsContentContent() { + return newsContentContent; + } + + public void setNewsContentContent(String newsContentContent) { + this.newsContentContent = newsContentContent; + } + + public List getNewsContentCoverList() { + return newsContentCoverList; + } + + public void setNewsContentCoverList(List newsContentCoverList) { + this.newsContentCoverList = newsContentCoverList; + } + + public int getNewsContentHotNumber() { + return newsContentHotNumber; + } + + public void setNewsContentHotNumber(int newsContentHotNumber) { + this.newsContentHotNumber = newsContentHotNumber; + } + + public String getNewsContentId() { + return newsContentId; + } + + public void setNewsContentId(String newsContentId) { + this.newsContentId = newsContentId; + } + + public String getNewsContentLabel() { + return newsContentLabel; + } + + public void setNewsContentLabel(String newsContentLabel) { + this.newsContentLabel = newsContentLabel; + } + + public List getNewsContentLabelList() { + return newsContentLabelList; + } + + public void setNewsContentLabelList(List newsContentLabelList) { + this.newsContentLabelList = newsContentLabelList; + } + + public int getNewsContentLikeNumber() { + return newsContentLikeNumber; + } + + public void setNewsContentLikeNumber(int newsContentLikeNumber) { + this.newsContentLikeNumber = newsContentLikeNumber; + } + + public String getNewsContentLink() { + return newsContentLink; + } + + public void setNewsContentLink(String newsContentLink) { + this.newsContentLink = newsContentLink; + } + + public String getNewsContentMusic() { + return newsContentMusic; + } + + public void setNewsContentMusic(String newsContentMusic) { + this.newsContentMusic = newsContentMusic; + } + + public String getNewsContentPublishDepartment() { + return newsContentPublishDepartment; + } + + public void setNewsContentPublishDepartment(String newsContentPublishDepartment) { + this.newsContentPublishDepartment = newsContentPublishDepartment; + } + + public String getNewsContentPublishStatus() { + return newsContentPublishStatus; + } + + public void setNewsContentPublishStatus(String newsContentPublishStatus) { + this.newsContentPublishStatus = newsContentPublishStatus; + } + + public String getNewsContentPublishTime() { + return newsContentPublishTime; + } + + public void setNewsContentPublishTime(String newsContentPublishTime) { + this.newsContentPublishTime = newsContentPublishTime; + } + + public String getNewsContentResource() { + return newsContentResource; + } + + public void setNewsContentResource(String newsContentResource) { + this.newsContentResource = newsContentResource; + } + + public int getNewsContentScore() { + return newsContentScore; + } + + public void setNewsContentScore(int newsContentScore) { + this.newsContentScore = newsContentScore; + } + + public String getNewsContentSummary() { + return newsContentSummary; + } + + public void setNewsContentSummary(String newsContentSummary) { + this.newsContentSummary = newsContentSummary; + } + + public String getNewsContentTitle() { + return newsContentTitle; + } + + public void setNewsContentTitle(String newsContentTitle) { + this.newsContentTitle = newsContentTitle; + } + + public String getNewsContentType() { + return newsContentType; + } + + public void setNewsContentType(String newsContentType) { + this.newsContentType = newsContentType; + } + + public int getNewsContentVisitNumber() { + return newsContentVisitNumber; + } + + public void setNewsContentVisitNumber(int newsContentVisitNumber) { + this.newsContentVisitNumber = newsContentVisitNumber; + } + + public String getNewsDirectoriesId() { + return newsDirectoriesId; + } + + public void setNewsDirectoriesId(String newsDirectoriesId) { + this.newsDirectoriesId = newsDirectoriesId; + } + + public String getNewsDirectoriesName() { + return newsDirectoriesName; + } + + public void setNewsDirectoriesName(String newsDirectoriesName) { + this.newsDirectoriesName = newsDirectoriesName; + } + + public String getNewsTypesettingId() { + return newsTypesettingId; + } + + public void setNewsTypesettingId(String newsTypesettingId) { + this.newsTypesettingId = newsTypesettingId; + } + + public String getTemplateRecordUrl() { + return templateRecordUrl; + } + + public void setTemplateRecordUrl(String templateRecordUrl) { + this.templateRecordUrl = templateRecordUrl; + } + + public String getTypesettingCode() { + return typesettingCode; + } + + public void setTypesettingCode(String typesettingCode) { + this.typesettingCode = typesettingCode; + } + + public String getTypesettingImage() { + return typesettingImage; + } + + public void setTypesettingImage(String typesettingImage) { + this.typesettingImage = typesettingImage; + } + + public String getTypesettingName() { + return typesettingName; + } + + public void setTypesettingName(String typesettingName) { + this.typesettingName = typesettingName; + } + + public static class FileListBean { + private String contentFileFileId; + private int contentFileOrder; + private String contentFileText; + private String newsContentFileId; + private String newsContentId; + + public String getContentFileFileId() { + return contentFileFileId; + } + + public void setContentFileFileId(String contentFileFileId) { + this.contentFileFileId = contentFileFileId; + } + + public int getContentFileOrder() { + return contentFileOrder; + } + + public void setContentFileOrder(int contentFileOrder) { + this.contentFileOrder = contentFileOrder; + } + + public String getContentFileText() { + return contentFileText; + } + + public void setContentFileText(String contentFileText) { + this.contentFileText = contentFileText; + } + + public String getNewsContentFileId() { + return newsContentFileId; + } + + public void setNewsContentFileId(String newsContentFileId) { + this.newsContentFileId = newsContentFileId; + } + + public String getNewsContentId() { + return newsContentId; + } + + public void setNewsContentId(String newsContentId) { + this.newsContentId = newsContentId; + } + } + + public static class NewsContentCoverListBean { + private String contentCoverId; + private int contentCoverOrder; + private String newsContentCoverId; + private String newsContentId; + + public String getContentCoverId() { + return contentCoverId; + } + + public void setContentCoverId(String contentCoverId) { + this.contentCoverId = contentCoverId; + } + + public int getContentCoverOrder() { + return contentCoverOrder; + } + + public void setContentCoverOrder(int contentCoverOrder) { + this.contentCoverOrder = contentCoverOrder; + } + + public String getNewsContentCoverId() { + return newsContentCoverId; + } + + public void setNewsContentCoverId(String newsContentCoverId) { + this.newsContentCoverId = newsContentCoverId; + } + + public String getNewsContentId() { + return newsContentId; + } + + public void setNewsContentId(String newsContentId) { + this.newsContentId = newsContentId; + } + } +} diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java index 946adc3..2c0644f 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java @@ -50,7 +50,6 @@ import com.youth.banner.transformer.ScaleInTransformer; import java.util.ArrayList; import java.util.List; -import java.util.Random; import butterknife.BindView; import butterknife.ButterKnife; @@ -115,7 +114,7 @@ public class HomeFragment extends BaseFragment { mBind = ButterKnife.bind(this, dataView); setStateView(STATE_SUCCESS); mSrlView.setEnableLoadMore(false); - mSrlView.setEnableRefresh(false); + mSrlView.setEnableRefresh(true); // mLlMainNews.setOnClickListener(v -> ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) // .navigation()); mRlvMainNews.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); @@ -196,7 +195,7 @@ public class HomeFragment extends BaseFragment { buildMainFuncMenu(); buildBannerData(); getNewsList(null); - getLiveList(); +//TODO 县城一级无直播 getLiveList(); getMainCommendList(); getBannerData(); mBanner.setOnBannerListener((data, position) -> { @@ -229,7 +228,10 @@ public class HomeFragment extends BaseFragment { // .navigation()); } - + /** + * 获取精彩推荐 + * 3条场馆 3条活动 + */ private void getMainCommendList() { Observable[] mObservales = new Observable[2]; Observable hot = RetrofitManager.getInstance() @@ -302,6 +304,7 @@ public class HomeFragment extends BaseFragment { @Override public void onComplete() { + mSrlView.finishRefresh(); } }); @@ -482,111 +485,113 @@ public class HomeFragment extends BaseFragment { private List mMainCommendBeans = new ArrayList<>(); +// /** +// * 获取新闻类型 +// */ +// private void getNewsTabs() { +// RetrofitManager.getInstance() +// .create(HomeApi.class) +// .getNewsTabListByPid(PathConfig.NEWS_ID) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe(new Observer>() { +// @Override +// public void onSubscribe(Disposable d) { +// } +// +// @Override +// public void onNext(List newsTabBeans) { +// if (newsTabBeans != null && newsTabBeans.size() > 0) { +// mIvNewsEmpty.setVisibility(View.GONE); +// Random random = new Random(); +// int i = random.nextInt(newsTabBeans.size()); +// if (TextUtils.isEmpty(UserLgUtils.getToken())) { +// +// } else { +// getNewsListByToken(newsTabBeans.get(i)); +// } +// +// } else { +// if (mNewsSkeleton != null) { +// mNewsSkeleton.hide(); +// } +// mIvNewsEmpty.setVisibility(View.VISIBLE); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// if (mNewsSkeleton != null) { +// mNewsSkeleton.hide(); +// } +// mIvNewsEmpty.setVisibility(View.VISIBLE); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + +// private void getNewsListByToken(NewsTabBean newsTabBean) { +// RetrofitManager.getInstance() +// .create(HomeApi.class) +// .getNewsMainListByToken(newsTabBean.getNewsDirectoriesId(), "5", "1", UserLgUtils.getToken()) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe(new Observer() { +// @Override +// public void onSubscribe(Disposable d) { +// +// } +// +// @Override +// public void onNext(NewsItemBean newsItemBean) { +// if (newsItemBean != null) { +// if (newsItemBean.getRows() != null) { +// if (newsItemBean.getRows().size() > 5) { +// mNewsBeans = newsItemBean.getRows().subList(0, 5); +// } else { +// mNewsBeans = newsItemBean.getRows(); +// } +// if (newsItemBean.getRows().size() > 0) { +// mIvNewsEmpty.setVisibility(View.GONE); +// } else { +// mIvNewsEmpty.setVisibility(View.VISIBLE); +// } +// } else { +// mIvNewsEmpty.setVisibility(View.VISIBLE); +// } +// getCommentCount(1, newsItemBean); +//// TODO mMAdapter.setData(mNewsBeans); +// } else { +// mIvNewsEmpty.setVisibility(View.VISIBLE); +// } +// if (mNewsSkeleton != null) { +// mNewsSkeleton.hide(); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// if (mNewsSkeleton != null) { +// mNewsSkeleton.hide(); +// } +// mIvNewsEmpty.setVisibility(View.VISIBLE); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + /** - * 获取新闻类型 + * 获取新闻 */ - private void getNewsTabs() { - RetrofitManager.getInstance() - .create(HomeApi.class) - .getNewsTabListByPid(PathConfig.NEWS_ID) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer>() { - @Override - public void onSubscribe(Disposable d) { - } - - @Override - public void onNext(List newsTabBeans) { - if (newsTabBeans != null && newsTabBeans.size() > 0) { - mIvNewsEmpty.setVisibility(View.GONE); - Random random = new Random(); - int i = random.nextInt(newsTabBeans.size()); - if (TextUtils.isEmpty(UserLgUtils.getToken())) { - - } else { - getNewsListByToken(newsTabBeans.get(i)); - } - - } else { - if (mNewsSkeleton != null) { - mNewsSkeleton.hide(); - } - mIvNewsEmpty.setVisibility(View.VISIBLE); - } - } - - @Override - public void onError(Throwable e) { - if (mNewsSkeleton != null) { - mNewsSkeleton.hide(); - } - mIvNewsEmpty.setVisibility(View.VISIBLE); - } - - @Override - public void onComplete() { - - } - }); - } - - private void getNewsListByToken(NewsTabBean newsTabBean) { - RetrofitManager.getInstance() - .create(HomeApi.class) - .getNewsMainListByToken(newsTabBean.getNewsDirectoriesId(), "5", "1", UserLgUtils.getToken()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(NewsItemBean newsItemBean) { - if (newsItemBean != null) { - if (newsItemBean.getRows() != null) { - if (newsItemBean.getRows().size() > 5) { - mNewsBeans = newsItemBean.getRows().subList(0, 5); - } else { - mNewsBeans = newsItemBean.getRows(); - } - if (newsItemBean.getRows().size() > 0) { - mIvNewsEmpty.setVisibility(View.GONE); - } else { - mIvNewsEmpty.setVisibility(View.VISIBLE); - } - } else { - mIvNewsEmpty.setVisibility(View.VISIBLE); - } - getCommentCount(1, newsItemBean); -// TODO mMAdapter.setData(mNewsBeans); - } else { - mIvNewsEmpty.setVisibility(View.VISIBLE); - } - if (mNewsSkeleton != null) { - mNewsSkeleton.hide(); - } - } - - @Override - public void onError(Throwable e) { - if (mNewsSkeleton != null) { - mNewsSkeleton.hide(); - } - mIvNewsEmpty.setVisibility(View.VISIBLE); - } - - @Override - public void onComplete() { - - } - }); - } - private void getNewsList(NewsTabBean newsTabBean) { - //获取新闻 RetrofitManager.getInstance() .create(HomeApi.class) .getNewsTabListByPid(PathConfig.NEWS_ID, "5", "1") @@ -709,9 +714,9 @@ public class HomeFragment extends BaseFragment { MainFuncBean culturalBean = new MainFuncBean(); culturalBean.setIconRes(R.drawable.ic_legacy_icon); culturalBean.setTitle("非遗文化"); - MainFuncBean movieBean = new MainFuncBean(); - movieBean.setIconRes(R.drawable.ic_live_icon); - movieBean.setTitle("直播点播"); +// MainFuncBean movieBean = new MainFuncBean(); +// movieBean.setIconRes(R.drawable.ic_live_icon); +// movieBean.setTitle("直播点播"); MainFuncBean volunBean = new MainFuncBean(); volunBean.setIconRes(R.drawable.ic_volunteer_icon); volunBean.setTitle("志愿者服务"); @@ -740,7 +745,7 @@ public class HomeFragment extends BaseFragment { mFuncBeans.add(activityBean); mFuncBeans.add(placeBean); mFuncBeans.add(culturalBean); - mFuncBeans.add(movieBean); +// mFuncBeans.add(movieBean); MainFuncAdapter funcAdapter = new MainFuncAdapter(getActivity(), mFuncBeans); LinearLayoutManager manager = new LinearLayoutManager(mActivity, LinearLayoutManager.HORIZONTAL, false); @@ -786,7 +791,6 @@ public class HomeFragment extends BaseFragment { ARouter.getInstance() .build(PathConfig.PATH_MODULEACTIVITY_ACTIVITY_MAIN) .navigation(); -// TODO mMainActivity.setCurrentPage(1, "活动"); } else if ("场馆导航".equals(mainFuncBean.getTitle())) { mMainActivity.setCurrentPage(2, "场馆"); } else if ("非遗文化".equals(mainFuncBean.getTitle())) { @@ -825,7 +829,12 @@ public class HomeFragment extends BaseFragment { @Override protected void refreshView() { - mSrlView.finishRefresh(); + mBannerList.clear(); + mNewsBeans.clear(); + mMainCommendBeans.clear(); + getNewsList(null); + getBannerData(); + getMainCommendList(); } @Override @@ -842,7 +851,7 @@ public class HomeFragment extends BaseFragment { mMainCommendBeans.clear(); buildBannerData(); getNewsList(null); - getLiveList(); +// getLiveList(); getMainCommendList(); getBannerData(); } diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsFragment.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsFragment.java index 38fc458..7e76bd6 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsFragment.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsFragment.java @@ -111,6 +111,7 @@ public class NewsFragment extends BaseFragment { private void showNewsDetail(NewsItemBean.RowsBean rowsBean, int type) { String url = ""; if ("6".equals(rowsBean.getNewsContentType())) { + //链接新闻 ARouter.getInstance() .build(PathConfig.PATH_MODULE_MAIN_NEWS_WEB) .withString("url", rowsBean.getNewsContentContent()) diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java index 9537666..f19af72 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java @@ -9,6 +9,7 @@ import com.tengshisoft.mudulemain.cultural.beans.AreaListBean; import com.tengshisoft.mudulemain.cultural.beans.BaseUserBean; import com.tengshisoft.mudulemain.cultural.beans.CommentListBean; import com.tengshisoft.mudulemain.cultural.beans.NewsCommentCount; +import com.tengshisoft.mudulemain.cultural.beans.NewsDetailBean; import com.tengshisoft.mudulemain.cultural.beans.NewsItemBean; import com.tengshisoft.mudulemain.cultural.beans.NewsTabBean; import com.tengshisoft.mudulemain.cultural.beans.SearchBean; @@ -90,8 +91,8 @@ public interface HomeApi { * @param page * @return */ - @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json"}) - @GET("app/activitylibrary/listpageactivitylibraryrelease") + @Headers({"base_url_name:activity", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) + @GET("app/activitylibrary/listpageactivitylibraryfornetrelease") Observable getMainActivityList(@Query("page") String page, @Query("rows") String rows); /** @@ -108,23 +109,25 @@ public interface HomeApi { * * @return */ - @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json"}) - @GET("app/newsdirectories/listnewsdirectoriesrelease") - Observable> getNewsTabListByPid(@Query("directoriesParentId") String pid); + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) +// @GET("app/newsdirectories/listnewsdirectoriesrelease") + @GET("app/newsdirectories/listsub/areaauth/release/{newsDirectoriesId}") + Observable> getNewsTabListByPid(@Query("newsDirectoriesId") String pid); /** * 获取新闻子类别 * * @return */ - @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) @GET("app/newscontent/listpagenewscontentrelease") - Observable getNewsTabListByPid(@Query("newsDirectoriesParentId") String pid, @Query("rows") String rows, @Query("page") String page); + Observable getNewsTabListByPid(@Query("newsDirectoriesId") String pid, @Query("rows") String rows, @Query("page") String page); +// Observable getNewsTabListByPid(@Query("newsDirectoriesParentId") String pid, @Query("rows") String rows, @Query("page") String page); /** * 获取新闻列表-不需要token */ - @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) @GET("app/newscontent/listpagenewscontentrelease") Observable getNewsList(@Query("newsDirectoriesId") String newsDirectoriesId, @Query("page") String page); @@ -138,24 +141,32 @@ public interface HomeApi { /** * 获取新闻列表-不需要token */ - @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) @GET("app/newscontent/listpagenewscontentrelease") Observable getMainNewsList(@Query("newsDirectoriesId") String newsDirectoriesId, @Query("rows") String rows, @Query("page") String page); /** * 获取新闻列表-需要token */ - @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) @GET("app/newscontent/listpagenewscontent") Observable getNewsListByToken(@Query("newsDirectoriesId") String newsDirectoriesId, @Query("page") String page, @Header("token") String token); /** * 获取新闻列表-需要token */ - @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) @GET("app/newscontent/listpagenewscontent") Observable getNewsMainListByToken(@Query("newsDirectoriesId") String newsDirectoriesId, @Query("rows") String rows, @Query("page") String page, @Header("token") String token); + /** + * 获取新闻详情 + */ + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json"}) + @GET("app/newscontent/getnewscontentbyidrelease/{id}") + Observable getNewsDetail(@Path("id") String id); + + /** * 获取评论列表 */ @@ -235,7 +246,7 @@ public interface HomeApi { * * @return */ - @Headers({"base_url_name:place", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:place", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) @GET("app/venuesinfo/listpagevenuesinforelease") Observable getPlaceByOrder(@Query("latitude") String lat, @Query("longitude") String lng, @Query("orderKey") String order, @Query("page") String page, @Query("rows") String rows); @@ -243,7 +254,7 @@ public interface HomeApi { * 直播回放列表 * http://192.168.0.104:8084/live/ */ - @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json","is_need_area:false"}) + @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json", "need_area:false"}) @GET("app/liveplan/listpageliveplanrelease") Observable getLiveRecord(@Query("page") String page, @Query("rows") String rows); @@ -254,7 +265,7 @@ public interface HomeApi { * @return */ @Headers({"Content-Type:application/json", "Accept:application/json"}) - @GET("app/area/listallbyparentidrelease/{areaParentId}") + @GET("app/area/listbyparentidrelease/{areaParentId}") Observable> getAreaListByPid(@Path("areaParentId") String pId); /** diff --git a/modulemain/src/main/res/layout/fragment_home.xml b/modulemain/src/main/res/layout/fragment_home.xml index 01d42ef..c1c86cc 100755 --- a/modulemain/src/main/res/layout/fragment_home.xml +++ b/modulemain/src/main/res/layout/fragment_home.xml @@ -185,7 +185,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" - android:orientation="horizontal"> + android:orientation="horizontal" + android:visibility="gone"> + android:background="@color/gray_line" + android:visibility="gone" /> + android:layout_height="wrap_content" + android:visibility="gone"> getPlaceByOrder(@Query("latitude") String lat, @Query("longitude") String lng, @Query("orderKey") String order, @Query("page") String page, @Query("rows") String rows); @@ -44,9 +44,10 @@ public interface ApiPlace { * * @return */ - @Headers({"base_url_name:place", "Content-Type:application/json", "Accept:application/json"}) + @Headers({"base_url_name:place", "Content-Type:application/json", "Accept:application/json","need_area:true"}) @GET("app/venuesinfo/listpagevenuesinforelease") - Observable getPlaceByDictionId(@Query("latitude") String lat, @Query("longitude") String lng, @Query("venueType") String dId, @Query("page") String page, @Query("rows") String rows); + Observable getPlaceByDictionId(@Query("latitude") String lat, @Query("longitude") String lng, @Query("venueType") String dId, @Query("page") String page, + @Query("rows") String rows); /** * 获取场馆类型-全部 From 3048f716e10f416c5adf7526daafb392dc93c785 Mon Sep 17 00:00:00 2001 From: itgaojian Date: Thu, 23 Feb 2023 10:17:12 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E3=80=81=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 237 +---------- build.gradle | 6 +- .../core/beans/UserRegisterPostBean.java | 14 + .../core/retrofit_net/BaseUrlApi.java | 26 +- .../core/retrofit_net/api/BaseApiService.java | 2 +- .../core/widget/views/CustomStateView.java | 87 ++++ .../core/widget/views/ViewPageWebView.java | 76 ++++ .../main/res/drawable-xhdpi/ic_load_error.png | Bin 0 -> 32467 bytes .../src/main/res/layout/layout_state_view.xml | 38 ++ common.gradle | 257 ++++++++++++ .../activitys/ChooseMineTeamActivity.java | 2 +- .../VolunteerActivityDetailActivity.java | 6 +- .../VolunteerActivitySignTeamActivity.java | 2 +- .../activitys/VolunteerPublishActivity.java | 26 +- .../bean/ActivityPublishBean.java | 10 + .../bean/VolunteerActivityDetailBean.java | 9 + .../res/layout/activity_volunteer_detail.xml | 32 ++ .../res/layout/activity_vounteer_publish.xml | 16 +- .../activitys/base/ChooseCityActivity.java | 10 +- .../activitys/base/LoginActivity.java | 122 +++++- .../activitys/base/RegisterActivity.java | 38 +- .../activitys/news/NewsMainActivity.java | 56 +-- .../activitys/news/NewsPdfActivity.java | 2 +- .../activitys/news/NewsWebActivity.java | 13 +- .../cultural/adapter/MainFuncAdapter.java | 34 +- .../mudulemain/cultural/beans/LoginUser.java | 19 + .../cultural/beans/NewsTabBean.java | 114 ++++- .../cultural/fragment/HomeFragment.java | 394 +++++++++++++----- .../cultural/fragment/NewsWebFragment.java | 143 +++++++ .../mudulemain/cultural/net/HomeApi.java | 19 +- .../src/main/res/layout/activity_login.xml | 61 ++- .../src/main/res/layout/activity_register.xml | 7 +- .../src/main/res/layout/fragment_home.xml | 56 +-- .../src/main/res/layout/fragment_news_web.xml | 15 + .../activity/ChangePhoneActivity.java | 3 +- .../fragments/MineMainFragment.java | 9 +- .../main/res/layout/activity_change_phone.xml | 3 +- .../src/main/res/layout/activity_setting.xml | 1 + 38 files changed, 1453 insertions(+), 512 deletions(-) create mode 100644 cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/CustomStateView.java create mode 100755 cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/ViewPageWebView.java create mode 100644 cm_utils/src/main/res/drawable-xhdpi/ic_load_error.png create mode 100644 cm_utils/src/main/res/layout/layout_state_view.xml create mode 100644 common.gradle create mode 100755 modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsWebFragment.java create mode 100755 modulemain/src/main/res/layout/fragment_news_web.xml diff --git a/app/build.gradle b/app/build.gradle index 3f27d90..99996d2 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,242 +48,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - productFlavors { - sangzhuzi { - applicationId "com.tenlion.cultural.sangzhuzi" - dimension 'market' - resValue ("string", "APP_CHANNEL", "sangzhuzi") - resValue ("string", "CITY_CODE", "540202000000") - resValue ("string", "CITY_ID", "640676") - manifestPlaceholders = [CHANNEL_VALUE: "sangzhuzi", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "640676", - CITY_CODE : "540202000000", - BD_KEY : "ipb1ae32sNDRMbwOOpApG6bVBji9K86R", - APP_NAME : "桑珠孜区数字文化云"] - } - nanmulin { - applicationId "com.tenlion.cultural.nanmulin" - dimension 'market' - resValue "string", "APP_CHANNEL", "nanmulin" - resValue ("string", "CITY_CODE", "540221000000") - resValue ("string", "CITY_ID", "640865") - manifestPlaceholders = [CHANNEL_VALUE: "nanmulin", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "640865", - CITY_CODE : "540221000000", - BD_KEY : "g0G2QLpGCAFV8QKxKo5irCZDwPlCPRTQ", - APP_NAME : "南木林县数字文化云"] - } - jiangzi { - applicationId "com.tenlion.cultural.jiangzi" - dimension 'market' - resValue "string", "APP_CHANNEL", "jiangzi" - resValue ("string", "CITY_CODE", "540222000000") - resValue ("string", "CITY_ID", "641029") - manifestPlaceholders = [CHANNEL_VALUE: "jiangzi", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "641029", - CITY_CODE : "540222000000", - BD_KEY : "ZkcqIoGvjy8EfIwaal796KSNEWFsmObL", - APP_NAME : "江孜县数字文化云"] - } - dingri { - applicationId "com.tenlion.cultural.dingri" - dimension 'market' - resValue "string", "APP_CHANNEL", "dingri" - resValue ("string", "CITY_CODE", "540223000000") - resValue ("string", "CITY_ID", "641204") - manifestPlaceholders = [CHANNEL_VALUE: "dingri", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "641204", - CITY_CODE : "540223000000", - BD_KEY : "ql1MLXVWxztmqN2cdxGpe7aYdcvNdRSd", - APP_NAME : "定日县数字文化云"] - } - sajia { - applicationId "com.tenlion.cultural.sajia" - dimension 'market' - resValue "string", "APP_CHANNEL", "sajia" - resValue ("string", "CITY_CODE", "540224000000") - resValue ("string", "CITY_ID", "641393") - manifestPlaceholders = [CHANNEL_VALUE: "sajia", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "641393", - CITY_CODE : "540224000000", - BD_KEY : "PoMpzyP5FGptOGR4dFByXd6euQ66IDI5", - APP_NAME : "萨迦县数字文化云"] - } - lazi { - applicationId "com.tenlion.cultural.lazi" - dimension 'market' - resValue "string", "APP_CHANNEL", "lazi" - resValue ("string", "CITY_CODE", "540225000000") - resValue ("string", "CITY_ID", "641512") - manifestPlaceholders = [CHANNEL_VALUE: "lazi", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "641512", - CITY_CODE : "540225000000", - BD_KEY : "LYw9cxjZ6eNLQ5vFIMvmcvafENtfIG8y", - APP_NAME : "拉孜县数字文化云"] - } - angren { - applicationId "com.tenlion.cultural.angren" - dimension 'market' - resValue "string", "APP_CHANNEL", "angren" - resValue ("string", "CITY_CODE", "540226000000") - resValue ("string", "CITY_ID", "641622") - manifestPlaceholders = [CHANNEL_VALUE: "angren", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "641622", - CITY_CODE : "540226000000", - BD_KEY : "YGTBM02Sgut6xqT9D5lrcfeYqBhE6Ncr", - APP_NAME : "昂仁县数字文化云"] - } - xietongmen { - applicationId "com.tenlion.cultural.xietongmen" - dimension 'market' - resValue "string", "APP_CHANNEL", "xietongmen" - resValue ("string", "CITY_CODE", "540227000000") - resValue ("string", "CITY_ID", "641825") - manifestPlaceholders = [CHANNEL_VALUE: "xietongmen", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "641825", - CITY_CODE : "540227000000", - BD_KEY : "3Y4ZNEGjTGt9iFSHpF1r1iNdnCBxmYIg", - APP_NAME : "谢通门县数字文化云"] - } - bailang { - applicationId "com.tenlion.cultural.bailang" - dimension 'market' - resValue "string", "APP_CHANNEL", "bailang" - resValue ("string", "CITY_CODE", "540228000000") - resValue ("string", "CITY_ID", "641940") - manifestPlaceholders = [CHANNEL_VALUE: "bailang", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "641940", - CITY_CODE : "540228000000", - BD_KEY : "DlnhdI1CmTqBZBCRFkGdnxrDaStkQsu5", - APP_NAME : "白朗县数字文化云"] - } - renbu { - applicationId "com.tenlion.cultural.renbu" - dimension 'market' - resValue "string", "APP_CHANNEL", "renbu" - resValue ("string", "CITY_CODE", "540229000000") - resValue ("string", "CITY_ID", "642063") - manifestPlaceholders = [CHANNEL_VALUE: "renbu", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642063", - CITY_CODE : "540229000000", - BD_KEY : "UL2rUUtPhOq3xBBWpnDGiEuTNHLvtWuh", - APP_NAME : "仁布县数字文化云"] - } - kangma { - applicationId "com.tenlion.cultural.kangma" - dimension 'market' - resValue "string", "APP_CHANNEL", "kangma" - resValue ("string", "CITY_CODE", "540230000000") - resValue ("string", "CITY_ID", "642146") - manifestPlaceholders = [CHANNEL_VALUE: "kangma", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642146", - CITY_CODE : "540230000000", - BD_KEY : "kQsUL41b09E3nhtNIo2ohEKalWwhDFeV", - APP_NAME : "康马县数字文化云"] - } - dingjie { - applicationId "com.tenlion.cultural.dingjie" - dimension 'market' - resValue "string", "APP_CHANNEL", "dingjie" - resValue ("string", "CITY_CODE", "540231000000") - resValue ("string", "CITY_ID", "642203") - manifestPlaceholders = [CHANNEL_VALUE: "dingjie", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642203", - CITY_CODE : "540231000000", - BD_KEY : "4rGrPthpteXXbkyrQXYkbX34YQ31PpH5", - APP_NAME : "定结县数字文化云"] - } - zhongba { - applicationId "com.tenlion.cultural.zhongba" - dimension 'market' - resValue "string", "APP_CHANNEL", "zhongba" - resValue ("string", "CITY_CODE", "540232000000") - resValue ("string", "CITY_ID", "642284") - manifestPlaceholders = [CHANNEL_VALUE: "zhongba", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642284", - CITY_CODE : "540232000000", - BD_KEY : "HpPUfcA5QdexPDpP7QOakTFGHGGtmSQo", - APP_NAME : "仲巴县数字文化云"] - } - yadong { - applicationId "com.tenlion.cultural.yadong" - dimension 'market' - resValue "string", "APP_CHANNEL", "yadong" - resValue ("string", "CITY_CODE", "540233000000") - resValue ("string", "CITY_ID", "642356") - manifestPlaceholders = [CHANNEL_VALUE: "yadong", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642356", - CITY_CODE : "540233000000", - BD_KEY : "vICh5EdGtR5k2RdTaXYWoyDLBai2fVof", - APP_NAME : "亚东县数字文化云"] - } - jilong { - applicationId "com.tenlion.cultural.jilong" - dimension 'market' - resValue "string", "APP_CHANNEL", "jilong" - resValue ("string", "CITY_CODE", "540234000000") - resValue ("string", "CITY_ID", "642389") - manifestPlaceholders = [CHANNEL_VALUE: "jilong", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642389", - CITY_CODE : "540234000000", - BD_KEY : "1uYUV884B8jzRnQG3FlZe5484mWWBkr4", - APP_NAME : "吉隆县数字文化云"] - } - nielamu { - applicationId "com.tenlion.cultural.nielamu" - dimension 'market' - resValue "string", "APP_CHANNEL", "nielamu" - resValue ("string", "CITY_CODE", "540235000000") - resValue ("string", "CITY_ID", "642437") - manifestPlaceholders = [CHANNEL_VALUE: "nielamu", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642437", - CITY_CODE : "540235000000", - BD_KEY : "EZOGc1TFrNolwpiwDNWgaTIzCYQOKrk0", - APP_NAME : "聂拉木县数字文化云"] - } - saga { - applicationId "com.tenlion.cultural.saga" - dimension 'market' - resValue "string", "APP_CHANNEL", "saga" - resValue ("string", "CITY_CODE", "540236000000") - resValue ("string", "CITY_ID", "642489") - manifestPlaceholders = [CHANNEL_VALUE: "saga", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642489", - CITY_CODE : "540236000000", - BD_KEY : "FzlGpMenDV34XFpGWIuiO4s6Tw2otlIK", - APP_NAME : "萨嘎县数字文化云"] - } - gangba { - applicationId "com.tenlion.cultural.gangba" - dimension 'market' - resValue "string", "APP_CHANNEL", "gangba" - resValue ("string", "CITY_CODE", "540237000000") - resValue ("string", "CITY_ID", "642536") - manifestPlaceholders = [CHANNEL_VALUE: "gangba", - APP_LOGO : "@drawable/app_logo", - CITY_ID : "642536", - CITY_CODE : "540237000000", - BD_KEY : "PCSYjtiOsUEBCpK5SjZ2xsBN55jqfsIl", - APP_NAME : "岗巴县数字文化云"] - } - } + productFlavors projectProductFlavors } dependencies { diff --git a/build.gradle b/build.gradle index c6823fc..de2d783 100755 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - + apply from: "${project.rootDir}/common.gradle" repositories { google() jcenter() @@ -114,6 +114,6 @@ ext { gSmartRefreshLayoutVersion = '1.1.2' leonidslibVersion = '1.3.2' ijkPlayer = '0.8.8' - pdfVersion='2.8.2' - downloadVersion='1.7.7' + pdfVersion = '2.8.2' + downloadVersion = '1.7.7' } \ No newline at end of file diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/beans/UserRegisterPostBean.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/beans/UserRegisterPostBean.java index f7e1a5d..d2cec81 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/beans/UserRegisterPostBean.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/beans/UserRegisterPostBean.java @@ -10,6 +10,20 @@ public class UserRegisterPostBean { private String phone; private String verificationCode; private String password; + private String verifyCode; +// { +// "phone": "", +// "verifyCode": "" +// } + + + public String getVerifyCode() { + return verifyCode; + } + + public void setVerifyCode(String verifyCode) { + this.verifyCode = verifyCode; + } public String getPassword() { return password; diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java index dea0e7f..55464e1 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java @@ -9,24 +9,14 @@ import com.sucstepsoft.cm_utils.constant.PathConfig; */ public class BaseUrlApi { - // public static final String IP = "http://192.168.0.113:7001/usercenter/";/* 测试IP */ - // public static final String IP = "https://www.wgink.ink/usercenter/";/* 正式IP */ -// public static final String IP = "https://www.xzszwhy.cn/usercenter/";/* 正式IP */ - // public static final String BASE_SYSTEM_IP = "http://192.168.0.115:8082/"; -// public static final String BASE_SYSTEM_IP = "http://121.36.71.250:58050/xzszwhy/"; -// public static final String IP = "http://49.233.36.36:58099/xzszwhy/";/* 测试IP */ - public static final String IP = "http://v3.xzszwhy.cn/xzszwhy/";/* 测试IP */ - // public static final String IP = "http://192.168.0.120:8081/xzszwhy/";/* 测试IP */ - public static final String IP_URL = "http://v3.xzszwhy.cn/";/* 测试IP */ - // public static final String IP_URL = "http://192.168.0.120:8081/";/* 测试IP */ - // public static final String IP = "https://www.wgink.ink/usercenter/";/* 正式IP */ -// public static final String IP = "https://www.xzszwhy.cn/usercenter/";/* 正式IP */ -// public static final String BASE_SYSTEM_IP = "http://192.168.0.120:8081/xzszwhy/"; - public static final String BASE_SYSTEM_IP = "http://v3.xzszwhy.cn/xzszwhy/"; - // public static final String BASE_SYSTEM_IP = "https://www.xzszwhy.cn/"; - // public static final String IP = "http://192.168.0.113:7001/usercenter/";/* 测试IP */ +// public static final String IP_URL = "http://v3.xzszwhy.cn/";/* 测试IP */ + public static final String IP_URL = "http://192.168.0.120:8081/";/* 测试IP */ + + public static final String BASE_SYSTEM_IP = "http://192.168.0.120:8081/xzszwhy/";/*测试IP*/ +// public static final String BASE_SYSTEM_IP = "http://v3.xzszwhy.cn/xzszwhy/";/*正式IP*/ + public static final String PROJECT_NAME = "app/"; - public static final String BASE_URL = IP; + public static final String BASE_URL = BASE_SYSTEM_IP; public static final int PHOTO_REQUEST = 233; public static final int VIDEO_REQUEST_ALBUM = 77; public static final int VIDEO_REQUEST_CAMERA = 88; @@ -86,7 +76,7 @@ public class BaseUrlApi { public static final String BASE_VOLUNTEER_IMG_URL = BASE_VOLUNTEER_IP + "route/file/download/true/"; public static final String BASE_NEWS_IMG_URL = BASE_NEWS_IP + "route/file/download/true/"; public static final String BASE_LIVE_IMG_IP = BASE_LIVE_IP + "route/file/download/true/"; - public static final String BASE_IMG_URL = IP + "route/file/download/true/"; + public static final String BASE_IMG_URL = BASE_SYSTEM_IP + "route/file/download/true/"; public static final String BASE_SHOP_IMG_URL = BASE_SHOP_IP + "/route/file/download/true/"; public static final String BASE_LEGACY_IMG_URL = BASE_LEGACY_IP + "route/file/download/true/"; diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java index 6da51f3..fd68c73 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/api/BaseApiService.java @@ -203,7 +203,7 @@ public interface BaseApiService { * 通过手机号验证码 */ @Headers({"Content-Type:application/json", "Accept:application/json"}) - @POST("app/register/saveregisteruser") + @POST("app/register/phone") Observable doRegisterUser(@Body RequestBody body); /** diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/CustomStateView.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/CustomStateView.java new file mode 100644 index 0000000..db515f6 --- /dev/null +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/CustomStateView.java @@ -0,0 +1,87 @@ +package com.sucstepsoft.cm_utils.core.widget.views; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.sucstepsoft.cm_utils.R; + +/** + * 作者: adam + * 日期: 2022/4/27 - 16:40 + * 邮箱: itgaojian@163.com + * 描述: 加载状态view + */ +public class CustomStateView extends LinearLayout { + public static final int STATE_LOAD = 0x123;//加载中 + public static final int STATE_EMPTY = 0x124;//空数据 + public static final int STATE_ERROR = 0x125;//加载失败 + public static final int STATE_SUCCESS = 0x126;//加载成功 + public static final int STATE_ERROR_NET = 0x127;//加载失败,网络错误 + public static final int STATE_SEARCH = 0x128;//搜索默认状态 + private ProgressBar mPbStateLoading; + private ImageView mIvStateDate; + private TextView mTvStateHint; + + public CustomStateView(Context context) { + this(context, null); + } + + public CustomStateView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + View view = LayoutInflater.from(context).inflate(R.layout.layout_state_view, this, true); + mPbStateLoading = view.findViewById(R.id.pb_loading); + mIvStateDate = view.findViewById(R.id.iv_state_data); + mTvStateHint = view.findViewById(R.id.tv_state_hint); + setState(STATE_LOAD); + } + + public CustomStateView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + } + + public void setState(int state) { + switch (state) { + case STATE_LOAD://加载中 + mIvStateDate.setVisibility(View.GONE); + mPbStateLoading.setVisibility(View.VISIBLE); + mTvStateHint.setVisibility(View.VISIBLE); + mTvStateHint.setText("加载中..."); + break; + case STATE_EMPTY://没有数据 + mIvStateDate.setVisibility(View.VISIBLE); + mIvStateDate.setBackgroundResource(R.drawable.ic_empty_data); + mPbStateLoading.setVisibility(View.GONE); + mTvStateHint.setVisibility(View.VISIBLE); + mTvStateHint.setText("暂无数据"); + break; + case STATE_ERROR: + mIvStateDate.setVisibility(View.VISIBLE); + mIvStateDate.setBackgroundResource(R.drawable.ic_load_error); + mPbStateLoading.setVisibility(View.GONE); + mTvStateHint.setVisibility(View.VISIBLE); + mTvStateHint.setText("加载失败"); + break; + case STATE_SUCCESS: + mIvStateDate.setVisibility(GONE); + mPbStateLoading.setVisibility(GONE); + mTvStateHint.setVisibility(GONE); + break; + case STATE_SEARCH://搜索默认 + mIvStateDate.setVisibility(View.VISIBLE); + mIvStateDate.setBackgroundResource(R.drawable.ic_empty_data); + mPbStateLoading.setVisibility(View.GONE); + mTvStateHint.setVisibility(View.VISIBLE); + mTvStateHint.setText("请输入要搜索的内容"); + break; + } + } +} diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/ViewPageWebView.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/ViewPageWebView.java new file mode 100755 index 0000000..d7b7848 --- /dev/null +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/ViewPageWebView.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2016 Tobias Rohloff + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.sucstepsoft.cm_utils.core.widget.views; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.webkit.WebView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.MotionEventCompat; + +public class ViewPageWebView extends WebView { + private boolean isScrollX = false; + + public ViewPageWebView(@NonNull Context context) { + super(context); + } + + public ViewPageWebView(@NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public ViewPageWebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (MotionEventCompat.getPointerCount(event) == 1) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + isScrollX = false; + //事件由webview处理 + getParent().getParent() + .requestDisallowInterceptTouchEvent(true); + break; + case MotionEvent.ACTION_MOVE: + //嵌套Viewpager时 + getParent().getParent() + .requestDisallowInterceptTouchEvent(!isScrollX); + break; + default: + getParent().getParent() + .requestDisallowInterceptTouchEvent(false); + } + } else { + //使webview可以双指缩放(前提是webview必须开启缩放功能,并且加载的网页也支持缩放) + getParent().getParent(). + requestDisallowInterceptTouchEvent(true); + } + return super.onTouchEvent(event); + } + + //当webview滚动到边界时执行 + @Override + protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { + super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); + isScrollX = clampedX; + } +} diff --git a/cm_utils/src/main/res/drawable-xhdpi/ic_load_error.png b/cm_utils/src/main/res/drawable-xhdpi/ic_load_error.png new file mode 100644 index 0000000000000000000000000000000000000000..ea33329883f01ade71d2ea946720fab4a8c3bc8e GIT binary patch literal 32467 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 P{W9x=b_dEVy`ujI_~mr_ literal 0 HcmV?d00001 diff --git a/cm_utils/src/main/res/layout/layout_state_view.xml b/cm_utils/src/main/res/layout/layout_state_view.xml new file mode 100644 index 0000000..fcad0b1 --- /dev/null +++ b/cm_utils/src/main/res/layout/layout_state_view.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/common.gradle b/common.gradle new file mode 100644 index 0000000..516e403 --- /dev/null +++ b/common.gradle @@ -0,0 +1,257 @@ +project.ext { + //Android编译相关版本 + //混淆相关 + minify_enabled = false + //渠道包 + projectProductFlavors = { + //市一级 + city { + applicationId "com.tengshisoft.cultural" + dimension 'market' + resValue("string", "APP_CHANNEL", "cultural") + resValue("string", "CITY_CODE", "540200000000") + resValue("string", "CITY_ID", "640675") + manifestPlaceholders = [CHANNEL_VALUE: "cultural", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "640676", + CITY_CODE : "540202000000", + BD_KEY : "ipb1ae32sNDRMbwOOpApG6bVBji9K86R", + APP_NAME : "日喀则市数字文化云"] + } + //区县 + sangzhuzi { + applicationId "com.tenlion.cultural.sangzhuzi" + dimension 'market' + resValue("string", "APP_CHANNEL", "sangzhuzi") + resValue("string", "CITY_CODE", "540202000000") + resValue("string", "CITY_ID", "640676") + manifestPlaceholders = [CHANNEL_VALUE: "sangzhuzi", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "640676", + CITY_CODE : "540202000000", + BD_KEY : "ipb1ae32sNDRMbwOOpApG6bVBji9K86R", + APP_NAME : "桑珠孜区数字文化云"] + } + nanmulin { + applicationId "com.tenlion.cultural.nanmulin" + dimension 'market' + resValue "string", "APP_CHANNEL", "nanmulin" + resValue("string", "CITY_CODE", "540221000000") + resValue("string", "CITY_ID", "640865") + manifestPlaceholders = [CHANNEL_VALUE: "nanmulin", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "640865", + CITY_CODE : "540221000000", + BD_KEY : "g0G2QLpGCAFV8QKxKo5irCZDwPlCPRTQ", + APP_NAME : "南木林县数字文化云"] + } + jiangzi { + applicationId "com.tenlion.cultural.jiangzi" + dimension 'market' + resValue "string", "APP_CHANNEL", "jiangzi" + resValue("string", "CITY_CODE", "540222000000") + resValue("string", "CITY_ID", "641029") + manifestPlaceholders = [CHANNEL_VALUE: "jiangzi", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "641029", + CITY_CODE : "540222000000", + BD_KEY : "ZkcqIoGvjy8EfIwaal796KSNEWFsmObL", + APP_NAME : "江孜县数字文化云"] + } + dingri { + applicationId "com.tenlion.cultural.dingri" + dimension 'market' + resValue "string", "APP_CHANNEL", "dingri" + resValue("string", "CITY_CODE", "540223000000") + resValue("string", "CITY_ID", "641204") + manifestPlaceholders = [CHANNEL_VALUE: "dingri", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "641204", + CITY_CODE : "540223000000", + BD_KEY : "ql1MLXVWxztmqN2cdxGpe7aYdcvNdRSd", + APP_NAME : "定日县数字文化云"] + } + sajia { + applicationId "com.tenlion.cultural.sajia" + dimension 'market' + resValue "string", "APP_CHANNEL", "sajia" + resValue("string", "CITY_CODE", "540224000000") + resValue("string", "CITY_ID", "641393") + manifestPlaceholders = [CHANNEL_VALUE: "sajia", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "641393", + CITY_CODE : "540224000000", + BD_KEY : "PoMpzyP5FGptOGR4dFByXd6euQ66IDI5", + APP_NAME : "萨迦县数字文化云"] + } + lazi { + applicationId "com.tenlion.cultural.lazi" + dimension 'market' + resValue "string", "APP_CHANNEL", "lazi" + resValue("string", "CITY_CODE", "540225000000") + resValue("string", "CITY_ID", "641512") + manifestPlaceholders = [CHANNEL_VALUE: "lazi", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "641512", + CITY_CODE : "540225000000", + BD_KEY : "LYw9cxjZ6eNLQ5vFIMvmcvafENtfIG8y", + APP_NAME : "拉孜县数字文化云"] + } + angren { + applicationId "com.tenlion.cultural.angren" + dimension 'market' + resValue "string", "APP_CHANNEL", "angren" + resValue("string", "CITY_CODE", "540226000000") + resValue("string", "CITY_ID", "641622") + manifestPlaceholders = [CHANNEL_VALUE: "angren", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "641622", + CITY_CODE : "540226000000", + BD_KEY : "YGTBM02Sgut6xqT9D5lrcfeYqBhE6Ncr", + APP_NAME : "昂仁县数字文化云"] + } + xietongmen { + applicationId "com.tenlion.cultural.xietongmen" + dimension 'market' + resValue "string", "APP_CHANNEL", "xietongmen" + resValue("string", "CITY_CODE", "540227000000") + resValue("string", "CITY_ID", "641825") + manifestPlaceholders = [CHANNEL_VALUE: "xietongmen", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "641825", + CITY_CODE : "540227000000", + BD_KEY : "3Y4ZNEGjTGt9iFSHpF1r1iNdnCBxmYIg", + APP_NAME : "谢通门县数字文化云"] + } + bailang { + applicationId "com.tenlion.cultural.bailang" + dimension 'market' + resValue "string", "APP_CHANNEL", "bailang" + resValue("string", "CITY_CODE", "540228000000") + resValue("string", "CITY_ID", "641940") + manifestPlaceholders = [CHANNEL_VALUE: "bailang", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "641940", + CITY_CODE : "540228000000", + BD_KEY : "DlnhdI1CmTqBZBCRFkGdnxrDaStkQsu5", + APP_NAME : "白朗县数字文化云"] + } + renbu { + applicationId "com.tenlion.cultural.renbu" + dimension 'market' + resValue "string", "APP_CHANNEL", "renbu" + resValue("string", "CITY_CODE", "540229000000") + resValue("string", "CITY_ID", "642063") + manifestPlaceholders = [CHANNEL_VALUE: "renbu", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642063", + CITY_CODE : "540229000000", + BD_KEY : "UL2rUUtPhOq3xBBWpnDGiEuTNHLvtWuh", + APP_NAME : "仁布县数字文化云"] + } + kangma { + applicationId "com.tenlion.cultural.kangma" + dimension 'market' + resValue "string", "APP_CHANNEL", "kangma" + resValue("string", "CITY_CODE", "540230000000") + resValue("string", "CITY_ID", "642146") + manifestPlaceholders = [CHANNEL_VALUE: "kangma", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642146", + CITY_CODE : "540230000000", + BD_KEY : "kQsUL41b09E3nhtNIo2ohEKalWwhDFeV", + APP_NAME : "康马县数字文化云"] + } + dingjie { + applicationId "com.tenlion.cultural.dingjie" + dimension 'market' + resValue "string", "APP_CHANNEL", "dingjie" + resValue("string", "CITY_CODE", "540231000000") + resValue("string", "CITY_ID", "642203") + manifestPlaceholders = [CHANNEL_VALUE: "dingjie", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642203", + CITY_CODE : "540231000000", + BD_KEY : "4rGrPthpteXXbkyrQXYkbX34YQ31PpH5", + APP_NAME : "定结县数字文化云"] + } + zhongba { + applicationId "com.tenlion.cultural.zhongba" + dimension 'market' + resValue "string", "APP_CHANNEL", "zhongba" + resValue("string", "CITY_CODE", "540232000000") + resValue("string", "CITY_ID", "642284") + manifestPlaceholders = [CHANNEL_VALUE: "zhongba", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642284", + CITY_CODE : "540232000000", + BD_KEY : "HpPUfcA5QdexPDpP7QOakTFGHGGtmSQo", + APP_NAME : "仲巴县数字文化云"] + } + yadong { + applicationId "com.tenlion.cultural.yadong" + dimension 'market' + resValue "string", "APP_CHANNEL", "yadong" + resValue("string", "CITY_CODE", "540233000000") + resValue("string", "CITY_ID", "642356") + manifestPlaceholders = [CHANNEL_VALUE: "yadong", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642356", + CITY_CODE : "540233000000", + BD_KEY : "vICh5EdGtR5k2RdTaXYWoyDLBai2fVof", + APP_NAME : "亚东县数字文化云"] + } + jilong { + applicationId "com.tenlion.cultural.jilong" + dimension 'market' + resValue "string", "APP_CHANNEL", "jilong" + resValue("string", "CITY_CODE", "540234000000") + resValue("string", "CITY_ID", "642389") + manifestPlaceholders = [CHANNEL_VALUE: "jilong", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642389", + CITY_CODE : "540234000000", + BD_KEY : "1uYUV884B8jzRnQG3FlZe5484mWWBkr4", + APP_NAME : "吉隆县数字文化云"] + } + nielamu { + applicationId "com.tenlion.cultural.nielamu" + dimension 'market' + resValue "string", "APP_CHANNEL", "nielamu" + resValue("string", "CITY_CODE", "540235000000") + resValue("string", "CITY_ID", "642437") + manifestPlaceholders = [CHANNEL_VALUE: "nielamu", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642437", + CITY_CODE : "540235000000", + BD_KEY : "EZOGc1TFrNolwpiwDNWgaTIzCYQOKrk0", + APP_NAME : "聂拉木县数字文化云"] + } + saga { + applicationId "com.tenlion.cultural.saga" + dimension 'market' + resValue "string", "APP_CHANNEL", "saga" + resValue("string", "CITY_CODE", "540236000000") + resValue("string", "CITY_ID", "642489") + manifestPlaceholders = [CHANNEL_VALUE: "saga", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642489", + CITY_CODE : "540236000000", + BD_KEY : "FzlGpMenDV34XFpGWIuiO4s6Tw2otlIK", + APP_NAME : "萨嘎县数字文化云"] + } + gangba { + applicationId "com.tenlion.cultural.gangba" + dimension 'market' + resValue "string", "APP_CHANNEL", "gangba" + resValue("string", "CITY_CODE", "540237000000") + resValue("string", "CITY_ID", "642536") + manifestPlaceholders = [CHANNEL_VALUE: "gangba", + APP_LOGO : "@drawable/app_logo", + CITY_ID : "642536", + CITY_CODE : "540237000000", + BD_KEY : "PCSYjtiOsUEBCpK5SjZ2xsBN55jqfsIl", + APP_NAME : "岗巴县数字文化云"] + } + } +} \ No newline at end of file diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/ChooseMineTeamActivity.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/ChooseMineTeamActivity.java index 8cff60d..54b4046 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/ChooseMineTeamActivity.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/ChooseMineTeamActivity.java @@ -62,7 +62,7 @@ public class ChooseMineTeamActivity extends BaseActivity { Intent intent = new Intent(); intent.putExtra("id", chooseBean.getTeamId()); intent.putExtra("name", chooseBean.getTeamName()); - setResult(333, intent); + setResult(RESULT_OK, intent); finish(); } }); diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivityDetailActivity.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivityDetailActivity.java index acb96bd..aef3518 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivityDetailActivity.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivityDetailActivity.java @@ -11,6 +11,8 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.Nullable; + import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.google.gson.Gson; @@ -42,7 +44,6 @@ import com.youth.banner.util.BannerUtils; import java.util.ArrayList; import java.util.List; -import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -98,6 +99,8 @@ public class VolunteerActivityDetailActivity extends BaseActivity { TextView mTvTypeContent; @BindView(R2.id.tv_activity_log) TypeFaceTextView mTvActivityLog; + @BindView(R2.id.tv_area_content) + TextView mTvArea; private Unbinder mBind; private String mId; private WebView mWebView; @@ -426,6 +429,7 @@ public class VolunteerActivityDetailActivity extends BaseActivity { mTvContactPeo.setText(detailBean.getLinkMan());//联系人 mTvPhone.setText(detailBean.getLinkTel());//联系电话 mTvAwards.setText(detailBean.getServiceReward());//服务奖补 + mTvArea.setText(detailBean.getServiceAreaCodeName());//活动区域 mWebView = new WebView(mActivity); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDefaultTextEncodingName("utf-8"); diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivitySignTeamActivity.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivitySignTeamActivity.java index 0d76471..8148a1d 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivitySignTeamActivity.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerActivitySignTeamActivity.java @@ -171,7 +171,7 @@ public class VolunteerActivitySignTeamActivity extends BaseActivity { protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 123) { - if (resultCode == 333) { + if (resultCode == RESULT_OK) { mTeamId = data.getStringExtra("id"); mTeamName = data.getStringExtra("name"); mTvChooseTeam.setText(mTeamName); diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerPublishActivity.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerPublishActivity.java index d452095..5ea9c05 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerPublishActivity.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/activitys/VolunteerPublishActivity.java @@ -112,6 +112,10 @@ public class VolunteerPublishActivity extends BaseActivity { LinearLayout mLlChooseTeam; @BindView(R2.id.tv_choose_team) TextView mTvChooseTeam; + @BindView(R2.id.ll_area) + LinearLayout mllArea; + @BindView(R2.id.tv_choose_area) + TextView mTvChooseArea; private Unbinder mBind; private TimePickerView mTimePicker; private TimePickerView mEndTimePicker; @@ -120,6 +124,7 @@ public class VolunteerPublishActivity extends BaseActivity { private String mType = "1"; private String mPhotoIds = ""; private String mChooseTeamId = ""; + private String mChooseArea = ""; @Override public void initData() { @@ -161,6 +166,9 @@ public class VolunteerPublishActivity extends BaseActivity { mLlChooseTeam.setVisibility(View.VISIBLE); } }); + mTvChooseArea.setOnClickListener(v -> ARouter.getInstance() + .build(PathConfig.PATH_MODULE_MAIN_CHOOSE_CITY) + .navigation(mActivity, 444)); } /** @@ -266,11 +274,18 @@ public class VolunteerPublishActivity extends BaseActivity { e.printStackTrace(); } break; + case 888: + String name = data.getStringExtra("name"); + mTvChooseTeam.setText(name); + mChooseTeamId = data.getStringExtra("id"); + break; } } else if (resultCode == 333) { - String name = data.getStringExtra("name"); - mTvChooseTeam.setText(name); - mChooseTeamId = data.getStringExtra("id"); + //活动区域 + String chooseCity = data.getStringExtra("chooseCity"); + String code = data.getStringExtra("chooseCityId"); + mTvChooseArea.setText(chooseCity); + mChooseArea = code; } super.onActivityResult(requestCode, resultCode, data); } @@ -413,6 +428,7 @@ public class VolunteerPublishActivity extends BaseActivity { String endTime = mTvEndTimeContent.getText().toString().trim();//结束时间 String awards = mEtServiceAwards.getText().toString().trim();//服务奖补 String serviceContent = mEtServiceContent.getText().toString().trim(); + bean.setServiceAreaCode(mChooseArea);//服务区域 if (!TextUtils.isEmpty(awards)) { bean.setServiceReward(awards); } @@ -442,6 +458,10 @@ public class VolunteerPublishActivity extends BaseActivity { } private boolean checkParams() { + if (TextUtils.isEmpty(mChooseArea)) { + ToastUtils.showShort("请选择活动区域"); + return false; + } String name = mEtName.getText().toString().trim(); if (TextUtils.isEmpty(name)) { ToastUtils.showShort("请输入活动名称"); diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/ActivityPublishBean.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/ActivityPublishBean.java index bf08306..707b460 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/ActivityPublishBean.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/ActivityPublishBean.java @@ -43,6 +43,16 @@ public class ActivityPublishBean { private String voluntaryType; private String volunteerId; private String volunteerName; + private String serviceAreaCode; + + + public String getServiceAreaCode() { + return serviceAreaCode; + } + + public void setServiceAreaCode(String serviceAreaCode) { + this.serviceAreaCode = serviceAreaCode; + } public String getCount() { return count; diff --git a/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/VolunteerActivityDetailBean.java b/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/VolunteerActivityDetailBean.java index eec29de..aa8bc5a 100755 --- a/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/VolunteerActivityDetailBean.java +++ b/modulecultural/src/main/java/com/tengshisoft/modulecultural/bean/VolunteerActivityDetailBean.java @@ -49,6 +49,15 @@ public class VolunteerActivityDetailBean { private String isVolunteer; private int joinCount; private String creatStatus; + private String serviceAreaCodeName; + + public String getServiceAreaCodeName() { + return serviceAreaCodeName; + } + + public void setServiceAreaCodeName(String serviceAreaCodeName) { + this.serviceAreaCodeName = serviceAreaCodeName; + } public String getCreatStatus() { return creatStatus; diff --git a/modulecultural/src/main/res/layout/activity_volunteer_detail.xml b/modulecultural/src/main/res/layout/activity_volunteer_detail.xml index 256d14b..6395817 100755 --- a/modulecultural/src/main/res/layout/activity_volunteer_detail.xml +++ b/modulecultural/src/main/res/layout/activity_volunteer_detail.xml @@ -76,6 +76,38 @@ android:orientation="vertical" android:padding="10dp"> + + + + + + + + + + + + + + + + getVerifyCode()); } + /** + * 获取验证码 + */ + /** + * 获取验证码 + */ + private void getVerifyCode() { + if (checkPhone()) { + String phone = mEtPhone.getText().toString().trim(); + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + mBtnVerifyCode.setEnabled(false); + RetrofitManager.getInstance() + .create(BaseApiService.class) + .getVerifyCodeBean(phone) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(BaseSuccessBean baseSuccessBean) { + dialog.dismiss(); + ToastUtils.showShort("获取成功"); + countDown(); + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + mBtnVerifyCode.setEnabled(true); + mBtnVerifyCode.setText("重新获取"); + } + + @Override + public void onComplete() { + + } + }); + } + } + + private boolean checkPhone() { + String phone = mEtPhone.getText().toString().trim(); + if (TextUtils.isEmpty(phone) || !RegexUtils.isMobileExact(phone)) { + ToastUtils.showShort("请输入合法的手机号码"); + return false; + } + return true; + } + + /** + * 验证码倒计时 + */ + @SuppressLint("CheckResult") + private void countDown() { + Observable.interval(0, 1, TimeUnit.SECONDS).take(mCountDownNum) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + mCountDownDis = d; + } + + @Override + public void onNext(Long aLong) { + long l = mCountDownNum - aLong; + if (l == 1) { + mBtnVerifyCode.setEnabled(true); + mBtnVerifyCode.setText("重新获取"); + } else { + mBtnVerifyCode.setEnabled(false); + mBtnVerifyCode.setText(l + "s后重新获取"); + } + } + + @Override + public void onError(Throwable e) { + ExceptionHandler.handleException(e); + mBtnVerifyCode.setEnabled(true); + mBtnVerifyCode.setText("重新获取"); + } + + @Override + public void onComplete() { + + } + }); + } /** * 登录 @@ -111,20 +217,19 @@ public class LoginActivity extends BaseActivity { ProgressDialog dialog = UIUtil.initDialog(mActivity, "登录中..."); dialog.show(); String phone = mEtPhone.getText().toString().trim(); - String pwd = mEtPwd.getText().toString().trim(); + String verifyCode = mEtVerifyCode.getText().toString().trim(); LoginUser info = new LoginUser(); info.setAppVersion(AppUtils.getAppVersionCode()); info.setAppId(PathConfig.APP_VERSION_ID); info.setUsername(phone); - String md5Pwd = EncryptUtils.encryptMD5ToStringTimes(pwd, 3); - info.setPassword(md5Pwd); info.setDeviceNo("deviceId"); + info.setVerificationCode(verifyCode); Gson gson = new Gson(); String obj = gson.toJson(info); RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), obj); RetrofitManager.getInstance() .create(HomeApi.class) - .doLogin(body) + .doLoginWithPhone(body) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer() { @@ -217,9 +322,9 @@ public class LoginActivity extends BaseActivity { ToastUtils.showShort("请输入合法的手机号码"); return false; } - String pwd = mEtPwd.getText().toString().trim(); + String pwd = mEtVerifyCode.getText().toString().trim(); if (TextUtils.isEmpty(pwd)) { - ToastUtils.showShort("请输入密码"); + ToastUtils.showShort("请输入验证码"); return false; } return true; @@ -228,6 +333,9 @@ public class LoginActivity extends BaseActivity { @Override protected void onDestroy() { + if (mCountDownDis != null && !mCountDownDis.isDisposed()) { + mCountDownDis.dispose(); + } if (mD1 != null && !mD1.isDisposed()) { mD1.dispose(); } diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/RegisterActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/RegisterActivity.java index d82414b..ca2b27d 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/RegisterActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/RegisterActivity.java @@ -14,14 +14,12 @@ import android.widget.ImageView; import com.alibaba.android.arouter.facade.annotation.Route; import com.google.gson.Gson; import com.sucstepsoft.cm_utils.constant.PathConfig; -import com.sucstepsoft.cm_utils.constant.RegexConstants; import com.sucstepsoft.cm_utils.core.beans.BaseSuccessBean; import com.sucstepsoft.cm_utils.core.beans.UserRegisterPostBean; import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.retrofit_net.api.BaseApiService; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView; -import com.sucstepsoft.cm_utils.utils.EncryptUtils; import com.sucstepsoft.cm_utils.utils.ExceptionHandler; import com.sucstepsoft.cm_utils.utils.RegexUtils; import com.sucstepsoft.cm_utils.utils.UIUtil; @@ -151,14 +149,11 @@ public class RegisterActivity extends BaseActivity { if (checkAllParams()) { String phone = mEtPhone.getText().toString().trim(); String code = mEtVerifyCode.getText().toString().trim(); - String pwd = mEtPwd.getText().toString().trim(); ProgressDialog dialog = UIUtil.initDialog(mActivity, "注册中..."); dialog.show(); UserRegisterPostBean info = new UserRegisterPostBean(); - String md5Pwd = EncryptUtils.encryptMD5ToStringTimes(pwd, 3); - info.setPassword(md5Pwd); info.setPhone(phone); - info.setVerificationCode(code); + info.setVerifyCode(code); Gson gson = new Gson(); String obj = gson.toJson(info); RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), obj); @@ -182,8 +177,8 @@ public class RegisterActivity extends BaseActivity { @Override public void onError(Throwable e) { - ExceptionHandler.handleException(e); dialog.dismiss(); + ExceptionHandler.handleException(e); } @Override @@ -210,20 +205,20 @@ public class RegisterActivity extends BaseActivity { ToastUtils.showShort("请输入验证码"); return false; } - String pwd = mEtPwd.getText().toString().trim(); - if (TextUtils.isEmpty(pwd) || !RegexUtils.isMatch(RegexConstants.REGEX_PWD, pwd)) { - ToastUtils.showShort("密码最少为6位且包含数字和字母"); - return false; - } - String confirmpwd = mEtConfirmPwd.getText().toString().trim(); - if (TextUtils.isEmpty(confirmpwd)) { - ToastUtils.showShort("请输入确认密码"); - return false; - } - if (!confirmpwd.equals(pwd)) { - ToastUtils.showShort("密码与确认密码不符"); - return false; - } +// String pwd = mEtPwd.getText().toString().trim(); +// if (TextUtils.isEmpty(pwd) || !RegexUtils.isMatch(RegexConstants.REGEX_PWD, pwd)) { +// ToastUtils.showShort("密码最少为6位且包含数字和字母"); +// return false; +// } +// String confirmpwd = mEtConfirmPwd.getText().toString().trim(); +// if (TextUtils.isEmpty(confirmpwd)) { +// ToastUtils.showShort("请输入确认密码"); +// return false; +// } +// if (!confirmpwd.equals(pwd)) { +// ToastUtils.showShort("密码与确认密码不符"); +// return false; +// } return true; } @@ -278,6 +273,7 @@ public class RegisterActivity extends BaseActivity { }); } } + @Override protected int setLayoutId() { return R.layout.activity_register; diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsMainActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsMainActivity.java index 588253a..2186b5a 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsMainActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsMainActivity.java @@ -1,11 +1,33 @@ package com.tengshisoft.mudulemain.cultural.activitys.news; +import android.graphics.Color; +import android.os.Bundle; +import android.view.View; +import android.widget.TextView; + import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.google.android.material.tabs.TabLayout; +import com.sucstepsoft.cm_utils.constant.PathConfig; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; +import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.core.widget.base.BaseFragment; +import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView; +import com.tengshisoft.mudulemain.R; +import com.tengshisoft.mudulemain.R2; +import com.tengshisoft.mudulemain.cultural.beans.NewsTabBean; +import com.tengshisoft.mudulemain.cultural.fragment.NewsFragment; +import com.tengshisoft.mudulemain.cultural.fragment.NewsWebFragment; +import com.tengshisoft.mudulemain.cultural.net.HomeApi; + +import java.util.ArrayList; +import java.util.List; + import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -14,28 +36,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; -import android.graphics.Color; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.alibaba.android.arouter.facade.annotation.Route; -import com.google.android.material.tabs.TabLayout; -import com.google.android.material.tabs.TabLayoutMediator; -import com.sucstepsoft.cm_utils.constant.PathConfig; -import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; -import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; -import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView; -import com.sucstepsoft.cm_utils.utils.ExceptionHandler; -import com.tengshisoft.mudulemain.R; -import com.tengshisoft.mudulemain.R2; -import com.tengshisoft.mudulemain.cultural.beans.NewsTabBean; -import com.tengshisoft.mudulemain.cultural.fragment.NewsFragment; -import com.tengshisoft.mudulemain.cultural.net.HomeApi; - -import java.util.ArrayList; -import java.util.List; - @Route(path = PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) public class NewsMainActivity extends BaseActivity { @BindView(R2.id.xtl_new_type) @@ -83,7 +83,15 @@ public class NewsMainActivity extends BaseActivity { for (int i = 0; i < newsTabBeans.size(); i++) { Bundle bundle = new Bundle(); bundle.putString("type", newsTabBeans.get(i).getNewsDirectoriesId()); - NewsFragment fragment = new NewsFragment(); + BaseFragment fragment = null; + //0 外部链接 1存在子集 2没有子集 + if ("0".equals(newsTabBeans.get(i).getDirectoriesView())) { + //列表 + bundle.putString("url", newsTabBeans.get(i).getDirectoriesTarget2()); + fragment = new NewsWebFragment(); + } else { + fragment = new NewsFragment(); + } fragment.setArguments(bundle); mFragments.add(fragment); View view = View.inflate(mActivity, R.layout.item_tab_custom_view, null); diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsPdfActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsPdfActivity.java index bf17efb..5c678b6 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsPdfActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsPdfActivity.java @@ -40,7 +40,7 @@ public class NewsPdfActivity extends BaseActivity { refreshView(STATE_LOAD_LOADING); String absolutePath = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + File.separator + System.currentTimeMillis() + ".pdf"; - InputParameter parameter = new InputParameter.Builder(BaseUrlApi.IP, url, absolutePath).setCallbackOnUiThread(true).build(); + InputParameter parameter = new InputParameter.Builder(BaseUrlApi.BASE_SYSTEM_IP, url, absolutePath).setCallbackOnUiThread(true).build(); DownloadUtil.getInstance() .downloadFile(parameter, new DownloadListener() { @Override diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsWebActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsWebActivity.java index d061675..1ae131f 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsWebActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/news/NewsWebActivity.java @@ -3,7 +3,6 @@ package com.tengshisoft.mudulemain.cultural.activitys.news; import android.content.pm.ActivityInfo; import android.net.http.SslError; import android.os.Build; -import android.view.View; import android.webkit.HttpAuthHandler; import android.webkit.JavascriptInterface; import android.webkit.SslErrorHandler; @@ -12,14 +11,11 @@ import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.LinearLayout; -import android.widget.RelativeLayout; import com.alibaba.android.arouter.facade.annotation.Route; -import com.gyf.immersionbar.ImmersionBar; import com.sucstepsoft.cm_utils.constant.PathConfig; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; import com.sucstepsoft.cm_utils.utils.LogUtils; -import com.sucstepsoft.cm_utils.utils.StringUtils; import com.tengshisoft.mudulemain.R; import com.tengshisoft.mudulemain.R2; @@ -43,10 +39,11 @@ public class NewsWebActivity extends BaseActivity { @Override public void initData() { mBind = ButterKnife.bind(this); - ImmersionBar.with(this) - .init(); - mRlTitleBar.setVisibility(View.GONE); - mRlTitleBar1.setVisibility(View.GONE); +// ImmersionBar.with(this) +// .init(); +// mRlTitleBar.setVisibility(View.GONE); +// mRlTitleBar1.setVisibility(View.GONE); + mTvBaseTitle.setText("详情"); refreshView(STATE_LOAD_LOADING); initWebView(); } diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/MainFuncAdapter.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/MainFuncAdapter.java index 542546c..fcb18e1 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/MainFuncAdapter.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/MainFuncAdapter.java @@ -4,22 +4,20 @@ import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; + +import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; +import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi; import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; -import com.sucstepsoft.cm_utils.utils.ConvertUtils; import com.sucstepsoft.cm_utils.utils.LogUtils; import com.sucstepsoft.cm_utils.utils.ScreenUtils; import com.tengshisoft.mudulemain.R; -import com.tengshisoft.mudulemain.cultural.beans.MainFuncBean; +import com.tengshisoft.mudulemain.cultural.beans.NewsTabBean; import com.tengshisoft.mudulemain.cultural.holder.MainFuncHolder; import java.util.List; -import androidx.recyclerview.widget.RecyclerView; - /** * 作者: adam @@ -27,8 +25,8 @@ import androidx.recyclerview.widget.RecyclerView; * 邮箱: itgaojian@163.com * 描述: */ -public class MainFuncAdapter extends BaseRecyclerAdapter { - public MainFuncAdapter(Context ctx, List list) { +public class MainFuncAdapter extends BaseRecyclerAdapter { + public MainFuncAdapter(Context ctx, List list) { super(ctx, list); } @@ -37,8 +35,8 @@ public class MainFuncAdapter extends BaseRecyclerAdapter mFuncBeans = new ArrayList<>(); + private List mFuncBeans = new ArrayList<>(); private List mBannerList = new ArrayList<>(); private List mNewsBeans = new ArrayList<>(); private List mLiveBeans = new ArrayList<>(); private NewsAdapter mMAdapter; - private RecyclerViewSkeletonScreen mNewsSkeleton; + private ViewSkeletonScreen mNewsSkeleton; private MainCommendAdapter mCommendAdapter; private RecyclerViewSkeletonScreen mCommendSkeleton; private ViewSkeletonScreen mBannerSkeleton; @@ -117,17 +123,16 @@ public class HomeFragment extends BaseFragment { mSrlView.setEnableRefresh(true); // mLlMainNews.setOnClickListener(v -> ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) // .navigation()); - mRlvMainNews.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); - mRlvMainNews.addItemDecoration(new ItemSplitDivider(mActivity, LinearLayoutManager.VERTICAL, 1, - Color.parseColor("#F2F2F2"))); - mRlvMainNews.setAdapter(mMAdapter); + mRlvLives.setLayoutManager(new GridLayoutManager(mActivity, 2)); mRlvLives.addItemDecoration(new ItemSplitDivider(mActivity, LinearLayoutManager.VERTICAL, 1, Color.parseColor("#F2F2F2"))); mLiveAdapter = new LiveAdapter(mActivity, mLiveBeans); mRlvLives.setAdapter(mLiveAdapter); + mMAdapter = new NewsAdapter(mActivity, mNewsBeans); mMAdapter.addOnItemClickByType(this::showNewsDetail); + mCommendAdapter = new MainCommendAdapter(mActivity, mMainCommendBeans); mRlvCommend.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.HORIZONTAL, false)); mRlvCommend.setAdapter(mCommendAdapter); @@ -174,10 +179,8 @@ public class HomeFragment extends BaseFragment { } }); mMainCommendBeans.clear(); - mNewsSkeleton = Skeleton.bind(mRlvMainNews) - .adapter(mMAdapter) - .count(5) - .load(R.layout.item_skeleton_news) + mNewsSkeleton = Skeleton.bind(mLlNewsContent) + .load(R.layout.item_skeleton_news_content) .show(); mCommendSkeleton = Skeleton.bind(mRlvCommend) .adapter(mCommendAdapter) @@ -192,9 +195,11 @@ public class HomeFragment extends BaseFragment { .count(5) .load(R.layout.item_skeleton_live_grid) .show(); - buildMainFuncMenu(); + buildMainFuncMenu(null); buildBannerData(); - getNewsList(null); + getMainFuncMenu();//获取首页功能按钮 + getMainNewsTab();//获取首页动态新闻tab +// getNewsList(null); //TODO 县城一级无直播 getLiveList(); getMainCommendList(); getBannerData(); @@ -228,6 +233,73 @@ public class HomeFragment extends BaseFragment { // .navigation()); } + /** + * 获取首页动态栏目列表 + */ + private void getMainNewsTab() { + RetrofitManager.getInstance() + .create(HomeApi.class) + .getMainNewsTab() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List newsTabBeans) { + createNewsContent(newsTabBeans); + } + + @Override + public void onError(Throwable e) { + e.printStackTrace(); + //TODO 错误处理 + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 获取首页功能 + */ + private void getMainFuncMenu() { + RetrofitManager.getInstance() + .create(HomeApi.class) + .getMainFunc() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List newsTabBeans) { + if (newsTabBeans != null && newsTabBeans.size() > 0) { + buildMainFuncMenu(newsTabBeans); + } + } + + @Override + public void onError(Throwable e) { + e.printStackTrace(); + } + + @Override + public void onComplete() { + + } + }); + } + /** * 获取精彩推荐 * 3条场馆 3条活动 @@ -591,10 +663,10 @@ public class HomeFragment extends BaseFragment { /** * 获取新闻 */ - private void getNewsList(NewsTabBean newsTabBean) { + private void getNewsList(NewsTabBean newsTabBean, BaseRecyclerAdapter adapter, RecyclerView rlvContent, CustomStateView stateView) { RetrofitManager.getInstance() .create(HomeApi.class) - .getNewsTabListByPid(PathConfig.NEWS_ID, "5", "1") + .getNewsTabListByPid(newsTabBean.getNewsDirectoriesId(), "5", "1") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer() { @@ -607,23 +679,24 @@ public class HomeFragment extends BaseFragment { public void onNext(NewsItemBean newsItemBean) { if (newsItemBean != null) { if (newsItemBean.getRows() != null) { + List tempList; if (newsItemBean.getRows().size() > 5) { - mNewsBeans = newsItemBean.getRows().subList(0, 5); + tempList = newsItemBean.getRows().subList(0, 5); } else { - mNewsBeans = newsItemBean.getRows(); + tempList = newsItemBean.getRows(); } + adapter.setData(tempList); if (newsItemBean.getRows().size() > 0) { - mIvNewsEmpty.setVisibility(View.GONE); + stateView.setState(CustomStateView.STATE_SUCCESS); } else { - mIvNewsEmpty.setVisibility(View.VISIBLE); + stateView.setState(CustomStateView.STATE_EMPTY); } } else { - mIvNewsEmpty.setVisibility(View.VISIBLE); + stateView.setState(CustomStateView.STATE_EMPTY); } getCommentCount(1, newsItemBean); -// TODO mMAdapter.setData(mNewsBeans); } else { - mIvNewsEmpty.setVisibility(View.VISIBLE); + stateView.setState(CustomStateView.STATE_EMPTY); } if (mNewsSkeleton != null) { mNewsSkeleton.hide(); @@ -635,7 +708,7 @@ public class HomeFragment extends BaseFragment { if (mNewsSkeleton != null) { mNewsSkeleton.hide(); } - mIvNewsEmpty.setVisibility(View.VISIBLE); + stateView.setState(CustomStateView.STATE_ERROR); } @Override @@ -703,44 +776,51 @@ public class HomeFragment extends BaseFragment { /** * 构建首页按钮 */ - private void buildMainFuncMenu() { + private void buildMainFuncMenu(List list) { mFuncBeans.clear(); - MainFuncBean activityBean = new MainFuncBean(); - activityBean.setIconRes(R.drawable.ic_activity_icon); - activityBean.setTitle("精彩活动"); - MainFuncBean placeBean = new MainFuncBean(); - placeBean.setIconRes(R.drawable.ic_place_icon); - placeBean.setTitle("场馆导航"); - MainFuncBean culturalBean = new MainFuncBean(); - culturalBean.setIconRes(R.drawable.ic_legacy_icon); - culturalBean.setTitle("非遗文化"); // MainFuncBean movieBean = new MainFuncBean(); // movieBean.setIconRes(R.drawable.ic_live_icon); // movieBean.setTitle("直播点播"); - MainFuncBean volunBean = new MainFuncBean(); - volunBean.setIconRes(R.drawable.ic_volunteer_icon); - volunBean.setTitle("志愿者服务"); - MainFuncBean showBean = new MainFuncBean(); - showBean.setIconRes(R.drawable.ic_show_icon); - showBean.setTitle("展览展示"); - MainFuncBean culBean = new MainFuncBean(); - culBean.setIconRes(R.drawable.ic_cultural_trends_icon); - culBean.setTitle("文化动态"); - MainFuncBean bookBean = new MainFuncBean(); - bookBean.setIconRes(R.drawable.ic_legacy_icon); - bookBean.setTitle("数图资源"); - MainFuncBean cultivlateBean = new MainFuncBean(); - cultivlateBean.setIconRes(R.drawable.ic_live_icon); - cultivlateBean.setTitle("在线培训"); - MainFuncBean tourBean = new MainFuncBean(); - tourBean.setIconRes(R.drawable.ic_place_icon); - tourBean.setTitle("文化旅游"); - mFuncBeans.add(showBean); - mFuncBeans.add(culBean); - mFuncBeans.add(cultivlateBean); - mFuncBeans.add(tourBean); - mFuncBeans.add(bookBean); +// MainFuncBean showBean = new MainFuncBean(); +// showBean.setIconRes(R.drawable.ic_show_icon); +// showBean.setTitle("展览展示"); +// MainFuncBean culBean = new MainFuncBean(); +// culBean.setIconRes(R.drawable.ic_cultural_trends_icon); +// culBean.setTitle("文化动态"); +// MainFuncBean bookBean = new MainFuncBean(); +// bookBean.setIconRes(R.drawable.ic_legacy_icon); +// bookBean.setTitle("数图资源"); +// MainFuncBean cultivlateBean = new MainFuncBean(); +// cultivlateBean.setIconRes(R.drawable.ic_live_icon); +// cultivlateBean.setTitle("在线培训"); +// MainFuncBean tourBean = new MainFuncBean(); +// tourBean.setIconRes(R.drawable.ic_place_icon); +// tourBean.setTitle("文化旅游"); + +// mFuncBeans.add(showBean); +// mFuncBeans.add(culBean); +// mFuncBeans.add(cultivlateBean); +// mFuncBeans.add(tourBean); +// mFuncBeans.add(bookBean); + if (list != null && list.size() > 0) { +// for (int i = 0; i < list.size(); i++) { +// list.get(i).setLocalRes(-1); +// } + mFuncBeans.addAll(list); + } + NewsTabBean activityBean = new NewsTabBean(); + activityBean.setLocalRes(R.drawable.ic_activity_icon); + activityBean.setDirectoriesName("精彩活动"); + NewsTabBean placeBean = new NewsTabBean(); + placeBean.setLocalRes(R.drawable.ic_place_icon); + placeBean.setDirectoriesName("场馆导航"); + NewsTabBean culturalBean = new NewsTabBean(); + culturalBean.setLocalRes(R.drawable.ic_legacy_icon); + culturalBean.setDirectoriesName("非遗文化"); + NewsTabBean volunBean = new NewsTabBean(); + volunBean.setLocalRes(R.drawable.ic_volunteer_icon); + volunBean.setDirectoriesName("志愿者服务"); mFuncBeans.add(volunBean); mFuncBeans.add(activityBean); mFuncBeans.add(placeBean); @@ -786,53 +866,168 @@ public class HomeFragment extends BaseFragment { * * @param mainFuncBean */ - private void chooseFuncPage(MainFuncBean mainFuncBean) { - if ("精彩活动".equals(mainFuncBean.getTitle())) { + private void chooseFuncPage(NewsTabBean mainFuncBean) { + if ("精彩活动".equals(mainFuncBean.getDirectoriesName())) { ARouter.getInstance() .build(PathConfig.PATH_MODULEACTIVITY_ACTIVITY_MAIN) .navigation(); - } else if ("场馆导航".equals(mainFuncBean.getTitle())) { + } else if ("场馆导航".equals(mainFuncBean.getDirectoriesName())) { mMainActivity.setCurrentPage(2, "场馆"); - } else if ("非遗文化".equals(mainFuncBean.getTitle())) { + } else if ("非遗文化".equals(mainFuncBean.getDirectoriesName())) { ARouter.getInstance().build(PathConfig.PATH_MODULE_CULTURAL_ACTIVITY_LEGACY).navigation(); - } else if ("直播点播".equals(mainFuncBean.getTitle())) { + } else if ("直播点播".equals(mainFuncBean.getDirectoriesName())) { ARouter.getInstance().build(PathConfig.PATH_MODULE_CULTURAL_LIVE).navigation(); - } else if ("志愿者服务".equals(mainFuncBean.getTitle())) { + } else if ("志愿者服务".equals(mainFuncBean.getDirectoriesName())) { ARouter.getInstance().build(PathConfig.PATH_MODULE_CULTURAL_VOUNTEER_MAIN).navigation(); - } else if ("文化动态".equals(mainFuncBean.getTitle())) { - ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) - .withString("title", "文化动态") - .withString("id", PathConfig.NEWS_ID) - .navigation(); - } else if ("展览展示".equals(mainFuncBean.getTitle())) { - ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) - .withString("title", "展览展示") - .withString("id", PathConfig.NEWS_SHOW_ID) - .navigation(); - } else if ("数图资源".equals(mainFuncBean.getTitle())) { - ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) - .withString("title", "数图资源") - .withString("id", PathConfig.NEWS_BOOKS_ID) - .navigation(); - } else if ("在线培训".equals(mainFuncBean.getTitle())) { - ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) - .withString("title", "在线培训") - .withString("id", PathConfig.NEWS_CULTIVATE_ID) - .navigation(); - } else if ("文化旅游".equals(mainFuncBean.getTitle())) { - ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_LIST) - .withString("id", PathConfig.NEWS_TOUR_ID) - .withString("title", "文化旅游") - .navigation(); + } else { + //0外部连接 1列表 2详情 + if ("1".equals(mainFuncBean.getDirectoriesView())) { + //列表 + ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_LIST) + .withString("id", mainFuncBean.getNewsDirectoriesId()) + .withString("title", mainFuncBean.getDirectoriesName()) + .navigation(); + } else if ("0".equals(mainFuncBean.getDirectoriesView())) { + ARouter.getInstance() + .build(PathConfig.PATH_MODULE_MAIN_NEWS_WEB) + .withString("url", mainFuncBean.getDirectoriesTarget2()) + .withString("title", mainFuncBean.getDirectoriesName()) + .navigation(); + } else { + ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) + .withString("title", mainFuncBean.getDirectoriesName()) + .withString("id", mainFuncBean.getNewsDirectoriesId()) + .navigation(); + } +//在线培训 文化旅游 文化动态 展览展示 数图资源 + //判断跳转列表页面或带下级页面 +// if ("文化动态".equals(mainFuncBean.getDirectoriesName())) { +// ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) +// .withString("title", "文化动态") +// .withString("id", PathConfig.NEWS_ID) +// .navigation(); +// } else if ("展览展示".equals(mainFuncBean.getDirectoriesName())) { +// ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) +// .withString("title", "展览展示") +// .withString("id", PathConfig.NEWS_SHOW_ID) +// .navigation(); +// } else if ("数图资源".equals(mainFuncBean.getDirectoriesName())) { +// ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_NEWS_MAIN) +// .withString("title", "数图资源") +// .withString("id", PathConfig.NEWS_BOOKS_ID) +// .navigation(); +// } else if ("在线培训".equals(mainFuncBean.getDirectoriesName())) { + +// } else if ("文化旅游".equals(mainFuncBean.getDirectoriesName())) { + +// } } } + private void createNewsContent(List list) { + if (list != null && list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + NewsTabBean b = list.get(i); + List tempList = new ArrayList<>(); + LinearLayout contentLayout = new LinearLayout(mActivity); + contentLayout.setOrientation(LinearLayout.VERTICAL); + LinearLayout.LayoutParams contentParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); + contentParams.gravity = Gravity.CENTER_HORIZONTAL; + contentLayout.setLayoutParams(contentParams); + + LinearLayout titleLayout = new LinearLayout(mActivity); + titleLayout.setOrientation(LinearLayout.HORIZONTAL); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); + params.gravity = Gravity.CENTER; + titleLayout.setLayoutParams(params); + titleLayout.setGravity(Gravity.CENTER); + titleLayout.setPadding(ConvertUtils.dp2px(8), ConvertUtils.dp2px(8), ConvertUtils.dp2px(8), ConvertUtils.dp2px(8)); + + LinearLayout.LayoutParams imgParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + ImageView ivLeft = new ImageView(mActivity); + ivLeft.setLayoutParams(imgParams); + ivLeft.setBackgroundResource(R.drawable.ic_tab_icon_left); + + ImageView ivRight = new ImageView(mActivity); + ivRight.setLayoutParams(imgParams); + ivRight.setBackgroundResource(R.drawable.ic_tab_icon_right); + + TypeFaceTextView titleView = new TypeFaceTextView(mActivity); + LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + titleParams.gravity = Gravity.CENTER; + titleView.setPadding(ConvertUtils.dp2px(8), 0, ConvertUtils.dp2px(8), 0); + titleView.setText(b.getDirectoriesName()); + titleView.setTypeFaceType(2); + titleView.setLayoutParams(titleParams); + titleView.setTextColor(mActivity.getResources().getColor(R.color.app_title_9f_no)); + + titleLayout.addView(ivLeft); + titleLayout.addView(titleView); + titleLayout.addView(ivRight); + titleLayout.setOnClickListener(v -> ARouter.getInstance() + .build(PathConfig.PATH_MODULE_MAIN_NEWS_LIST) + .withString("id", b.getNewsDirectoriesId()) + .withString("title", b.getDirectoriesName()) + .navigation()); + //分割线 + View line = new View(mActivity); + LinearLayout.LayoutParams lineParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); + lineParams.height = ConvertUtils.dp2px(1); + line.setLayoutParams(lineParams); + line.setBackgroundColor(mActivity.getResources().getColor(R.color.gray_line)); + // recyclerview + RelativeLayout.LayoutParams conParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); + RecyclerView rlvContent = new RecyclerView(mActivity); + rlvContent.setOverScrollMode(View.OVER_SCROLL_NEVER); + rlvContent.setLayoutParams(conParams); + + NewsAdapter adapter = new NewsAdapter(mActivity, tempList); + adapter.addOnItemClickByType(this::showNewsDetail); + RelativeLayout rlvLayout = new RelativeLayout(mActivity); + rlvLayout.setBackgroundColor(Color.parseColor("#000000")); + RelativeLayout.LayoutParams rlvParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); + rlvParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); + rlvLayout.setLayoutParams(rlvParams); + + rlvContent.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); + rlvContent.addItemDecoration(new ItemSplitDivider(mActivity, LinearLayoutManager.VERTICAL, 1, + Color.parseColor("#F2F2F2"))); + rlvContent.setAdapter(adapter); + //状态 + CustomStateView stateView = new CustomStateView(mActivity); + RelativeLayout.LayoutParams stateParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); + stateParams.addRule(RelativeLayout.CENTER_IN_PARENT); + stateView.setLayoutParams(stateParams); + stateView.setState(CustomStateView.STATE_LOAD); + + rlvLayout.addView(rlvContent); + rlvLayout.addView(stateView); + //添加View + contentLayout.addView(titleLayout); + contentLayout.addView(line); + contentLayout.addView(rlvLayout); + mLlNewsContent.addView(contentLayout); + //获取数据 + getNewsList(b, adapter, rlvContent, stateView); + + + } + } + + } + @Override protected void refreshView() { mBannerList.clear(); mNewsBeans.clear(); mMainCommendBeans.clear(); - getNewsList(null); + if (mNewsSkeleton != null) { + mNewsSkeleton.show(); + } +// getNewsList(null); + mLlNewsContent.removeAllViews(); + getMainFuncMenu(); + getMainNewsTab(); getBannerData(); getMainCommendList(); } @@ -849,8 +1044,11 @@ public class HomeFragment extends BaseFragment { public void notifyData() { //重新加载数据 mMainCommendBeans.clear(); + mLlNewsContent.removeAllViews(); buildBannerData(); - getNewsList(null); + getMainFuncMenu(); + getMainNewsTab(); +// getNewsList(null); // getLiveList(); getMainCommendList(); getBannerData(); diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsWebFragment.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsWebFragment.java new file mode 100755 index 0000000..9b1916a --- /dev/null +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/NewsWebFragment.java @@ -0,0 +1,143 @@ +package com.tengshisoft.mudulemain.cultural.fragment; + +import android.net.http.SslError; +import android.os.Build; +import android.text.TextUtils; +import android.view.View; +import android.webkit.HttpAuthHandler; +import android.webkit.JsResult; +import android.webkit.SslErrorHandler; +import android.webkit.WebChromeClient; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.LinearLayout; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.sucstepsoft.cm_utils.constant.PathConfig; +import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi; +import com.sucstepsoft.cm_utils.core.widget.base.BaseFragment; +import com.sucstepsoft.cm_utils.core.widget.views.ViewPageWebView; +import com.tengshisoft.mudulemain.R; +import com.tengshisoft.mudulemain.R2; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; + +/** + * 作者: adam + * 日期: 2020/4/29 - 4:26 PM + * 邮箱: itgaojian@163.com + * 描述: 新闻页面 + */ +public class NewsWebFragment extends BaseFragment { + @BindView(R2.id.wv_content) + ViewPageWebView mWvContent; + + private Unbinder mBind; + private String mType; + + @Override + protected void setDataToView(View dataView) { + mBind = ButterKnife.bind(this, dataView); + setStateView(STATE_SUCCESS); + mSrlView.setEnableLoadMore(false); + mSrlView.setEnableRefresh(false); + mType = getArguments().getString("type"); + String url = getArguments().getString("url"); + if (!TextUtils.isEmpty(url)) { + setData(url); + } else { + setStateView(STATE_EMPTY); + mSrlView.setEnableLoadMore(false); + mSrlView.setEnableRefresh(false); + } + } + + private void setData(String url) { + WebSettings settings = mWvContent.getSettings(); + settings.setCacheMode(WebSettings.LOAD_DEFAULT); + settings.setAppCacheEnabled(true); + settings.setJavaScriptEnabled(true);//启用JS + settings.setBlockNetworkImage(true);//阻塞页面图片加载 + settings.setDomStorageEnabled(true); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); + } + mWvContent.loadUrl(url); + mWvContent.setWebViewClient(new WebViewClient() { + @Override + public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { + handler.proceed(); + } + + @Override + public void onPageFinished(WebView view, String url) { + super.onPageFinished(view, url); + view.getSettings().setBlockNetworkImage(false);//开启页面图片加载 + mActivity.runOnUiThread(() -> mWvContent.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT))); + } + + @Override + public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { + super.onReceivedHttpAuthRequest(view, handler, host, realm); + } + + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + if (url.contains(BaseUrlApi.BASE_SYSTEM_IP + "news/route/file/download/true")) { + //TODO 数图资源 + ARouter.getInstance() + .build(PathConfig.PATH_MODULE_MAIN_NEWS_PDF) + .withString("title", "详情") + .withString("url", url) + .navigation(); + } else { + view.loadUrl(url); + } + return true; + } + }); + mWvContent.setWebChromeClient(new WebChromeClient() { + + @Override + public boolean onJsAlert(WebView view, String url, String message, JsResult result) { + return super.onJsAlert(view, url, message, result); + } + }); + } + + + @Override + protected void refreshView() { + } + + @Override + public void onDestroyView() { + if (mWvContent != null) { + mWvContent = null; + } + super.onDestroyView(); + } + + + @Override + protected void loadMoreData() { + + } + + @Override + protected int getContentViewId() { + return R.layout.fragment_news_web; + } + + @Override + public void onDestroy() { + if (mBind != null) { + mBind.unbind(); + } + super.onDestroy(); + } + +} diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java index f19af72..b07e1a5 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java @@ -61,6 +61,7 @@ public interface HomeApi { @POST("app/sign/default") Observable doLogin(@Body RequestBody user); + /** * 登录-手机号 * @@ -68,7 +69,7 @@ public interface HomeApi { * @return */ @Headers({"Content-Type: application/json", "Accept: application/json"}) - @POST("app/sign/loginphone") + @POST("app/sign/phone") Observable doLoginWithPhone(@Body RequestBody user); /** @@ -104,6 +105,20 @@ public interface HomeApi { @GET("app/newsdirectories/listnewsdirectoriesrelease") Observable> getNewsTabList(); + /** + * 首页功能按钮 + */ + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) + @GET("app/newsdirectories/list/areamenu/release") + Observable> getMainFunc(); + + /** + * 首页动态列表 + */ + @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) + @GET("app/newsdirectories/list/areaplate/release") + Observable> getMainNewsTab(); + /** * 获取新闻子类别 * @@ -112,7 +127,7 @@ public interface HomeApi { @Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"}) // @GET("app/newsdirectories/listnewsdirectoriesrelease") @GET("app/newsdirectories/listsub/areaauth/release/{newsDirectoriesId}") - Observable> getNewsTabListByPid(@Query("newsDirectoriesId") String pid); + Observable> getNewsTabListByPid(@Path("newsDirectoriesId") String pid); /** * 获取新闻子类别 diff --git a/modulemain/src/main/res/layout/activity_login.xml b/modulemain/src/main/res/layout/activity_login.xml index 3746a1a..1846d53 100755 --- a/modulemain/src/main/res/layout/activity_login.xml +++ b/modulemain/src/main/res/layout/activity_login.xml @@ -79,6 +79,53 @@ + + + + + + + + +