feat: site info add term of service and private policy

This commit is contained in:
LinkinStar 2022-11-14 17:04:25 +08:00
parent f6fa850aa0
commit d02f64b7a9
8 changed files with 1021 additions and 259 deletions

View File

@ -503,6 +503,77 @@ const docTemplate = `{
}
}
},
"/answer/admin/api/siteinfo/branding": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "get site interface",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "get site interface",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/schema.SiteBrandingResp"
}
}
}
]
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "update site info branding",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "update site info branding",
"parameters": [
{
"description": "branding info",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/schema.SiteBrandingReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.RespBody"
}
}
}
}
},
"/answer/admin/api/siteinfo/general": {
"get": {
"security": [
@ -645,6 +716,148 @@ const docTemplate = `{
}
}
},
"/answer/admin/api/siteinfo/legal": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "Set the legal information for the site",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Set the legal information for the site",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/schema.SiteLegalResp"
}
}
}
]
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "update site legal info",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "update site legal info",
"parameters": [
{
"description": "write info",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/schema.SiteLegalReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.RespBody"
}
}
}
}
},
"/answer/admin/api/siteinfo/write": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "get site interface",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "get site interface",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/schema.SiteWriteResp"
}
}
}
]
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "update site write info",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "update site write info",
"parameters": [
{
"description": "write info",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/schema.SiteWriteReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.RespBody"
}
}
}
}
},
"/answer/admin/api/theme/options": {
"get": {
"security": [
@ -1323,6 +1536,64 @@ const docTemplate = `{
}
}
},
"/answer/api/v1/file": {
"post": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "upload file",
"consumes": [
"multipart/form-data"
],
"tags": [
"Upload"
],
"summary": "upload file",
"parameters": [
{
"enum": [
"post",
"avatar",
"branding"
],
"type": "string",
"description": "identify the source of the file upload",
"name": "source",
"in": "formData",
"required": true
},
{
"type": "file",
"description": "file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"type": "string"
}
}
}
]
}
}
}
}
},
"/answer/api/v1/follow": {
"post": {
"security": [
@ -3106,52 +3377,6 @@ const docTemplate = `{
}
}
},
"/answer/api/v1/user/avatar/upload": {
"post": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "UserUpdateInfo",
"consumes": [
"multipart/form-data"
],
"tags": [
"User"
],
"summary": "UserUpdateInfo",
"parameters": [
{
"type": "file",
"description": "file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"type": "string"
}
}
}
]
}
}
}
}
},
"/answer/api/v1/user/email": {
"put": {
"security": [
@ -3671,52 +3896,6 @@ const docTemplate = `{
}
}
},
"/answer/api/v1/user/post/file": {
"post": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "upload user post file",
"consumes": [
"multipart/form-data"
],
"tags": [
"User"
],
"summary": "upload user post file",
"parameters": [
{
"type": "file",
"description": "file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"type": "string"
}
}
}
]
}
}
}
}
},
"/answer/api/v1/user/register/email": {
"post": {
"description": "UserRegisterByEmail",
@ -5571,6 +5750,56 @@ const docTemplate = `{
}
}
},
"schema.SiteBrandingReq": {
"type": "object",
"required": [
"logo",
"square_icon"
],
"properties": {
"favicon": {
"type": "string",
"maxLength": 512
},
"logo": {
"type": "string",
"maxLength": 512
},
"mobile_logo": {
"type": "string",
"maxLength": 512
},
"square_icon": {
"type": "string",
"maxLength": 512
}
}
},
"schema.SiteBrandingResp": {
"type": "object",
"required": [
"logo",
"square_icon"
],
"properties": {
"favicon": {
"type": "string",
"maxLength": 512
},
"logo": {
"type": "string",
"maxLength": 512
},
"mobile_logo": {
"type": "string",
"maxLength": 512
},
"square_icon": {
"type": "string",
"maxLength": 512
}
}
},
"schema.SiteGeneralReq": {
"type": "object",
"required": [
@ -5647,10 +5876,6 @@ const docTemplate = `{
"type": "string",
"maxLength": 128
},
"logo": {
"type": "string",
"maxLength": 256
},
"theme": {
"type": "string",
"maxLength": 128
@ -5673,10 +5898,6 @@ const docTemplate = `{
"type": "string",
"maxLength": 128
},
"logo": {
"type": "string",
"maxLength": 256
},
"theme": {
"type": "string",
"maxLength": 128
@ -5687,6 +5908,50 @@ const docTemplate = `{
}
}
},
"schema.SiteLegalReq": {
"type": "object",
"properties": {
"privacy_policy": {
"type": "string"
},
"terms_of_service": {
"type": "string"
}
}
},
"schema.SiteLegalResp": {
"type": "object",
"properties": {
"privacy_policy": {
"type": "string"
},
"terms_of_service": {
"type": "string"
}
}
},
"schema.SiteWriteReq": {
"type": "object",
"required": [
"required_tag"
],
"properties": {
"required_tag": {
"type": "boolean"
}
}
},
"schema.SiteWriteResp": {
"type": "object",
"required": [
"required_tag"
],
"properties": {
"required_tag": {
"type": "boolean"
}
}
},
"schema.TagItem": {
"type": "object",
"properties": {

View File

@ -491,6 +491,77 @@
}
}
},
"/answer/admin/api/siteinfo/branding": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "get site interface",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "get site interface",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/schema.SiteBrandingResp"
}
}
}
]
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "update site info branding",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "update site info branding",
"parameters": [
{
"description": "branding info",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/schema.SiteBrandingReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.RespBody"
}
}
}
}
},
"/answer/admin/api/siteinfo/general": {
"get": {
"security": [
@ -633,6 +704,148 @@
}
}
},
"/answer/admin/api/siteinfo/legal": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "Set the legal information for the site",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Set the legal information for the site",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/schema.SiteLegalResp"
}
}
}
]
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "update site legal info",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "update site legal info",
"parameters": [
{
"description": "write info",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/schema.SiteLegalReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.RespBody"
}
}
}
}
},
"/answer/admin/api/siteinfo/write": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "get site interface",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "get site interface",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/schema.SiteWriteResp"
}
}
}
]
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "update site write info",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "update site write info",
"parameters": [
{
"description": "write info",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/schema.SiteWriteReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.RespBody"
}
}
}
}
},
"/answer/admin/api/theme/options": {
"get": {
"security": [
@ -1311,6 +1524,64 @@
}
}
},
"/answer/api/v1/file": {
"post": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "upload file",
"consumes": [
"multipart/form-data"
],
"tags": [
"Upload"
],
"summary": "upload file",
"parameters": [
{
"enum": [
"post",
"avatar",
"branding"
],
"type": "string",
"description": "identify the source of the file upload",
"name": "source",
"in": "formData",
"required": true
},
{
"type": "file",
"description": "file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"type": "string"
}
}
}
]
}
}
}
}
},
"/answer/api/v1/follow": {
"post": {
"security": [
@ -3094,52 +3365,6 @@
}
}
},
"/answer/api/v1/user/avatar/upload": {
"post": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "UserUpdateInfo",
"consumes": [
"multipart/form-data"
],
"tags": [
"User"
],
"summary": "UserUpdateInfo",
"parameters": [
{
"type": "file",
"description": "file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"type": "string"
}
}
}
]
}
}
}
}
},
"/answer/api/v1/user/email": {
"put": {
"security": [
@ -3659,52 +3884,6 @@
}
}
},
"/answer/api/v1/user/post/file": {
"post": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "upload user post file",
"consumes": [
"multipart/form-data"
],
"tags": [
"User"
],
"summary": "upload user post file",
"parameters": [
{
"type": "file",
"description": "file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.RespBody"
},
{
"type": "object",
"properties": {
"data": {
"type": "string"
}
}
}
]
}
}
}
}
},
"/answer/api/v1/user/register/email": {
"post": {
"description": "UserRegisterByEmail",
@ -5559,6 +5738,56 @@
}
}
},
"schema.SiteBrandingReq": {
"type": "object",
"required": [
"logo",
"square_icon"
],
"properties": {
"favicon": {
"type": "string",
"maxLength": 512
},
"logo": {
"type": "string",
"maxLength": 512
},
"mobile_logo": {
"type": "string",
"maxLength": 512
},
"square_icon": {
"type": "string",
"maxLength": 512
}
}
},
"schema.SiteBrandingResp": {
"type": "object",
"required": [
"logo",
"square_icon"
],
"properties": {
"favicon": {
"type": "string",
"maxLength": 512
},
"logo": {
"type": "string",
"maxLength": 512
},
"mobile_logo": {
"type": "string",
"maxLength": 512
},
"square_icon": {
"type": "string",
"maxLength": 512
}
}
},
"schema.SiteGeneralReq": {
"type": "object",
"required": [
@ -5635,10 +5864,6 @@
"type": "string",
"maxLength": 128
},
"logo": {
"type": "string",
"maxLength": 256
},
"theme": {
"type": "string",
"maxLength": 128
@ -5661,10 +5886,6 @@
"type": "string",
"maxLength": 128
},
"logo": {
"type": "string",
"maxLength": 256
},
"theme": {
"type": "string",
"maxLength": 128
@ -5675,6 +5896,50 @@
}
}
},
"schema.SiteLegalReq": {
"type": "object",
"properties": {
"privacy_policy": {
"type": "string"
},
"terms_of_service": {
"type": "string"
}
}
},
"schema.SiteLegalResp": {
"type": "object",
"properties": {
"privacy_policy": {
"type": "string"
},
"terms_of_service": {
"type": "string"
}
}
},
"schema.SiteWriteReq": {
"type": "object",
"required": [
"required_tag"
],
"properties": {
"required_tag": {
"type": "boolean"
}
}
},
"schema.SiteWriteResp": {
"type": "object",
"required": [
"required_tag"
],
"properties": {
"required_tag": {
"type": "boolean"
}
}
},
"schema.TagItem": {
"type": "object",
"properties": {

View File

@ -1050,6 +1050,42 @@ definitions:
description: object_type
type: string
type: object
schema.SiteBrandingReq:
properties:
favicon:
maxLength: 512
type: string
logo:
maxLength: 512
type: string
mobile_logo:
maxLength: 512
type: string
square_icon:
maxLength: 512
type: string
required:
- logo
- square_icon
type: object
schema.SiteBrandingResp:
properties:
favicon:
maxLength: 512
type: string
logo:
maxLength: 512
type: string
mobile_logo:
maxLength: 512
type: string
square_icon:
maxLength: 512
type: string
required:
- logo
- square_icon
type: object
schema.SiteGeneralReq:
properties:
contact_email:
@ -1103,9 +1139,6 @@ definitions:
language:
maxLength: 128
type: string
logo:
maxLength: 256
type: string
theme:
maxLength: 128
type: string
@ -1122,9 +1155,6 @@ definitions:
language:
maxLength: 128
type: string
logo:
maxLength: 256
type: string
theme:
maxLength: 128
type: string
@ -1136,6 +1166,34 @@ definitions:
- theme
- time_zone
type: object
schema.SiteLegalReq:
properties:
privacy_policy:
type: string
terms_of_service:
type: string
type: object
schema.SiteLegalResp:
properties:
privacy_policy:
type: string
terms_of_service:
type: string
type: object
schema.SiteWriteReq:
properties:
required_tag:
type: boolean
required:
- required_tag
type: object
schema.SiteWriteResp:
properties:
required_tag:
type: boolean
required:
- required_tag
type: object
schema.TagItem:
properties:
display_name:
@ -1784,6 +1842,47 @@ paths:
summary: update smtp config
tags:
- admin
/answer/admin/api/siteinfo/branding:
get:
description: get site interface
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
$ref: '#/definitions/schema.SiteBrandingResp'
type: object
security:
- ApiKeyAuth: []
summary: get site interface
tags:
- admin
put:
description: update site info branding
parameters:
- description: branding info
in: body
name: data
required: true
schema:
$ref: '#/definitions/schema.SiteBrandingReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
summary: update site info branding
tags:
- admin
/answer/admin/api/siteinfo/general:
get:
description: get site general information
@ -1866,6 +1965,88 @@ paths:
summary: update site info interface
tags:
- admin
/answer/admin/api/siteinfo/legal:
get:
description: Set the legal information for the site
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
$ref: '#/definitions/schema.SiteLegalResp'
type: object
security:
- ApiKeyAuth: []
summary: Set the legal information for the site
tags:
- admin
put:
description: update site legal info
parameters:
- description: write info
in: body
name: data
required: true
schema:
$ref: '#/definitions/schema.SiteLegalReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
summary: update site legal info
tags:
- admin
/answer/admin/api/siteinfo/write:
get:
description: get site interface
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
$ref: '#/definitions/schema.SiteWriteResp'
type: object
security:
- ApiKeyAuth: []
summary: get site interface
tags:
- admin
put:
description: update site write info
parameters:
- description: write info
in: body
name: data
required: true
schema:
$ref: '#/definitions/schema.SiteWriteReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
summary: update site write info
tags:
- admin
/answer/admin/api/theme/options:
get:
description: Get theme options
@ -2272,6 +2453,41 @@ paths:
summary: get comment page
tags:
- Comment
/answer/api/v1/file:
post:
consumes:
- multipart/form-data
description: upload file
parameters:
- description: identify the source of the file upload
enum:
- post
- avatar
- branding
in: formData
name: source
required: true
type: string
- description: file
in: formData
name: file
required: true
type: file
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
type: string
type: object
security:
- ApiKeyAuth: []
summary: upload file
tags:
- Upload
/answer/api/v1/follow:
post:
consumes:
@ -3362,32 +3578,6 @@ paths:
summary: ActionRecord
tags:
- User
/answer/api/v1/user/avatar/upload:
post:
consumes:
- multipart/form-data
description: UserUpdateInfo
parameters:
- description: file
in: formData
name: file
required: true
type: file
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
type: string
type: object
security:
- ApiKeyAuth: []
summary: UserUpdateInfo
tags:
- User
/answer/api/v1/user/email:
put:
consumes:
@ -3708,32 +3898,6 @@ paths:
summary: RetrievePassWord
tags:
- User
/answer/api/v1/user/post/file:
post:
consumes:
- multipart/form-data
description: upload user post file
parameters:
- description: file
in: formData
name: file
required: true
type: file
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
type: string
type: object
security:
- ApiKeyAuth: []
summary: upload user post file
tags:
- User
/answer/api/v1/user/register/email:
post:
consumes:

View File

@ -55,4 +55,5 @@ const (
SiteTypeInterface = "interface"
SiteTypeBranding = "branding"
SiteTypeWrite = "write"
SiteTypeLegal = "legal"
)

View File

@ -65,12 +65,25 @@ func (sc *SiteInfoController) GetSiteBranding(ctx *gin.Context) {
// @Tags admin
// @Produce json
// @Success 200 {object} handler.RespBody{data=schema.SiteWriteResp}
// @Router /answer/admin/api/siteinfo/branding [get]
// @Router /answer/admin/api/siteinfo/write [get]
func (sc *SiteInfoController) GetSiteWrite(ctx *gin.Context) {
resp, err := sc.siteInfoService.GetSiteWrite(ctx)
handler.HandleResponse(ctx, err, resp)
}
// GetSiteLegal Set the legal information for the site
// @Summary Set the legal information for the site
// @Description Set the legal information for the site
// @Security ApiKeyAuth
// @Tags admin
// @Produce json
// @Success 200 {object} handler.RespBody{data=schema.SiteLegalResp}
// @Router /answer/admin/api/siteinfo/legal [get]
func (sc *SiteInfoController) GetSiteLegal(ctx *gin.Context) {
resp, err := sc.siteInfoService.GetSiteLegal(ctx)
handler.HandleResponse(ctx, err, resp)
}
// UpdateGeneral update site general information
// @Summary update site general information
// @Description update site general information
@ -143,6 +156,24 @@ func (sc *SiteInfoController) UpdateSiteWrite(ctx *gin.Context) {
handler.HandleResponse(ctx, err, nil)
}
// UpdateSiteLegal update site legal info
// @Summary update site legal info
// @Description update site legal info
// @Security ApiKeyAuth
// @Tags admin
// @Produce json
// @Param data body schema.SiteLegalReq true "write info"
// @Success 200 {object} handler.RespBody{}
// @Router /answer/admin/api/siteinfo/legal [put]
func (sc *SiteInfoController) UpdateSiteLegal(ctx *gin.Context) {
req := &schema.SiteLegalReq{}
if handler.BindAndCheck(ctx, req) {
return
}
err := sc.siteInfoService.SaveSiteLegal(ctx, req)
handler.HandleResponse(ctx, err, nil)
}
// GetSMTPConfig get smtp config
// @Summary GetSMTPConfig get smtp config
// @Description GetSMTPConfig get smtp config

View File

@ -229,10 +229,12 @@ func (a *AnswerAPIRouter) RegisterAnswerCmsAPIRouter(r *gin.RouterGroup) {
r.GET("/siteinfo/interface", a.siteInfoController.GetInterface)
r.GET("/siteinfo/branding", a.siteInfoController.GetSiteBranding)
r.GET("/siteinfo/write", a.siteInfoController.GetSiteWrite)
r.GET("/siteinfo/legal", a.siteInfoController.GetSiteLegal)
r.PUT("/siteinfo/general", a.siteInfoController.UpdateGeneral)
r.PUT("/siteinfo/interface", a.siteInfoController.UpdateInterface)
r.PUT("/siteinfo/branding", a.siteInfoController.UpdateBranding)
r.PUT("/siteinfo/write", a.siteInfoController.UpdateSiteWrite)
r.PUT("/siteinfo/legal", a.siteInfoController.UpdateSiteLegal)
r.GET("/setting/smtp", a.siteInfoController.GetSMTPConfig)
r.PUT("/setting/smtp", a.siteInfoController.UpdateSMTPConfig)

View File

@ -42,6 +42,12 @@ type SiteWriteReq struct {
RequiredTag bool `validate:"required" form:"required_tag" json:"required_tag"`
}
// SiteLegalReq site branding request
type SiteLegalReq struct {
TermsOfService string `validate:"omitempty" form:"terms_of_service" json:"terms_of_service,omitempty"`
PrivacyPolicy string `validate:"omitempty" form:"privacy_policy" json:"privacy_policy,omitempty"`
}
// SiteGeneralResp site general response
type SiteGeneralResp SiteGeneralReq
@ -54,6 +60,9 @@ type SiteBrandingResp SiteBrandingReq
// SiteWriteResp site write response
type SiteWriteResp SiteWriteReq
// SiteLegalResp site write response
type SiteLegalResp SiteLegalReq
// SiteInfoResp get site info response
type SiteInfoResp struct {
General *SiteGeneralResp `json:"general"`

View File

@ -84,6 +84,20 @@ func (s *SiteInfoService) GetSiteWrite(ctx context.Context) (resp *schema.SiteWr
return resp, nil
}
// GetSiteLegal get site legal info
func (s *SiteInfoService) GetSiteLegal(ctx context.Context) (resp *schema.SiteLegalResp, err error) {
siteInfo, exist, err := s.siteInfoRepo.GetByType(ctx, constant.SiteTypeLegal)
if err != nil {
return nil, err
}
if !exist {
return nil, errors.BadRequest(reason.SiteInfoNotFound)
}
resp = &schema.SiteLegalResp{}
_ = json.Unmarshal([]byte(siteInfo.Content), resp)
return resp, nil
}
func (s *SiteInfoService) SaveSiteGeneral(ctx context.Context, req schema.SiteGeneralReq) (err error) {
req.FormatSiteUrl()
var (
@ -159,6 +173,17 @@ func (s *SiteInfoService) SaveSiteWrite(ctx context.Context, req *schema.SiteWri
return s.siteInfoRepo.SaveByType(ctx, constant.SiteTypeWrite, data)
}
// SaveSiteLegal save site legal configuration
func (s *SiteInfoService) SaveSiteLegal(ctx context.Context, req *schema.SiteLegalReq) (err error) {
content, _ := json.Marshal(req)
data := &entity.SiteInfo{
Type: constant.SiteTypeLegal,
Content: string(content),
Status: 1,
}
return s.siteInfoRepo.SaveByType(ctx, constant.SiteTypeLegal, data)
}
// GetSMTPConfig get smtp config
func (s *SiteInfoService) GetSMTPConfig(ctx context.Context) (
resp *schema.GetSMTPConfigResp, err error,