From d40644c6d26a4f96f877f8ca120e4951ccafb206 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Thu, 6 Nov 2025 18:07:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=83=8C=E6=99=AF=EF=BC=8C=E5=A4=A7=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=20=E6=8E=A5=E5=8F=A3=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VisualNovel/app/build.gradle.kts | 4 +-- .../visualnovel/api/service/ChatService.kt | 9 +++--- .../entity/response/ChatAiModule.kt | 14 ++++++++ .../repository/api/ChatRepository.kt | 8 ++--- .../remax/visualnovel/ui/chat/ChatActivity.kt | 32 +++++++++++++++++++ .../visualnovel/ui/chat/ChatViewModel.kt | 5 ++- .../chat/setting/customui/ChatSettingView.kt | 18 ++++++++--- .../ExpandAiModelSelectView.kt | 25 ++++++++------- .../expandableSelector/SelctorItem.kt | 10 ------ .../main/res/layout/layout_item_ai_model.xml | 6 ++-- 10 files changed, 89 insertions(+), 42 deletions(-) create mode 100644 VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatAiModule.kt delete mode 100644 VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/SelctorItem.kt diff --git a/VisualNovel/app/build.gradle.kts b/VisualNovel/app/build.gradle.kts index 1ef1471..733602b 100644 --- a/VisualNovel/app/build.gradle.kts +++ b/VisualNovel/app/build.gradle.kts @@ -141,7 +141,7 @@ android { buildConfigString("RECHAEGE_SERVICES", "https://test.xxxxx.ai/policy/recharge") buildConfigString("RTC_APP_ID", "689ade491323ae01797818e0-XXX-TODO") - buildConfigString("API_BASE", "http://54.223.196.180:9090") + buildConfigString("API_BASE", "http://54.223.196.180:8091") //buildConfigString("API_BASE", "http://192.168.110.113:9090") } @@ -162,7 +162,7 @@ android { buildConfigString("RECHAEGE_SERVICES", "https://test.xxxxx.ai/policy/recharge") buildConfigString("RTC_APP_ID", "689ade491323ae01797818e0-XXX-TODO") - buildConfigString("API_BASE", "http://54.223.196.180:9090") + buildConfigString("API_BASE", "http://54.223.196.180:8091") //buildConfigString("API_BASE", "http://192.168.110.113:9090") } } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ChatService.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ChatService.kt index b821b5a..ecf3c60 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ChatService.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ChatService.kt @@ -15,6 +15,7 @@ import com.remax.visualnovel.entity.request.SimpleDataDTO import com.remax.visualnovel.entity.request.VoiceTTS import com.remax.visualnovel.entity.response.Album import com.remax.visualnovel.entity.response.Character +import com.remax.visualnovel.entity.response.ChatAiModule import com.remax.visualnovel.entity.response.ChatBackgroundBase import com.remax.visualnovel.entity.response.ChatModel import com.remax.visualnovel.entity.response.ChatSet @@ -27,9 +28,7 @@ import com.remax.visualnovel.entity.response.VoiceASR import com.remax.visualnovel.entity.response.base.Response import com.remax.visualnovel.entity.response.basenew.ResponseNew import retrofit2.http.Body -import retrofit2.http.GET import retrofit2.http.POST -import retrofit2.http.Query interface ChatService { @@ -171,12 +170,12 @@ interface ChatService { suspend fun requestSoundList(@Body param: ParamSoundList): ResponseNew> @POST(BuildConfig.API_BASE + "/model/config/list") - suspend fun requestAiModelList(@Body language: Int = 1): ResponseNew> + suspend fun requestAiModelList(@Body language: Int = 1): ResponseNew> - @POST(BuildConfig.API_BASE + "/bg_image/config/upload") + @POST(BuildConfig.API_BASE + "/file/bgImage/upload") suspend fun uploadCustomBgPic(@Body param: ParamBgUpload): ResponseNew - @POST(BuildConfig.API_BASE + "/bg_image/config/list") + @POST(BuildConfig.API_BASE + "/file/bgImage/list") suspend fun requestChatBgList(@Body userId: Int): ResponseNew> } \ No newline at end of file diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatAiModule.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatAiModule.kt new file mode 100644 index 0000000..276dcbf --- /dev/null +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatAiModule.kt @@ -0,0 +1,14 @@ +package com.remax.visualnovel.entity.response + + +data class ChatAiModule( + val modelId: Long = 0, + val nameLanguage: String, + val desLanguage: String? = null, + val price: Int = 0, + val rules: Int = 0, + val icon: String? = null, + + // others + var isSelected: Boolean = false, +) diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/repository/api/ChatRepository.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/repository/api/ChatRepository.kt index b362189..89d3439 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/repository/api/ChatRepository.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/repository/api/ChatRepository.kt @@ -37,14 +37,14 @@ class ChatRepository @Inject constructor(private val chatService: ChatService) : chatService.requestAiModelList(language) } - suspend fun uploadCustomBgPic(param: ParamBgUpload) = executeHttp { - chatService.uploadCustomBgPic(param) - } - suspend fun getChatBgList(userId: Int) = executeHttp { chatService.requestChatBgList(userId) } + suspend fun uploadCustomBgPic(param: ParamBgUpload) = executeHttp { + chatService.uploadCustomBgPic(param) + } + } \ No newline at end of file diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt index 71d5141..df8cfc1 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt @@ -74,6 +74,38 @@ class ChatActivity : BaseBindingActivity() { override fun initData() { loadSoundDatas(null) + loadAiModuleDatas() + loadChantBgDatas() + } + + private fun loadAiModuleDatas() { + launchAndCollect2({ + mViewModel.loadAiModelList(LanguageUtil.instance().getCurrentLanguageCode()) + }) { + onSuccess = { + val dataList = it?: emptyList() + binding.settingView.setAiModulesItems(dataList) + } + + onComplete = { + + } + } + } + + private fun loadChantBgDatas() { + launchAndCollect2({ + mViewModel.loadChatBgList(1) + }) { + onSuccess = { + val dataList = it?: emptyList() + binding.settingView.setBackgroundItems(dataList) + } + + onComplete = { + + } + } } private fun loadSoundDatas(gender: Int?) { diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatViewModel.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatViewModel.kt index d4c9f7b..ff2a4ce 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatViewModel.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatViewModel.kt @@ -4,7 +4,6 @@ package com.remax.visualnovel.ui.chat import com.remax.visualnovel.app.viewmodel.base.OssViewModel import com.remax.visualnovel.entity.imbean.raw.CustomRawData import com.remax.visualnovel.entity.request.ChatSetting -import com.remax.visualnovel.entity.request.S3TypeDTO import com.remax.visualnovel.entity.response.ChatModel import com.remax.visualnovel.entity.response.ChatSet import com.remax.visualnovel.entity.response.VoiceASR @@ -16,6 +15,7 @@ import com.remax.visualnovel.repository.api.DictRepository import com.remax.visualnovel.repository.api.MessageRepository import com.google.gson.Gson import com.netease.nimlib.sdk.v2.message.V2NIMMessageCreator +import com.remax.visualnovel.entity.request.ParamBgUpload import com.remax.visualnovel.entity.request.ParamSoundList import com.remax.visualnovel.entity.response.BucketBean import com.remax.visualnovel.entity.response.Character @@ -86,6 +86,9 @@ class ChatViewModel @Inject constructor( //------------------------ new ------------------------ suspend fun loadSoundList(param: ParamSoundList) = chatRepository.getSoundList(param) + suspend fun loadAiModelList(language: Int = 1) = chatRepository.getAiModelList(language) + suspend fun loadChatBgList(userId: Int) = chatRepository.getChatBgList(userId) + suspend fun uploadCustomBgPic(param: ParamBgUpload) = chatRepository.uploadCustomBgPic(param) diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/ChatSettingView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/ChatSettingView.kt index c2f9164..a4844d4 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/ChatSettingView.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/ChatSettingView.kt @@ -10,6 +10,7 @@ import android.widget.LinearLayout import androidx.core.graphics.toColorInt import com.remax.visualnovel.R import com.remax.visualnovel.databinding.LayoutChatMenuViewBinding +import com.remax.visualnovel.entity.response.ChatAiModule import com.remax.visualnovel.entity.response.ChatBackgroundBase import com.remax.visualnovel.entity.response.ChatBubble import com.remax.visualnovel.entity.response.ChatHistory @@ -20,7 +21,6 @@ import com.remax.visualnovel.ui.chat.setting.customui.expandableSelector.ExpandA import com.remax.visualnovel.ui.chat.setting.customui.expandableSelector.ExpandBubbleSelectView import com.remax.visualnovel.ui.chat.setting.customui.expandableSelector.ExpandChatModeSelectView import com.remax.visualnovel.ui.chat.setting.customui.expandableSelector.ExpandSoundSelectView -import com.remax.visualnovel.ui.chat.setting.customui.expandableSelector.SelectorItem import com.remax.visualnovel.widget.imageviewer.utils.activity import java.util.Date @@ -90,7 +90,7 @@ class ChatSettingView @JvmOverloads constructor( } fun initAiModelSelectorView() { - val items = listOf( + /*val items = listOf( SelectorItem( name = "Max-0618", description = "Previous-generation large model", @@ -117,17 +117,17 @@ class ChatSettingView @JvmOverloads constructor( color = Color.parseColor("#FBBC05"), isSelected = true // 默认选中 ) - ) + )*/ with(mBinding.aiModelSelector) { setTitleIcon(R.mipmap.setting_ai_model) - setItems(items) + // setItems(items) selectItem(0) setOnEventListener( object : ExpandAiModelSelectView.IEventListener { override fun onItemSelected( position: Int, - item: SelectorItem + item: ChatAiModule ) { // TODO - } @@ -360,5 +360,13 @@ class ChatSettingView @JvmOverloads constructor( mBinding.soundActorSelector.setItems(newItems) } + fun setAiModulesItems(newItems: List) { + mBinding.aiModelSelector.setItems(newItems) + } + + fun setBackgroundItems(newItems: List) { + mBinding.backgroundSelectorView.setItems(newItems) + } + } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/ExpandAiModelSelectView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/ExpandAiModelSelectView.kt index 22986fd..f9c3ed3 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/ExpandAiModelSelectView.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/ExpandAiModelSelectView.kt @@ -4,7 +4,6 @@ import android.animation.Animator import android.animation.ObjectAnimator import android.animation.ValueAnimator import android.content.Context -import android.graphics.drawable.GradientDrawable import android.util.AttributeSet import android.view.LayoutInflater import android.view.View @@ -13,7 +12,10 @@ import android.widget.LinearLayout import android.widget.TextView import com.remax.visualnovel.R import com.remax.visualnovel.databinding.LayoutExpandSelectViewBinding +import com.remax.visualnovel.entity.response.ChatAiModule +import com.remax.visualnovel.extension.glide.load import com.remax.visualnovel.utils.spannablex.utils.dp +import com.remax.visualnovel.widget.roundedimageview.RoundedImageView class ExpandAiModelSelectView @JvmOverloads constructor( @@ -26,10 +28,10 @@ class ExpandAiModelSelectView @JvmOverloads constructor( private var isExpanded = false private var animationDuration = 300 - private var items: List = emptyList() + private var items: List = emptyList() private var mEventListener: IEventListener? = null interface IEventListener { - fun onItemSelected(position: Int, item: SelectorItem) + fun onItemSelected(position: Int, item: ChatAiModule) fun onExpanded(isExpanded: Boolean) } @@ -71,7 +73,7 @@ class ExpandAiModelSelectView @JvmOverloads constructor( mBinding.titleText.text = context.resources.getString(titleRes) } - fun setItems(newItems: List) { + fun setItems(newItems: List) { items = newItems updateItemsView() } @@ -91,21 +93,20 @@ class ExpandAiModelSelectView @JvmOverloads constructor( } } - private fun createItemView(item: SelectorItem, position: Int): View { + private fun createItemView(item: ChatAiModule, position: Int): View { val itemView = LayoutInflater.from(context) .inflate(R.layout.layout_item_ai_model, mBinding.itemsContainer, false) - val colorIndicator = itemView.findViewById(R.id.colorIndicator) + val colorIndicator = itemView.findViewById(R.id.iv_ai_indi) val itemName = itemView.findViewById(R.id.itemName) val itemDesc = itemView.findViewById(R.id.itemDesc) val recommendedTag = itemView.findViewById(R.id.recommendedTag) val selectedDot = itemView.findViewById(R.id.selectedDot) - (colorIndicator.background as? GradientDrawable)?.setColor(item.color) - - itemName.text = item.name - itemDesc.text = item.description - recommendedTag.text = item.pointsInfo + colorIndicator.load(item.icon) + itemName.text = item.nameLanguage + itemDesc.text = item.desLanguage + recommendedTag.text = "" + item.price + item.rules selectedDot.visibility = if (item.isSelected) View.VISIBLE else View.GONE itemView.setOnClickListener { @@ -135,7 +136,7 @@ class ExpandAiModelSelectView @JvmOverloads constructor( updateItemsView() if (position in items.indices) { - mBinding.titleText.text = items[position].name + mBinding.titleText.text = items[position].nameLanguage } } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/SelctorItem.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/SelctorItem.kt deleted file mode 100644 index ba5812d..0000000 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/setting/customui/expandableSelector/SelctorItem.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.remax.visualnovel.ui.chat.setting.customui.expandableSelector - -data class SelectorItem( - val name: String, - val description: String = "", - val pointsInfo: String = "", - val color: Int, - val isRecommended: Boolean = false, - var isSelected: Boolean = false -) \ No newline at end of file diff --git a/VisualNovel/app/src/main/res/layout/layout_item_ai_model.xml b/VisualNovel/app/src/main/res/layout/layout_item_ai_model.xml index 25e77f8..8846a90 100644 --- a/VisualNovel/app/src/main/res/layout/layout_item_ai_model.xml +++ b/VisualNovel/app/src/main/res/layout/layout_item_ai_model.xml @@ -5,12 +5,12 @@ android:layout_height="wrap_content" android:padding="@dimen/dp_12" > - + android:src="@drawable/circle_shape"/>