gin-vue-admin
Gin-Vue-Admin
GIN
type BaseApi struct {
Id uint `json:"ID" form:"ID"`
Phone string `json:"phone" form:"phone"`
PhoneCode string `json:"phonecode" form:"phonecode"`
Email string `json:"email" form:"email"`
NickName string `json:"nickName" form:"nickName"`
HeaderImg string `json:"headerImg" form:"headerImg"`
}
c.ShouldBindQuery(&baseApi) //接收GET请求的查询参数
c.ShouldBindJSON(&baseApi) //接收POST请求的json参数
c.ShouldBind(&baseApi) //接收GET/POST请求的json参数
c.Request.Form // 接收post表单数据和url后面的参数
c.Request.PostForm // 接收post表单所有数据
c.PostForm("name") // 接收单个值
特别注意
定义结构体的时候后面要加上form,结构体中字段名首字母要大写
渲染HTML
// 加上template.HTML会不转义里面的内容
"authorDate": template.HTML(author.Remark),
VUE
element-ui中Switch组件以数字判断开关状态
<el-switch
v-model="scope.row.enable"
inline-prompt
active-value="是"
inactive-value="否"
@change="()=>{switchEnable(scope.row)}"
/>
<el-switch
v-model="scope.row.enable"
inline-prompt
:active-value="1"
:inactive-value="2"
@change="()=>{switchEnable(scope.row)}"
/>
区别是: 冒号 参考下面链接
GORM
Type int `json:"type" form:"type" gorm:"column:type;comment:类型;size:10;default:0;"` // 0就是固定IP 1是IP段
Ip string `json:"ip" form:"ip" gorm:"column:ip;comment:IP地址;size:255;"`
Userid int `json:"userid" form:"userid" gorm:"column:userid;comment:用户ID;size:50;"`
Remark string `json:"remark" form:"remark" gorm:"column:remark;comment:备注;size:255;"`
Delpoylocation string `json:"delpoylocation" form:"delpoylocation" gorm:"column:delpoylocation;comment:网关名称;size:255;"`
Url string `json:"url" form:"url" gorm:"column:url;comment:网关地址;size:255;"`
SystemFor string `json:"systemFor" form:"systemFor" gorm:"column:system_for;comment:网关系统;size:255;"`
Cid uint `json:"cid" form:"cid" gorm:"column:cid;comment:配置表ID;size:20;"`
Remark string `json:"remark" form:"remark" gorm:"column:remark;comment:备注;size:255;"`
Sursen_db_info Sursen_db_info `json:"sursen_db_info" gorm:"foreignKey:id;references:Cid;"` // 外键不是ID的情况
Enable int `json:"enable" gorm:"-"` // 不创建
GORM Belongs To
// Belongs To 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例
// `User` 属于 `Company`,`CompanyID` 是外键
type User struct {
gorm.Model
Name string
CompanyID int
Company Company
}
type Company struct {
ID int
Name string
}
//重写外键
type User struct {
gorm.Model
Name string
CompanyRefer int
Company Company `gorm:"foreignKey:CompanyRefer"`
// 使用 CompanyRefer 作为外键
}
type Company struct {
ID int
Name string
}
//重写引用
type User struct {
gorm.Model
Name string
CompanyID string
Company Company `gorm:"references:Code"` // 使用 Code 作为引用
}
type Company struct {
ID int
Code string
Name string
}
GORM has one
// has one 与另一个模型建立一对一的关联,但它和一对一关系有些许不同。 这种关联表明一个模型的每个实例都包含或拥有另一个模
// User 有一张 CreditCard,UserID 是外键
type User struct {
gorm.Model
CreditCard CreditCard
}
type CreditCard struct {
gorm.Model
Number string
UserID uint
}
// 重写外键
type User struct {
gorm.Model
CreditCard CreditCard `gorm:"foreignKey:UserName"`
// 使用 UserName 作为外键
}
type CreditCard struct {
gorm.Model
Number string
UserName string
}
//重写引用
type User struct {
gorm.Model
Name string `gorm:"index"`
CreditCard CreditCard `gorm:"foreignkey:UserName;references:name"`
}
type CreditCard struct {
gorm.Model
Number string
UserName string
}
GORM has many
//has many 与另一个模型建立了一对多的连接。 不同于 has one,拥有者可以有零或多个关联模型。
// User 有多张 CreditCard,UserID 是外键
type User struct {
gorm.Model
CreditCards []CreditCard
}
type CreditCard struct {
gorm.Model
Number string
UserID uint
}
//重写外键
type User struct {
gorm.Model
CreditCards []CreditCard `gorm:"foreignKey:UserRefer"`
}
type CreditCard struct {
gorm.Model
Number string
UserRefer uint
}
//重写引用
type User struct {
gorm.Model
MemberNumber string
CreditCards []CreditCard `gorm:"foreignKey:UserNumber;references:MemberNumber"`
}
type CreditCard struct {
gorm.Model
Number string
UserNumber string
}
GORM Many to Many
//Many to Many 会在两个 model 中添加一张连接表。
// User 拥有并属于多种 language,`user_languages` 是连接表
type User struct {
gorm.Model
Languages []Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
}
// 反向引用
// User 拥有并属于多种 language,`user_languages` 是连接表
type User struct {
gorm.Model
Languages []*Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
Users []*User `gorm:"many2many:user_languages;"`
}
// 重写外键 对于 many2many 关系,连接表会同时拥有两个模型的外键,例如:
type User struct {
gorm.Model
Languages []Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
}
// Join Table: user_languages
// foreign key: user_id, reference: users.id
// foreign key: language_id, reference: languages.id
// 若要重写它们,可以使用标签 foreignKey、references、joinforeignKey、joinReferences。当然,您不需要使用全部的标签,你可以仅使用其中的一个重写部分的外键、引用。
type User struct {
gorm.Model
Profiles []Profile `gorm:"many2many:user_profiles;foreignKey:Refer;joinForeignKey:UserReferID;References:UserRefer;JoinReferences:UserRefer"`
Refer uint `gorm:"index:,unique"`
}
type Profile struct {
gorm.Model
Name string
UserRefer uint `gorm:"index:,unique"`
}
// 这会创建连接表:user_profiles
// 外键:user_refer_id,,引用:users.refer
// 外键:profile_refer,引用:profiles.user_refer
注意: 某些数据库只允许在唯一索引字段上创建外键,如果您在迁移时会创建外键,则需要指定 unique index 标签。
经常忘记的
type Contract_negotiation struct {
global.GVA_MODEL
Contract_id uint `json:"contract_id" form:"contract_id" gorm:"column:contract_id;comment:contract_id;size:50;"`
Negotiation_round *int `json:"negotiation_round" form:"negotiation_round" gorm:"column:negotiation_round;comment:negotiation_round;size:50;"`
Proposed_by uint `json:"proposed_by" form:"proposed_by" gorm:"column:proposed_by;comment:proposed_by;size:50;"`
Proposed_content *int `json:"proposed_content" form:"proposed_content" gorm:"column:proposed_content;comment:proposed_content;size:50;"`
Status *int `json:"status" form:"status" gorm:"column:status;comment:status;size:50;"`
Remark string `json:"remark" form:"remark" gorm:"column:remark;comment:remark;size:255;"`
Digital_contract Digital_contract `json:"digital_contract" gorm:"foreignKey:Contract_id;"`
// Contract_id 对应 Digital_contract 的id
Digital_contract Digital_contract `json:"digital_contract" gorm:"foreignKey:cnid;"`
// Contract_negotiation的id 对应 Digital_contract 的cnid
Digital_contract Digital_contract `json:"digital_contract" gorm:"foreignKey:id;references:contract_id;"`
// Digital_contract 的id 对应 Contract_negotiation的contract_id
}
type Digital_contract struct {
global.GVA_MODEL
ContractId string `json:"contractId" form:"contractId" gorm:"column:contract_id;comment:contractId;size:255;"`
cnid uint `json:"cnid" form:"cnid" gorm:"column:cnid;comment:cnid;size:50;"`
}