diff --git a/README.md b/README.md index 191f875..1656228 100644 --- a/README.md +++ b/README.md @@ -40,5 +40,6 @@ 确保安装了所需的依赖,然后运行以下命令: ```bash -.\cmd_db.bat HelloWorld -.\cmd_dao.bat HelloWorld \ No newline at end of file +.\cmd_db.bat hello_world ---> 自动生成模型类 +.\cmd_dao.bat hello_world ---> 自动生成接口类 +cmd_implement.bat hello_world ---> 自动生成实现类 \ No newline at end of file diff --git a/cmd_dao.bat b/cmd_dao.bat index b1d17a8..bb51c63 100644 --- a/cmd_dao.bat +++ b/cmd_dao.bat @@ -3,12 +3,14 @@ setlocal set "BasePath=./" -REM 假设已经提供了接口名作为参数 -set "InterfaceName=%~1" +REM 假设已经提供了文件名作为参数 +set "FileName=%~1" -REM 将接口名转换为小写并设置最终文件名 -for /f "delims=" %%i in ('powershell -Command "('%InterfaceName%').ToLower()"') do set "LowerInterfaceName=%%i" -set "FinalFile=%BasePath%src\dao\%LowerInterfaceName%_dao.go" +REM 将参数设置最终文件名 +set "FinalFile=%BasePath%src\dao\%FileName%_dao.go" + +REM 将文件名转换成大驼峰格式并设置成最终接口名 +for /f "delims=" %%i in ('powershell -File "%BasePath%etc\ps\ConvertToUpperCase.ps1" -inputString "%FileName%"') do set "InterfaceName=%%i" REM 使用 PowerShell 替换接口名称,并指定 UTF-8 编码 powershell -Command "(Get-Content '%BasePath%etc\template\template_interface.tpl') -replace 'DemoInterface', '%InterfaceName%' | Out-File -FilePath '%BasePath%temp_interface.go' -Encoding UTF8" @@ -16,5 +18,6 @@ powershell -Command "(Get-Content '%BasePath%etc\template\template_interface.tpl REM 如果需要,将临时文件重命名为最终文件(取决于move Y?N) move /Y "%BasePath%temp_interface.go" "%FinalFile%" +echo Interface file %FileName%_dao.go generated successfully. + endlocal -echo Interface file %LowerInterfaceName%_dao.go generated successfully. \ No newline at end of file diff --git a/cmd_implement.bat b/cmd_implement.bat new file mode 100644 index 0000000..74a7ac4 --- /dev/null +++ b/cmd_implement.bat @@ -0,0 +1,23 @@ +@echo off +setlocal + +set "BasePath=./" + +REM 假设已经提供了文件名作为参数 +set "FileName=%~1" + +REM 将参数设置最终文件名 +set "FinalFile=%BasePath%src\implement\%FileName%_db.go" + +REM 将文件名转换成大驼峰格式并设置成最终实现类名 +for /f "delims=" %%i in ('powershell -File "%BasePath%etc\ps\ConvertToUpperCase.ps1" -inputString "%FileName%"') do set "ImplementName=%%i" + +REM 使用 PowerShell 替换接口名称,并指定 UTF-8 编码 +powershell -Command "(Get-Content '%BasePath%etc\template\template_implement.tpl') -replace 'DemoImplement', '%ImplementName%' | Out-File -FilePath '%BasePath%temp_implement.go' -Encoding UTF8" + +REM 如果需要,将临时文件重命名为最终文件(取决于move Y?N) +move /Y "%BasePath%temp_implement.go" "%FinalFile%" + +echo Implement file %FileName%_dao.go generated successfully. + +endlocal diff --git a/etc/db_tpl/struct.go.tpl b/etc/db_tpl/struct.go.tpl index 74b2896..476efa2 100644 --- a/etc/db_tpl/struct.go.tpl +++ b/etc/db_tpl/struct.go.tpl @@ -1,17 +1,9 @@ -package {{.Models}} +@echo off +setlocal -{{$ilen := len .Imports}} -{{if gt $ilen 0}} -import ( - {{range .Imports}}"{{.}}"{{end}} -) -{{end}} +set "inputString=hello_world" +for /f "delims=" %%i in ('powershell -File "ConvertToUpperCase.ps1" -inputString "%inputString%"') do set "outputVar=%%i" -{{range .Tables}} -type {{Mapper .Name}} struct { -{{$table := .}} -{{range .ColumnsSeq}}{{$col := $table.GetColumn .}} {{Mapper $col.Name}} {{Type $col}} {{Tag $table $col}} -{{end}} -} -{{end}} +echo %outputVar% +endlocal \ No newline at end of file diff --git a/etc/ps/ConvertToUpperCase.ps1 b/etc/ps/ConvertToUpperCase.ps1 new file mode 100644 index 0000000..9a61727 --- /dev/null +++ b/etc/ps/ConvertToUpperCase.ps1 @@ -0,0 +1,9 @@ +param($inputString) +$words = $inputString.Split('_') +$outputString = "" +foreach ($word in $words) { + $outputString += $word.Substring(0,1).ToUpper() + $word.Substring(1).ToLower() + "" +} +$outputString = $outputString.TrimEnd() +$outputString -replace ' ', '' # 如果想要没有空格的字符串,取消注释这行代码 +$outputString \ No newline at end of file diff --git a/etc/template/template_implement.tpl b/etc/template/template_implement.tpl new file mode 100644 index 0000000..5a20763 --- /dev/null +++ b/etc/template/template_implement.tpl @@ -0,0 +1,14 @@ +package implement + +import ( + "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/dao" + "xorm.io/xorm" +) + +type DemoImplementDb struct { + Db *xorm.Engine +} + +func NewDemoImplementDb(engine *xorm.Engine) dao.DemoImplementDao { + return &DemoImplementDb{Db: engine} +} \ No newline at end of file diff --git a/src/dao/happy_happy_orchard_seed_dao.go b/src/dao/happy_orchard_seed_dao.go similarity index 62% rename from src/dao/happy_happy_orchard_seed_dao.go rename to src/dao/happy_orchard_seed_dao.go index b4c8448..f020766 100644 --- a/src/dao/happy_happy_orchard_seed_dao.go +++ b/src/dao/happy_orchard_seed_dao.go @@ -1,8 +1,6 @@ package dao -import ( - "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" -) +import "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" type HappyOrchardSeedDao interface { GetHappyOrchardSeed(id int) (m *models.HappyOrchardSeed, err error) diff --git a/src/dao/hello_world_dao.go b/src/dao/hello_world_dao.go new file mode 100644 index 0000000..5311b48 --- /dev/null +++ b/src/dao/hello_world_dao.go @@ -0,0 +1,5 @@ +package dao + +type HelloWorldDao interface { + //TODO:: You can add specific method definitions here +} diff --git a/src/implement/demo_db.go b/src/implement/demo_db.go new file mode 100644 index 0000000..69dd68d --- /dev/null +++ b/src/implement/demo_db.go @@ -0,0 +1,14 @@ +package implement + +import ( + "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/dao" + "xorm.io/xorm" +) + +type DemoDb struct { + Db *xorm.Engine +} + +func NewDemoDb(engine *xorm.Engine) dao.DemoDao { + return &DemoDb{Db: engine} +} diff --git a/src/implement/happy_orchard_reward_db.go b/src/implement/happy_orchard_reward_db.go index 7991404..9aac577 100644 --- a/src/implement/happy_orchard_reward_db.go +++ b/src/implement/happy_orchard_reward_db.go @@ -7,15 +7,15 @@ import ( "xorm.io/xorm" ) -type happyOrchardRewardDb struct { +type HappyOrchardRewardDb struct { Db *xorm.Engine } func NewHappyOrchardRewardDb(engine *xorm.Engine) dao.HappyOrchardRewardDao { - return &happyOrchardRewardDb{Db: engine} + return &HappyOrchardRewardDb{Db: engine} } -func (h happyOrchardRewardDb) GetHappyOrchardReward(id int) (m *models.HappyOrchardReward, err error) { +func (h HappyOrchardRewardDb) GetHappyOrchardReward(id int) (m *models.HappyOrchardReward, err error) { m = new(models.HappyOrchardReward) has, err := h.Db.Where("id =?", id).Get(m) if err != nil { diff --git a/src/implement/happy_orchard_reward_exchange_records_db.go b/src/implement/happy_orchard_reward_exchange_records_db.go index 96f3236..25ab622 100644 --- a/src/implement/happy_orchard_reward_exchange_records_db.go +++ b/src/implement/happy_orchard_reward_exchange_records_db.go @@ -7,15 +7,15 @@ import ( "xorm.io/xorm" ) -type happyOrchardRewardExchangeRecordsDb struct { +type HappyOrchardRewardExchangeRecordsDb struct { Db *xorm.Engine } -func NewHappyOrchardRewardExchangeRecordsDb123456(engine *xorm.Engine) dao.HappyOrchardRewardExchangeRecordsDao { - return &happyOrchardRewardExchangeRecordsDb{Db: engine} +func NewHappyOrchardRewardExchangeRecordsDb(engine *xorm.Engine) dao.HappyOrchardRewardExchangeRecordsDao { + return &HappyOrchardRewardExchangeRecordsDb{Db: engine} } -func (h happyOrchardRewardExchangeRecordsDb) GetHappyOrchardRewardExchangeRecords(id int) (m *models.HappyOrchardRewardExchangeRecords, err error) { +func (h HappyOrchardRewardExchangeRecordsDb) GetHappyOrchardRewardExchangeRecords(id int) (m *models.HappyOrchardRewardExchangeRecords, err error) { //TODO implement me m = new(models.HappyOrchardRewardExchangeRecords) has, err := h.Db.Where("id =?", id).Get(m) @@ -28,7 +28,7 @@ func (h happyOrchardRewardExchangeRecordsDb) GetHappyOrchardRewardExchangeRecord return m, nil } -func (h happyOrchardRewardExchangeRecordsDb) FindHappyOrchardRewardExchangeRecordsByUid(uid int) (mm *[]models.HappyOrchardRewardExchangeRecords, err error) { +func (h HappyOrchardRewardExchangeRecordsDb) FindHappyOrchardRewardExchangeRecordsByUid(uid int) (mm *[]models.HappyOrchardRewardExchangeRecords, err error) { //TODO implement me var m []models.HappyOrchardRewardExchangeRecords if err := h.Db.Where("uid =?", uid).Desc("id").Find(&m); err != nil { diff --git a/src/implement/happy_orchard_seed_db.go b/src/implement/happy_orchard_seed_db.go index 751b875..dfd208d 100644 --- a/src/implement/happy_orchard_seed_db.go +++ b/src/implement/happy_orchard_seed_db.go @@ -7,15 +7,15 @@ import ( "xorm.io/xorm" ) -type happyOrchardSeedDb struct { +type HappyOrchardSeedDb struct { Db *xorm.Engine } func NewHappyOrchardSeedDb(engine *xorm.Engine) dao.HappyOrchardSeedDao { - return &happyOrchardSeedDb{Db: engine} + return &HappyOrchardSeedDb{Db: engine} } -func (h happyOrchardSeedDb) GetHappyOrchardSeed(id int) (m *models.HappyOrchardSeed, err error) { +func (h HappyOrchardSeedDb) GetHappyOrchardSeed(id int) (m *models.HappyOrchardSeed, err error) { m = new(models.HappyOrchardSeed) has, err := h.Db.Where("id =?", id).Get(m) if err != nil { diff --git a/src/implement/hello_world_db.go b/src/implement/hello_world_db.go new file mode 100644 index 0000000..bab6b53 --- /dev/null +++ b/src/implement/hello_world_db.go @@ -0,0 +1,14 @@ +package implement + +import ( + "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/dao" + "xorm.io/xorm" +) + +type HelloWorldDb struct { + Db *xorm.Engine +} + +func NewHelloWorldDb(engine *xorm.Engine) dao.HelloWorldDao { + return &HelloWorldDb{Db: engine} +} diff --git a/src/models/happy_orchard_basic_setting.go b/src/models/happy_orchard_basic_setting.go index f2d74d5..730dc10 100644 --- a/src/models/happy_orchard_basic_setting.go +++ b/src/models/happy_orchard_basic_setting.go @@ -29,7 +29,6 @@ type HappyOrchardBasicSetting struct { UpgradeRewardWaterDroplet int `json:"upgrade_reward_water_droplet" xorm:"not null default 0 comment('升级奖励水滴') INT(11)"` ReplaceSeedNums int `json:"replace_seed_nums" xorm:"not null default 0 comment('更换种子次数') INT(11)"` StageNameCustom string `json:"stage_name_custom" xorm:"not null comment('阶段自定义') TEXT"` - LevelRules string `json:"level_rules" xorm:"not null comment('等级规则') TEXT"` VirtualRewardIsAutoSend int `json:"virtual_reward_is_auto_send" xorm:"not null default 0 comment('虚拟奖品是否自动发放(1:是 2:否)') TINYINT(1)"` CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"` UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"` diff --git a/src/models/happy_orchard_seed.go b/src/models/happy_orchard_seed.go index 11c79ba..482aa37 100644 --- a/src/models/happy_orchard_seed.go +++ b/src/models/happy_orchard_seed.go @@ -1,12 +1,18 @@ package models type HappyOrchardSeed struct { - Id int `json:"id" xorm:"not null pk autoincr comment('自增id') INT(11)"` - Name string `json:"name" xorm:"not null default '' comment('名称') VARCHAR(255)"` - WaterNums int `json:"water_nums" xorm:"not null default 0 comment('所需水滴数') INT(11)"` - SeedImgUrl string `json:"seed_img_url" xorm:"not null default '' comment('种子图片地址') VARCHAR(255)"` - SeedMatureImgUrl string `json:"seed_mature_img_url" xorm:"not null default '' comment('种子成熟后图片地址') VARCHAR(255)"` - Sort int `json:"sort" xorm:"not null default 0 comment('排序') INT(11)"` - CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('创建时间') DATETIME"` - UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('更新时间') DATETIME"` + Id int `json:"id" xorm:"not null pk autoincr comment('自增id') INT(11)"` + Name string `json:"name" xorm:"not null default '' comment('名称') VARCHAR(255)"` + WaterNums int `json:"water_nums" xorm:"not null default 0 comment('所需水滴数') INT(11)"` + SeedImgUrl string `json:"seed_img_url" xorm:"not null default '' comment('种子图片地址') VARCHAR(255)"` + SeedMatureImgUrl string `json:"seed_mature_img_url" xorm:"not null default '' comment('种子成熟后图片地址') VARCHAR(255)"` + Sort int `json:"sort" xorm:"not null default 0 comment('排序') INT(11)"` + NeedWatersNumForStage0 int `json:"need_waters_num_for_stage_0" xorm:"not null default 0 comment('阶段1所需水滴数') INT(11)"` + NeedWatersNumForStage1 int `json:"need_waters_num_for_stage_1" xorm:"not null default 0 comment('阶段2所需水滴数') INT(11)"` + NeedWatersNumForStage2 int `json:"need_waters_num_for_stage_2" xorm:"not null default 0 comment('阶段3所需水滴数') INT(11)"` + NeedWatersNumForStage3 int `json:"need_waters_num_for_stage_3" xorm:"not null default 0 comment('阶段4所需水滴数') INT(11)"` + NeedWatersNumForStage4 int `json:"need_waters_num_for_stage_4" xorm:"not null default 0 comment('阶段5所需水滴数') INT(11)"` + NeedWatersNumForStage5 int `json:"need_waters_num_for_stage_5" xorm:"not null default 0 comment('阶段6所需水滴数') INT(11)"` + CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('创建时间') DATETIME"` + UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('更新时间') DATETIME"` }