一.需求分析

  • 查询完商品信息后可以通过商品信息中Cid做为商品类目表的主键值进行查询
  • 页面中最终数据的效果和TbItem只差一个属性所以可以通过组合的形式实现
  1. type TbItemChild struct {
  2. TbItem
  3. CategoryName string
  4. }
  • 整体架构使用分层实现,商品类目代码也属于商品模块中功能,所以在item文件夹下新建cat文件夹.在cat文件夹中编写类目的代码.
  • 由于需要把商品类目查询的功能暴露给item包下,所以编写商品类目业务代码时函数名称首字母大写.
    • 不暴露数据库访问层代码

二. 代码实现

  • 在item文件夹下新建cat文件夹
  • 在cat中新建TbItemCat.go
  1. package cat
  2. //商品类目
  3. type TbItemCat struct {
  4. Id int
  5. ParentId int
  6. Name string
  7. Status byte
  8. SortOrder int8
  9. IsParent byte
  10. Created string
  11. Updated string
  12. }
  • 在item/cat下新建TbItemCatDao.go实现根据主键查询
  1. package cat
  2. import (
  3. "commons"
  4. "fmt"
  5. )
  6. func selByIdDao(id int) (t *TbItemCat){
  7. rows,err:=commons.Dql("select * from tb_item_cat where id=?",id)
  8. if err!=nil{
  9. fmt.Println(err)
  10. return nil
  11. }
  12. if rows.Next(){
  13. t =new (TbItemCat)
  14. rows.Scan(&t.Id,&t.ParentId,&t.Name,&t.Status,&t.SortOrder,&t.IsParent,&t.Created,&t.Updated)
  15. }
  16. commons.CloseConn()
  17. return
  18. }
  • 在item/cat下新建TbItemCatService.go,并把函数暴露
  1. package cat
  2. //根据id查询类目
  3. func ShowCatByIdService(id int) *TbItemCat {
  4. return selByIdDao(id)
  5. }
  • 在item/TbItem.go中添加代码
  1. //给页面使用,实现商品类目
  2. type TbItemChild struct {
  3. TbItem
  4. CategoryName string
  5. }
  • 修改item/TbItemService.go中代码
  1. package item
  2. import (
  3. "commons"
  4. "item/cat"
  5. )
  6. func showItemService(page,rows int) (e *commons.Datagrid){
  7. ts:=selByPageDao(rows,page)
  8. if ts!=nil{
  9. itemChildren :=make([]TbItemChild,0)
  10. for i:=0;i<len(ts);i++{
  11. var itemChild TbItemChild
  12. itemChild.Id = ts[i].Id
  13. itemChild.Updated=ts[i].Updated
  14. itemChild.Created=ts[i].Created
  15. itemChild.Status=ts[i].Status
  16. itemChild.Barcode=ts[i].Barcode
  17. //itemChild.Cid=ts[i].Cid
  18. //itemChild.Image=ts[i].Image
  19. itemChild.Price=ts[i].Price
  20. itemChild.Num=ts[i].Num
  21. itemChild.SellPoint=ts[i].SellPoint
  22. itemChild.Title=ts[i].Title
  23. itemChild.CategoryName = cat.ShowCatByIdService(ts[i].Cid).Name
  24. itemChildren= append(itemChildren,itemChild)
  25. }
  26. e= new(commons.Datagrid)
  27. e.Rows=itemChildren
  28. e.Total=selCount()
  29. return
  30. }
  31. return nil
  32. }