feat(ik3cloud): 初始化项目基础配置与部门模块
- 添加 .gitignore 忽略规则 - 实现应用配置加载与管理逻辑 - 添加默认配置文件 app.ini - 配置 Gitea CI/CD 工作流用于构建和部署 - 实现金蝶云客户端初始化功能 - 添加 RPC 插件支持 Consul 注册中心 - 实现部门数据获取及树形结构处理逻辑 - 添加通用工具函数库 - 初始化 Go 模块依赖管理 - 创建 Dockerfile 用于服务容器化部署
This commit is contained in:
71
client/rpc/main.go
Normal file
71
client/rpc/main.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"ik3cloud"
|
||||
"ik3cloud/app/config"
|
||||
"ik3cloud/app/router"
|
||||
"strings"
|
||||
"time"
|
||||
"unsafe"
|
||||
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
"github.com/smallnest/rpcx/server"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 初始化项目
|
||||
closes := ik3cloud.InitApp()
|
||||
// 关闭资源
|
||||
for _, fn := range closes {
|
||||
defer fn()
|
||||
}
|
||||
|
||||
//query.SetDefault(mysql.Db)
|
||||
|
||||
s := server.NewServer()
|
||||
|
||||
// 注册中心
|
||||
ik3cloud.AddRegistryPlugin(s)
|
||||
|
||||
// 设置路由
|
||||
router.SetRouter(s)
|
||||
|
||||
// json处理
|
||||
jsoniter.RegisterTypeEncoderFunc("time.Time", func(ptr unsafe.Pointer, stream *jsoniter.Stream) {
|
||||
t := *((*time.Time)(ptr))
|
||||
stream.WriteInt64(t.Unix())
|
||||
}, nil)
|
||||
// 去除首尾空格
|
||||
jsoniter.RegisterTypeDecoderFunc("string", func(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
|
||||
*((*string)(ptr)) = strings.TrimSpace(iter.ReadString())
|
||||
})
|
||||
jsoniter.RegisterTypeDecoderFunc("*time.Time", func(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
|
||||
strTime := iter.ReadString()
|
||||
if strTime == "" {
|
||||
return
|
||||
}
|
||||
formatTime := "2006-01-02 15:04:05"
|
||||
location, err := time.ParseInLocation(formatTime[0:len(strTime)], strTime, time.Local)
|
||||
if err != nil {
|
||||
iter.Error = err
|
||||
return
|
||||
}
|
||||
*((**time.Time)(ptr)) = &location
|
||||
})
|
||||
|
||||
jsoniter.RegisterTypeDecoderFunc("time.Time", func(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
|
||||
strTime := iter.ReadString()
|
||||
formatTime := "2006-01-02 15:04:05"
|
||||
location, err := time.ParseInLocation(formatTime[0:len(strTime)], strTime, time.Local)
|
||||
if err != nil {
|
||||
iter.Error = err
|
||||
return
|
||||
}
|
||||
*((*time.Time)(ptr)) = location
|
||||
})
|
||||
|
||||
if err := s.Serve("tcp", fmt.Sprintf(":%d", config.Config.Server.Port)); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user