Files
ArmedPolice/app/api/account.go
2021-11-04 16:44:42 +08:00

94 lines
2.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package api
import (
"ArmedPolice/app/controller/account"
"ArmedPolice/app/service"
"github.com/gin-gonic/gin"
)
type Account struct{}
/**
* @apiDefine Account 账号管理
*/
/**
* @api {post} /api/v1/account/login 账号登录
* @apiVersion 1.0.0
* @apiName AccountLogin
* @apiGroup Account
*
* @apiHeader {string} Content-Type=application/json 传输方式
*
* @apiParam {Object} captcha 验证码信息
* @apiParam {String} captcha.key="key" 验证key
* @apiParam {String} captcha.value="value" 验证value
* @apiParam {String} account="admin" 登录账号
* @apiParam {String} password="123456" 登录密码
*
* @apiSuccess (200) {Object} data 具体信息
* @apiSuccess (200) {String} data.token token信息接口需要携带
* @apiSuccess (200) {Number} data.effect_time token有效时长
* @apiSuccess (200) {Number} code 成功响应状态码!
* @apiSuccess (200) {String} msg 成功提示
*
* @apiSuccessExample {Json} Success response:
* HTTPS 200 OK
* {
* "code": 200
* "msg": "ok"
* "data": {
* "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOiIxNjM4NjA0NDYwIiwiaWF0IjoiMTYzNjAxMjQ2MCIsInVpZCI6IjIwOTU2MTg2ODk5ODEyMjI5MTIifQ.Q4_peBb9aeGaZAfUFMMzn21cbfhY6_DEocI9xlj9v9g",
* "effect_time": 2592000
* }
* }
*/
func (a *Account) Login(c *gin.Context) {
form := &struct {
Account string `json:"account" form:"account" binding:"required"`
Password string `json:"password" form:"password" binding:"required"`
Captcha struct {
Key string `json:"key" form:"key" binding:"required"`
Value string `json:"value" form:"value" binding:"required"`
} `json:"captcha" form:"captcha" binding:"required"`
}{}
if err := bind(form)(c); err != nil {
APIFailure(err.(error))(c)
return
}
data, err := account.NewInstance()(nil).Login(form.Account, form.Password, form.Captcha.Key,
form.Captcha.Value, c.ClientIP())
APIResponse(err, data)(c)
}
/**
* @api {post} /api/v1/account/logout 账号退出
* @apiVersion 1.0.0
* @apiName AccountLogout
* @apiGroup Account
*
* @apiHeader {string} x-token token
*
* @apiSuccess (200) {Number} code 成功响应状态码!
* @apiSuccess (200) {String} msg 成功提示
*
* @apiSuccessExample {json} Success response:
* HTTPS 200 OK
* {
* "code": 200
* "msg": "ok"
* "data": null
* }
*/
func (a *Account) Logout(c *gin.Context) {
handle := getSession()(c)
session := new(service.Session)
if handle != nil {
session = handle.(*service.Session)
}
err := account.NewInstance()(session).Logout()
APIResponse(err)(c)
}