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.
488 lines
10 KiB
488 lines
10 KiB
package com.gyf.lib.util
|
|
|
|
import androidx.annotation.IntRange
|
|
import com.gyf.lib.uikit.StringForm
|
|
import java.util.*
|
|
|
|
/**
|
|
* 一般信息
|
|
*
|
|
*/
|
|
abstract class PersonInfoVo {
|
|
abstract val name: String
|
|
abstract val headImg: String?
|
|
abstract val desc: String
|
|
}
|
|
|
|
|
|
enum class Duty(val desc: String, val level: Int) {
|
|
|
|
Teacher("老师", 1),
|
|
PamphaBhusal("总部长", 2),
|
|
SecretaryOfTheMinister("秘书部部长", 3),
|
|
PropagandaDepartment("宣传部部长", 3),
|
|
LiaisonMinister("外联部部长", 3),
|
|
SecretaryDepartmentOfficer("秘书部干事", 4),
|
|
PublicityDepartmentOfficer("宣传部干事", 4),
|
|
LiaisonOfficer("外联部干事", 4);
|
|
|
|
|
|
/**
|
|
* 是否是部门部长
|
|
*
|
|
*/
|
|
fun isMinister(): Boolean {
|
|
return minister.contains(this)
|
|
}
|
|
|
|
fun isOfficer(): Boolean {
|
|
return officer.contains(this)
|
|
}
|
|
|
|
}
|
|
|
|
private val minister =
|
|
arrayOf(Duty.SecretaryOfTheMinister, Duty.LiaisonMinister, Duty.PropagandaDepartment)
|
|
private val officer =
|
|
arrayOf(Duty.SecretaryDepartmentOfficer, Duty.PublicityDepartmentOfficer, Duty.LiaisonOfficer)
|
|
|
|
/**
|
|
* 个人信息
|
|
*
|
|
*/
|
|
abstract class OwnInfoVo : PersonInfoVo() {
|
|
abstract val token: Token
|
|
}
|
|
|
|
data class ManagerInfoVo(
|
|
val duty: Duty,
|
|
override val name: String,
|
|
override val headImg: String?,
|
|
override val desc: String
|
|
) : PersonInfoVo()
|
|
|
|
data class UserInfoVo(
|
|
override val name: String,
|
|
override val headImg: String?,
|
|
override val desc: String
|
|
) : PersonInfoVo()
|
|
|
|
|
|
/**
|
|
* 管理员个人信息
|
|
*
|
|
* @property account 管理员账号
|
|
* @property name 姓名
|
|
* @property duty 职务
|
|
* @property headImg 头像
|
|
* @property desc 个人简介
|
|
*/
|
|
data class ManagerVo(
|
|
val account: String,
|
|
val duty: Duty,
|
|
override val token: Token,
|
|
override val name: String,
|
|
override val headImg: String?,
|
|
override val desc: String
|
|
) : OwnInfoVo()
|
|
|
|
|
|
/**
|
|
* 用户个人信息
|
|
*
|
|
* @property studentId 学号
|
|
* @property name 姓名
|
|
* @property headImg 头像
|
|
* @property desc 个人简介
|
|
*/
|
|
data class UserVo(
|
|
val studentId: String,
|
|
val manager: ManagerVo? = null,
|
|
override val token: Token,
|
|
override val name: String,
|
|
override val headImg: String?,
|
|
override val desc: String,
|
|
val associationVo: AssociationVo?,
|
|
val isHead: Boolean?
|
|
) : OwnInfoVo()
|
|
|
|
data class PageDto(val currentPage: Long, val pageSize: Int = 10)
|
|
|
|
data class NotificationDto(
|
|
val receiverId: Int,
|
|
val receiverClient: ClientType,
|
|
val page: PageDto? = null,
|
|
override val clientType: ClientType = receiverClient
|
|
) : ClientBaseVo()
|
|
|
|
data class UserRegVo(val studentId: String, val name: String)
|
|
|
|
/**
|
|
* 客户端类型
|
|
*
|
|
*/
|
|
enum class ClientType {
|
|
//前台
|
|
Foreground,
|
|
|
|
//后台
|
|
Background
|
|
}
|
|
|
|
|
|
data class NotificationVo(val title: String, val content: String, val id: Int, val createTime: Long)
|
|
|
|
|
|
/**
|
|
* 响应自动生成密码
|
|
*
|
|
* @property password
|
|
*/
|
|
data class UserPasswordVo(val password: String)
|
|
|
|
|
|
/**
|
|
* 用户登陆表单
|
|
*
|
|
* @property studentId 学号
|
|
* @property password 密码
|
|
* @property device 设备型号
|
|
*/
|
|
data class UserLoginVo(val studentId: String, val password: String, val device: String)
|
|
|
|
|
|
/**
|
|
*
|
|
* @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
|
|
)
|
|
|
|
/**
|
|
* 图片
|
|
* @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
|
|
)
|
|
|
|
const val MAX_SCORE = 5L
|
|
|
|
data class ActivityVo(
|
|
val activityId: Long, val activityName: String, val association: String,
|
|
@IntRange(from = 1, to = MAX_SCORE) val score: Int, val activityTime: Date, val location: String
|
|
)
|
|
|
|
|
|
data class AllOfficerVo(
|
|
val secretariat: MutableList<ManagerInfoVo>,
|
|
val propaganda: MutableList<ManagerInfoVo>,
|
|
val publicRelationsDepartment: MutableList<ManagerInfoVo>
|
|
)
|
|
|
|
|
|
data class ApplyActVo(
|
|
val activityName: String, val activityTime: String,
|
|
val location: String, val desc: String,
|
|
val size: Int
|
|
)
|
|
|
|
data class LeaveMessageVo(
|
|
val message: String,
|
|
override val clientType: ClientType = ClientType.Foreground
|
|
) : ClientBaseVo()
|
|
|
|
/**
|
|
* 社团级别
|
|
*
|
|
*/
|
|
enum class AssociationLevel {
|
|
A,
|
|
B,
|
|
C,
|
|
D
|
|
}
|
|
|
|
/**
|
|
* 所属院系
|
|
*
|
|
*/
|
|
enum class AssociationFaculty(val desc: String, val range: kotlin.ranges.IntRange) {
|
|
ForeignLanguageDept("外语系", 0..0),
|
|
CivilEngineeringDept("土木工程", 1..10),
|
|
SEM("经理管理学院", 11..20),
|
|
MechanicalEngineeringDept("机械工程", 21..30),
|
|
TransportationDept("交通运输", 31..40),
|
|
ArchitectureAndArts("建筑与艺术", 41..50),
|
|
ElectricalDept("电气", 51..60),
|
|
MaterialsDept("材料", 61..70),
|
|
MessageDept("信息", 71..80),
|
|
MathematicsDept("数理", 81..90),
|
|
GraduateStudent("研究生", 91..99)
|
|
}
|
|
|
|
abstract class BaseAssociationVo {
|
|
abstract val id: Int
|
|
abstract val name: String
|
|
abstract val desc: String
|
|
abstract val logo: String
|
|
abstract val faculty: AssociationFaculty
|
|
abstract val level: AssociationLevel?
|
|
}
|
|
|
|
/**
|
|
* 社团列表
|
|
*
|
|
*/
|
|
class AssociationVo(
|
|
override val id: Int,
|
|
override val name: String,
|
|
override val desc: String,
|
|
override val logo: String,
|
|
override val faculty: AssociationFaculty,
|
|
override val level: AssociationLevel?
|
|
) : BaseAssociationVo()
|
|
|
|
//审核状态
|
|
enum class CheckStatus(val desc: String) {
|
|
WaitFirst("等待初审"),
|
|
AcceptFirst("初审受理"),
|
|
WaitLast("等待复审"),
|
|
AcceptLast("复审受理"),
|
|
Finish("审核完成")
|
|
}
|
|
|
|
data class AssociationMemberVo(
|
|
val association: AssociationVo,
|
|
val isHead: Boolean
|
|
)
|
|
|
|
/**
|
|
* 活动照片
|
|
*
|
|
* @property path
|
|
*/
|
|
data class AssociationActPhotoVo(val path: String)
|
|
|
|
data class AssociationMainVo(
|
|
val associationVo: AssociationVo, val head: UserInfoVo,
|
|
val photos: List<AssociationActPhotoVo>? = null
|
|
)
|
|
|
|
//用户社团
|
|
data class AssociationCheckVo(
|
|
override val id: Int,
|
|
override val name: String,
|
|
override val desc: String,
|
|
override val logo: String,
|
|
override val faculty: AssociationFaculty,
|
|
override val level: AssociationLevel?,
|
|
val checkStatus: CheckStatus,
|
|
val applyTime: Long,
|
|
val firstCause: String,
|
|
val lastCause: String?,
|
|
val fileId: Int
|
|
) : BaseAssociationVo()
|
|
|
|
/**
|
|
* 搜索社团
|
|
*
|
|
* @property name
|
|
* @property desc
|
|
* @property clientType
|
|
*/
|
|
data class SearchAssociationVo(
|
|
val name: String, val desc: String,
|
|
override val clientType: ClientType = ClientType.Foreground
|
|
) : ClientBaseVo()
|
|
|
|
data class ShowAssociationVo(
|
|
val id: Int,
|
|
override val clientType: ClientType = ClientType.Foreground
|
|
) : ClientBaseVo()
|
|
|
|
|
|
data class QueryAssociationMembers(
|
|
val id: Int,
|
|
val name: String? = null,
|
|
override val clientType: ClientType = ClientType.Foreground
|
|
) : ClientBaseVo()
|
|
|
|
data class BBSVo(val studentId: String, val name: String, val createTime: Date, val content: String)
|
|
|
|
|
|
/**
|
|
* 题型
|
|
*
|
|
*/
|
|
enum class ExamType(val type: String) {
|
|
//选择题
|
|
CQ("选择题"),
|
|
|
|
//开放题
|
|
OQ("开放题")
|
|
}
|
|
|
|
abstract class Exam {
|
|
abstract val examType: ExamType
|
|
abstract val question: StringForm
|
|
}
|
|
|
|
|
|
/**
|
|
* 选择题
|
|
*
|
|
* @property examType 题型描述
|
|
* @property answers 答案
|
|
* @property rightAnswer 正确答案
|
|
* @property question 问题
|
|
*/
|
|
data class ChoiceQuestionVo(
|
|
override val examType: ExamType = ExamType.CQ,
|
|
val answers: List<StringForm>,
|
|
val rightAnswer: Int,
|
|
override val question: StringForm
|
|
) : Exam()
|
|
|
|
|
|
data class HistoryActVo(val name: String)
|
|
|
|
|
|
/**
|
|
* 开放题
|
|
*
|
|
* @property examType 题型描述
|
|
* @property question 问题
|
|
*/
|
|
data class OpenQuestionsVo(
|
|
override val examType: ExamType = ExamType.OQ, override val question: StringForm
|
|
) : Exam()
|
|
|
|
|
|
data class LeaveMessageFormatVo(val message: String, val user: UserInfoVo)
|
|
|
|
|
|
data class ManagerLoginVo(val account: String, val password: String, val device: String)
|
|
|
|
data class OngoingActVo(val name: String)
|
|
|
|
/**
|
|
* 活动质量汇报单
|
|
*
|
|
* @property applyName 申请人
|
|
* @property activityName 活动名称
|
|
* @property merit 优点
|
|
* @property defect 缺点
|
|
* @property score 星级评价
|
|
*/
|
|
data class QualityReportVo(
|
|
val applyName: String,
|
|
val activityName: String,
|
|
val merit: String,
|
|
val defect: String,
|
|
@IntRange(from = 1L, to = MAX_SCORE) val score: Int
|
|
)
|
|
|
|
/**
|
|
* 社团注册资料表单
|
|
*
|
|
* @property name
|
|
* @property desc
|
|
* @property fileId
|
|
*/
|
|
data class AssociationRegVo(
|
|
val id: Int?, val name: String, val desc: String, val fileId: Int,
|
|
override val clientType: ClientType = ClientType.Foreground
|
|
) : ClientBaseVo()
|
|
|
|
/**
|
|
* 社团注册审核记录
|
|
*
|
|
*/
|
|
data class DisposeRegInfoVo(
|
|
val name: String,
|
|
val desc: String,
|
|
val logo: String,
|
|
val log: AuditLoggingVo
|
|
)
|
|
|
|
/**
|
|
* 通用审核记录
|
|
*
|
|
* @property id
|
|
* @property user
|
|
* @property applyTime
|
|
* @property manager
|
|
* @property acceptTime
|
|
* @property cause
|
|
* @property result
|
|
* @property auditTime
|
|
* @property nextAudit
|
|
*/
|
|
data class AuditLoggingVo(
|
|
val id: Int, val user: UserInfoVo, val applyTime: Long, val manager: ManagerInfoVo?,
|
|
val acceptTime: Long?, val cause: String?, val result: Boolean?,
|
|
val auditTime: Long?, val nextAudit: AuditLoggingVo?
|
|
)
|
|
|
|
/**
|
|
* 社团注册资料受理
|
|
*
|
|
* @property regId
|
|
* @property clientType
|
|
*/
|
|
data class AcceptRegAssociation(
|
|
val regId: Int,
|
|
val isFirstAccept: Boolean,
|
|
override val clientType: ClientType = ClientType.Background
|
|
) : ClientBaseVo()
|
|
|
|
/**
|
|
* 社团注册资料审核
|
|
*
|
|
* @property regId
|
|
* @property result
|
|
* @property cause
|
|
* @property clientType
|
|
*/
|
|
data class CheckRegVo(
|
|
val regId: Int, val result: Boolean, val cause: String,
|
|
override val clientType: ClientType = ClientType.Background
|
|
) : ClientBaseVo()
|
|
|
|
/**
|
|
* 换名申请表
|
|
*
|
|
* @property studentId 学号
|
|
* @property oldName 社团原名
|
|
* @property newName 社团新名
|
|
* @property reason 申请理由
|
|
*/
|
|
data class RenameVo(
|
|
val studentId: String,
|
|
val oldName: String,
|
|
val newName: String,
|
|
val reason: String
|
|
)
|
|
|
|
abstract class ClientBaseVo {
|
|
val token: Token = TokenManager.getToken()
|
|
abstract val clientType: ClientType
|
|
} |