新增数据库主键处理

This commit is contained in:
2023-07-14 17:36:14 +08:00
parent 593ea49554
commit c9efce7bb6
28 changed files with 730 additions and 52 deletions
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// AdminAPI 后台-接口表
type AdminAPI struct {
Model
@@ -13,3 +19,17 @@ type AdminAPI struct {
func (m *AdminAPI) TableName() string {
return "gdxz_admin_api"
}
func (m *AdminAPI) BeforeCreate(tx *gorm.DB) error {
if m.APIID == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.APIID = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// AdminDept 后台-部门表
type AdminDept struct {
DeptId int64 `gorm:"column:dept_id;type:bigint(19);primary_key;comment:主键id" json:"dept_id"`
@@ -12,3 +18,17 @@ type AdminDept struct {
func (m *AdminDept) TableName() string {
return "gdxz_admin_dept"
}
func (m *AdminDept) BeforeCreate(tx *gorm.DB) error {
if m.DeptId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.DeptId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// AdminMenu 后台-菜单表
type AdminMenu struct {
Model
@@ -19,3 +25,17 @@ type AdminMenu struct {
func (m *AdminMenu) TableName() string {
return "gdxz_admin_menu"
}
func (m *AdminMenu) BeforeCreate(tx *gorm.DB) error {
if m.MenuId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.MenuId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// AdminPost 后台-岗位表
type AdminPost struct {
PostId int64 `gorm:"column:post_id;type:bigint(19);primary_key;comment:主键id" json:"post_id"`
@@ -11,3 +17,17 @@ type AdminPost struct {
func (m *AdminPost) TableName() string {
return "gdxz_admin_post"
}
func (m *AdminPost) BeforeCreate(tx *gorm.DB) error {
if m.PostId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.PostId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// AdminRole 后台-角色表
type AdminRole struct {
RoleId int64 `gorm:"column:role_id;type:bigint(19);primary_key;comment:主键id" json:"role_id"`
@@ -12,3 +18,17 @@ type AdminRole struct {
func (m *AdminRole) TableName() string {
return "gdxz_admin_role"
}
func (m *AdminRole) BeforeCreate(tx *gorm.DB) error {
if m.RoleId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.RoleId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// AdminUser 后台-用户表
type AdminUser struct {
Model
@@ -28,3 +34,17 @@ type AdminUser struct {
func (m *AdminUser) TableName() string {
return "gdxz_admin_user"
}
func (m *AdminUser) BeforeCreate(tx *gorm.DB) error {
if m.UserID == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.UserID = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// Area 地区表
type Area struct {
AreaId int64 `gorm:"column:area_id;type:bigint(19);primary_key;comment:地区编号" json:"area_id"`
@@ -12,3 +18,17 @@ type Area struct {
func (m *Area) TableName() string {
return "gdxz_area"
}
func (m *Area) BeforeCreate(tx *gorm.DB) error {
if m.AreaId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.AreaId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
type BasicBank struct {
BankId int64 `gorm:"column:bank_id;type:bigint(19);primary_key;comment:主键id" json:"bank_id"`
BankCode string `gorm:"column:bank_code;type:varchar(255);comment:银行编码" json:"bank_code"`
@@ -12,3 +18,17 @@ type BasicBank struct {
func (m *BasicBank) TableName() string {
return "gdxz_basic_bank"
}
func (m *BasicBank) BeforeCreate(tx *gorm.DB) error {
if m.BankId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.BankId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// DiseaseClassExpertise 疾病分类表-医生专长
type DiseaseClassExpertise struct {
ExpertiseId int64 `gorm:"column:expertise_id;type:bigint(19);primary_key;comment:主键id" json:"expertise_id"`
@@ -11,3 +17,17 @@ type DiseaseClassExpertise struct {
func (m *DiseaseClassExpertise) TableName() string {
return "gdxz_disease_class_expertise"
}
func (m *DiseaseClassExpertise) BeforeCreate(tx *gorm.DB) error {
if m.ExpertiseId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.ExpertiseId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// DoctorBankCard 医生银行卡
type DoctorBankCard struct {
BankCardId int64 `gorm:"column:bank_card_id;type:bigint(19);primary_key;comment:主键id" json:"bank_card_id"`
@@ -19,3 +25,17 @@ type DoctorBankCard struct {
func (m *DoctorBankCard) TableName() string {
return "gdxz_doctor_bank_card"
}
func (m *DoctorBankCard) BeforeCreate(tx *gorm.DB) error {
if m.BankCardId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.BankCardId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// DoctorExpertise 医生专长表
type DoctorExpertise struct {
DoctorExpertiseId int64 `gorm:"column:doctor_expertise_id;type:bigint(19);primary_key;comment:主键id" json:"doctor_expertise_id"`
@@ -11,3 +17,17 @@ type DoctorExpertise struct {
func (m *DoctorExpertise) TableName() string {
return "gdxz_doctor_expertise"
}
func (m *DoctorExpertise) BeforeCreate(tx *gorm.DB) error {
if m.DoctorExpertiseId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.DoctorExpertiseId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// DoctorIdenFail 医生身份审核失败原因表
type DoctorIdenFail struct {
IdenFailId int64 `gorm:"column:iden_fail_id;type:bigint(19);primary_key;comment:主键id" json:"iden_fail_id"`
@@ -12,3 +18,17 @@ type DoctorIdenFail struct {
func (m *DoctorIdenFail) TableName() string {
return "gdxz_doctor_iden_fail"
}
func (m *DoctorIdenFail) BeforeCreate(tx *gorm.DB) error {
if m.IdenFailId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.IdenFailId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// Hospital 医院表
type Hospital struct {
HospitalID int64 `gorm:"column:hospital_id;type:bigint(19);primary_key;comment:主键id" json:"hospital_id"`
@@ -24,3 +30,17 @@ type Hospital struct {
func (m *Hospital) TableName() string {
return "gdxz_hospital"
}
func (m *Hospital) BeforeCreate(tx *gorm.DB) error {
if m.HospitalID == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.HospitalID = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// HospitalDepartmentCustom 医院科室表-自定义
type HospitalDepartmentCustom struct {
DepartmentCustomId int64 `gorm:"column:department_custom_id;type:bigint(19);primary_key;comment:主键id" json:"department_custom_id"`
@@ -14,3 +20,17 @@ type HospitalDepartmentCustom struct {
func (m *HospitalDepartmentCustom) TableName() string {
return "gdxz_hospital_department_custom"
}
func (m *HospitalDepartmentCustom) BeforeCreate(tx *gorm.DB) error {
if m.DepartmentCustomId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.DepartmentCustomId = sf.Generate().Int64()
}
return nil
}
-25
View File
@@ -4,10 +4,7 @@ import (
"database/sql/driver"
"errors"
"fmt"
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
"reflect"
"strings"
"time"
)
@@ -69,28 +66,6 @@ func (m *Model) BeforeUpdate(tx *gorm.DB) (err error) {
// BeforeCreate 注册 BeforeCreate 回调函数
func (m *Model) BeforeCreate(tx *gorm.DB) (err error) {
// 动态添加表主键
primaryName := ""
field := tx.Statement.Schema.Fields
for _, v := range field {
if v.PrimaryKey {
primaryName = v.Name
}
}
if primaryName != "" {
// 动态访问 YourModel 结构体本身
model := tx.Statement.Dest
primaryValue := reflect.ValueOf(model).Elem().FieldByName(primaryName)
if primaryValue.IsZero() {
node, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return errors.New("服务器错误")
}
tx.Statement.SetColumn(primaryName, node.Generate().Int64())
}
}
m.CreatedAt = LocalTime(time.Now())
tx.Statement.SetColumn("CreatedAt", m.CreatedAt)
+20 -1
View File
@@ -1,6 +1,11 @@
package model
import "time"
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
"time"
)
// OrderPrescription 订单-处方表
type OrderPrescription struct {
@@ -34,3 +39,17 @@ type OrderPrescription struct {
func (m *OrderPrescription) TableName() string {
return "gdxz_order_prescription"
}
func (m *OrderPrescription) BeforeCreate(tx *gorm.DB) error {
if m.OrderPrescriptionId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.OrderPrescriptionId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// PatientFamily 患者家庭成员信息表-基本信息
type PatientFamily struct {
FamilyId int64 `gorm:"column:family_id;type:bigint(19);primary_key;comment:主键id" json:"family_id"`
@@ -35,3 +41,17 @@ type PatientFamily struct {
func (m *PatientFamily) TableName() string {
return "gdxz_patient_family"
}
func (m *PatientFamily) BeforeCreate(tx *gorm.DB) error {
if m.FamilyId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.FamilyId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// User 用户主表
type User struct {
UserId int64 `gorm:"column:user_id;type:bigint(19);primary_key;comment:主键" json:"user_id"`
@@ -24,3 +30,17 @@ type User struct {
func (m *User) TableName() string {
return "gdxz_user"
}
func (m *User) BeforeCreate(tx *gorm.DB) error {
if m.UserId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.UserId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// UserCaCert 医师/药师ca监管证书表
type UserCaCert struct {
CertId int64 `gorm:"column:cert_id;type:bigint(19);primary_key;comment:主键id" json:"cert_id"`
@@ -18,3 +24,17 @@ type UserCaCert struct {
func (m *UserCaCert) TableName() string {
return "gdxz_user_ca_cert"
}
func (m *UserCaCert) BeforeCreate(tx *gorm.DB) error {
if m.CertId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.CertId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// UserDoctor 用户-医生表
type UserDoctor struct {
DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);primary_key;comment:主键" json:"doctor_id"`
@@ -47,3 +53,17 @@ type UserDoctor struct {
func (m *UserDoctor) TableName() string {
return "gdxz_user_doctor"
}
func (m *UserDoctor) BeforeCreate(tx *gorm.DB) error {
if m.DoctorId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.DoctorId = sf.Generate().Int64()
}
return nil
}
+20
View File
@@ -1,5 +1,11 @@
package model
import (
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
)
// UserDoctorInfo 用户-医生详情表
type UserDoctorInfo struct {
DoctorInfoId int64 `gorm:"column:doctor_info_id;type:bigint(19);primary_key;comment:主键" json:"doctor_info_id"`
@@ -24,3 +30,17 @@ type UserDoctorInfo struct {
func (m *UserDoctorInfo) TableName() string {
return "gdxz_user_doctor_info"
}
func (m *UserDoctorInfo) BeforeCreate(tx *gorm.DB) error {
if m.DoctorInfoId == 0 {
// 创建雪花算法实例
sf, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return err
}
// 生成新的雪花算法 ID
m.DoctorInfoId = sf.Generate().Int64()
}
return nil
}