Commit 45e6e0be authored by 王雪伟's avatar 王雪伟

[提交人]:王雪伟

[提交简述] :1.1.3
[实现方案] :加入剪切板
parent 72d4efcb
...@@ -17,6 +17,7 @@ import com.zxbw.modulemain.fragment.CashCheckFragment; ...@@ -17,6 +17,7 @@ import com.zxbw.modulemain.fragment.CashCheckFragment;
import com.zxbw.modulemain.fragment.HomeFragment; import com.zxbw.modulemain.fragment.HomeFragment;
import com.zxbw.modulemain.fragment.UserCenterFragment; import com.zxbw.modulemain.fragment.UserCenterFragment;
import com.zxbw.modulemain.view.NavigationBottomView; import com.zxbw.modulemain.view.NavigationBottomView;
import com.zxhl.cms.utils.ClipboardManagerUtil;
import com.zxhl.shop.R; import com.zxhl.shop.R;
import com.zxhl.cms.AppContext; import com.zxhl.cms.AppContext;
import com.zxhl.cms.common.Constant; import com.zxhl.cms.common.Constant;
...@@ -210,6 +211,7 @@ public class MainActivity extends BaseActivity implements NavigationBottomView.N ...@@ -210,6 +211,7 @@ public class MainActivity extends BaseActivity implements NavigationBottomView.N
if (userInfoData != null&&userInfoData.member!=null) { if (userInfoData != null&&userInfoData.member!=null) {
Constant.Switch.isOpenVip = userInfoData.member; Constant.Switch.isOpenVip = userInfoData.member;
} }
ClipboardManagerUtil.INSTANCE.getTbLink(this);
} }
......
PACKAGE_NAME=com.zxhl.shop PACKAGE_NAME=com.zxhl.shop
VERSION_CODE=13 VERSION_CODE=14
VERSION_NAME=1.1.2 VERSION_NAME=1.1.3
\ No newline at end of file \ No newline at end of file
package com.zxhl.cms.ad.upload.model
import java.io.Serializable
/**
* Created by gaoleichao on 2018/7/13.
*/
class Response2<T> {
var error: String? = ""
var msg: String? = ""
var result: String? = ""
var request_id: String? = ""
var data: T? = null
}
...@@ -193,13 +193,13 @@ public class NetConfig { ...@@ -193,13 +193,13 @@ public class NetConfig {
public static class H5 { public static class H5 {
public static String WEB_URL_USER = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xiaoxiangSaveMoney/person_app.html?webName=小象省钱"; public static String WEB_URL_USER = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xiaoxiangSaveMoney/person_app.html?webName=小象省钱";
public static String WEB_URL_PRIVACY = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xiaoxiangSaveMoney/privacy_app.html?appName=小象省钱APP&company=北京志信博文科技发展有限公司&money=虚拟货币&webName=小象省钱"; public static String WEB_URL_PRIVACY = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xiaoxiangSaveMoney/privacy_app.html?appName=小象省钱APP&company=北京掌心互联科技有限公司&money=虚拟货币&webName=小象省钱";
public static String WEB_URL_ABOUT_US = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/aboutMe.html?version=" + Constant.Param.vn + "&appName=小象省钱&company=北京志信博文科技发展有限公司"; public static String WEB_URL_ABOUT_US = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/aboutMe.html?version=" + Constant.Param.vn + "&appName=小象省钱&company=北京掌心互联科技有限公司";
public static String WEB_URL_CUSTOMER_SERVICE = "https://1568685.s4.udesk.cn/im_client/?web_plugin_id=35245"; public static String WEB_URL_CUSTOMER_SERVICE = "https://1568685.s4.udesk.cn/im_client/?web_plugin_id=35245";
public static String WEB_URL_ZENGZHI_SERVICE = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/xxsq_zz_server.html"; public static String WEB_URL_ZENGZHI_SERVICE = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/xxsq_zz_server.html";
public static String WEB_URL_BUYER_KNOW = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/buyerKnow.html?version=" + Constant.Param.vn + "&appName=幸运魔盒&company=北京志信博文科技发展有限公司"; public static String WEB_URL_BUYER_KNOW = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/buyerKnow.html?version=" + Constant.Param.vn + "&appName=幸运魔盒&company=北京掌心互联科技有限公司";
public static String WEB_URL_WEEK_RULE = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/week_activity_rule.html"; public static String WEB_URL_WEEK_RULE = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/week_activity_rule.html";
public static String WEB_URL_INVITE; public static String WEB_URL_INVITE;
public static String WEB_URL_H5_PAY = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/pay_order.html"; public static String WEB_URL_H5_PAY = "https://newspool.zhangxinhulian.com/sspapiNovel/su/custom/xingyunmohe/pay_order.html";
......
...@@ -120,12 +120,13 @@ class WebActivity : BaseActivity() { ...@@ -120,12 +120,13 @@ class WebActivity : BaseActivity() {
id_activity_web_view?.webChromeClient = chromeClient id_activity_web_view?.webChromeClient = chromeClient
id_pay_web_view?.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength -> id_pay_web_view?.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength ->
Log.e("MXL", "Download " + url)
var intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) var intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent); startActivity(intent);
} }
id_activity_web_view?.webViewClient = object : WebViewClient() { id_activity_web_view?.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(wv: WebView, url: String?): Boolean { override fun shouldOverrideUrlLoading(wv: WebView, url: String?): Boolean {
Log.e("MXL", "AURL" + url) Log.e("MXL", "AURL " + url)
if (url == null) return false if (url == null) return false
try { try {
if (url.startsWith("weixin://") //微信 if (url.startsWith("weixin://") //微信
......
...@@ -6,6 +6,7 @@ import android.content.pm.PackageManager; ...@@ -6,6 +6,7 @@ import android.content.pm.PackageManager;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
...@@ -20,6 +21,7 @@ import com.google.android.material.snackbar.Snackbar; ...@@ -20,6 +21,7 @@ import com.google.android.material.snackbar.Snackbar;
import com.zxhl.cms.AppContext; import com.zxhl.cms.AppContext;
import com.zxhl.cms.R; import com.zxhl.cms.R;
import com.zxhl.cms.utils.ActivityManager; import com.zxhl.cms.utils.ActivityManager;
import com.zxhl.cms.utils.ClipboardManagerUtil;
import com.zxhl.cms.utils.LogUtils; import com.zxhl.cms.utils.LogUtils;
import com.zxhl.cms.utils.StatusBarUtils; import com.zxhl.cms.utils.StatusBarUtils;
import com.zxhl.cms.utils.Utils; import com.zxhl.cms.utils.Utils;
...@@ -346,6 +348,7 @@ public abstract class BaseActivity extends RxAppCompatActivity implements View.O ...@@ -346,6 +348,7 @@ public abstract class BaseActivity extends RxAppCompatActivity implements View.O
@Override @Override
public void finishActivity(int requestCode) { public void finishActivity(int requestCode) {
super.finishActivity(requestCode); super.finishActivity(requestCode);
overridePendingTransition(0,0); overridePendingTransition(0, 0);
} }
} }
package com.zxhl.cms.net.api package com.zxhl.cms.net.api
import com.zxhl.cms.ad.upload.model.Response import com.zxhl.cms.ad.upload.model.Response
import com.zxhl.cms.ad.upload.model.Response2
import com.zxhl.cms.common.NetConfig import com.zxhl.cms.common.NetConfig
import com.zxhl.cms.net.model.box.* import com.zxhl.cms.net.model.box.*
import com.zxhl.cms.net.model.other.IsWeChatLoginEntity import com.zxhl.cms.net.model.other.IsWeChatLoginEntity
...@@ -14,6 +15,7 @@ import com.zxhl.cms.net.model.qy.SkillEntity ...@@ -14,6 +15,7 @@ import com.zxhl.cms.net.model.qy.SkillEntity
import com.zxhl.cms.net.model.uc.UserInfo import com.zxhl.cms.net.model.uc.UserInfo
import com.zxhl.cms.net.model.uc.VersionEntity import com.zxhl.cms.net.model.uc.VersionEntity
import io.reactivex.Observable import io.reactivex.Observable
import okhttp3.ResponseBody
import retrofit2.http.* import retrofit2.http.*
...@@ -364,6 +366,14 @@ interface IHomeApi { ...@@ -364,6 +366,14 @@ interface IHomeApi {
@Query("link") link: String @Query("link") link: String
): Observable<Response<ConvertLinkEntity>> ): Observable<Response<ConvertLinkEntity>>
/**
* 第三方转链
*
* @return
*/
@GET
fun requestUrl(@Url url: String?): Observable<Response2<TbGoodsItemEntity>>
//图文详情 //图文详情
@GET(NetConfig.QY.XX_GOODS_ITEM_DETAIL) @GET(NetConfig.QY.XX_GOODS_ITEM_DETAIL)
fun getGoodsImgDetail( fun getGoodsImgDetail(
......
package com.zxhl.cms.net.callback;
import android.text.TextUtils;
import com.zxhl.cms.AppContext;
import com.zxhl.cms.ad.upload.model.Response;
import com.zxhl.cms.ad.upload.model.Response2;
import com.zxhl.cms.common.Constant;
import com.zxhl.cms.net.RxExceptionUtil;
import com.zxhl.cms.net.SettingPreference;
import com.zxhl.cms.utils.JumpUtils;
import com.zxhl.cms.utils.RxBus;
import com.zxhl.cms.utils.Utils;
import io.reactivex.Observer;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
/**
* Created by gaoleichao on 2018/5/5.
*/
public abstract class BaseObserver2<T> implements Observer<Response2<T>> {
private Disposable disposable;
@Override
public void onNext(@NonNull Response2<T> result) {
if (TextUtils.equals(result.getError(), "0")) {
if (result.getData() != null) {
onSuccess(result.getData());
} else {
onSuccess(null);
}
} else{
onFailure(new Exception(result.getMsg()), result.getError(), result.getMsg());//该异常可以汇报服务端
}
}
@Override
public void onError(@NonNull Throwable e) {
onFailure(e, "103", RxExceptionUtil.exceptionHandler(e));
}
@Override
public void onComplete() {
if (disposable != null && !disposable.isDisposed()) {
disposable.dispose();
}
}
@Override
public void onSubscribe(@NonNull Disposable d) {
disposable = d;
}
public abstract void onSuccess(T result);
public abstract void onFailure(Throwable e, String code, String errorMsg);
}
package com.zxhl.cms.net.model.qy
import java.io.Serializable
/**
* @author (wangXuewei)
* @detail :
*/
class ConvertLinkEntityDetail : Serializable {
var msg: String? = ""
var result: String? = ""
var data: TbGoodsItemEntity? = null
var error: String? = ""
var request_id: String? = ""
}
\ No newline at end of file
...@@ -51,6 +51,9 @@ class TbGoodsItemEntity : Serializable { ...@@ -51,6 +51,9 @@ class TbGoodsItemEntity : Serializable {
var coupon_start_time: String? = "" var coupon_start_time: String? = ""
var coupon_end_time: String? = "" var coupon_end_time: String? = ""
var global_tbk_pwd: String? = ""
var coupon_short_url: String? = ""
//BoxEntity============================================S //BoxEntity============================================S
var id: String? = "" var id: String? = ""
......
package com.zxhl.cms.utils
import android.app.Activity
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.os.Handler
import android.util.Log
import com.zx.ad.modulecommon.net.EventApiClient
import com.zx.ad.utils.AdEventUtils
import com.zxhl.cms.common.Constant
import com.zxhl.cms.net.ApiClient
import com.zxhl.cms.net.RxSchedulers
import com.zxhl.cms.net.callback.BaseObserver
import com.zxhl.cms.net.callback.BaseObserver2
import com.zxhl.cms.net.model.qy.ConvertLinkEntity
import com.zxhl.cms.net.model.qy.ConvertLinkEntityDetail
import com.zxhl.cms.net.model.qy.TbGoodsEntity
import com.zxhl.cms.net.model.qy.TbGoodsItemEntity
import com.zxhl.cms.widget.CenterDialog
import io.reactivex.Observer
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.net.URLEncoder
/**
* @author (wangXuewei)
* @datetime 2022-06-23 11:15 GMT+8
* @detail :监测淘口令
*/
object ClipboardManagerUtil {
fun getTbLink(context: Activity) {
if (!Constant.Switch.isOpenVip) {
return
}
if (context.localClassName.contains("SplashActivity")) {
return
}
// Log.d("wxw", "activityName" + context.localClassName)
Handler().postDelayed({
// 获取系统剪贴板
var clipboard: ClipboardManager =
context.application.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager;
// Log.d("wxw", "hasPrimaryClip " + clipboard.hasPrimaryClip())
if (clipboard.hasPrimaryClip()) {
// 返回数据
var clipData: ClipData? = clipboard.primaryClip
if (clipData != null && clipData.itemCount > 0) {
// 从数据集中获取(粘贴)第一条文本数据
var textStr = clipData.getItemAt(0).text.toString()
Log.d("wxw", "textStr" + textStr)
if (textStr.length > 10) {
if (textStr != copyLink){
getGoodsGuideLink(context, textStr)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
clipboard.clearPrimaryClip()
} else {
try {
clipData = ClipData.newPlainText(null, null)
clipboard.setPrimaryClip(clipData)
} catch (e: Exception) {
}
}
}
}
} else {
Log.d("wxw", "无内容")
}
}
}, 200)
}
//获取商品详情
fun getGoodsGuideLink(context: Activity, str: String) {
// val encode = URLEncoder.encode(str)
// Log.d("wxw","urlCode : ${encode}")
var url =
"http://api.vephp.com/hcapi?vekey=V00006899Y22696189&para=${URLEncoder.encode(str)}&detail=1";
ApiClient.homeApi.requestUrl(url)
.compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver2<TbGoodsItemEntity>() {
override fun onSuccess(result: TbGoodsItemEntity?) {
if (result != null) {
copy(context,result.global_tbk_pwd?:"")
CenterDialog.showTbGoodsDetail(
context,
result
)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
}
})
}
private var copyLink = ""
fun copy(context: Activity,string: String) {
if (string.isNullOrEmpty()){
return
}
copyLink = string
Log.d("wxw", "copyLink ${copyLink}")
//获取剪贴板管理器:
val cm: ClipboardManager =
context?.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val mClipData: ClipData =
ClipData.newPlainText("Label", string)
cm.setPrimaryClip(mClipData)
}
}
\ No newline at end of file
...@@ -4,6 +4,7 @@ import android.content.Intent; ...@@ -4,6 +4,7 @@ import android.content.Intent;
import android.util.Log; import android.util.Log;
import com.zxhl.cms.AppContext; import com.zxhl.cms.AppContext;
import com.zxhl.cms.net.model.qy.TbGoodsItemEntity;
import com.zxhl.cms.router.RounterApi; import com.zxhl.cms.router.RounterApi;
import com.zxhl.cms.router.RounterBus; import com.zxhl.cms.router.RounterBus;
...@@ -53,10 +54,11 @@ public class JumpUtils { ...@@ -53,10 +54,11 @@ public class JumpUtils {
} }
//tb商品详情 //tb商品详情
public static void TbGoodsDetailJump() { public static void TbGoodsDetailJump(TbGoodsItemEntity goodsItemEntity) {
try { try {
Intent intent = RounterBus.getRounter(RounterApi.class).getIntentTbGoodsDetail(); Intent intent = RounterBus.getRounter(RounterApi.class).getIntentTbGoodsDetail();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("goods", goodsItemEntity);
AppContext.get().startActivity(intent); AppContext.get().startActivity(intent);
} catch (Exception e) { } catch (Exception e) {
Utils.showToast(AppContext.get(), "该版本暂不支持,请更新版本!"); Utils.showToast(AppContext.get(), "该版本暂不支持,请更新版本!");
......
...@@ -4,8 +4,9 @@ import android.app.Activity ...@@ -4,8 +4,9 @@ import android.app.Activity
import android.app.Dialog import android.app.Dialog
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.graphics.Bitmap import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.graphics.Paint
import android.graphics.Typeface import android.graphics.Typeface
import android.os.Build import android.os.Build
import android.text.Html import android.text.Html
...@@ -17,26 +18,22 @@ import android.text.style.ClickableSpan ...@@ -17,26 +18,22 @@ import android.text.style.ClickableSpan
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
import android.view.Gravity import android.view.Gravity
import android.view.View import android.view.View
import android.view.ViewTreeObserver
import android.widget.ImageView import android.widget.ImageView
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.SimpleTarget
import com.bumptech.glide.request.transition.Transition
import com.umeng.analytics.MobclickAgent import com.umeng.analytics.MobclickAgent
import com.umeng.socialize.bean.SHARE_MEDIA import com.umeng.socialize.bean.SHARE_MEDIA
import com.zxhl.cms.AppContext import com.zxhl.cms.AppContext
import com.zxhl.cms.R import com.zxhl.cms.R
import com.zxhl.cms.common.Constant import com.zxhl.cms.common.Constant
import com.zxhl.cms.common.NetConfig import com.zxhl.cms.common.NetConfig
import com.zxhl.cms.net.ApiClient
import com.zxhl.cms.net.RxSchedulers
import com.zxhl.cms.net.SettingPreference import com.zxhl.cms.net.SettingPreference
import com.zxhl.cms.net.callback.BaseObserver import com.zxhl.cms.net.callback.BaseObserver
import com.zxhl.cms.net.model.other.ExitData import com.zxhl.cms.net.model.other.ExitData
import com.zxhl.cms.net.model.video.MemberEntity import com.zxhl.cms.net.model.qy.TbGoodsItemEntity
import com.zxhl.cms.router.RounterApi
import com.zxhl.cms.router.RounterBus
import com.zxhl.cms.umeng.UmengCountConfig import com.zxhl.cms.umeng.UmengCountConfig
import com.zxhl.cms.umeng.UmengShareUtils import com.zxhl.cms.umeng.UmengShareUtils
import com.zxhl.cms.utils.JumpUtils import com.zxhl.cms.utils.JumpUtils
...@@ -431,7 +428,11 @@ object CenterDialog { ...@@ -431,7 +428,11 @@ object CenterDialog {
/** /**
* 隐私协议弹窗 * 隐私协议弹窗
*/ */
fun showPrivacyProtocol(activity: Activity, listener: View.OnClickListener?, rightListener: View.OnClickListener?) { fun showPrivacyProtocol(
activity: Activity,
listener: View.OnClickListener?,
rightListener: View.OnClickListener?
) {
val mDialog = Dialog(activity, R.style.UpdateVersionCompatDialogTheme) val mDialog = Dialog(activity, R.style.UpdateVersionCompatDialogTheme)
val mDialogView = val mDialogView =
showBottomDialog( showBottomDialog(
...@@ -442,13 +443,13 @@ object CenterDialog { ...@@ -442,13 +443,13 @@ object CenterDialog {
Gravity.CENTER Gravity.CENTER
) )
val desc = mDialogView.findViewById<TextView>(R.id.id_dialog_privacy_protocol_desc) val desc = mDialogView.findViewById<TextView>(R.id.id_dialog_privacy_protocol_desc)
var i=0; var i = 0;
mDialogView.findViewById<TextView>(R.id.cancel_button).setOnClickListener { mDialogView.findViewById<TextView>(R.id.cancel_button).setOnClickListener {
if (i<1){ if (i < 1) {
val toast = Toast.makeText(AppContext.get(), "您继续同意提示内容方可使用本软件", Toast.LENGTH_LONG) val toast = Toast.makeText(AppContext.get(), "您继续同意提示内容方可使用本软件", Toast.LENGTH_LONG)
toast?.setGravity(Gravity.BOTTOM, 0, 0) toast?.setGravity(Gravity.BOTTOM, 0, 0)
toast?.show() toast?.show()
}else{ } else {
rightListener?.onClick(it) rightListener?.onClick(it)
} }
i++; i++;
...@@ -526,7 +527,7 @@ object CenterDialog { ...@@ -526,7 +527,7 @@ object CenterDialog {
var mAppConfig = SettingPreference.getConfig() var mAppConfig = SettingPreference.getConfig()
var desc = mDialogView.findViewById<TextView>(R.id.id_tv_tips_desc) var desc = mDialogView.findViewById<TextView>(R.id.id_tv_tips_desc)
if (mAppConfig!=null){ if (mAppConfig != null) {
desc.text = Html.fromHtml("${mAppConfig.risk_text}") desc.text = Html.fromHtml("${mAppConfig.risk_text}")
} }
...@@ -538,5 +539,64 @@ object CenterDialog { ...@@ -538,5 +539,64 @@ object CenterDialog {
mDialog.setCancelable(true) mDialog.setCancelable(true)
mDialog.show() mDialog.show()
} }
private var mTbDialog:Dialog?=null;
//淘口令
fun showTbGoodsDetail(context: Activity, goods: TbGoodsItemEntity) {
if (context.isFinishing) {
return
}
if (goods.zk_final_price.isNullOrEmpty()) {
return
}
if (mTbDialog!=null){
if (mTbDialog?.isShowing!!){
mTbDialog?.dismiss()
}
}
mTbDialog = Dialog(context, R.style.CenterCompatDialogTheme)
val mDialogView =
showBottomDialog(
R.layout.dialog_layout_tb_goods_guide,
context,
mTbDialog!!,
0,
Gravity.CENTER
)
var desc = mDialogView.findViewById<TextView>(R.id.id_tv_quan_desc)
var goodsImg = mDialogView.findViewById<RecycleImageView>(R.id.id_img_goods_main_img)
var name = mDialogView.findViewById<TextView>(R.id.id_tv_goods_name)
var youhuiquan = mDialogView.findViewById<TextView>(R.id.id_tv_quan_amount)
var price = mDialogView.findViewById<TextView>(R.id.id_tv_goods_price)
var old_price = mDialogView.findViewById<TextView>(R.id.id_tv_goods_old_price)
if (goods.pict_url?.startsWith("//img") == true) {
goodsImg.setLoadImageUrl("https:" + goods.pict_url, 0, 5)
} else {
goodsImg.setLoadImageUrl(goods.pict_url, 0, 5)
}
name.text = "${goods.title}"
if(goods.coupon_amount.isNullOrEmpty()){
desc.text = "可领¥ 0元优惠券"
youhuiquan.text = "0元"
}else{
desc.text = "可领¥ ${goods.coupon_amount}元优惠券"
youhuiquan.text = "${goods.coupon_amount?:"0"}元"
}
old_price.text = "¥ ${goods.zk_final_price}元"
old_price.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG
var z_price = goods.zk_final_price?.toDoubleOrNull() ?: 0.0
var c_price = goods.coupon_amount?.toDoubleOrNull() ?: 0.0
price.text = "¥ ${Utils.getNoMoreThanTwoDigits(Utils.sub(z_price, c_price))}"
mDialogView.findViewById<ImageView>(R.id.id_img_btn_receive).setOnClickListener {
mTbDialog?.dismiss()
JumpUtils.TbGoodsDetailJump(goods)
}
mTbDialog?.setCanceledOnTouchOutside(false)
mTbDialog?.setCancelable(true)
mTbDialog?.show()
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EDD49D" />
<corners android:radius="5dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
android:background="@drawable/shape_white_r10"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="检测到您自己的淘宝口令"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/id_tv_quan_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/shape_edd49d_r5"
android:includeFontPadding="false"
android:paddingLeft="5dp"
android:paddingTop="3dp"
android:paddingRight="5dp"
android:paddingBottom="3dp"
android:text="可领¥ 50元优惠券"
android:textColor="#A85C00"
android:textSize="16sp"
android:textStyle="bold" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="#F2F2F2"
android:padding="10dp">
<com.zxhl.cms.widget.RecycleImageView
android:id="@+id/id_img_goods_main_img"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginEnd="10dp"
android:background="@drawable/shape_white_r6" />
<TextView
android:id="@+id/id_tv_goods_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_toEndOf="@id/id_img_goods_main_img"
android:maxLines="2"
android:ellipsize="end"
android:text=""
android:textColor="@color/color_333333"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/id_ll_quan_view"
android:layout_width="78dp"
android:layout_height="wrap_content"
android:layout_below="@id/id_tv_goods_name"
android:layout_marginBottom="10dp"
android:layout_toEndOf="@id/id_img_goods_main_img"
android:background="@drawable/icon_quan_bg"
android:orientation="horizontal">
<View
android:layout_width="30dp"
android:layout_height="1dp" />
<TextView
android:id="@+id/id_tv_quan_amount"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:includeFontPadding="false"
android:text="50元"
android:textColor="#EB602D"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/id_ll_quan_view"
android:layout_toEndOf="@id/id_img_goods_main_img"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="券后 "
android:textColor="@color/color_999999"
android:textSize="14sp" />
<TextView
android:id="@+id/id_tv_goods_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="¥ 5398.00"
android:layout_marginRight="6dp"
android:textColor="@color/color_333333"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/id_tv_goods_old_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="¥ 5398.00"
android:textColor="@color/color_999999"
android:textSize="12sp" />
</LinearLayout>
</RelativeLayout>
<ImageView
android:id="@+id/id_img_btn_receive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:src="@drawable/button_qulingquan" />
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
...@@ -95,7 +95,6 @@ class TbGoodsDetailActivity : BaseActivity(), TbGoodsDetailContract.View, ...@@ -95,7 +95,6 @@ class TbGoodsDetailActivity : BaseActivity(), TbGoodsDetailContract.View,
override fun onNewIntent(intent: Intent?) { override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent) super.onNewIntent(intent)
Log.d("wxw", "newIntent")
if (intent != null) { if (intent != null) {
goodsDetail = intent.getSerializableExtra("goods") as TbGoodsItemEntity goodsDetail = intent.getSerializableExtra("goods") as TbGoodsItemEntity
refreshData() refreshData()
...@@ -122,8 +121,8 @@ class TbGoodsDetailActivity : BaseActivity(), TbGoodsDetailContract.View, ...@@ -122,8 +121,8 @@ class TbGoodsDetailActivity : BaseActivity(), TbGoodsDetailContract.View,
id_tv_xx_price?.text = "${goodsDetail?.zk_final_price}" id_tv_xx_price?.text = "${goodsDetail?.zk_final_price}"
id_tv_vip_buy_price?.text = "${goodsDetail?.zk_final_price}" id_tv_vip_buy_price?.text = "${goodsDetail?.zk_final_price}"
} else { } else {
var r_price = goodsDetail?.zk_final_price?.toDoubleOrNull() ?: 0 as Double var r_price = goodsDetail?.zk_final_price?.toDoubleOrNull() ?: 0.0
var c_price = goodsDetail?.coupon_amount?.toDoubleOrNull() ?: 0 as Double var c_price = goodsDetail?.coupon_amount?.toDoubleOrNull() ?: 0.0
var vipPrice = Utils.getNoMoreThanTwoDigits( var vipPrice = Utils.getNoMoreThanTwoDigits(
Utils.sub( Utils.sub(
r_price, r_price,
......
...@@ -52,8 +52,8 @@ class GoodsListAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, GoodsListAdapter ...@@ -52,8 +52,8 @@ class GoodsListAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, GoodsListAdapter
}else{ }else{
holder.id_tv_yhq_value?.visibility =View.VISIBLE holder.id_tv_yhq_value?.visibility =View.VISIBLE
holder.id_tv_yhq_value?.text = "${bean.coupon_amount}元券" holder.id_tv_yhq_value?.text = "${bean.coupon_amount}元券"
var r_price = bean.zk_final_price?.toDoubleOrNull() ?: 0 as Double var r_price = bean.zk_final_price?.toDoubleOrNull() ?: 0.0
var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0 as Double var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0.0
holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits( holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits(
Utils.sub( Utils.sub(
r_price, r_price,
......
...@@ -42,7 +42,6 @@ class HomeQyBannerAdapter : PagerAdapter { ...@@ -42,7 +42,6 @@ class HomeQyBannerAdapter : PagerAdapter {
override fun instantiateItem(container: ViewGroup, position: Int): Any { override fun instantiateItem(container: ViewGroup, position: Int): Any {
val data = mViewList[position] val data = mViewList[position]
Log.d("wxw", "data${data.size}")
val view = val view =
LayoutInflater.from(mActivity).inflate(R.layout.item_layout_home_qy_grid_view, null) LayoutInflater.from(mActivity).inflate(R.layout.item_layout_home_qy_grid_view, null)
val grid_view = view.findViewById<RecyclerView>(R.id.id_rcl_home_jgq_qy_grid_list) val grid_view = view.findViewById<RecyclerView>(R.id.id_rcl_home_jgq_qy_grid_list)
......
...@@ -103,8 +103,8 @@ class HomeRecommendAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, RecyclerView ...@@ -103,8 +103,8 @@ class HomeRecommendAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, RecyclerView
} else { } else {
holder.id_tv_yhq_value?.visibility = View.VISIBLE holder.id_tv_yhq_value?.visibility = View.VISIBLE
holder.id_tv_yhq_value?.text = "${bean.coupon_amount}元券" holder.id_tv_yhq_value?.text = "${bean.coupon_amount}元券"
var z_price = bean.zk_final_price?.toDoubleOrNull() ?: 0 as Double var z_price = bean.zk_final_price?.toDoubleOrNull() ?: 0.0
var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0 as Double var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0.0
holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits( holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits(
Utils.sub( Utils.sub(
z_price, z_price,
...@@ -150,7 +150,6 @@ class HomeRecommendAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, RecyclerView ...@@ -150,7 +150,6 @@ class HomeRecommendAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, RecyclerView
} }
} }
} }
Log.d("wxw", "resultSize${result.size}")
var mQyBannerAdapter = HomeQyBannerAdapter(result, mContext) var mQyBannerAdapter = HomeQyBannerAdapter(result, mContext)
holder.qy_vp?.adapter = mQyBannerAdapter; holder.qy_vp?.adapter = mQyBannerAdapter;
mQyBannerAdapter.notifyDataSetChanged() mQyBannerAdapter.notifyDataSetChanged()
...@@ -187,8 +186,8 @@ class HomeRecommendAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, RecyclerView ...@@ -187,8 +186,8 @@ class HomeRecommendAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, RecyclerView
holder.box_price?.text = bean.onePriceStr holder.box_price?.text = bean.onePriceStr
holder.box_old_price?.text = "¥ ${bean.originalPrice}" holder.box_old_price?.text = "¥ ${bean.originalPrice}"
holder.box_old_price?.paint?.flags = Paint.STRIKE_THRU_TEXT_FLAG holder.box_old_price?.paint?.flags = Paint.STRIKE_THRU_TEXT_FLAG
var a_price = bean.originalPrice?.toDoubleOrNull() ?: 0 as Double var a_price = bean.originalPrice?.toDoubleOrNull() ?: 0.0
var b_price = bean.onePriceStr?.toDoubleOrNull() ?: 0 as Double var b_price = bean.onePriceStr?.toDoubleOrNull() ?: 0.0
holder.box_discount_desc?.text = holder.box_discount_desc?.text =
"已减${Utils.getNoMoreThanTwoDigits(Utils.sub(a_price, b_price))}元" "已减${Utils.getNoMoreThanTwoDigits(Utils.sub(a_price, b_price))}元"
......
...@@ -53,8 +53,8 @@ class SearchGoodsTopAdapter : ...@@ -53,8 +53,8 @@ class SearchGoodsTopAdapter :
if (bean.coupon_amount.isNullOrEmpty()) { if (bean.coupon_amount.isNullOrEmpty()) {
holder.id_tv_goods_price?.text = "${bean.zk_final_price}" holder.id_tv_goods_price?.text = "${bean.zk_final_price}"
} else { } else {
var r_price = bean.zk_final_price?.toDoubleOrNull() ?: 0 as Double var r_price = bean.zk_final_price?.toDoubleOrNull() ?: 0.0
var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0 as Double var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0.0
holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits( holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits(
Utils.sub( Utils.sub(
r_price, r_price,
......
...@@ -45,8 +45,8 @@ class SearchReslutAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, SearchReslutA ...@@ -45,8 +45,8 @@ class SearchReslutAdapter : BaseRecyclerAdapter<TbGoodsItemEntity, SearchReslutA
} else { } else {
holder.id_tv_yhq_value?.visibility = View.VISIBLE holder.id_tv_yhq_value?.visibility = View.VISIBLE
holder.id_tv_yhq_value?.text = "${bean.coupon_amount}元券" holder.id_tv_yhq_value?.text = "${bean.coupon_amount}元券"
var z_price = bean.zk_final_price?.toDoubleOrNull() ?: 0 as Double var z_price = bean.zk_final_price?.toDoubleOrNull() ?: 0.0
var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0 as Double var c_price = bean.coupon_amount?.toDoubleOrNull() ?: 0.0
holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits( holder.id_tv_goods_price?.text = Utils.getNoMoreThanTwoDigits(
Utils.sub( Utils.sub(
z_price, z_price,
......
...@@ -3,6 +3,8 @@ package com.zxbw.modulemain.fragment ...@@ -3,6 +3,8 @@ package com.zxbw.modulemain.fragment
import android.view.View import android.view.View
import com.zxbw.modulemain.R import com.zxbw.modulemain.R
import com.zxhl.cms.common.base.BaseFragment import com.zxhl.cms.common.base.BaseFragment
import kotlinx.android.synthetic.main.fragment_layout_cash_check.*
import me.jessyan.autosize.utils.ScreenUtils
/** /**
* @author (wangXuewei) * @author (wangXuewei)
...@@ -13,7 +15,11 @@ class CashCheckFragment : BaseFragment() { ...@@ -13,7 +15,11 @@ class CashCheckFragment : BaseFragment() {
override fun layoutID(): Int = R.layout.fragment_layout_cash_check override fun layoutID(): Int = R.layout.fragment_layout_cash_check
override fun init(view: View?) { override fun init(view: View?) {
var statusBarHeight = ScreenUtils.getStatusBarHeight()
if (statusBarHeight <= 0) {
statusBarHeight = 40
}
id_sys_bar_view.layoutParams.height = statusBarHeight
} }
} }
\ No newline at end of file
...@@ -19,8 +19,10 @@ import com.zxhl.cms.net.SettingPreference ...@@ -19,8 +19,10 @@ import com.zxhl.cms.net.SettingPreference
import com.zxhl.cms.net.callback.BaseObserver import com.zxhl.cms.net.callback.BaseObserver
import com.zxhl.cms.net.model.box.AppInEntity import com.zxhl.cms.net.model.box.AppInEntity
import com.zxhl.cms.net.model.other.IsWeChatLoginEntity import com.zxhl.cms.net.model.other.IsWeChatLoginEntity
import com.zxhl.cms.net.model.qy.ConvertLinkEntityDetail
import com.zxhl.cms.net.model.uc.UserInfo import com.zxhl.cms.net.model.uc.UserInfo
import com.zxhl.cms.utils.* import com.zxhl.cms.utils.*
import com.zxhl.cms.widget.CenterDialog
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.ObservableOnSubscribe import io.reactivex.ObservableOnSubscribe
import io.reactivex.Observer import io.reactivex.Observer
...@@ -90,114 +92,23 @@ class SplashPresenter : SplashContract.Presenter { ...@@ -90,114 +92,23 @@ class SplashPresenter : SplashContract.Presenter {
// } // }
// } // }
// }) // })
checkLoginIsBind()
} }
override fun checkLogin() { override fun checkLogin() {
val user = SettingPreference.getUserInfoData() val user = SettingPreference.getUserInfoData()
val token = SettingPreference.getUserToken() val token = SettingPreference.getUserToken()
if (user == null && TextUtils.isEmpty(token)) { if (user == null && TextUtils.isEmpty(token)) {
if (TextUtils.equals(Utils.getChannel(AppContext.get()), "baichuan")) {
// deviceLogin()
getAds()
} else {
deviceLogin()
}
} else {
UserDataUtils.updateUserInfo(null)
getAds()
}
}
private fun deviceLogin() {
ApiClient.userInfoAPi.deviceLogin().compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<UserInfo>() {
override fun onSuccess(result: UserInfo) {
val token = result.token
SettingPreference.saveToken(token)
UserDataUtils.updateUserInfo(null)
// mView?.jumpMainPage()
getAds()
}
override fun onFailure(e: Throwable, code: String, errorMsg: String) {
SettingPreference.saveToken("")
SettingPreference.saveUserInfo(null)
getAds()
}
})
}
private fun getAds() {
checkLoginIsBind()
ApiClient.adApi.getAds("splash")
.compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<List<NewsEntity>>() {
override fun onSuccess(result: List<NewsEntity>) {
if (result != null && result?.size > 0) {
val data = result[0]
if (TextUtils.equals(data.adPlatform, "chuanshanjia")) {
loadToutiao(data, 0, "splash")
}
} else { } else {
mView.jumpMainPage() UserDataUtils.updateUserInfo(null)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
mView.jumpMainPage()
}
})
}
private var mTTAdNative: TTAdNative? = null
private fun loadToutiao(data: NewsEntity, count: Int, slotNameL: String) {
mTTAdNative = TTAdSdk.getAdManager().createAdNative(mActivity)//baseContext建议为activity
val adSlot = AdSlot.Builder()
.setCodeId(data?.codeId)
.setSupportDeepLink(true)
.setImageAcceptedSize(
PhoneUtils.getScreenWidth(AppContext.get()),
PhoneUtils.getScreenHeight(AppContext.get())
)
.build()
mTTAdNative?.loadSplashAd(adSlot, object : TTAdNative.SplashAdListener {
override fun onError(i: Int, s: String) {
mView.jumpMainPage()
}
override fun onTimeout() {
mView.jumpMainPage()
}
override fun onSplashAdLoad(ad: TTSplashAd) {
val view = ad.splashView
// mView?.setToutiaoView(view)
ad.setSplashInteractionListener(object : TTSplashAd.AdInteractionListener {
override fun onAdClicked(view: View, i: Int) {
EventUtils.onEvent("splash_click")
AdUpload.onAdClick(data)
} }
override fun onAdShow(view: View, i: Int) {
EventUtils.onEvent("splash_show")
AdUpload.onAdImpression(data)
} }
override fun onAdSkip() {
mView.jumpMainPage()
}
override fun onAdTimeOver() {
mView.jumpMainPage()
}
})
}
}, 5000)
}
private fun checkLoginIsBind() { private fun checkLoginIsBind() {
ApiClient.homeApi.isWxLogin().compose(RxSchedulers.observableIO2Main()) ApiClient.homeApi.isWxLogin().compose(RxSchedulers.observableIO2Main())
...@@ -211,23 +122,7 @@ class SplashPresenter : SplashContract.Presenter { ...@@ -211,23 +122,7 @@ class SplashPresenter : SplashContract.Presenter {
} }
}) })
getAppInfo() // getAppInfo()
}
private fun getAppInfo() {
ApiClient.homeApi.getAppInfo()
.compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<AppInEntity>() {
override fun onSuccess(result: AppInEntity?) {
Constant.Switch.isOpenLogin = result?.login.equals("1")
Constant.Switch.isOpenPayTips = result?.risk_open.equals("1")
SettingPreference.saveConfig(result)
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
}
})
} }
} }
\ No newline at end of file
...@@ -2,7 +2,50 @@ ...@@ -2,7 +2,50 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#F3F4F5" android:gravity="center_horizontal"
android:background="@color/white"
android:orientation="vertical"> android:orientation="vertical">
<View
android:id="@+id/id_sys_bar_view"
android:layout_width="match_parent"
android:layout_height="40dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/id_sys_bar_view"
android:layout_centerHorizontal="true"
android:layout_marginTop="14dp"
android:layout_marginBottom="4dp"
android:text="赚钱大厅"
android:textColor="@color/color_333333"
android:textSize="20sp"
android:textStyle="bold" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/id_img_anim_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/image_xiaoxiangbi_anim" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_daicaihongbao" />
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_weight="1" android:layout_weight="1"
android:visibility="gone"
android:drawableTop="@drawable/icon_bottom_cash_default" android:drawableTop="@drawable/icon_bottom_cash_default"
android:drawablePadding="2dp" android:drawablePadding="2dp"
android:textStyle="bold" android:textStyle="bold"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment