Goframe 之工具配置

Goframe 之工具配置

Posted by Brian on Thursday, January 11, 2024

Gen ctrl (接口规范)

Goland 自动生成 interface 和 controller 文件, 只需要下载官方的 watchers.xml 配置到 filewatch 中。然后只要按照约定定义好 xxReq xxRes ,就可以自动生成所需要的文件,如果还需要生成 sdk 只需要在增加 -k 参数即可。其它的具体的配置请查看官网的配置说明。

官方文档

Gen dao (模型)

请确保要 hack/config 中 正确配置了连接数据的的配置。

文档

Gen Service

设计背景

在业务项目实践中,业务逻辑封装往往是最复杂的部分,同时,业务模块之间的依赖十分复杂、边界模糊,无法采用Golang包管理的形式。如何有效管理项目中的业务逻辑封装部分,对于每个采用Golang开发的项目都是必定会遇到的难题。

在标准的软件设计流程中,模块与模块之间的依赖会先明确接口定义,在软件开发的实施过程中再通过代码来具体实现。但在大部分高节奏的互联网工程下,并没有严谨的软件设计流程,甚至开发人员的质量水平也参差不齐,大部分开发人员首先关心的是如何去实现需求场景对应的功能逻辑,尽可能地提高开发效率。

注意事项

logic 文件中一定要以 s 开头。这里框架的约定。如果不按照这个约定将无法生成所需要的 services 文件

Logic 中还需要在 init 方法中手动注入下需要的 service 类如:

func init() {
	service.RegisterLogin(New())
}	

Question

golang base64 encode 处理大的数字时精度丢失问题

问题复现:

func TestConvertInt64(t *testing.T) {
	b := []byte("1745405691583008768")
	t.Log(string(b))
	t.Log(strconv.FormatInt(1745405691583008768, 10))

	t.Log(base64.RawURLEncoding.EncodeToString([]byte("1745405691583008768")))
	// Output:  MTc0NTQwNTY5MTU4MzAwODc2OA 1745405691583008800
}

目前项目当中采用 string 类型来解决。回头有时间在来回解决这个问题