You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
325 lines
8.3 KiB
325 lines
8.3 KiB
package com.gyf.csams.activity.model
|
|
|
|
import androidx.lifecycle.LiveData
|
|
import androidx.lifecycle.MutableLiveData
|
|
import androidx.lifecycle.ViewModel
|
|
import androidx.lifecycle.viewModelScope
|
|
import com.gyf.csams.NOT_IMPL_TIP
|
|
import com.gyf.csams.uikit.AbstractComment
|
|
import com.gyf.csams.uikit.ActivityDetailMenu
|
|
import com.gyf.csams.uikit.TopMenuInterface
|
|
import com.gyf.lib.ScrollList
|
|
import com.gyf.lib.uikit.ValidStringForm
|
|
import com.gyf.lib.util.randomChinese
|
|
import com.gyf.lib.util.randomDateTime
|
|
import com.gyf.lib.util.randomNum
|
|
import com.orhanobut.logger.Logger
|
|
import kotlinx.coroutines.launch
|
|
import java.util.*
|
|
|
|
/**
|
|
* 活动详情菜单通用状态
|
|
*
|
|
*/
|
|
class ActivityDetailViewModel : ViewModel(), TopMenuInterface<ActivityDetailMenu> {
|
|
override val _currentMenu: MutableLiveData<ActivityDetailMenu> = MutableLiveData()
|
|
override val currentMenu: LiveData<ActivityDetailMenu> = _currentMenu
|
|
}
|
|
|
|
/**
|
|
* TODO
|
|
*
|
|
* @property associationName 社团名字
|
|
* @property activityName 活动名
|
|
* @property activityTime 活动时间
|
|
* @property activityLocation 活动地点
|
|
* @property activityDesc 活动介绍
|
|
*/
|
|
data class ActivityDetailVo(
|
|
val associationName: String, val activityName: String,
|
|
val activityTime: Date, val activityLocation: String,
|
|
val activityDesc: String
|
|
)
|
|
|
|
|
|
/**
|
|
* 活动信息
|
|
*
|
|
*/
|
|
class ActivityInfoViewModel : ViewModel() {
|
|
private val _activityDetailVo = MutableLiveData<ActivityDetailVo>()
|
|
val activityDetailVo: LiveData<ActivityDetailVo> = _activityDetailVo
|
|
|
|
val like = "点赞"
|
|
val collect = "收藏"
|
|
|
|
init {
|
|
loadInfo()
|
|
}
|
|
|
|
/**
|
|
* TODO 点赞
|
|
*
|
|
* @param callback
|
|
*/
|
|
fun like(callback: (message: String) -> Unit) {
|
|
callback(NOT_IMPL_TIP)
|
|
}
|
|
|
|
/**
|
|
* TODO 收藏
|
|
*
|
|
* @param callback
|
|
*/
|
|
fun collect(callback: (message: String) -> Unit) {
|
|
callback(NOT_IMPL_TIP)
|
|
}
|
|
|
|
private fun loadInfo() {
|
|
viewModelScope.launch {
|
|
_activityDetailVo.value = ActivityDetailVo(
|
|
activityName = randomChinese(4),
|
|
associationName = randomChinese(4),
|
|
activityTime = randomDateTime(),
|
|
activityLocation = randomChinese(3),
|
|
activityDesc = randomChinese(500)
|
|
)
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 图片
|
|
* @property name 文件名
|
|
* @property size 文件大小
|
|
* @property url 文件路径
|
|
* @property md5 文件hash
|
|
* @property createTime 文件创建时间
|
|
* @property studentId 文件上传人
|
|
*/
|
|
data class ActivityPhotoVo(
|
|
val name: String,
|
|
val size: Long,
|
|
val url: String,
|
|
val md5: String,
|
|
val createTime: Date,
|
|
val studentId: String
|
|
)
|
|
|
|
/**
|
|
* 活动相册数据状态管理
|
|
*
|
|
*/
|
|
class ActivityPhotoViewModel : ScrollList<ActivityPhotoVo>() {
|
|
override val initSize: Int = 10
|
|
|
|
init {
|
|
load()
|
|
}
|
|
|
|
fun upload(callback: (message: String) -> Unit) {
|
|
callback(NOT_IMPL_TIP)
|
|
}
|
|
|
|
/**
|
|
* TODO 加载相册
|
|
*
|
|
*/
|
|
override fun load() {
|
|
viewModelScope.launch {
|
|
_data.value?.apply {
|
|
repeat(initSize) {
|
|
add(
|
|
ActivityPhotoVo(
|
|
name = randomChinese(3),
|
|
size = randomNum(3).toLong(),
|
|
url = "",
|
|
md5 = "",
|
|
createTime = randomDateTime(),
|
|
studentId = ""
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* TODO 加载更多相册
|
|
*
|
|
* @param callback
|
|
*/
|
|
override fun loadMore(callback: (message: String) -> Unit) {
|
|
Logger.i("加载更多")
|
|
viewModelScope.launch {
|
|
_data.value?.apply {
|
|
val list = mutableListOf<ActivityPhotoVo>()
|
|
list.addAll(this)
|
|
repeat(initSize) {
|
|
add(
|
|
ActivityPhotoVo(
|
|
name = randomChinese(3),
|
|
size = randomNum(3).toLong(),
|
|
url = "",
|
|
md5 = "",
|
|
createTime = randomDateTime(),
|
|
studentId = ""
|
|
)
|
|
)
|
|
}
|
|
_data.postValue(list)
|
|
callback("成功加载更多相册")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
data class ActivityMemberVo(val studentId: String, val name: String)
|
|
|
|
data class ActivityMembersVo(
|
|
val organizer: ActivityMemberVo,
|
|
val participant: MutableList<ActivityMemberVo>?
|
|
)
|
|
|
|
class ActivityMemberViewModel : ScrollList<ActivityMemberVo>() {
|
|
override val initSize: Int = 10
|
|
|
|
private val _allMember = MutableLiveData<ActivityMembersVo>()
|
|
val allMember: LiveData<ActivityMembersVo> = _allMember
|
|
|
|
init {
|
|
load()
|
|
}
|
|
|
|
/**
|
|
* TODO 加载活动成员
|
|
*
|
|
*/
|
|
override fun load() {
|
|
viewModelScope.launch {
|
|
_data.value?.apply {
|
|
repeat(initSize) {
|
|
add(ActivityMemberVo(studentId = randomNum(), name = randomChinese(3)))
|
|
}
|
|
_allMember.value = ActivityMembersVo(
|
|
organizer = ActivityMemberVo(
|
|
studentId = randomNum(),
|
|
name = randomChinese(3)
|
|
), participant = _data.value
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* TODO 加载更多活动成员
|
|
*
|
|
* @param callback
|
|
*/
|
|
override fun loadMore(callback: (message: String) -> Unit) {
|
|
viewModelScope.launch {
|
|
_data.value?.apply {
|
|
val list = mutableListOf<ActivityMemberVo>()
|
|
list.addAll(this)
|
|
repeat(initSize) {
|
|
add(ActivityMemberVo(studentId = randomNum(), name = randomChinese(3)))
|
|
}
|
|
_allMember.value?.apply {
|
|
_data.postValue(list)
|
|
_allMember.postValue(
|
|
ActivityMembersVo(
|
|
organizer = organizer,
|
|
participant = list
|
|
)
|
|
)
|
|
callback("成功加载更多活动参与者")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
data class BBSVo(val studentId: String, val name: String, val createTime: Date, val content: String)
|
|
|
|
class T
|
|
|
|
|
|
class BBSCommentModel : AbstractComment() {
|
|
override val newContent = ValidStringForm(formDesc = "评论内容", textLength = 80)
|
|
|
|
/**
|
|
* TODO 发送评论
|
|
*
|
|
* @param callback
|
|
*/
|
|
override fun send(callback: (message: String) -> Unit) {
|
|
callback(NOT_IMPL_TIP)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 交流区数据状态管理
|
|
*
|
|
*/
|
|
class BBSViewModel : ScrollList<BBSVo>() {
|
|
override val initSize: Int = 10
|
|
|
|
val title = "发送评论"
|
|
|
|
|
|
init {
|
|
load()
|
|
}
|
|
|
|
/**
|
|
* TODO 加载评论
|
|
*
|
|
*/
|
|
override fun load() {
|
|
viewModelScope.launch {
|
|
_data.value?.apply {
|
|
repeat(initSize) {
|
|
add(
|
|
BBSVo(
|
|
studentId = randomNum(),
|
|
createTime = randomDateTime(),
|
|
content = randomChinese(50),
|
|
name = randomChinese(3)
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* TODO 加载更多评论
|
|
*
|
|
* @param callback
|
|
*/
|
|
override fun loadMore(callback: (message: String) -> Unit) {
|
|
viewModelScope.launch {
|
|
_data.value?.apply {
|
|
repeat(initSize) {
|
|
val list = mutableListOf<BBSVo>()
|
|
list.addAll(this)
|
|
repeat(initSize) {
|
|
add(
|
|
BBSVo(
|
|
studentId = randomNum(),
|
|
name = randomChinese(3),
|
|
createTime = randomDateTime(),
|
|
content = randomChinese(50)
|
|
)
|
|
)
|
|
}
|
|
_data.postValue(list)
|
|
callback("成功加载更多评论")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |