|
|
package ProtoController
|
|
|
|
|
|
import (
|
|
|
"bytes"
|
|
|
"dsAutoCode/Dao/ProtoDao"
|
|
|
"dsAutoCode/Model"
|
|
|
"dsAutoCode/Service/ProtoService"
|
|
|
"dsAutoCode/Utils/CommonUtil"
|
|
|
"dsAutoCode/Utils/FileUtil"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"log"
|
|
|
"net/http"
|
|
|
"strings"
|
|
|
"text/template"
|
|
|
)
|
|
|
|
|
|
//模块的路由配置
|
|
|
func Routers(r *gin.RouterGroup) {
|
|
|
rr := r.Group("/proto")
|
|
|
//注册get方法
|
|
|
rr.GET("/ListProto", ListProto)
|
|
|
rr.GET("/ListPerson", ListPerson)
|
|
|
rr.GET("/GetParameterStructInfo", GetParameterStructInfo)
|
|
|
rr.GET("/CodeController", CodeController)
|
|
|
rr.GET("/CodeControllerFramework", CodeControllerFramework)
|
|
|
rr.GET("/CodeService", CodeService)
|
|
|
rr.GET("/CodeRpcService", CodeRpcService)
|
|
|
rr.GET("/CodeDao", CodeDao)
|
|
|
rr.GET("/BindInterfaceList", BindInterfaceList)
|
|
|
rr.GET("/CreateWebFiles", CreateWebFiles)
|
|
|
rr.GET("/CreateRpcFiles", CreateRpcFiles)
|
|
|
rr.GET("/CreateTestUnit", CreateTestUnit)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取开发者名单
|
|
|
作者:黄海
|
|
|
时间:2020-04-23
|
|
|
*/
|
|
|
func ListPerson(c *gin.Context) {
|
|
|
list := ProtoService.ListPerson()
|
|
|
//3、返回回执信息
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Code: 0,
|
|
|
Count: len(list),
|
|
|
Data: list,
|
|
|
Msg: "获取数据成功!",
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功用:绑定接口下拉框
|
|
|
作者:黄海
|
|
|
时间:2020-04-23
|
|
|
*/
|
|
|
func BindInterfaceList(c *gin.Context) {
|
|
|
list := ProtoService.BindInterfaceList()
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Code: 0,
|
|
|
Count: len(list),
|
|
|
Data: list,
|
|
|
Msg: "获取数据成功!",
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:列举出proto的文件有哪些
|
|
|
作者:黄海
|
|
|
时间:2020-04-22
|
|
|
*/
|
|
|
func ListProto(c *gin.Context) {
|
|
|
var interfaceId = c.Query("interfaceId")
|
|
|
var page = CommonUtil.ConvertStringToInt(c.Query("page"))
|
|
|
var limit = CommonUtil.ConvertStringToInt(c.Query("limit"))
|
|
|
list, count := ProtoService.ListProto(interfaceId, page, limit)
|
|
|
//3、返回回执信息
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Code: 0,
|
|
|
Count: CommonUtil.ConvertInt64ToInt(count),
|
|
|
Data: list,
|
|
|
Msg: "获取数据成功!",
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取指定参数结构体下的参数属性
|
|
|
作者:黄海
|
|
|
时间:2020-04-22
|
|
|
*/
|
|
|
func GetParameterStructInfo(c *gin.Context) {
|
|
|
list := ProtoService.GetParameterStructInfo(c.Query("struct_id"))
|
|
|
//3、返回回执信息
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Code: 0,
|
|
|
Count: len(list),
|
|
|
Data: list,
|
|
|
Msg: "获取数据成功!",
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:创建单元测试文件
|
|
|
作者:黄海
|
|
|
时间:
|
|
|
*/
|
|
|
func CreateTestUnit(c *gin.Context) {
|
|
|
var interfaceId = c.Query("interfaceId")
|
|
|
var interfaceName = c.Query("interfaceName")
|
|
|
var authorId = c.Query("author_id")
|
|
|
var controllerName = c.Query("ControllerName")
|
|
|
_, _, description := ProtoDao.GetControllerInfoByName(controllerName)
|
|
|
|
|
|
authorName := ProtoService.GetPersonInfoById(authorId)["person_name"].(string)
|
|
|
tableName := ProtoDao.GetTrueTableNameFromInterfaceId(interfaceId)
|
|
|
tableName = strings.Replace(tableName, ".pb.go", "", -1)
|
|
|
|
|
|
//获取结构体名称
|
|
|
var structId, _ = ProtoDao.GetStructIdByInterfaceId(interfaceId)
|
|
|
_, _, m := ProtoDao.GetStructInfoById(structId)
|
|
|
var structName = m["struct_name"]
|
|
|
|
|
|
list:=ProtoDao.GetParameterStructInfo(structId)
|
|
|
var RpcServiceParameters string
|
|
|
for i := 0; i < len(list); i++ {
|
|
|
structParameterName := list[i]["struct_parameter_name"].(string)
|
|
|
RpcServiceParameters += CommonUtil.StrFirstToUpper(structParameterName) + " : " + CommonUtil.StrFirstToLower(structParameterName) + " ,"
|
|
|
}
|
|
|
|
|
|
//调用模板
|
|
|
filesName :=CommonUtil.GetCurrentDirectory()+ "/Controller/ProtoController/Template/TestUnit.template"
|
|
|
t, err := template.ParseFiles(filesName)
|
|
|
if err != nil {
|
|
|
log.Fatalln("parse file err:", err)
|
|
|
return
|
|
|
}
|
|
|
buf := new(bytes.Buffer)
|
|
|
var p = map[string]interface{}{
|
|
|
"currenttime": CommonUtil.GetCurrentTime(),
|
|
|
"description": description,
|
|
|
"interfaceName": interfaceName,
|
|
|
"tableName": tableName,
|
|
|
"authorName": authorName,
|
|
|
"struct_name": structName,
|
|
|
"RpcServiceParameters":RpcServiceParameters,
|
|
|
}
|
|
|
if err := t.Execute(buf, p); err != nil {
|
|
|
log.Fatal("There was an error:", err.Error())
|
|
|
}
|
|
|
var content = buf.String()
|
|
|
content = CommonUtil.DeleteBlankString(content)
|
|
|
//写入文件
|
|
|
FileUtil.WriteFileContent(CommonUtil.GetParentPath(CommonUtil.GetCurrentDirectory())+"/dsBaseRpc/Test/"+interfaceName+"_test.go", content)
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Code: "0",
|
|
|
Msg: "生成成功",
|
|
|
})
|
|
|
}
|