add: curd sample

This commit is contained in:
viletyy 2021-06-11 01:24:00 +08:00
parent 6646a674c2
commit ab3706948d
15 changed files with 582 additions and 242 deletions

View File

@ -32,16 +32,21 @@ var doc = `{
"produces": [ "produces": [
"application/json" "application/json"
], ],
"summary": "用户验证", "summary": "鉴权验证",
"parameters": [ "parameters": [
{ {
"description": "Vendor模型", "type": "string",
"name": "data", "description": "app key",
"in": "body", "name": "app_key",
"required": true, "in": "formData",
"schema": { "required": true
"$ref": "#/definitions/service.AuthRequest" },
} {
"type": "string",
"description": "app secret",
"name": "app_secret",
"in": "formData",
"required": true
} }
], ],
"responses": { "responses": {
@ -74,13 +79,6 @@ var doc = `{
"in": "header", "in": "header",
"required": true "required": true
}, },
{
"maxLength": 100,
"type": "string",
"description": "名称",
"name": "name",
"in": "query"
},
{ {
"type": "integer", "type": "integer",
"description": "页码", "description": "页码",
@ -92,6 +90,19 @@ var doc = `{
"description": "每页数量", "description": "每页数量",
"name": "page_size", "name": "page_size",
"in": "query" "in": "query"
},
{
"maxLength": 100,
"type": "string",
"description": "系统厂商名称",
"name": "name",
"in": "query"
},
{
"type": "integer",
"description": "系统厂商云id",
"name": "uuid",
"in": "query"
} }
], ],
"responses": { "responses": {
@ -123,13 +134,19 @@ var doc = `{
"required": true "required": true
}, },
{ {
"description": "Vendor模型", "maxLength": 100,
"name": "data", "minLength": 1,
"in": "body", "type": "string",
"required": true, "description": "系统厂商名称",
"schema": { "name": "name",
"$ref": "#/definitions/service.CreateVendorRequest" "in": "formData",
} "required": true
},
{
"type": "integer",
"description": "系统厂商云id",
"name": "uuid",
"in": "formData"
} }
], ],
"responses": { "responses": {
@ -143,6 +160,42 @@ var doc = `{
} }
}, },
"/v1/vendors/{id}": { "/v1/vendors/{id}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"vendors"
],
"summary": "系统厂商",
"parameters": [
{
"type": "string",
"description": "auth by /auth",
"name": "token",
"in": "header",
"required": true
},
{
"type": "integer",
"description": "系统厂商 ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "请求成功",
"schema": {
"$ref": "#/definitions/basic.Vendor"
}
}
}
},
"delete": { "delete": {
"consumes": [ "consumes": [
"application/json" "application/json"
@ -206,13 +259,18 @@ var doc = `{
"required": true "required": true
}, },
{ {
"description": "Vendor模型", "maxLength": 100,
"name": "data", "minLength": 1,
"in": "body", "type": "string",
"required": true, "description": "系统厂商名称",
"schema": { "name": "name",
"$ref": "#/definitions/service.UpdateVendorRequest" "in": "formData"
} },
{
"type": "integer",
"description": "系统厂商云id",
"name": "uuid",
"in": "formData"
} }
], ],
"responses": { "responses": {
@ -243,52 +301,6 @@ var doc = `{
"type": "string" "type": "string"
} }
} }
},
"service.AuthRequest": {
"type": "object",
"required": [
"app_key",
"app_secret"
],
"properties": {
"app_key": {
"type": "string"
},
"app_secret": {
"type": "string"
}
}
},
"service.CreateVendorRequest": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"uuid": {
"type": "integer"
}
}
},
"service.UpdateVendorRequest": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"uuid": {
"type": "integer"
}
}
} }
} }
}` }`

View File

@ -16,16 +16,21 @@
"produces": [ "produces": [
"application/json" "application/json"
], ],
"summary": "用户验证", "summary": "鉴权验证",
"parameters": [ "parameters": [
{ {
"description": "Vendor模型", "type": "string",
"name": "data", "description": "app key",
"in": "body", "name": "app_key",
"required": true, "in": "formData",
"schema": { "required": true
"$ref": "#/definitions/service.AuthRequest" },
} {
"type": "string",
"description": "app secret",
"name": "app_secret",
"in": "formData",
"required": true
} }
], ],
"responses": { "responses": {
@ -58,13 +63,6 @@
"in": "header", "in": "header",
"required": true "required": true
}, },
{
"maxLength": 100,
"type": "string",
"description": "名称",
"name": "name",
"in": "query"
},
{ {
"type": "integer", "type": "integer",
"description": "页码", "description": "页码",
@ -76,6 +74,19 @@
"description": "每页数量", "description": "每页数量",
"name": "page_size", "name": "page_size",
"in": "query" "in": "query"
},
{
"maxLength": 100,
"type": "string",
"description": "系统厂商名称",
"name": "name",
"in": "query"
},
{
"type": "integer",
"description": "系统厂商云id",
"name": "uuid",
"in": "query"
} }
], ],
"responses": { "responses": {
@ -107,13 +118,19 @@
"required": true "required": true
}, },
{ {
"description": "Vendor模型", "maxLength": 100,
"name": "data", "minLength": 1,
"in": "body", "type": "string",
"required": true, "description": "系统厂商名称",
"schema": { "name": "name",
"$ref": "#/definitions/service.CreateVendorRequest" "in": "formData",
} "required": true
},
{
"type": "integer",
"description": "系统厂商云id",
"name": "uuid",
"in": "formData"
} }
], ],
"responses": { "responses": {
@ -127,6 +144,42 @@
} }
}, },
"/v1/vendors/{id}": { "/v1/vendors/{id}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"vendors"
],
"summary": "系统厂商",
"parameters": [
{
"type": "string",
"description": "auth by /auth",
"name": "token",
"in": "header",
"required": true
},
{
"type": "integer",
"description": "系统厂商 ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "请求成功",
"schema": {
"$ref": "#/definitions/basic.Vendor"
}
}
}
},
"delete": { "delete": {
"consumes": [ "consumes": [
"application/json" "application/json"
@ -190,13 +243,18 @@
"required": true "required": true
}, },
{ {
"description": "Vendor模型", "maxLength": 100,
"name": "data", "minLength": 1,
"in": "body", "type": "string",
"required": true, "description": "系统厂商名称",
"schema": { "name": "name",
"$ref": "#/definitions/service.UpdateVendorRequest" "in": "formData"
} },
{
"type": "integer",
"description": "系统厂商云id",
"name": "uuid",
"in": "formData"
} }
], ],
"responses": { "responses": {
@ -227,52 +285,6 @@
"type": "string" "type": "string"
} }
} }
},
"service.AuthRequest": {
"type": "object",
"required": [
"app_key",
"app_secret"
],
"properties": {
"app_key": {
"type": "string"
},
"app_secret": {
"type": "string"
}
}
},
"service.CreateVendorRequest": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"uuid": {
"type": "integer"
}
}
},
"service.UpdateVendorRequest": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"uuid": {
"type": "integer"
}
}
} }
} }
} }

View File

@ -11,36 +11,6 @@ definitions:
msg: msg:
type: string type: string
type: object type: object
service.AuthRequest:
properties:
app_key:
type: string
app_secret:
type: string
required:
- app_key
- app_secret
type: object
service.CreateVendorRequest:
properties:
name:
type: string
uuid:
type: integer
required:
- name
type: object
service.UpdateVendorRequest:
properties:
id:
type: integer
name:
type: string
uuid:
type: integer
required:
- id
type: object
info: info:
contact: {} contact: {}
description: This is a potato use golang description: This is a potato use golang
@ -52,12 +22,16 @@ paths:
consumes: consumes:
- multipart/form-data - multipart/form-data
parameters: parameters:
- description: Vendor模型 - description: app key
in: body in: formData
name: data name: app_key
required: true required: true
schema: type: string
$ref: '#/definitions/service.AuthRequest' - description: app secret
in: formData
name: app_secret
required: true
type: string
produces: produces:
- application/json - application/json
responses: responses:
@ -65,7 +39,7 @@ paths:
description: 请求成功 description: 请求成功
schema: schema:
$ref: '#/definitions/errcode.Error' $ref: '#/definitions/errcode.Error'
summary: 用户验证 summary: 鉴权验证
/v1/vendors: /v1/vendors:
get: get:
consumes: consumes:
@ -76,11 +50,6 @@ paths:
name: token name: token
required: true required: true
type: string type: string
- description: 名称
in: query
maxLength: 100
name: name
type: string
- description: 页码 - description: 页码
in: query in: query
name: page name: page
@ -89,6 +58,15 @@ paths:
in: query in: query
name: page_size name: page_size
type: integer type: integer
- description: 系统厂商名称
in: query
maxLength: 100
name: name
type: string
- description: 系统厂商云id
in: query
name: uuid
type: integer
produces: produces:
- application/json - application/json
responses: responses:
@ -108,12 +86,17 @@ paths:
name: token name: token
required: true required: true
type: string type: string
- description: Vendor模型 - description: 系统厂商名称
in: body in: formData
name: data maxLength: 100
minLength: 1
name: name
required: true required: true
schema: type: string
$ref: '#/definitions/service.CreateVendorRequest' - description: 系统厂商云id
in: formData
name: uuid
type: integer
produces: produces:
- application/json - application/json
responses: responses:
@ -149,6 +132,30 @@ paths:
summary: 删除系统厂商 summary: 删除系统厂商
tags: tags:
- vendors - vendors
get:
consumes:
- application/json
parameters:
- description: auth by /auth
in: header
name: token
required: true
type: string
- description: 系统厂商 ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: 请求成功
schema:
$ref: '#/definitions/basic.Vendor'
summary: 系统厂商
tags:
- vendors
patch: patch:
consumes: consumes:
- multipart/form-data - multipart/form-data
@ -163,12 +170,16 @@ paths:
name: id name: id
required: true required: true
type: integer type: integer
- description: Vendor模型 - description: 系统厂商名称
in: body in: formData
name: data maxLength: 100
required: true minLength: 1
schema: name: name
$ref: '#/definitions/service.UpdateVendorRequest' type: string
- description: 系统厂商云id
in: formData
name: uuid
type: integer
produces: produces:
- application/json - application/json
responses: responses:

View File

@ -1,7 +1,7 @@
/* /*
* @Date: 2021-06-10 18:58:25 * @Date: 2021-06-10 18:58:25
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 22:28:29 * @LastEditTime: 2021-06-11 01:14:45
* @FilePath: /potato/internal/controller/api/v1/auth.go * @FilePath: /potato/internal/controller/api/v1/auth.go
*/ */
package v1 package v1
@ -14,11 +14,12 @@ import (
"github.com/viletyy/potato/pkg/errcode" "github.com/viletyy/potato/pkg/errcode"
) )
// @Summary 用户验证 // @Summary 鉴权验证
// @Description // @Description
// @Accept mpfd // @Accept mpfd
// @Produce json // @Produce json
// @Param data body service.AuthRequest true "Vendor模型" // @Param app_key formData string true "app key"
// @Param app_secret formData string true "app secret"
// @Success 200 {object} errcode.Error "请求成功" // @Success 200 {object} errcode.Error "请求成功"
// @Router /v1/auth [post] // @Router /v1/auth [post]
func GetAuth(c *gin.Context) { func GetAuth(c *gin.Context) {

View File

@ -1,29 +1,102 @@
/* /*
* @Date: 2021-03-21 19:54:57 * @Date: 2021-03-21 19:54:57
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 21:49:29 * @LastEditTime: 2021-06-11 01:17:44
* @FilePath: /potato/internal/controller/api/v1/basic/vendor.go * @FilePath: /potato/internal/controller/api/v1/basic/vendor.go
*/ */
package basic package basic
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/viletyy/potato/global"
"github.com/viletyy/potato/internal/service"
"github.com/viletyy/potato/pkg/app"
"github.com/viletyy/potato/pkg/errcode"
"github.com/viletyy/yolk/convert"
) )
type Vendor struct{} type Vendor struct{}
func NewVendor() Vendor {
return Vendor{}
}
// @Summary 系统厂商列表 // @Summary 系统厂商列表
// @Tags vendors // @Tags vendors
// @Description // @Description
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param token header string true "auth by /auth" // @Param token header string true "auth by /auth"
// @Param name query string false "名称" maxlength(100)
// @Param page query int false "页码" // @Param page query int false "页码"
// @Param page_size query int false "每页数量" // @Param page_size query int false "每页数量"
// @Param name query string false "系统厂商名称" maxlength(100)
// @Param uuid query int false "系统厂商云id"
// @Success 200 {object} basic.Vendor "请求成功" // @Success 200 {object} basic.Vendor "请求成功"
// @Router /v1/vendors [get] // @Router /v1/vendors [get]
func (vendor Vendor) List(c *gin.Context) {} func (vendor Vendor) List(c *gin.Context) {
param := service.VendorListRequest{}
response := app.NewResponse(c)
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs.Errors())
return
}
svc := service.New(c.Request.Context())
paper := app.Pager{Page: app.GetPage(c), PageSize: app.GetPageSize(c)}
total, err := svc.CountVendor(&service.CountVendorRequest{Name: param.Name, Uuid: param.Uuid})
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.CountVendor err: %v", err)
response.ToErrorResponse(errcode.ErrorCountVendorFail)
return
}
vendors, err := svc.GetVendorList(&param, &paper)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.GetVendorList err: %v", err)
response.ToErrorResponse(errcode.ErrorGetVendorListFail)
return
}
response.ToResponseList(vendors, total)
}
// @Summary 系统厂商
// @Tags vendors
// @Description
// @Accept json
// @Produce json
// @Param token header string true "auth by /auth"
// @Param id path int true "系统厂商 ID"
// @Success 200 {object} basic.Vendor "请求成功"
// @Router /v1/vendors/{id} [get]
func (vendor Vendor) Get(c *gin.Context) {
vendorId, err := convert.StrTo(c.Param("id")).Int64()
response := app.NewResponse(c)
if err != nil {
global.GO_LOG.Sugar().Errorf("convert.StrTo err: %v", err)
response.ToErrorResponse(errcode.InvalidParams)
return
}
param := service.VendorRequest{ID: vendorId}
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs.Errors())
return
}
svc := service.New(c.Request.Context())
dbVendor, err := svc.GetVendor(&param)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.GetVendor err: %v", err)
response.ToErrorResponse(errcode.ErrorGetVendorFail)
return
}
response.ToResponse(dbVendor)
}
// @Summary 新增系统厂商 // @Summary 新增系统厂商
// @Tags vendors // @Tags vendors
@ -31,10 +104,30 @@ func (vendor Vendor) List(c *gin.Context) {}
// @Accept mpfd // @Accept mpfd
// @Produce json // @Produce json
// @Param token header string true "auth by /auth" // @Param token header string true "auth by /auth"
// @Param data body service.CreateVendorRequest true "Vendor模型" // @Param name formData string true "系统厂商名称" minlength(1) maxlength(100)
// @Param uuid formData int false "系统厂商云id"
// @Success 200 {object} basic.Vendor "请求成功" // @Success 200 {object} basic.Vendor "请求成功"
// @Router /v1/vendors [post] // @Router /v1/vendors [post]
func (vendor Vendor) Create(c *gin.Context) {} func (vendor Vendor) Create(c *gin.Context) {
param := service.CreateVendorRequest{}
response := app.NewResponse(c)
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs.Errors())
return
}
svc := service.New(c.Request.Context())
dbVendor, err := svc.CreateVendor(&param)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.CreateVendor err: %v", err)
response.ToErrorResponse(errcode.ErrorCreateVendorFail)
return
}
response.ToResponse(dbVendor)
}
// @Summary 修改系统厂商 // @Summary 修改系统厂商
// @Tags vendors // @Tags vendors
@ -43,10 +136,35 @@ func (vendor Vendor) Create(c *gin.Context) {}
// @Produce json // @Produce json
// @Param token header string true "auth by /auth" // @Param token header string true "auth by /auth"
// @Param id path int true "系统厂商 ID" // @Param id path int true "系统厂商 ID"
// @Param data body service.UpdateVendorRequest true "Vendor模型" // @Param name formData string false "系统厂商名称" minlength(1) maxlength(100)
// @Param uuid formData int false "系统厂商云id"
// @Success 200 {object} basic.Vendor "请求成功" // @Success 200 {object} basic.Vendor "请求成功"
// @Router /v1/vendors/{id} [patch] // @Router /v1/vendors/{id} [patch]
func (vendor Vendor) Update(c *gin.Context) {} func (vendor Vendor) Update(c *gin.Context) {
vendorId, err := convert.StrTo(c.Param("id")).Int64()
response := app.NewResponse(c)
if err != nil {
global.GO_LOG.Sugar().Errorf("convert.StrTo err: %v", err)
response.ToErrorResponse(errcode.InvalidParams)
return
}
param := service.UpdateVendorRequest{ID: vendorId}
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs)
return
}
svc := service.New(c.Request.Context())
dbVendor, err := svc.UpdateVendor(&param)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.UpdateVendor err: %v", err)
response.ToErrorResponse(errcode.ErrorUpdateVendorFail)
return
}
response.ToResponse(dbVendor)
}
// @Summary 删除系统厂商 // @Summary 删除系统厂商
// @Tags vendors // @Tags vendors
@ -58,4 +176,21 @@ func (vendor Vendor) Update(c *gin.Context) {}
// @Success 200 {object} basic.Vendor "请求成功" // @Success 200 {object} basic.Vendor "请求成功"
// @Router /v1/vendors/{id} [delete] // @Router /v1/vendors/{id} [delete]
func (vendor Vendor) Delete(c *gin.Context) { func (vendor Vendor) Delete(c *gin.Context) {
vendorId, err := convert.StrTo(c.Param("id")).Int64()
response := app.NewResponse(c)
if err != nil {
global.GO_LOG.Sugar().Errorf("convert.StrTo err: %v", err)
response.ToErrorResponse(errcode.InvalidParams)
return
}
param := service.DeleteVendorRequest{ID: vendorId}
svc := service.New(c.Request.Context())
err = svc.DeleteVendor(&param)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.DeleteVendor err: %v", err)
response.ToErrorResponse(errcode.ErrorDeleteVendorFail)
return
}
response.ToErrorResponse(errcode.Success)
} }

59
internal/dao/vendor.go Normal file
View File

@ -0,0 +1,59 @@
/*
* @Date: 2021-06-10 22:53:09
* @LastEditors: viletyy
* @LastEditTime: 2021-06-10 23:59:15
* @FilePath: /potato/internal/dao/vendor.go
*/
package dao
import (
"github.com/viletyy/potato/internal/model"
"github.com/viletyy/potato/internal/model/basic"
"github.com/viletyy/potato/pkg/app"
)
func (d *Dao) CountVendor(name string, uuid int) (int, error) {
vendor := basic.Vendor{Name: name, Uuid: uuid}
return vendor.Count(d.Engine)
}
func (d *Dao) GetVendorList(name string, uuid int, page, pageSize int) ([]basic.Vendor, error) {
vendor := basic.Vendor{Name: name, Uuid: uuid}
pageOffset := app.GetPageOffset(page, pageSize)
return vendor.List(d.Engine, pageOffset, pageSize)
}
func (d *Dao) GetVendor(id int64) (basic.Vendor, error) {
vendor := basic.Vendor{
Model: model.Model{ID: id},
}
return vendor.Get(d.Engine)
}
func (d *Dao) CreateVendor(name string, uuid int) (basic.Vendor, error) {
vendor := basic.Vendor{
Name: name,
Uuid: uuid,
}
return vendor, vendor.Create(d.Engine)
}
func (d *Dao) UpdateVendor(id int64, name string, uuid int) (basic.Vendor, error) {
vendor := basic.Vendor{
Name: name,
Uuid: uuid,
Model: model.Model{ID: id},
}
return vendor, vendor.Update(d.Engine)
}
func (d *Dao) DeleteVendor(id int64) error {
vendor := basic.Vendor{
Model: model.Model{ID: id},
}
return vendor.Delete(d.Engine)
}

View File

@ -1,7 +1,7 @@
/* /*
* @Date: 2021-06-10 18:21:37 * @Date: 2021-06-10 18:21:37
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 21:59:51 * @LastEditTime: 2021-06-11 01:00:59
* @FilePath: /potato/internal/model/auth.go * @FilePath: /potato/internal/model/auth.go
*/ */
package model package model

View File

@ -1,12 +1,13 @@
/* /*
* @Date: 2021-03-21 19:54:57 * @Date: 2021-03-21 19:54:57
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 17:54:47 * @LastEditTime: 2021-06-10 23:20:22
* @FilePath: /potato/internal/model/basic/vendor.go * @FilePath: /potato/internal/model/basic/vendor.go
*/ */
package basic package basic
import ( import (
"github.com/jinzhu/gorm"
"github.com/viletyy/potato/internal/model" "github.com/viletyy/potato/internal/model"
) )
@ -16,3 +17,56 @@ type Vendor struct {
Name string `json:"name"` Name string `json:"name"`
Uuid int `json:"uuid"` Uuid int `json:"uuid"`
} }
func (v Vendor) Count(db *gorm.DB) (int, error) {
var count int
if v.Name != "" {
db = db.Where("name = ?", v.Name)
}
if v.Uuid != 0 {
db = db.Where("uuid = ?", v.Uuid)
}
if err := db.Model(&v).Count(&count).Error; err != nil {
return 0, err
}
return count, nil
}
func (v Vendor) List(db *gorm.DB, pageOffset, pageSize int) (vendors []Vendor, err error) {
if pageOffset >= 0 && pageSize > 0 {
db = db.Offset(pageOffset).Limit(pageSize)
}
if v.Name != "" {
db = db.Where("name = ?", v.Name)
}
if v.Uuid != 0 {
db = db.Where("uuid = ?", v.Uuid)
}
if err = db.Find(&vendors).Error; err != nil {
return nil, err
}
return
}
func (v Vendor) Get(db *gorm.DB) (vendor Vendor, err error) {
err = db.Where("id = ?", v.ID).First(&vendor).Error
if err != nil && err != gorm.ErrRecordNotFound {
return
}
return vendor, nil
}
func (v Vendor) Create(db *gorm.DB) error {
return db.Create(&v).Error
}
func (v Vendor) Update(db *gorm.DB) error {
return db.Model(&Vendor{}).Where("id = ?", v.ID).Update(v).Error
}
func (v Vendor) Delete(db *gorm.DB) error {
return db.Where("id = ?", v.ID).Delete(&v).Error
}

View File

@ -1,18 +1,22 @@
/* /*
* @Date: 2021-03-21 19:54:57 * @Date: 2021-03-21 19:54:57
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 17:51:43 * @LastEditTime: 2021-06-11 00:22:23
* @FilePath: /potato/internal/routers/basic.go * @FilePath: /potato/internal/routers/basic.go
*/ */
package routers package routers
import "github.com/viletyy/potato/internal/controller/api/v1/basic"
func V1InitBasicRouter() { func V1InitBasicRouter() {
vendors := V1RouterGroup.Group("/vendors") vendors := V1RouterGroup.Group("/vendors")
vendor := basic.NewVendor()
{ {
vendors.GET("") vendors.GET("", vendor.List)
vendors.POST("") vendors.POST("", vendor.Create)
vendors.PATCH("/:id") vendors.GET("/:id", vendor.Get)
vendors.DELETE("/:id") vendors.PATCH("/:id", vendor.Update)
vendors.DELETE("/:id", vendor.Delete)
} }
} }

View File

@ -1,7 +1,7 @@
/* /*
* @Date: 2021-06-10 18:55:46 * @Date: 2021-06-10 18:55:46
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 18:58:09 * @LastEditTime: 2021-06-11 01:03:11
* @FilePath: /potato/internal/service/auth.go * @FilePath: /potato/internal/service/auth.go
*/ */
package service package service
@ -9,8 +9,8 @@ package service
import "errors" import "errors"
type AuthRequest struct { type AuthRequest struct {
AppKey string `json:"app_key" validate:"required"` AppKey string `form:"app_key" validate:"required"`
AppSecret string `json:"app_secret" validate:"required"` AppSecret string `form:"app_secret" validate:"required"`
} }
func (svc *Service) CheckAuth(param *AuthRequest) error { func (svc *Service) CheckAuth(param *AuthRequest) error {

View File

@ -1,30 +1,65 @@
/* /*
* @Date: 2021-06-10 17:57:48 * @Date: 2021-06-10 17:57:48
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 18:01:40 * @LastEditTime: 2021-06-11 01:17:09
* @FilePath: /potato/internal/service/vendor.go * @FilePath: /potato/internal/service/vendor.go
*/ */
package service package service
import (
"github.com/viletyy/potato/internal/model/basic"
"github.com/viletyy/potato/pkg/app"
)
type CountVendorRequest struct { type CountVendorRequest struct {
Name string `json:"name" validate:"max=100"` Name string `form:"name" json:"name" validate:"max=100"`
Uuid int `form:"uuid" json:"uuid" `
} }
type ListVendorRequest struct { type VendorListRequest struct {
Name string `json:"name" validate:"max=100"` Name string `form:"name" json:"name" validate:"max=100"`
Uuid int `form:"uuid" json:"uuid"`
}
type VendorRequest struct {
ID int64 `form:"id" json:"id" validate:"required,gte=1"`
} }
type CreateVendorRequest struct { type CreateVendorRequest struct {
Name string `json:"name" validate:"required"` Name string `form:"name" json:"name" validate:"required"`
Uuid int `json:"uuid"` Uuid int `form:"uuid" json:"uuid"`
} }
type UpdateVendorRequest struct { type UpdateVendorRequest struct {
ID int64 `json:"id" validate:"required,gte=1"` ID int64 `form:"id" json:"id" validate:"required,gte=1"`
Name string `json:"name"` Name string `form:"name" json:"name"`
Uuid int `json:"uuid"` Uuid int `form:"uuid" json:"uuid"`
} }
type DeleteVendorRequest struct { type DeleteVendorRequest struct {
ID int64 `json:"id" validate:"required,gte=1"` ID int64 `json:"id" validate:"required,gte=1"`
} }
func (svc *Service) CountVendor(param *CountVendorRequest) (int, error) {
return svc.dao.CountVendor(param.Name, param.Uuid)
}
func (svc *Service) GetVendorList(param *VendorListRequest, pager *app.Pager) ([]basic.Vendor, error) {
return svc.dao.GetVendorList(param.Name, param.Uuid, pager.Page, pager.PageSize)
}
func (svc *Service) GetVendor(param *VendorRequest) (basic.Vendor, error) {
return svc.dao.GetVendor(param.ID)
}
func (svc *Service) CreateVendor(param *CreateVendorRequest) (basic.Vendor, error) {
return svc.dao.CreateVendor(param.Name, param.Uuid)
}
func (svc *Service) UpdateVendor(param *UpdateVendorRequest) (basic.Vendor, error) {
return svc.dao.UpdateVendor(param.ID, param.Name, param.Uuid)
}
func (svc *Service) DeleteVendor(param *DeleteVendorRequest) error {
return svc.dao.DeleteVendor(param.ID)
}

View File

@ -1,7 +1,7 @@
/* /*
* @Date: 2021-06-10 16:47:58 * @Date: 2021-06-10 16:47:58
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 22:28:15 * @LastEditTime: 2021-06-10 23:53:10
* @FilePath: /potato/pkg/app/app.go * @FilePath: /potato/pkg/app/app.go
*/ */
package app package app
@ -33,7 +33,7 @@ func (r *Response) ToResponse(data interface{}) {
} }
func (r *Response) ToResponseErrors(data interface{}) { func (r *Response) ToResponseErrors(data interface{}) {
err := errcode.InvalidParams err := errcode.InvalidMultiParams
err.WithData(data) err.WithData(data)
r.ToErrorResponse(err) r.ToErrorResponse(err)
} }

View File

@ -1,7 +1,7 @@
/* /*
* @Date: 2021-06-10 18:10:14 * @Date: 2021-06-10 18:10:14
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 22:04:50 * @LastEditTime: 2021-06-11 01:15:10
* @FilePath: /potato/pkg/app/form.go * @FilePath: /potato/pkg/app/form.go
*/ */
package app package app
@ -38,7 +38,7 @@ func (v ValidErrors) Errors() (errs []string) {
func BindAndValid(c *gin.Context, v interface{}) (bool, ValidErrors) { func BindAndValid(c *gin.Context, v interface{}) (bool, ValidErrors) {
var errs ValidErrors var errs ValidErrors
err := c.ShouldBindJSON(v) err := c.ShouldBind(v)
if err != nil { if err != nil {
v := c.Value("trans") v := c.Value("trans")
trans, _ := v.(ut.Translator) trans, _ := v.(ut.Translator)

View File

@ -1,7 +1,7 @@
/* /*
* @Date: 2021-06-10 16:25:21 * @Date: 2021-06-10 16:25:21
* @LastEditors: viletyy * @LastEditors: viletyy
* @LastEditTime: 2021-06-10 16:30:03 * @LastEditTime: 2021-06-10 23:52:39
* @FilePath: /potato/pkg/errcode/common_code.go * @FilePath: /potato/pkg/errcode/common_code.go
*/ */
package errcode package errcode
@ -10,10 +10,11 @@ var (
Success = NewError(0, "请求成功") Success = NewError(0, "请求成功")
ServerError = NewError(10000, "服务内部错误") ServerError = NewError(10000, "服务内部错误")
InvalidParams = NewError(10001, "参数错误") InvalidParams = NewError(10001, "参数错误")
NotFound = NewError(10002, "找不到数据") InvalidMultiParams = NewError(10002, "多个参数错误")
UnauthorizedAuthNotExist = NewError(10003, "鉴权失败,找不到对应等 AppKey和 AppSecret") NotFound = NewError(10003, "找不到数据")
UnauthorizedTokenError = NewError(10004, "鉴权失败Token 错误") UnauthorizedAuthNotExist = NewError(10004, "鉴权失败,找不到对应等 AppKey和 AppSecret")
UnauthorizedTokenTimeout = NewError(10005, "鉴权失败Token 超时") UnauthorizedTokenError = NewError(10005, "鉴权失败Token 错误")
UnauthorizedTokenGenerate = NewError(10006, "鉴权失败Token 生成失败") UnauthorizedTokenTimeout = NewError(10006, "鉴权失败Token 超时")
TooManyRequests = NewError(10007, "请求过多") UnauthorizedTokenGenerate = NewError(10007, "鉴权失败Token 生成失败")
TooManyRequests = NewError(10008, "请求过多")
) )

View File

@ -0,0 +1,16 @@
/*
* @Date: 2021-06-10 23:09:09
* @LastEditors: viletyy
* @LastEditTime: 2021-06-10 23:26:27
* @FilePath: /potato/pkg/errcode/module_code.go
*/
package errcode
var (
ErrorGetVendorListFail = NewError(21001, "获取系统厂商列表失败")
ErrorGetVendorFail = NewError(21002, "获取系统厂商失败")
ErrorCreateVendorFail = NewError(21003, "创建系统厂商失败")
ErrorUpdateVendorFail = NewError(21004, "更新系统厂商失败")
ErrorDeleteVendorFail = NewError(21005, "删除系统厂商失败")
ErrorCountVendorFail = NewError(21006, "统计系统厂商失败")
)