一. 需求分析
- 不同类型商品有不同的规格参数模版,在设计数据库时直接把模版都放入到一个列中,类型为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 paramimport ( "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 paramimport "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 paramimport "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()