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 类型来解决。回头有时间在来回解决这个问题