Awesome Open Source
Awesome Open Source

1. Todo

Build Status

此项目是todo小程序的后台,todo是一个任务发布提醒小程序,你可以加入一个组织,在里面可以给成员发布一些待完成的任务,主要服务于学校和一些公司之间,为了更加方便的管理任务需求而制作的一款小程序应用。

2. 使用技术

2.1 后端请求接收与处理

使用goframe框架, 版本 1.9.10

安装:

go get -u github.com/gogf/gf
服务绑定:
func init() {
	s := g.Server()
	s.BindHandler("/wxLogin", wxLogin)
}
数据校验与获取
type WxLoginRequest struct {
	Code string `json:"code" gvalid:"[email protected]#code码不能为空"`
}

// 校验
if err := gvalid.CheckStruct(wxLoginRequest, nil); err != nil {
    log.Error("code为空", "err", err.String())
    r.Response.WriteJson(errorResponse(err.String()))
    return
}

// 获取前端请求数据
r.GetToStruct(wxLoginRequest)
启动
s := g.Server()
port := config.ServerConfig.Port
s.SetPort(int(port))
host := config.ServerConfig.Host
s.Domain(host)

// 开启日志
s.SetLogPath("log/todo.log")
s.SetAccessLogEnabled(true)
s.SetErrorLogEnabled(true)

s.Run()

2.2 配置文件读取

使用viper框架

安装:

go get -u github.com/spf13/viper

使用:

// 设置配置文件名
configName := fmt.Sprintf("%s-%s", "config", ServerStartupFlags.Environment)
viper.SetConfigName(configName)
// 设置配置文件路径
viper.AddConfigPath("conf")
// 解析配置
viper.ReadInConfig()
// 获取server配置,map类型
viper.GetStringMap("server")

2.3 日志输出

使用zap框架

安装:

go get -u go.uber.org/zap

使用:见utils/log/log.go

2.4 定时任务

使用cron框架

安装:

go get -u github.com/robfig/cron

使用:

c := cron.New()
	for _, job := range jobs.GetJobs() {
		log.Info("job启动", "job name", job.Name())
		c.AddFunc(job.Cron(), func() {
			defer func() {
				if err := recover(); err != nil {
					log.Error("job 运行出错", "job name", job.Name(), "error", err)
				}
			}()
			// 执行任务
			job.Run()
		})
	}
	c.Start()
	defer c.Stop()

3. 部署

3.1 打包成可执行文件

cd scripts
./build.bat

3.2 编译成镜像

docker build -t go-todo .

3.3 启动容器

docker run -dit -p 7410:7410 --name todo-container go-todo /bin/bash

3.4 进入容器

docker exec -it todo-container /bin/bash

3.5 删除镜像

# 停止容器
docker stop todo-container
# 删除容器
docker rm todo-container
# 删除镜像
docker rmi go-todo

相关项目

项目结构

展开查看
.
├─conf
├─config
├─constant
├─controller
├─cron
│  └─jobs
├─https
├─log
│  └─todo.log
│      └─access
├─middleware
├─models
│  └─db
├─scritps
├─test
│  ├─config
│  ├─model
│  └─utils
├─utils
│  └─logger
└─vendor

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
go (15,168
docker (2,921
redis (963
cron (119
todo (86
gorm (57
todolist (49
viper (40
zap (25
wx (20