[6.7.2]
[fea] [皮肤信息]
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package com.mogo.och.biz.skin
|
||||
|
||||
import android.content.Context
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.skin.bean.SkinRespBean
|
||||
import com.mogo.och.biz.skin.net.OchSkinServiceManager
|
||||
import com.mogo.och.common.module.biz.skin.SkinService
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.skin.Skin
|
||||
import com.mogo.skin.SkinManager
|
||||
import com.mogo.skin.utils.FileUtils
|
||||
|
||||
@Route(path = OchCommonConst.BIZ_SKIN)
|
||||
class SkinProvider : SkinService {
|
||||
|
||||
private var context: Context?= null
|
||||
|
||||
private val TAG = "SkinProvider"
|
||||
|
||||
override fun loadNewSkin() {
|
||||
OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息")
|
||||
context?.let{
|
||||
OchSkinServiceManager.querySkinBysn(it,object : OchCommonServiceCallback<SkinRespBean>{
|
||||
override fun onSuccess(data: SkinRespBean?) {
|
||||
OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息成功:${data}")
|
||||
if (null != data && 0 == data.code) {
|
||||
if(data.data==null){
|
||||
SkinManager.getInstance().loadSkin("")
|
||||
OchChainLogManager.writeChainLogSkin("皮肤信息", "皮肤还原成功")
|
||||
}else {
|
||||
data.data?.let { skinInfo ->
|
||||
if(skinInfo.empty()){
|
||||
SkinManager.getInstance().loadSkin("")
|
||||
OchChainLogManager.writeChainLogSkin("皮肤信息", "皮肤还原成功")
|
||||
return
|
||||
}
|
||||
val skin = Skin(
|
||||
skinInfo.md5,
|
||||
skinInfo.name,
|
||||
skinInfo.url
|
||||
)
|
||||
//换肤
|
||||
SkinManager.getInstance().downloadSkin(it, skin, object :
|
||||
SkinManager.SkinLoadListener {
|
||||
override fun onLoadSuccess() {
|
||||
//MogoAnalyticUtils.track()
|
||||
d(TAG, "皮肤下载成功……开始解压Raw下的视频")
|
||||
OchChainLogManager.writeChainLogSkin(
|
||||
"皮肤信息",
|
||||
"加载皮肤成功:${data}"
|
||||
)
|
||||
FileUtils.copyVideoRawToFile(it, R.raw::class.java.fields)
|
||||
}
|
||||
|
||||
override fun onLoadFailed(e: java.lang.Exception?) {
|
||||
OchChainLogManager.writeChainLogSkin(
|
||||
"皮肤信息",
|
||||
"加载皮肤失败:${e}"
|
||||
)
|
||||
RxUtils.createSubscribe(5_000) {
|
||||
loadNewSkin()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息网络失败5s后重试")
|
||||
RxUtils.createSubscribe(5_000) {
|
||||
loadNewSkin()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息失败code:${code} msg:${msg} 5s后重试")
|
||||
RxUtils.createSubscribe(5_000) {
|
||||
loadNewSkin()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun init(context: Context?) {
|
||||
this.context = context
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.mogo.och.biz.skin.bean
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.common.module.biz.login.LoginInfo
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*
|
||||
* 状态查询返回数据结构
|
||||
*/
|
||||
data class SkinRespBean(var data: Result?) : BaseData() {
|
||||
data class Result(
|
||||
var id: Long,
|
||||
var name: String?,
|
||||
var url: String?,
|
||||
var md5: String?,
|
||||
) {
|
||||
fun empty(): Boolean {
|
||||
if(id<=0||name.isNullOrEmpty()||url.isNullOrEmpty()||md5.isNullOrEmpty()){
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.mogo.och.biz.skin.net;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginReqBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginRespBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean;
|
||||
import com.mogo.och.biz.skin.bean.SkinRespBean;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Header;
|
||||
import retrofit2.http.Headers;
|
||||
import retrofit2.http.POST;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
* <p>
|
||||
* 网约车-出租车接口定义
|
||||
*/
|
||||
interface OchSkinServiceApi {
|
||||
|
||||
@Headers({"Content-type:application/json;charset=UTF-8"})
|
||||
@GET("/och-vehicle/api/resource/queryBySn")
|
||||
Observable<SkinRespBean> querySkinBysn(@Header("appId") String appId
|
||||
, @Header("ticket") String ticket, @Query("sn") String sn);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.mogo.och.biz.skin.net
|
||||
|
||||
import android.content.Context
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean
|
||||
import com.mogo.och.biz.skin.bean.SkinRespBean
|
||||
import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.manager.cache.OchSPManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformTry
|
||||
|
||||
object OchSkinServiceManager {
|
||||
|
||||
private const val TAG = "OchCommonServiceManager"
|
||||
|
||||
private val ochSkinService: OchSkinServiceApi by lazy {
|
||||
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
|
||||
OchSkinServiceApi::class.java
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 接单状态和登录状态查询
|
||||
*
|
||||
* @param context
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun querySkinBysn(
|
||||
context: Context,
|
||||
callback: OchCommonServiceCallback<SkinRespBean>?
|
||||
) {
|
||||
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态");
|
||||
val sn =
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
OchSPManager.getSn()
|
||||
} else{
|
||||
LoginLanPassengerSocket.driverSn
|
||||
}
|
||||
|
||||
ochSkinService.querySkinBysn(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
sn
|
||||
).transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "querySkinBysn",false))
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.mogo.och.common.module.biz.skin
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.och.common.module.biz.lansocket.IOchLanPassengerStatusListener
|
||||
import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.manager.cache.OchSPManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
|
||||
object SkinManager : IOchLanPassengerStatusListener {
|
||||
|
||||
private val TAG = "SkinManager"
|
||||
|
||||
private var skinService: SkinService? =
|
||||
ARouter.getInstance().build(OchCommonConst.BIZ_SKIN).navigation() as SkinService
|
||||
|
||||
|
||||
init {
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
LoginLanPassengerSocket.addListener(TAG,this)
|
||||
}
|
||||
}
|
||||
fun load(){
|
||||
OchChainLogManager.writeChainLogInit("初始化信息","初始化皮肤信息")
|
||||
loadNewSkin()
|
||||
}
|
||||
|
||||
private fun loadNewSkin(){
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
val driverSn = OchSPManager.getSn()
|
||||
if(driverSn.isNullOrEmpty()){
|
||||
OchChainLogManager.writeChainLogSkin("司机皮肤信息","没有sn 需要等待5s再去请求")
|
||||
RxUtils.createSubscribe(5_000) {
|
||||
skinService?.loadNewSkin()
|
||||
}
|
||||
}else{
|
||||
skinService?.loadNewSkin()
|
||||
}
|
||||
} else{
|
||||
skinService?.loadNewSkin()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDriverSnChagneListner(sn: String?) {
|
||||
OchChainLogManager.writeChainLogSkin("乘客皮肤信息","司机屏sn变化 重新加载皮肤")
|
||||
skinService?.loadNewSkin()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.mogo.och.common.module.biz.skin
|
||||
|
||||
import com.alibaba.android.arouter.facade.template.IProvider
|
||||
|
||||
interface SkinService : IProvider {
|
||||
|
||||
fun loadNewSkin()
|
||||
|
||||
}
|
||||
@@ -29,6 +29,7 @@ class OchCommonConst {
|
||||
const val WAIT_TAKEN = 100046
|
||||
|
||||
const val BIZ_LOGIN = "/ochbiz/common/login"
|
||||
const val BIZ_SKIN = "/ochbiz/common/skin"
|
||||
|
||||
const val BUS_DRIVER = "/busdriver/busdriver"
|
||||
const val BUS_PASSENGER = "/buspassenger/buspassenger"
|
||||
|
||||
@@ -39,6 +39,8 @@ object OchChainLogManager {
|
||||
|
||||
// 初始化信息
|
||||
const val EVENT_KEY_INFO_INIT = "event_key_och_init"
|
||||
// 初始化信息
|
||||
const val EVENT_KEY_INFO_SKIN = "event_key_och_skin"
|
||||
|
||||
// 局域网内socket 通讯
|
||||
const val EVENT_KEY_INFO_SOCKET = "analytics_event_och_track_screen_msg"
|
||||
@@ -84,6 +86,11 @@ object OchChainLogManager {
|
||||
fun writeChainLogInit(title: String, info: String) {
|
||||
writeChainLog(title,info,true,EVENT_KEY_INFO_INIT)
|
||||
}
|
||||
|
||||
fun writeChainLogSkin(title: String, info: String) {
|
||||
writeChainLog(title,info,true,EVENT_KEY_INFO_SKIN)
|
||||
}
|
||||
|
||||
fun writeChainLogNetLanSocketConnect(title: String, info: String){
|
||||
writeChainLog(title,info,true,EVENT_KEY_INFO_SOCKET_CONNECT)
|
||||
}
|
||||
|
||||
@@ -36,12 +36,10 @@ import com.mogo.och.common.module.biz.login.ILoginCallback
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.biz.provider.CommonService
|
||||
import com.mogo.och.common.module.biz.skin.SkinManager
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.skin.Skin
|
||||
import com.mogo.skin.SkinManager
|
||||
import com.mogo.skin.SkinManager.SkinLoadListener
|
||||
import com.mogo.skin.utils.FileUtils
|
||||
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
/**
|
||||
@@ -58,29 +56,9 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
|
||||
override fun init(context: Context) {
|
||||
d(TAG, "FacadeProvider:init__${ProcessUtils.getCurrentProcessName()}_$this")
|
||||
LoginStatusManager.addListener(TAG, this)
|
||||
// TODO yangyakun 根据后台配置的用户租户对应的皮肤包进行下载换肤
|
||||
val skin = Skin(
|
||||
"ee3e1b0ed6e33a51366949294b07787d",
|
||||
"YiXin-skin_v1_2024_10_25.zip",
|
||||
"https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/YiXin-skin_v1_2024_10_25.zip"
|
||||
)
|
||||
val skinDeQing = Skin(
|
||||
"a841e8819f06cfefa646f7adc697e070",
|
||||
"DeQing-skin_v1_2024_10_25.zip",
|
||||
"https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/DeQing-skin_v1_2024_10_25.zip"
|
||||
)
|
||||
//换肤
|
||||
SkinManager.getInstance().downloadSkin(Utils.getApp(), skin, object : SkinLoadListener {
|
||||
override fun onLoadSuccess() {
|
||||
//MogoAnalyticUtils.track()
|
||||
d(TAG,"皮肤下载成功……开始解压Raw下的视频")
|
||||
FileUtils.copyVideoRawToFile(Utils.getApp(), R.raw::class.java.fields)
|
||||
}
|
||||
|
||||
override fun onLoadFailed(e: java.lang.Exception?) {
|
||||
|
||||
}
|
||||
})
|
||||
if(ProjectUtils.isSaas()) {
|
||||
SkinManager.load()
|
||||
}
|
||||
}
|
||||
|
||||
override fun createCoverage(fragmentActivity: FragmentActivity?, integer: Int?): Fragment? {
|
||||
|
||||
Reference in New Issue
Block a user