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.

722 lines
16 KiB

package com.gyf.csams.module
data class ApiResponse<T>(val code: Int = 200, val message: String, val body: T? = null)
class Simple {
companion object {
fun success(message: String): ApiResponse<Any> {
return ApiResponse(code = 200, message = message, body = null)
}
fun error(message: String): ApiResponse<Any> {
return ApiResponse(code = 500, message = message, body = null)
}
}
}
/**
* 客户端类型
*
*/
enum class ClientType {
//前台
Foreground,
//后台
Background
}
/**
* 一般信息
*
*/
abstract class PersonInfoVo {
abstract val name: String
abstract val headImg: String?
abstract val desc: String
}
/**
* 职务信息
*
* @property desc
* @property level
*/
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
}
/**
* 管理员个人信息
*
* @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()
/**
* 后台用户信息
*
* @property duty
* @property name
* @property headImg
* @property desc
*/
data class ManagerInfoVo(
val duty: Duty,
override val name: String,
override val headImg: String?,
override val desc: String
) : PersonInfoVo()
/**
* 前台用户信息
*
* @property name
* @property headImg
* @property desc
*/
data class UserInfoVo(
override val name: String, override val headImg: String?,
override val desc: String
) :
PersonInfoVo()
data class InfoUpdateVo(val name:String?=null, val desc:String?=null,
override val token: Token,
override val clientType: ClientType
):ClientBaseVo()
/**
* 用户注册信息
*
* @property studentId
* @property name
*/
data class UserRegVo(val studentId: String, val name: String)
/**
* TODO
*
*/
sealed class BaseLoginVo {
abstract val password: String
abstract val device: String
abstract val clientType: ClientType
}
open class Token(open val token:String,open val createTime:Long,open val id:Int)
abstract class ClientBaseVo {
abstract val token: Token
abstract val clientType: ClientType
}
data class UserLoginVo(
val studentId: String,
override val password: String, override val device: String,
override val clientType: ClientType = ClientType.Foreground
) : BaseLoginVo()
data class ManagerLoginVo(
val account: String,
override val password: String, override val device: String
) : BaseLoginVo() {
override val clientType: ClientType = ClientType.Background
}
data class LeaveMessageVo(
val message: String, override val token: Token,
override val clientType: ClientType = ClientType.Foreground
) : ClientBaseVo()
//data class OnlyToken(override val token: Token, override val clientType: ClientType) : ClientBaseVo()
data class LeaveMessageDto(val message: String, val user: UserInfoVo)
data class ImageFileDto(val filepath: String, val md5: String, val createTime: Long, val url: String)
data class InitManagerDto(val account: String, val originPassword: String, val duty: Duty)
data class PageDto(val currentPage: Long, val pageSize: Int = 10)
data class NotificationDto(
val receiverId: Int, val receiverClient: ClientType, override val token: Token,
override val clientType: ClientType = receiverClient
) : ClientBaseVo()
data class NotificationVo(val title: String, val content: String, val id: Int, val createTime: Long)
data class SearchAssociationVo(
val name: String, val desc: String,
override val clientType: ClientType = ClientType.Foreground, override val token: Token
) : ClientBaseVo()
data class ShowAssociationVo(
val id: Int,
override val token: Token,
override val clientType: ClientType = ClientType.Foreground
) : ClientBaseVo()
data class QueryAssociationMembers(
val id: Int,
val name: String? = null,
override val token: Token,
override val clientType: ClientType = ClientType.Foreground
) : ClientBaseVo()
/**
* 交流区
*
* @property user
* @property createTime
* @property content
*/
data class BBSVo(val user: UserInfoVo, val createTime: Long, val content: String)
/**
* 发送评论
*
* @property content
* @property token
* @property clientType
*/
data class SendBBSVo(val content:String,
val activityId: Int,
override val token: Token,
override val clientType: ClientType=ClientType.Foreground
):ClientBaseVo()
/**
* 搜索评论
*
* @property activityId
*/
data class SearchCommentVo(val activityId: Int)
data class LeaveMessageFormatVo(val message: String, val user: UserInfoVo)
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,
val score: Int
)
/**
* 社团级别
*
*/
enum class AssociationLevel {
A,
B,
C,
D
}
/**
* 所属院系
*
*/
enum class AssociationFaculty(val desc: String, val range: 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)
}
data class AssociationVo (
val associationId: Int,
val name: String,
val desc: String,
val logo: String,
val faculty: AssociationFaculty,
val level: AssociationLevel?
)
//审核状态
enum class CheckStatus(val desc: String) {
WaitFirst("等待初审"),
AcceptFirst("初审受理"),
WaitLast("等待复审"),
AcceptLast("复审受理"),
Finish("审核完成")
}
/**
* 活动照片
*
* @property path
*/
data class AssociationActPhotoVo(val path: String)
data class AssociationMainVo(
val associationVo: AssociationVo, val head: UserInfoVo,
val photos: List<AssociationActPhotoVo>? = null
)
/**
* 通用审核进度
*
* @property checkStatus
* @property applyTime
* @property firstCause
* @property lastCause
* @property result
*/
data class AuditCheckVo(
val checkStatus: CheckStatus,
val applyTime: Long,
val firstCause: String,
val lastCause: String?,
val result:Boolean
)
//前台社团注册资料
data class AssociationCheckVo(
val associationVo: AssociationVo,
val fileId: Int,
val auditCheckVo: AuditCheckVo
)
/**
* 社团注册资料表单
*
* @property name
* @property desc
* @property fileId
*/
data class AssociationRegVo(
val associationId: Int?,
val name: String,
val desc: String,
val fileId: Int,
override val clientType: ClientType = ClientType.Foreground,
override val token: Token
) : ClientBaseVo()
abstract class AuditVo {
abstract val audit: AuditLoggingVo
}
/**
* 社团注册审核记录
*
*
*/
data class AuditAssociationVo(
val name: String,
val desc: String,
val logo: String,
override val audit: AuditLoggingVo
) : AuditVo()
/**
* 通用审核记录
*
* @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 auditId
* @property clientType
*/
data class AcceptVo(
val auditId: Int,
override val clientType: ClientType = ClientType.Background,
override val token: Token
) : ClientBaseVo()
/**
*资料审核
*
* @property auditId
* @property result
* @property cause
* @property clientType
*/
data class CheckVo(
val auditId: Int, val result: Boolean, val cause: String,
override val clientType: ClientType = ClientType.Background, override val token: Token
) : ClientBaseVo()
data class ActivityVo(
val activityId: Int?=null,
val activityName: String,
val activityTime: Long,
val activityAddress: String,
val activityDesc: String,
val activitySize: Int
)
/**
* 前台活动申请书
*
* @property clientType
*/
data class ActivityApplyVo(
val associationId: Int,
val activityVo: ActivityVo,
override val token: Token,
override val clientType: ClientType = ClientType.Foreground
) : ClientBaseVo()
/**
* 后台活动申请书
*
*/
data class AuditActVo(
val activityVo: ActivityVo,
override val audit: AuditLoggingVo
) : AuditVo()
/**
* 活动申请书审核进度
*
* @property activityVo
* @property auditCheckVo
*/
data class ActivityCheckVo(
val activityVo: ActivityVo,
val auditCheckVo: AuditCheckVo
)
/**
* 活动详情
*/
data class ActivityDetailVo(
val associationVo: AssociationVo,
val activityVo: ActivityVo
)
/**
* 活动条件搜索
*
* @property associationId
* @property token
* @property clientType
*/
data class SearchActivityVo(val associationId: Int, override val token: Token,
override val clientType: ClientType=ClientType.Foreground):ClientBaseVo()
/**
* 活动id搜索
*
* @property activityId
* @property token
* @property clientType
*/
data class ShowActivityVo(val activityId:Int, override val token: Token,
override val clientType: ClientType=ClientType.Foreground):ClientBaseVo()
/**
* 活动照片
*
* @property name
* @property url
*/
data class ActivityPhotoVo(
val name: String,
val url: String
)
/**
* 搜索活动照片
*
* @property activityId
*/
data class SearchActivityPhotoVo(val activityId: Int)
const val MAX_SCORE = 5L
/**
* 活动管理
*
* @property association
* @property score
*/
data class ManagerActVo(
val association: AssociationVo,
val score: Int,
val activityVo: ActivityVo
)
data class AllOfficerVo(
val secretariat: List<ManagerInfoVo>,
val propaganda: List<ManagerInfoVo>,
val publicRelationsDepartment: List<ManagerInfoVo>
)
/**
* 换名申请表
*
* @property newName 社团新名
* @property cause 申请理由
*/
data class RenameVo(
val renameId:Int?=null,
val newName: String,
val cause: String
)
/**
* 前台申请换名
*
* @property rename
*/
data class RenameApplyVo(
val associationId: Int,
val rename:RenameVo,
override val token: Token,
override val clientType: ClientType = ClientType.Foreground
):ClientBaseVo()
/**
* 社团命名审核记录
*
* @property renameVo
* @property audit
*/
data class AuditRenameVo(
val associationVo: AssociationVo,
val renameVo: RenameVo,
override val audit: AuditLoggingVo
):AuditVo()
/**
* 重命名审核进度
*
* @property renameVo
* @property auditCheckVo
*/
data class RenameCheckVo(
val renameVo: RenameVo,
val auditCheckVo: AuditCheckVo
)
/**
* 主页轮播
*
* @property url
*/
data class MainActivityPhotoVo(val url:String, val activityVo: ActivityVo,val associationVo: AssociationVo)
/**
* 更新社团
*
* @property associationVo
* @property token
* @property clientType
*/
data class UpdateAssociationVo(val associationVo: AssociationVo,
override val token: Token,
override val clientType: ClientType
):ClientBaseVo()
data class ManagerDutyVo(val manager: ManagerInfoVo,val people:Int)
data class ManagerDutySumVo(val secretariat:ManagerDutyVo,
val propaganda:ManagerDutyVo,
val publicRelationsDepartment:ManagerDutyVo)
data class ExamVo(val questionId:Int?=null,val question:String,val optionsA:String,val optionsB:String,val optionsC:String,val optionsD:String,val rightOption:Int)
/**
* 更新题库
*
* @property questions
* @property token
* @property clientType
*/
data class AddExamVo(val questions:List<ExamVo>,
val deleteIds:List<Int>?=null,
override val token: Token,
override val clientType: ClientType=ClientType.Foreground,
val associationId:Int):ClientBaseVo()
data class SearchExamVo(val associationId:Int, override val token: Token,
override val clientType: ClientType=ClientType.Foreground):ClientBaseVo()
data class ApplyAnswerVo(val examVo: ExamVo,val answer:Int)
/**
* 答卷
*
* @property answers
* @property token
* @property clientType
*/
data class AddAnswerVo(val answers:List<ApplyAnswerVo>,
override val token: Token,
val associationId: Int,
override val clientType: ClientType=ClientType.Foreground):ClientBaseVo()
data class ShowAnswerVo(val joinId:Int, override val token: Token,
override val clientType: ClientType=ClientType.Foreground):ClientBaseVo()
/**
* 申请入团检查
*/
data class ApplyAssociationResultVo(val result:Boolean?=null,val hasPaper:Boolean?=null,val associationVo: AssociationVo?=null)
/**
* 申请入团记录
*
*/
data class JoinAssociationVo(val id:Int,val user: UserInfoVo,
val associationVo: AssociationVo,
val hasPaper: Boolean,
val result: Boolean?=null,
val applyTime: Long,
val auditTime: Long?=null)
/**
* 审核结果
*
* @property joinId
* @property result
*/
data class AuditJoinVo(val joinId:Int, val result:Boolean,
override val token: Token,
override val clientType: ClientType=ClientType.Foreground
):ClientBaseVo()
/**
* 组成申请社团试卷的题库最小题目数量
*/
const val QUESTION_MIN_SIZE=5
enum class TendencyType(val desc:String){
Like("点赞"),
Collect("收藏")
}
data class TendencyVo(val activityId: Int, val type:TendencyType,
override val token: Token,
override val clientType: ClientType=ClientType.Foreground
):ClientBaseVo()
data class CheckTendencyVo(val activityId: Int, override val token: Token,
override val clientType: ClientType=ClientType.Foreground):ClientBaseVo()
data class CheckTendencyResVo(val hasLike:Boolean, val hasCollect:Boolean)
data class FindTendencyVo(val type:TendencyType, override val token: Token,
override val clientType: ClientType=ClientType.Foreground):ClientBaseVo()