@startuml
class 用户 {
    {static} +UUID _id
    +String username
    +Array token
    +String avatar
    +String sign
    {static} +String code
    {static} +Integer gender
    +Array socialInfo
    +Array followers
    +Array collect
    +Array settingInfo
    +UUID AuthID
    --登录注册登出,校验token相关--
    +void loginByWechat()
    +void addUserByPhone()
    +void postLoginByPhone()
    +void updateUserInfo()
    +void userLogout()
    +void checkToken()
    --关注/取消关注--
    +void checkFollowers()
}
class 收藏夹 {
    +UUID _id
    +String name
    +Array collectData
}
class 用户申请认证表{
    +UUID _id
    +UUID userID
    +String state
    +JSON content
    --申请和修改认证--
    +void addCertificationApplyOrder()
    +void updateCertificationApplyOrder()
}
class 用户验证码表{
    +UUID _id
    +String mobile
    +String type
    +String code
    +String state
}
class 题目专区 {
    +UUID _id
    +String name
    +String iconPath
    +void addArea()
    +void updateArea()
    +void deleteArea()
}
class 题目分类标签{
    +UUID _id
    +UUID areaID
    +String name
    +void addTag()
    +void deleteTag()
    +void updateTag()
}
class 题目 {
    +UUID _id
    +String title
    +UUID publishUserID
    +UUID areaID
    +String content
    +Array questionExplanation
    +Array tagID
    +String state
    +JSON examineInfo
    +void addQuestion()
    +void deleteQuestion()
    +void updateQuestion()
    --推荐机制获取题目信息--
    +Array getQuestions()
}
class 题解{
    +UUID _id
    +String content
    +UUID questionID
    +UUID userID
    +Array userAgreed
    +Array userDisagreed
    +void addQuestionExplanation()
    +void deleteQuestionExplanation()
    +void updateQuestionExplanation()
    --收藏题解--
    +void addQuestionExplanation()
}


class 文章{
    +UUID _id
    +UUID userID
    +UUID tagID
    +String title
    +String content
    +Number like
    +void addArticle()
    +void deleteArticle()
    +void likeArticle()
}

class 角色{
    +UUID _id
    +String role_id
    +String role_name
    +Array permission
    +String comment
}
class 权限{
    +UUID _id
    +String permission_id
    +String permission_name
    +String comment
}


class 服务号推送日志{
    +UUID _id
    +String type
    +String content
}

题目专区 --> "many" 题目分类标签::areaID
用户 --> "many" 题目
用户 --> "many" 用户申请认证表::userID
用户 --> "many" 文章::userID
用户 --> "many" 角色
用户 --> "many" 用户验证码表
用户::collect --> "many" 收藏夹::_id
用户 --> "many" 权限
文章::tagID --> "many" 题目分类标签
题目 --> "many" 题目分类标签
题目 <-- 题目专区
题目 --> "many" 题解::questionID
note left of 用户::_id
由Uni-id生成的唯一主键
end note
note right of 用户::socialInfo
用户和题解/文章等进行社交的信息，是一个对象数组，通常会记录了社交的类别：文章/题解
社交的操作：点赞等
社交的其他信息对象Info，比如题解的_id 文章的_id
end note
note left of 用户::code
微信登录返回的code作为记录
end note
note left of 用户::gender
和微信的性别机制一样，0未知， 1男，2女
end note
note right of 题目::state
onlist | pass | reject
end note
note right of 题目::examineInfo
审核信息(比如拒绝原因)
end note
note right of 权限::permission_id
三种权限 ANY | Push Questions | Normal
end note
@enduml