一. 需求分析
- 不同类型商品有不同的规格参数模版,在设计数据库时直接把模版都放入到一个列中,类型为json,保证无论怎么变化都可以实现规格参数的处理
- tb_item_param是规格参数模版表,这个表中存储了不同类型对应的模版信息
- 页面显示时除了规格参数模版表中内容还需要显示对应类目的名称
二.代码实现
- 在/item文件夹下新建文件param
- 在/item/param中新建TbItemParam.go
package param
//模版
type TbItemParam struct {
Id int `json:"id"`
ItemCatId int `json:"itemCatId"`
ParamData string `json:"paramData"`
Created string `json:"created"`
Updated string `json:"updated"`
}
type TbItemParamCat struct {
TbItemParam
CatName string `json:"catName"`
}
- 在/item/param中新建TbItemParamDao.go
package param
import (
"commons"
"fmt"
)
//分页查询
func selByPageDao(page,rows int) []TbItemParam{
r,err:=commons.Dql("select * from tb_item_param limit ?,?",rows*(page-1),rows)
if err!=nil{
fmt.Println(err)
return nil
}
t := make([]TbItemParam,0)
for r.Next(){
var param TbItemParam
r.Scan(¶m.Id,¶m.ItemCatId,¶m.ParamData,¶m.Created,¶m.Updated)
t=append(t,param)
}
return t
}
//查询总个数
func selCount() int{
r,err:=commons.Dql("select count(*) from tb_item_param")
if err!=nil{
fmt.Println(err)
return -1
}
if r.Next(){
var count int
r.Scan(&count)
return count
}
return -1
}
- 在/item/param中新建TbItemParamService.go
package param
import "commons"
import (
c "item/cat"
)
//显示规格参数
func showParamService(page, rows int) (d commons.Datagrid) {
t := selByPageDao(page, rows)
d.Total = selCount()
cats := make([]TbItemParamCat, 0)
for i := 0; i < len(t); i++ {
var cat TbItemParamCat
cat.Id = t[i].Id
cat.Updated = t[i].Updated
cat.Created = t[i].Created
cat.ParamData = t[i].ParamData
cat.ItemCatId = t[i].ItemCatId
cat.CatName = c.ShowCatByIdService(t[i].ItemCatId).Name
cats = append(cats, cat)
}
d.Rows = cats
return
}
- 在/item/param中新建TbItemParamController.go
package param
import "commons"
import (
c "item/cat"
)
//显示规格参数
func showParamService(page, rows int) (d commons.Datagrid) {
t := selByPageDao(page, rows)
d.Total = selCount()
cats := make([]TbItemParamCat, 0)
for i := 0; i < len(t); i++ {
var cat TbItemParamCat
cat.Id = t[i].Id
cat.Updated = t[i].Updated
cat.Created = t[i].Created
cat.ParamData = t[i].ParamData
cat.ItemCatId = t[i].ItemCatId
cat.CatName = c.ShowCatByIdService(t[i].ItemCatId).Name
cats = append(cats, cat)
}
d.Rows = cats
return
}
//规格参数
param.ParamHandler()