Giter Site home page Giter Site logo

pibigstar / go-todo Goto Github PK

View Code? Open in Web Editor NEW
79.0 2.0 20.0 24.73 MB

微信小程序 todo后端,采用GoFrame框架搭建,包含微信认证、token管理、发送微信模板消息等

License: GNU General Public License v2.0

Go 98.86% Batchfile 0.20% Dockerfile 0.75% Shell 0.20%
go wx todo todolist zap gf goframe viper gorm redis

go-todo's Introduction

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:"type@required#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

go-todo's People

Contributors

pibigstar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

go-todo's Issues

`gogf`收不到post请求数据

版主您好,我fork了您的项目,在运行过程中发现wxLogin方法获取不到code,调试发现gogf版本换成v1.11.7就可以了,并且修改了main.go25行为s.EnablePProf()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.