package
1.1.0
Repository: https://github.com/wuyan94zl/go-api.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

artisan工具

crud Code generation

生成json模板

命令: artisan model name 该命令会创建 app/http/name 文件夹,并生成app/http/name/model.json 文件,内容如下

{
  "package_name": "article",
  "struct_name": "Article",
  "fields": [
    {
      "field": "Id",
      "type_name": "uint64",
      "tags": {
        "json": "id"
      }
    },
    {
      "field": "CreatedAt",
      "type_name": "time.Time",
      "tags": {
        "json": "created_at"
      }
    },
    {
      "field": "UpdatedAt",
      "type_name": "time.Time",
      "tags": {
        "json": "updated_at"
      }
    }
  ]
}

package_name:对应命令行中 name 值不做更改
struct_name:对应模型中的结构体
fields:对应模型字段

  • field:字段名称对应结构体的字段
  • type_name:字段类型
  • tags:字段标签 对应结构体中的 json 标签

validate 标签api字段验证规则 如 validate:"required||min:6||email" 表示该字段必填长度不能小于6 必须字email类型,这个验证会自动生成

如上默认生成的结构体为

type Article struct {
Id        uint64    `json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}

根据需要修改json文件定义模型

生成 crud api 功能

命令 artisan api name

该命令需要先执行 artisan model name 生成 model.json 文件才能处理

执行后会在app/http/name文件生成三个go文件: controller.go 控制器代码文件 model.go 模型代码文件 service.go 服务代码文件

路由注册

在app/http/kernel.go 文件 Handle 函数中增加 Init()

import "github.com/wuyan94zl/go-api/app/http/name" // 增加代码
func Handle() {
name.Init() // 增加代码
}

结束

此时运行程序后会多处 name 的 api接口路由

定时任务

生成定时任务

命令:article console name 执行后会创建 app/command/name 文件夹,并生成 handle.go 文件 内容如下:

package name

import (
	"fmt"
	"time"
)

type Job struct{}

func (j Job) Run() {
	fmt.Println("Execution per minute", time.Now().Format("2006-01-02 15:4:05"))
}

根据业务需求在Run函数中写入任务代码 完成后再 app/command/kernel.go 文件 Handle 函数中增加任务调度

import "github.com/wuyan94zl/go-api/app/command/name" // 增加代码
func Handle(c *cron.Cron) {
	//秒 分 时 天 月 年
	c.AddJob("0 * * * * *", name.Job{}) //增加代码
}

延时队列

命令:artisan queue data 执行后会生成 app/queue/data 文件夹 并生成 app/queue/name/queue.go 文件 内容如下:

package data

import (
	"fmt"
	"time"
	"github.com/wuyan94zl/go-api/app/queue/utils"
)

var queueType = "data"

func NewQueue(data map[string]string) *Queue {
	return &Queue{
		Data: data,
	}
}

type Queue struct {
	Data map[string]string
}

func (q *Queue) Push(second ...int64) {
	utils.Push(queueType, q.Data, second...)
}
func (q *Queue) Run() {
	fmt.Println("执行队列程序 参数为:", q.Data)
	time.Sleep(1 * time.Second)
}


在Run函数中写业务代码 添加队列 params == 上面Run函数中的d.Data (map[string]string 类型)

params := make(map[string]string)
params["data"] = "queue data params"
// 立即执行队列
data.NewQueue(params).Push()
// 延时10秒后执行队列
data.NewQueue(params).Push(10)