Compare commits

...

10 Commits

Author SHA1 Message Date
root c2563fdc74 Merge branch 'main' into pms 2024-08-03 18:13:04 +08:00
root 61b5089e13 pms init 2024-08-03 18:01:19 +08:00
pixelmaxQM 3c3d9487d0 fixed:修复复用代码无法改变主键的bug 2024-08-03 15:08:25 +08:00
PiexlMax(奇淼 15b5083d17
Update README.md 2024-08-03 14:55:11 +08:00
pixelMax(奇淼 e25cafe2b4 fixed: 调整重复创建代码的提示 2024-08-02 14:35:16 +08:00
pixelMax(奇淼 b5c44e47ff feature: 调整baseUrl方法 2024-08-01 18:24:11 +08:00
pixelMax(奇淼 5d04b8deea fixed: 调整autoCode标签 2024-08-01 14:20:18 +08:00
pixelMax(奇淼 1207291249 fixed: 修复自动化模板多了}的问题 2024-08-01 14:08:05 +08:00
pixelMax(奇淼 06bf641e7a fixed: 修复自动化代码路径不匹配的bug 2024-07-31 18:09:12 +08:00
pixelMax(奇淼 ce764082b8 feature: 修改vite.config.js注释 2024-07-31 16:23:09 +08:00
11 changed files with 235 additions and 270 deletions

View File

@ -94,11 +94,9 @@ cd server
# 使用 go mod 并安装go依赖包 # 使用 go mod 并安装go依赖包
go generate go generate
# 编译 # 运行
go build -o server main.go (windows编译命令为go build -o server.exe main.go ) go run .
# 运行二进制
./server (windows运行命令为 server.exe)
``` ```
### 2.2 web项目 ### 2.2 web项目

View File

@ -76,7 +76,7 @@ func (a *AutoCodeTemplateApi) Create(c *gin.Context) {
err = autoCodeTemplateService.Create(c.Request.Context(), info) err = autoCodeTemplateService.Create(c.Request.Context(), info)
if err != nil { if err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err)) global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c) response.FailWithMessage(err.Error(), c)
} else { } else {
response.OkWithMessage("创建成功", c) response.OkWithMessage("创建成功", c)
} }

View File

@ -1,254 +1,221 @@
# github.com/flipped-aurora/gin-vue-admin/server Global Configuration aliyun-oss:
endpoint: yourEndpoint
# jwt configuration access-key-id: yourAccessKeyId
jwt: access-key-secret: yourAccessKeySecret
signing-key: qmPlus bucket-name: yourBucketName
expires-time: 7d bucket-url: yourBucketUrl
buffer-time: 1d base-path: yourBasePath
issuer: qmPlus autocode:
# zap logger configuration web: web/src
zap: root: /
level: info server: server
format: console module: github.com/flipped-aurora/gin-vue-admin/server
prefix: "[github.com/flipped-aurora/gin-vue-admin/server]" ai-path: ""
director: log aws-s3:
show-line: true bucket: xxxxx-10005608
encode-level: LowercaseColorLevelEncoder region: ap-shanghai
stacktrace-key: stacktrace endpoint: ""
log-in-console: true secret-id: your-secret-id
retention-day: -1 secret-key: your-secret-key
base-url: https://gin.vue.admin
# redis configuration path-prefix: github.com/flipped-aurora/gin-vue-admin/server
redis: s3-force-path-style: false
#是否使用redis集群模式 disable-ssl: false
useCluster: false
#使用集群模式addr和db默认无效
addr: 127.0.0.1:6379
password: ""
db: 0
clusterAddrs:
- "172.21.0.3:7000"
- "172.21.0.4:7001"
- "172.21.0.2:7002"
# mongo configuration
mongo:
coll: ''
options: ''
database: ''
username: ''
password: ''
auth-source: ''
min-pool-size: 0
max-pool-size: 100
socket-timeout-ms: 0
connect-timeout-ms: 0
is-zap: false
hosts:
- host: ''
port: ''
# email configuration
email:
to: xxx@qq.com
port: 465
from: xxx@163.com
host: smtp.163.com
is-ssl: true
secret: xxx
nickname: test
# system configuration
system:
env: local # 修改为public可以关闭路由日志输出
addr: 8888
db-type: mysql
oss-type: local # 控制oss选择走本地还是 七牛等其他仓 自行增加其他oss仓可以在 server/utils/upload/upload.go 中 NewOss函数配置
use-redis: false # 使用redis
use-mongo: false # 使用mongo
use-multipoint: false
# IP限制次数 一个小时15000次
iplimit-count: 15000
# IP限制一个小时
iplimit-time: 3600
# 路由全局前缀
router-prefix: ""
# captcha configuration
captcha: captcha:
key-long: 6 key-long: 4
img-width: 240 img-width: 240
img-height: 80 img-height: 80
open-captcha: 0 # 0代表一直开启大于0代表限制次数 open-captcha: 0
open-captcha-timeout: 3600 # open-captcha大于0时才生效 open-captcha-timeout: 3600
cloudflare-r2:
# mysql connect configuration bucket: xxxx0bucket
# 未初始化之前请勿手动修改数据库信息如果一定要手动初始化请看https://gin-vue-admin.com/docs/first_master base-url: https://gin.vue.admin.com
mysql: path: uploads
path: "" account-id: xxx_account_id
port: "" access-key-id: xxx_key_id
config: "" secret-access-key: xxx_secret_key
db-name: "" cors:
username: "" mode: strict-whitelist
password: "" whitelist:
max-idle-conns: 10 - allow-origin: example1.com
max-open-conns: 100 allow-methods: POST, GET
log-mode: "" allow-headers: Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id
log-zap: false expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
allow-credentials: true
# pgsql connect configuration - allow-origin: example2.com
# 未初始化之前请勿手动修改数据库信息如果一定要手动初始化请看https://gin-vue-admin.com/docs/first_master allow-methods: GET, POST
pgsql: allow-headers: content-type
path: "" expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
port: "" allow-credentials: true
config: ""
db-name: ""
username: ""
password: ""
max-idle-conns: 10
max-open-conns: 100
log-mode: ""
log-zap: false
oracle:
path: ""
port: ""
config: ""
db-name: ""
username: ""
password: ""
max-idle-conns: 10
max-open-conns: 100
log-mode: ""
log-zap: false
mssql:
path: ""
port: ""
config: ""
db-name: ""
username: ""
password: ""
max-idle-conns: 10
max-open-conns: 100
log-mode: ""
log-zap: false
sqlite:
path: ""
port: ""
config: ""
db-name: ""
username: ""
password: ""
max-idle-conns: 10
max-open-conns: 100
log-mode: ""
log-zap: false
db-list: db-list:
- disable: true # 是否禁用 - type: ""
type: "" # 数据库的类型,目前支持mysql、pgsql、mssql、oracle alias-name: ""
alias-name: "" # 数据库的名称,注意: alias-name 需要在db-list中唯一 prefix: ""
path: "" port: ""
config: ""
db-name: ""
username: ""
password: ""
path: ""
engine: ""
log-mode: ""
max-idle-conns: 10
max-open-conns: 100
singular: false
log-zap: false
disable: true
disk-list:
- mount-point: /
email:
to: xxx@qq.com
from: xxx@163.com
host: smtp.163.com
secret: xxx
nickname: test
port: 465
is-ssl: true
excel:
dir: ./resource/excel/
hua-wei-obs:
path: you-path
bucket: you-bucket
endpoint: you-endpoint
access-key: you-access-key
secret-key: you-secret-key
jwt:
signing-key: 12f67d92-c6b2-495e-b921-81b069e6db57
expires-time: 7d
buffer-time: 1d
issuer: qmPlus
local:
path: uploads/file
store-path: uploads/file
mongo:
coll: ""
options: ""
database: ""
username: ""
password: ""
auth-source: ""
min-pool-size: 0
max-pool-size: 100
socket-timeout-ms: 0
connect-timeout-ms: 0
is-zap: false
hosts:
- host: ""
port: ""
mssql:
prefix: ""
port: "" port: ""
config: "" config: ""
db-name: "" db-name: ""
username: "" username: ""
password: "" password: ""
path: ""
engine: ""
log-mode: ""
max-idle-conns: 10 max-idle-conns: 10
max-open-conns: 100 max-open-conns: 100
log-mode: "" singular: false
log-zap: false
mysql:
prefix: ""
port: "3306"
config: charset=utf8mb4&parseTime=True&loc=Local
db-name: pms
username: root
password: "123456"
path: centos.docker
engine: ""
log-mode: error
max-idle-conns: 10
max-open-conns: 100
singular: false
log-zap: false
oracle:
prefix: ""
port: ""
config: ""
db-name: ""
username: ""
password: ""
path: ""
engine: ""
log-mode: ""
max-idle-conns: 10
max-open-conns: 100
singular: false
log-zap: false
pgsql:
prefix: ""
port: ""
config: ""
db-name: ""
username: ""
password: ""
path: ""
engine: ""
log-mode: ""
max-idle-conns: 10
max-open-conns: 100
singular: false
log-zap: false log-zap: false
# local configuration
local:
path: uploads/file
store-path: uploads/file
# autocode configuration
autocode:
web: web/src
root: "" # root 自动适配项目根目录, 请不要手动配置,他会在项目加载的时候识别出根路径
server: server
module: 'github.com/flipped-aurora/gin-vue-admin/server'
ai-path: "" # AI服务路径
# qiniu configuration (请自行七牛申请对应的 公钥 私钥 bucket 和 域名地址)
qiniu: qiniu:
zone: ZoneHuaDong zone: ZoneHuaDong
bucket: "" bucket: ""
img-path: "" img-path: ""
use-https: false access-key: ""
access-key: "" secret-key: ""
secret-key: "" use-https: false
use-cdn-domains: false use-cdn-domains: false
redis:
# aliyun oss configuration addr: 127.0.0.1:6379
aliyun-oss: password: ""
endpoint: yourEndpoint db: 0
access-key-id: yourAccessKeyId useCluster: false
access-key-secret: yourAccessKeySecret clusterAddrs:
bucket-name: yourBucketName - 172.21.0.3:7000
bucket-url: yourBucketUrl - 172.21.0.4:7001
base-path: yourBasePath - 172.21.0.2:7002
sqlite:
# tencent cos configuration prefix: ""
port: ""
config: ""
db-name: ""
username: ""
password: ""
path: ""
engine: ""
log-mode: ""
max-idle-conns: 10
max-open-conns: 100
singular: false
log-zap: false
system:
db-type: mysql
oss-type: local
router-prefix: ""
addr: 8888
iplimit-count: 15000
iplimit-time: 3600
use-multipoint: false
use-redis: false
use-mongo: false
tencent-cos: tencent-cos:
bucket: xxxxx-10005608 bucket: xxxxx-10005608
region: ap-shanghai region: ap-shanghai
secret-id: your-secret-id secret-id: your-secret-id
secret-key: your-secret-key secret-key: your-secret-key
base-url: https://gin.vue.admin base-url: https://gin.vue.admin
path-prefix: github.com/flipped-aurora/gin-vue-admin/server path-prefix: github.com/flipped-aurora/gin-vue-admin/server
zap:
# aws s3 configuration (minio compatible) level: info
aws-s3: prefix: '[pms]'
bucket: xxxxx-10005608 format: console
region: ap-shanghai director: log
endpoint: "" encode-level: LowercaseColorLevelEncoder
s3-force-path-style: false stacktrace-key: stacktrace
disable-ssl: false show-line: true
secret-id: your-secret-id log-in-console: true
secret-key: your-secret-key retention-day: -1
base-url: https://gin.vue.admin
path-prefix: github.com/flipped-aurora/gin-vue-admin/server
# cloudflare r2 configuration
cloudflare-r2:
bucket: xxxx0bucket
base-url: https://gin.vue.admin.com
path: uploads
account-id: xxx_account_id
access-key-id: xxx_key_id
secret-access-key: xxx_secret_key
# huawei obs configuration
hua-wei-obs:
path: you-path
bucket: you-bucket
endpoint: you-endpoint
access-key: you-access-key
secret-key: you-secret-key
# excel configuration
excel:
dir: ./resource/excel/
# disk usage configuration
disk-list:
- mount-point: "/"
# 跨域配置
# 需要配合 server/initialize/router.go -> `Router.Use(middleware.CorsByRules())` 使用
cors:
mode: strict-whitelist # 放行模式: allow-all, 放行全部; whitelist, 白名单模式, 来自白名单内域名的请求添加 cors 头; strict-whitelist 严格白名单模式, 白名单外的请求一律拒绝
whitelist:
- allow-origin: example1.com
allow-headers: Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id
allow-methods: POST, GET
expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
allow-credentials: true # 布尔值
- allow-origin: example2.com
allow-headers: content-type
allow-methods: GET, POST
expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
allow-credentials: true # 布尔值

View File

@ -12,18 +12,18 @@ import (
type AutoCode struct { type AutoCode struct {
Package string `json:"package"` Package string `json:"package"`
PackageT string `json:"-"` PackageT string `json:"-"`
TableName string `json:"tableName" example:"表名"` TableName string `json:"tableName" example:"表名"` // 表名
BusinessDB string `json:"businessDB" example:"业务数据库"` BusinessDB string `json:"businessDB" example:"业务数据库"` // 业务数据库
StructName string `json:"structName" example:"Struct名称"` StructName string `json:"structName" example:"Struct名称"` // Struct名称
PackageName string `json:"packageName" example:"文件名称"` PackageName string `json:"packageName" example:"文件名称"` // 文件名称
Description string `json:"description" example:"Struct中文名称"` Description string `json:"description" example:"Struct中文名称"` // Struct中文名称
Abbreviation string `json:"abbreviation" example:"Struct简称"` Abbreviation string `json:"abbreviation" example:"Struct简称"` // Struct简称
HumpPackageName string `json:"humpPackageName" example:"go文件名称"` HumpPackageName string `json:"humpPackageName" example:"go文件名称"` // go文件名称
GvaModel bool `json:"gvaModel" example:"是否使用gva默认Model"` GvaModel bool `json:"gvaModel" example:"false"` // 是否使用gva默认Model
AutoMigrate bool `json:"autoMigrate" example:"是否自动迁移表结构"` AutoMigrate bool `json:"autoMigrate" example:"false"` // 是否自动迁移表结构
AutoCreateResource bool `json:"autoCreateResource" example:"是否自动创建资源标识"` AutoCreateResource bool `json:"autoCreateResource" example:"false"` // 是否自动创建资源标识
AutoCreateApiToSql bool `json:"autoCreateApiToSql" example:"是否自动创建api"` AutoCreateApiToSql bool `json:"autoCreateApiToSql" example:"false"` // 是否自动创建api
AutoCreateMenuToSql bool `json:"autoCreateMenuToSql" example:"是否自动创建menu"` AutoCreateMenuToSql bool `json:"autoCreateMenuToSql" example:"false"` // 是否自动创建menu
Fields []*AutoCodeField `json:"fields"` Fields []*AutoCodeField `json:"fields"`
DictTypes []string `json:"-"` DictTypes []string `json:"-"`
FrontFields []*AutoCodeField `json:"-"` FrontFields []*AutoCodeField `json:"-"`

View File

@ -122,7 +122,7 @@ func ({{.Abbreviation}}Api *{{.StructName}}Api) Update{{.StructName}}(c *gin.Con
// @accept application/json // @accept application/json
// @Produce application/json // @Produce application/json
// @Param data query {{.Package}}.{{.StructName}} true "用id查询{{.Description}}" // @Param data query {{.Package}}.{{.StructName}} true "用id查询{{.Description}}"
// @Success 200 {object} response.Response{data={{.Package}}.{{.StructName}}},msg=string} "查询成功" // @Success 200 {object} response.Response{data={{.Package}}.{{.StructName}},msg=string} "查询成功"
// @Router /{{.Abbreviation}}/find{{.StructName}} [get] // @Router /{{.Abbreviation}}/find{{.StructName}} [get]
func ({{.Abbreviation}}Api *{{.StructName}}Api) Find{{.StructName}}(c *gin.Context) { func ({{.Abbreviation}}Api *{{.StructName}}Api) Find{{.StructName}}(c *gin.Context) {
{{.PrimaryField.FieldJson}} := c.Query("{{.PrimaryField.FieldJson}}") {{.PrimaryField.FieldJson}} := c.Query("{{.PrimaryField.FieldJson}}")

View File

@ -564,7 +564,7 @@ func (s *autoCodePackage) templates(ctx context.Context, entity model.SysAutoCod
code[four] = create code[four] = create
continue continue
} }
create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot(), "plugin", entity.PackageName, secondDirs[j].Name(), info.Abbreviation+filepath.Ext(strings.TrimSuffix(threeDirs[k].Name(), ext))) create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot(), "plugin", entity.PackageName, secondDirs[j].Name(), info.PackageName+filepath.Ext(strings.TrimSuffix(threeDirs[k].Name(), ext)))
code[four] = create code[four] = create
} }
default: default:

View File

@ -8,4 +8,4 @@ VITE_POSITION = close
VITE_EDITOR = vscode VITE_EDITOR = vscode
// VITE_EDITOR = webstorm 如果使用webstorm开发且要使用dom定位到代码行功能 请先自定添加 webstorm到环境变量 再将VITE_EDITOR值修改为webstorm // VITE_EDITOR = webstorm 如果使用webstorm开发且要使用dom定位到代码行功能 请先自定添加 webstorm到环境变量 再将VITE_EDITOR值修改为webstorm
// 如果使用docker-compose开发模式设置为下面的地址或本机主机IP // 如果使用docker-compose开发模式设置为下面的地址或本机主机IP
//VITE_BASE_PATH = http://177.7.0.12 VITE_BASE_PATH = http://172.18.0.8

View File

@ -12,8 +12,7 @@ export const createTemp = (data) => {
return service({ return service({
url: '/autoCode/createTemp', url: '/autoCode/createTemp',
method: 'post', method: 'post',
data, data
responseType: 'blob'
}) })
} }

View File

@ -121,5 +121,5 @@ export const setBodyPrimaryColor = ( primaryColor, darkMode ) =>{
const baseUrl = ref(import.meta.env.VITE_BASE_API) const baseUrl = ref(import.meta.env.VITE_BASE_API)
export const getBaseUrl = () => { export const getBaseUrl = () => {
return baseUrl.value === "/" ? "" : baseUrl.value + "/" return baseUrl.value === "/" ? "" : baseUrl.value
} }

View File

@ -1116,13 +1116,14 @@ const enterForm = async(isPreview) => {
return false return false
} }
form.value.humpPackageName = toSQLLine(form.value.packageName) form.value.humpPackageName = toSQLLine(form.value.packageName)
delete form.value.primaryField
if (isPreview) { if (isPreview) {
const data = await preview(form.value) const data = await preview(form.value)
preViewCode.value = data.data.autoCode preViewCode.value = data.data.autoCode
previewFlag.value = true previewFlag.value = true
} else { } else {
const data = await createTemp(form.value) const res = await createTemp(form.value)
if (data.headers?.success === 'false') { if (res.code !== 0) {
return return
} }
ElMessage({ ElMessage({

View File

@ -52,8 +52,8 @@ export default ({
} }
const config = { const config = {
base: '/', // index.html文件所在位置 base: '/', // 编译后js导入的资源路径
root: './', // js导入的资源路径src root: './', // index.html文件所在位置
publicDir: 'public', // 静态资源文件夹 publicDir: 'public', // 静态资源文件夹
resolve: { resolve: {
alias, alias,
@ -63,7 +63,7 @@ export default ({
}, },
server: { server: {
// 如果使用docker-compose开发模式设置为false // 如果使用docker-compose开发模式设置为false
open: true, open: false,
port: process.env.VITE_CLI_PORT, port: process.env.VITE_CLI_PORT,
proxy: { proxy: {
// 把key的路径代理到target位置 // 把key的路径代理到target位置