package com.gyf.csams.module data class ApiResponse(val code: Int = 200, val message: String, val body: T? = null) class Simple { companion object { fun success(message: String): ApiResponse { return ApiResponse(code = 200, message = message, body = null) } fun error(message: String): ApiResponse { 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? = 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, val propaganda: List, val publicRelationsDepartment: List ) /** * 换名申请表 * * @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, val deleteIds:List?=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, 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()