Commit eb6f15df authored by shiyl's avatar shiyl

新建xbirdbusiness组件

parent f2dddfe5
package com.yidian.common
/**
* XBird 页面调转相关常量
*/
class XBirdPageConstants {
companion object {
// 商品 - 发布商品
const val COMMODITY_PUBLISH_COMMODITY = "xbrid_coupon_publish"
}
}
......@@ -84,8 +84,8 @@ class XRouterPathConstants {
// 钱包 —— 常见问题
const val COMMON_PROBLEM = "/wallet/CommonProblemActivity"
// 商品 —— 发布优惠券
const val PUBLISH_COUPONS_ACTIVITY = "/commodity/PublishCouponsActivity"
// xbird —— 通用webView
const val COMMON_WEB_VIEW_ACTIVITY = "/xbirdbusiness/CommonWebViewActivity"
// 商品 —— 优惠券选择类目
const val CHOOSE_CATEGORY_ACTIVITY = "/commodity/ChooseCategoryActivity"
......
......@@ -8,8 +8,5 @@
android:name=".ui.coupon.CategorySearchActivity"
android:windowSoftInputMode="adjustPan" />
<activity android:name=".ui.coupon.CommodityManagementActivity" />
<activity
android:name=".ui.coupon.PublishCouponsActivity"
android:windowSoftInputMode="adjustPan" />
</application>
</manifest>
\ No newline at end of file
www @ c880f9c7
Subproject commit 28a5700a3ca7d0db6209be09858dac8ae05483bd
Subproject commit c880f9c75629e9599a517d4526b18f9a804d1e50
......@@ -2,7 +2,6 @@ package com.yidian.shenghuoquan.commodity.app
import com.yidian.common.XRouterPathConstants
import com.yidian.shenghuoquan.commodity.ui.coupon.ChooseCategoryActivity
import com.yidian.shenghuoquan.commodity.ui.coupon.PublishCouponsActivity
import com.yidian.shenghuoquan.commodity.ui.coupon.CommodityManagementActivity
......@@ -12,7 +11,6 @@ import com.yidian.shenghuoquan.commodity.ui.coupon.CommodityManagementActivity
object ClassMapUtil {
val xPageNodeMap = mapOf(
XRouterPathConstants.Companion.PUBLISH_COUPONS_ACTIVITY to PublishCouponsActivity::class.java,// 发布优惠券
XRouterPathConstants.Companion.CHOOSE_CATEGORY_ACTIVITY to ChooseCategoryActivity::class.java,// 优惠券选择类目
XRouterPathConstants.Companion.COMMODITY_MANAGEMENT to CommodityManagementActivity::class.java, // 商品管理
)
......
......@@ -20,7 +20,6 @@ class CommodityApplication : YdBaseApplication() {
override fun onCreate() {
super.onCreate()
AppUtils.getProcessInfo()
if (ProcessUtil.isMainProcess(this)) {
Timber.tag("注册").e("开始注册")
registerXPage()
......
......@@ -90,7 +90,7 @@ class CommodityManagementActivity : BaseMvvmActivity<CommodityActivityCommodityM
//发布商品
binding.tvCommodityPublish.setOnClickListener {
// 跳转商品发布页面 新发布商品不传id
XPageManager.push(XRouterPathConstants.PUBLISH_COUPONS_ACTIVITY, null)
XPageManager.push(XRouterPathConstants.COMMON_WEB_VIEW_ACTIVITY, null)
}
}
......
......@@ -63,7 +63,7 @@ class CommodityListItemViewModel : BaseViewModel(), ICommodityOperationCallback
*/
fun commodityEdit(item: Goods) {
// 跳转商品发布页面 传入商品id
XPageManager.push(XRouterPathConstants.PUBLISH_COUPONS_ACTIVITY, hashMapOf(Pair(EXTRA_COMMODITY_ID, item.goodsSpuId)))
XPageManager.push(XRouterPathConstants.COMMON_WEB_VIEW_ACTIVITY, hashMapOf(Pair(EXTRA_COMMODITY_ID, item.goodsSpuId)))
}
/**
......
......@@ -185,7 +185,7 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
*/
private fun generateFunctionPageMap(data: List<GetConfigListBean.Item>) {
// 我要发布-优惠券
functionPageMap[data[0].functions[0].function_id] = XRouterPathConstants.PUBLISH_COUPONS_ACTIVITY
functionPageMap[data[0].functions[0].function_id] = XRouterPathConstants.COMMON_WEB_VIEW_ACTIVITY
// 我要发布-招聘
functionPageMap[data[0].functions[1].function_id] = null
// 管理服务-权限管理
......
/build
\ No newline at end of file
if (rootProject.ext.android.isApplication) {
apply plugin: 'com.android.application'
apply plugin: 'yac-engine'
} else {
apply plugin: 'com.android.library'
}
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-parcelize'
android {
compileSdkVersion build_versions.compileSdkVersion
defaultConfig {
if (rootProject.ext.android.isApplication) {
applicationId "com.yidian.yac"
}
minSdkVersion build_versions.minSdkVersion
targetSdkVersion build_versions.targetSdkVersion
versionCode rootProject.ext.android.versionCode
versionName rootProject.ext.android.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main {
if (rootProject.ext.android.isApplication) {
manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/AndroidManifest.xml'
}
}
}
buildFeatures {
dataBinding true
}
kapt {
generateStubs = true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
rootProject.ext.dependencies.other.each {
implementation project(it)
}
implementation rootProject.ext.dependencies.publicImplementation
testImplementation rootProject.ext.dependencies.testImplementation
androidTestImplementation rootProject.ext.dependencies.androidTestImplementation
}
\ No newline at end of file
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
\ No newline at end of file
package com.yidian.shenghuoquan.xbirdbusiness
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.yidian.shenghuoquan.webviewcontroller", appContext.packageName)
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yidian.shenghuoquan.xbirdbusiness">
<application>
<activity
android:name=".ui.CommonWebViewActivity"
android:windowSoftInputMode="adjustPan" />
</application>
</manifest>
\ No newline at end of file
package com.yidian.shenghuoquan.xbirdbusiness.app
import com.yidian.common.XRouterPathConstants
import com.yidian.shenghuoquan.xbirdbusiness.ui.CommonWebViewActivity
/**
* 注册XPageNode工具类
*/
object ClassMapUtil {
val xPageNodeMap = mapOf(
XRouterPathConstants.Companion.COMMON_WEB_VIEW_ACTIVITY to CommonWebViewActivity::class.java,// 发布商品
)
}
package com.yidian.shenghuoquan.xbirdbusiness.app
import android.content.Intent
import com.yidian.common.XRouterPathConstants
import com.yidian.common.YdBaseApplication
import com.yidian.news.util.ProcessUtil
import com.yidian.xpage.XPageManager
import com.yidian.xpage.node.XPageHandler
import com.yidian.xpage.node.XPageNode
import com.yidian.xpage.node.XPageNodePageType
import com.yidian.yac.core.core.YacModuleSpec
@YacModuleSpec
class CommodityApplication : YdBaseApplication() {
override fun onCreate() {
super.onCreate()
if (ProcessUtil.isMainProcess(this)) {
registerXPage()
initService()
}
}
private fun registerXPage() {
ClassMapUtil.xPageNodeMap.forEach {
val node = XPageNode(it.key, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
}
intent.setClass(context, it.value)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
})
XPageManager.registeredNode(node)
}
}
private fun initService() {
}
}
package com.yidian.shenghuoquan.commodity.ui.coupon
package com.yidian.shenghuoquan.xbirdbusiness.ui
import android.webkit.WebChromeClient
import android.webkit.WebView
......@@ -9,26 +9,28 @@ import com.yidian.common.XRouterPathConstants
import com.yidian.common.extensions.initTitleBar
import com.yidian.common.mvvm.BaseMvvmActivity
import com.yidian.common.utils.DialogUtils
import com.yidian.shenghuoquan.commodity.R
import com.yidian.shenghuoquan.commodity.databinding.CommodityActivityPublishCouponsBinding
import com.yidian.shenghuoquan.xbirdbusiness.R
import com.yidian.shenghuoquan.xbirdbusiness.databinding.XbridActivityCommonWebViewBinding
import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView
import com.yidian.xpage.XPageViewProtocol
import timber.log.Timber
/**
* 发布优惠券
* 通用的WebView
*/
class PublishCouponsActivity : BaseMvvmActivity<CommodityActivityPublishCouponsBinding, PublishCouponsViewModel>(), XPageViewProtocol {
class CommonWebViewActivity : BaseMvvmActivity<XbridActivityCommonWebViewBinding, CommonWebViewModel>(), XPageViewProtocol {
private lateinit var webView: XWebView
private lateinit var url: String
override val layoutId: Int = R.layout.commodity_activity_publish_coupons
override val layoutId: Int = R.layout.xbrid_activity_common_web_view
override val vm: PublishCouponsViewModel by viewModels()
override val vm: CommonWebViewModel by viewModels()
override fun getXPageName(): String {
return XRouterPathConstants.PUBLISH_COUPONS_ACTIVITY
return XRouterPathConstants.COMMON_WEB_VIEW_ACTIVITY
}
override fun initView() {
......@@ -38,13 +40,13 @@ class PublishCouponsActivity : BaseMvvmActivity<CommodityActivityPublishCouponsB
initWebView()
} else {
val paramsMap = serializableExtra as HashMap<*, *>
val couponId = paramsMap[CouponId] as String
val couponId = paramsMap[couponId] as String
initWebView(couponId)
}
}
private fun initWebView(couponId: String = "") {
webView = XBridManager.getWebView(this, "testidenfier", binding.couponWebView)
webView = XBridManager.getWebView(this, "testidenfier", binding.commonWebView)
val lifeAccountId = Hawk.get(HawkConfig.LifeAccountId, "")
val webUrl = if (couponId.isNotBlank()) {
"?coupon_id=$couponId&life_account_id=$lifeAccountId"
......@@ -64,6 +66,53 @@ class PublishCouponsActivity : BaseMvvmActivity<CommodityActivityPublishCouponsB
WebView.setWebContentsDebuggingEnabled(true)
}
// override fun initView() {
// val serializableExtra = intent.getSerializableExtra(XRouterPathConstants.ParamsKey)
// if (serializableExtra == null) {
// // 提示页面必须传参才能进入
// ToastUtils.showShortSafe("需要传递pageUrl")
// } else {
// val paramsMap = serializableExtra as HashMap<*, *>
// val webViewUrl = paramsMap[pageUrl] as String?
// if (webViewUrl.isNullOrBlank()) {
// ToastUtils.showShortSafe("pageUrl不能为空")
// return
// }
// url = webViewUrl
//// when (XBridManager.getXBridPageName(webViewUrl).equals(XBirdPageConstants.COMMODITY_PUBLISH_COMMODITY)) {
////
//// }
// initWebView()
// }
//
//
//
// }
//
// private fun initWebView() {
// initTitleBar(binding.include.toolbar, binding.include.tvTitle, "发布商品")
// webView = XBridManager.getWebView(this, "testidenfier", binding.commonWebView)
//// val lifeAccountId = Hawk.get(HawkConfig.LifeAccountId, "")
//// val webUrl = if (couponId.isNotBlank()) {
//// "?coupon_id=$couponId&life_account_id=$lifeAccountId"
//// } else {
//// "?life_account_id=$lifeAccountId"
//// }
//// webView.loadUrl("xbrid_coupon_publish$webUrl")
// webView.loadUrl(url)
// Timber.e("CommonWebView 请求地址: $url")
// webView.webChromeClient = object : WebChromeClient() {
// override fun onProgressChanged(view: WebView?, newProgress: Int) {
// super.onProgressChanged(view, newProgress)
// if (newProgress == 100) {
// Timber.e(" CommonWebView 页面加载完成")
// }
// }
// }
// WebView.setWebContentsDebuggingEnabled(true)
// }
override fun onDestroy() {
super.onDestroy()
if (::webView.isInitialized) {
......@@ -76,7 +125,7 @@ class PublishCouponsActivity : BaseMvvmActivity<CommodityActivityPublishCouponsB
}
companion object {
const val CouponId = "coupon_id"
const val pageUrl = "page_url"
const val couponId = "coupon_id"
}
}
package com.yidian.shenghuoquan.commodity.ui.coupon
package com.yidian.shenghuoquan.xbirdbusiness.ui
import com.yidian.common.mvvm.BaseViewModel
class PublishCouponsViewModel : BaseViewModel() {
class CommonWebViewModel: BaseViewModel() {
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yidian.shenghuoquan.xbirdbusiness">
<application>
<activity android:name=".ui.CommonWebViewActivity">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.VIEW" />-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
</application>
</manifest>
......@@ -6,7 +6,7 @@
<variable
name="vm"
type="com.yidian.shenghuoquan.commodity.ui.coupon.PublishCouponsViewModel" />
type="com.yidian.shenghuoquan.xbirdbusiness.ui.CommonWebViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
......@@ -21,7 +21,7 @@
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.common.webview.YiDianWebView
android:id="@+id/coupon_web_view"
android:id="@+id/common_web_view"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
\ No newline at end of file
<resources>
<string name="app_name">webviewcontroller</string>
</resources>
\ No newline at end of file
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.ShenghuoquanBusiness" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
\ No newline at end of file
package com.yidian.shenghuoquan.xbirdbusiness
import org.junit.Test
import org.junit.Assert.*
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
include ':Components:userinfo'
include ':Components:newscontent'
include ':CommonLib:Common'
include ':app'
include ':idcard_quality'
rootProject.name = "ShenghuoquanBusiness"
include ':app'
include ':CommonLib:Common'
include ':Components:newscontent'
include ':Components:commodity'
include ':Components:xbirdbusiness'
//setBinding(new Binding([gradle: this]))
//evaluate(new File("../YDSubway_flutter/.android", 'include_flutter.groovy'))
include ':Components:commodity'
include ':Components:userinfo'
include ':idcard_quality'
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