From a6c5e581e3861fd3ac42d025e3261ec81008c6d3 Mon Sep 17 00:00:00 2001 From: PandaGoAdmin <18610165312@163.com> Date: Thu, 14 Jul 2022 18:01:54 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/system/api/tenant.go | 100 +++++++++++++++++++++++++++++++++ apps/system/entity/role.go | 9 ++- apps/system/entity/tenant.go | 24 ++++++++ apps/system/router/tenant.go | 46 +++++++++++++++ apps/system/services/tenant.go | 81 ++++++++++++++++++++++++++ base/config/db.go | 2 +- config.yml | 8 +-- initialize/table.go | 1 + 8 files changed, 261 insertions(+), 10 deletions(-) create mode 100644 apps/system/api/tenant.go create mode 100644 apps/system/entity/tenant.go create mode 100644 apps/system/router/tenant.go create mode 100644 apps/system/services/tenant.go diff --git a/apps/system/api/tenant.go b/apps/system/api/tenant.go new file mode 100644 index 0000000..83299ff --- /dev/null +++ b/apps/system/api/tenant.go @@ -0,0 +1,100 @@ +package api + +/** + * @Description + * @Author 熊猫 + * @Date 2022/7/14 17:55 + **/ +import ( + "pandax/apps/system/entity" + "pandax/apps/system/services" + "pandax/base/ctx" + "pandax/base/ginx" + "pandax/base/utils" +) + +type SysTenantsApi struct { + SysTenantsApp services.SysTenantsModel +} + +// @Summary SysTenants列表数据 +// @Tags SysTenants +// @Param pageSize query int false "页条数" +// @Param pageNum query int false "页码" +// @Success 200 {string} string "{"code": 200, "data": [...]}" +// @Router /admin/sysTenants/list [get] +// @Security +func (p *SysTenantsApi) GetSysTenantsList(rc *ctx.ReqCtx) { + data := entity.SysTenants{} + pageNum := ginx.QueryInt(rc.GinCtx, "pageNum", 1) + pageSize := ginx.QueryInt(rc.GinCtx, "pageSize", 10) + + list, total := p.SysTenantsApp.FindListPage(pageNum, pageSize, data) + + rc.ResData = map[string]interface{}{ + "data": list, + "total": total, + "pageNum": pageNum, + "pageSize": pageSize, + } +} + +// @Summary 获取SysTenants +// @Description 获取JSON +// @Tags SysTenants +// @Param tenantId path int true "tenantId" +// @Success 200 {string} string "{"code": 200, "data": [...]}" +// @Router /admin/sysTenants/{tenantId} [get] +// @Security +func (p *SysTenantsApi) GetSysTenants(rc *ctx.ReqCtx) { + tenantId := ginx.PathParamInt(rc.GinCtx, "tenantId") + p.SysTenantsApp.FindOne(int64(tenantId)) +} + +// @Summary 添加SysTenants +// @Description 获取JSON +// @Tags SysTenants +// @Accept application/json +// @Product application/json +// @Param data body entity.SysTenants true "data" +// @Success 200 {string} string "{"code": 200, "message": "添加成功"}" +// @Success 200 {string} string "{"code": 400, "message": "添加失败"}" +// @Router /admin/sysTenants [post] +// @Security X-TOKEN +func (p *SysTenantsApi) InsertSysTenants(rc *ctx.ReqCtx) { + var data entity.SysTenants + ginx.BindJsonAndValid(rc.GinCtx, &data) + + p.SysTenantsApp.Insert(data) +} + +// @Summary 修改SysTenants +// @Description 获取JSON +// @Tags SysTenants +// @Accept application/json +// @Product application/json +// @Param data body entity.SysTenants true "body" +// @Success 200 {string} string "{"code": 200, "message": "添加成功"}" +// @Success 200 {string} string "{"code": 400, "message": "添加失败"}" +// @Router /admin/sysTenants [put] +// @Security X-TOKEN +func (p *SysTenantsApi) UpdateSysTenants(rc *ctx.ReqCtx) { + var data entity.SysTenants + ginx.BindJsonAndValid(rc.GinCtx, &data) + + p.SysTenantsApp.Update(data) +} + +// @Summary 删除SysTenants +// @Description 删除数据 +// @Tags SysTenants +// @Param tenantId path string true "tenantId" +// @Success 200 {string} string "{"code": 200, "message": "删除成功"}" +// @Success 200 {string} string "{"code": 400, "message": "删除失败"}" +// @Router /admin/sysTenants/{tenantId} [delete] +func (p *SysTenantsApi) DeleteSysTenants(rc *ctx.ReqCtx) { + + tenantId := rc.GinCtx.Param("tenantId") + tenantIds := utils.IdsStrToIdsIntGroup(tenantId) + p.SysTenantsApp.Delete(tenantIds) +} diff --git a/apps/system/entity/role.go b/apps/system/entity/role.go index b1660dd..4d7b309 100644 --- a/apps/system/entity/role.go +++ b/apps/system/entity/role.go @@ -6,20 +6,19 @@ import ( ) type SysRole struct { + model.BaseModel RoleId int64 `json:"roleId" gorm:"primary_key;AUTO_INCREMENT"` RoleName string `json:"roleName" gorm:"type:varchar(128);comment:角色名称"` Status string `json:"status" gorm:"type:varchar(1);comment:状态"` RoleKey string `json:"roleKey" gorm:"type:varchar(128);comment:角色代码"` RoleSort int64 `json:"roleSort" gorm:"type:int;comment:角色排序"` DataScope string `json:"dataScope" gorm:"type:varchar(1);comment:数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)"` - Flag string `json:"flag" gorm:"type:varchar(128);comment:删除标识"` - CreateBy string `json:"createBy" gorm:"type:varchar(128);"` - UpdateBy string `json:"updateBy" gorm:"type:varchar(128);"` - Remark string `json:"remark" gorm:"type:varchar(255);"` + CreateBy string `json:"createBy" gorm:"type:varchar(128);comment:创建人"` + UpdateBy string `json:"updateBy" gorm:"type:varchar(128);comment:修改人"` + Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` ApiIds []casbin.CasbinRule `json:"apiIds" gorm:"-"` MenuIds []int64 `json:"menuIds" gorm:"-"` DeptIds []int64 `json:"deptIds" gorm:"-"` - model.BaseModel } type MenuIdList struct { diff --git a/apps/system/entity/tenant.go b/apps/system/entity/tenant.go new file mode 100644 index 0000000..8c0cb05 --- /dev/null +++ b/apps/system/entity/tenant.go @@ -0,0 +1,24 @@ +package entity + +import ( + "pandax/base/model" + "time" +) + +/** + * @Description + * @Author 熊猫 + * @Date 2022/7/14 16:14 + **/ + +type SysTenants struct { + model.BaseModel + TenantId int64 `json:"tenantId" gorm:"primary_key;AUTO_INCREMENT"` + TenantName string `json:"tenantName" gorm:"type:varchar(255);comment:租户名"` + Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` + ExpireTime time.Time `json:"expireTime" gorm:"comment:过期时间"` +} + +func (SysTenants) TableName() string { + return "sys_tenants" +} diff --git a/apps/system/router/tenant.go b/apps/system/router/tenant.go new file mode 100644 index 0000000..5e0712d --- /dev/null +++ b/apps/system/router/tenant.go @@ -0,0 +1,46 @@ +package router + +/** + * @Description + * @Author 熊猫 + * @Date 2022/7/14 17:52 + **/ + +import ( + "github.com/gin-gonic/gin" + "pandax/apps/system/api" + "pandax/apps/system/services" + "pandax/base/ctx" +) + +func InitSysTenantRouter(router *gin.RouterGroup) { + s := &api.SysTenantsApi{ + SysTenantsApp: services.SysTenantModelDao, + } + routerGroup := router.Group("SysTenant") + + SysTenantListLog := ctx.NewLogInfo("获取SysTenant分页列表") + routerGroup.GET("list", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(SysTenantListLog).Handle(s.GetSysTenantsList) + }) + + SysTenantLog := ctx.NewLogInfo("获取SysTenant信息") + routerGroup.GET(":tenantId", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(SysTenantLog).Handle(s.GetSysTenants) + }) + + insertSysTenantLog := ctx.NewLogInfo("添加SysTenant信息") + routerGroup.POST("", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(insertSysTenantLog).Handle(s.InsertSysTenants) + }) + + updateSysTenantLog := ctx.NewLogInfo("修改SysTenant信息") + routerGroup.PUT("", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(updateSysTenantLog).Handle(s.UpdateSysTenants) + }) + + deleteSysTenantLog := ctx.NewLogInfo("删除SysTenant信息") + routerGroup.DELETE(":tenantId", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(deleteSysTenantLog).Handle(s.DeleteSysTenants) + }) +} diff --git a/apps/system/services/tenant.go b/apps/system/services/tenant.go new file mode 100644 index 0000000..94097b2 --- /dev/null +++ b/apps/system/services/tenant.go @@ -0,0 +1,81 @@ +package services + +/** + * @Description + * @Author 熊猫 + * @Date 2022/7/14 17:49 + **/ +import ( + "pandax/apps/system/entity" + "pandax/base/biz" + "pandax/base/global" +) + +type ( + SysTenantsModel interface { + Insert(data entity.SysTenants) *entity.SysTenants + FindOne(tenantId int64) *entity.SysTenants + FindListPage(page, pageSize int, data entity.SysTenants) (*[]entity.SysTenants, int64) + FindList(data entity.SysTenants) *[]entity.SysTenants + Update(data entity.SysTenants) *entity.SysTenants + Delete(tenantIds []int64) + } + + SysTenantModelImpl struct { + table string + } +) + +var SysTenantModelDao SysTenantsModel = &SysTenantModelImpl{ + table: `sys_tenants`, +} + +func (m *SysTenantModelImpl) Insert(data entity.SysTenants) *entity.SysTenants { + err := global.Db.Table(m.table).Create(&data).Error + biz.ErrIsNil(err, "添加SysTenant失败") + return &data +} + +func (m *SysTenantModelImpl) FindOne(tenantId int64) *entity.SysTenants { + resData := new(entity.SysTenants) + err := global.Db.Table(m.table).Where("tenant_id = ?", tenantId).First(resData).Error + biz.ErrIsNil(err, "查询SysTenant失败") + return resData +} + +func (m *SysTenantModelImpl) FindListPage(page, pageSize int, data entity.SysTenants) (*[]entity.SysTenants, int64) { + list := make([]entity.SysTenants, 0) + var total int64 = 0 + offset := pageSize * (page - 1) + db := global.Db.Table(m.table) + // 此处填写 where参数判断 + if data.TenantId != 0 { + db = db.Where("tenant_id = ?", data.TenantId) + } + db.Where("delete_time IS NULL") + err := db.Count(&total).Error + err = db.Order("create_time").Limit(pageSize).Offset(offset).Find(&list).Error + biz.ErrIsNil(err, "查询SysTenant分页列表失败") + return &list, total +} + +func (m *SysTenantModelImpl) FindList(data entity.SysTenants) *[]entity.SysTenants { + list := make([]entity.SysTenants, 0) + db := global.Db.Table(m.table) + // 此处填写 where参数判断 + if data.TenantId != 0 { + db = db.Where("tenant_id = ?", data.TenantId) + } + db.Where("delete_time IS NULL") + biz.ErrIsNil(db.Order("create_time").Find(&list).Error, "查询SysTenant列表失败") + return &list +} + +func (m *SysTenantModelImpl) Update(data entity.SysTenants) *entity.SysTenants { + biz.ErrIsNil(global.Db.Table(m.table).Updates(&data).Error, "修改SysTenant失败") + return &data +} + +func (m *SysTenantModelImpl) Delete(tenantIds []int64) { + biz.ErrIsNil(global.Db.Table(m.table).Delete(&entity.SysTenants{}, "tenant_id in (?)", tenantIds).Error, "删除SysTenant失败") +} diff --git a/base/config/db.go b/base/config/db.go index c211255..c2a2a26 100644 --- a/base/config/db.go +++ b/base/config/db.go @@ -29,5 +29,5 @@ type Postgresql struct { } func (m *Postgresql) PgDsn() string { - return fmt.Sprintf("host=%s port=%d user=%s"+" password=%s dbname=%s sslmode=disable", m.Host, m.Port, m.Username, m.Password, m.Dbname) + return fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", m.Host, m.Port, m.Username, m.Password, m.Dbname) } diff --git a/config.yml b/config.yml index 08d87ec..0a241be 100644 --- a/config.yml +++ b/config.yml @@ -13,7 +13,7 @@ server: rate-num: 100 db-type: mysql # 是否开启数据库表初始化 - isInitTable: false + isInitTable: true excel-dir: ./resource/excel/ tls: enable: false @@ -40,9 +40,9 @@ redis: port: 6379 mysql: - host: 127.0.0.1 - username: root - password: 123456 + host: 47.104.252.2 + username: pandax + password: pandax db-name: pandax config: charset=utf8&loc=Local&parseTime=true diff --git a/initialize/table.go b/initialize/table.go index 04cc09b..20ef76d 100644 --- a/initialize/table.go +++ b/initialize/table.go @@ -30,6 +30,7 @@ func InitTable() { logEntity.LogOper{}, logEntity.LogJob{}, entity.SysUser{}, + entity.SysTenants{}, entity.SysRole{}, entity.SysMenu{}, entity.SysPost{},