Golang实战项目-B2C电商平台项目

Posted 旧时星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang实战项目-B2C电商平台项目相关的知识,希望对你有一定的参考价值。

Golang实战项目-B2C电商平台项目(8)

商品描述新增

  • 商品描述表(tb_item_desc)和商品表(tb_item)具有主外键关系,商品的主键也是商品描述的主键,使用工具函数生成的主键也当作商品描述表的主键
  • 商品描述中信息来源于页面中KindEditor的富文本编辑框,里面带有html代码直接保存就可以
  • 在/item文件夹下新建desc文件夹,并在desc文件夹下新建TbItemDesc.go编写实体
ackage desc

//商品描述
type TbItemDesc struct {
	ItemId int
	ItemDesc string
	Created string
	Updated string
}

在/item/desc下新建TbItemDescDao.go

package desc

import (
	"commons"
	"fmt"
)
//新增描述
func insertDescDao(t TbItemDesc ) int{
	count,err:=commons.Dml("insert into tb_item_desc values(?,?,?,?)",t.ItemId,t.ItemDesc,t.Created,t.Updated)
	if err!=nil{
		fmt.Println(err)
		return -1
	}
	return int(count)
}

在/item/desc下新建TbItemDescService.go,并把新增暴露给其他package

package desc

//新增
func Insert(t TbItemDesc) int{
	return insertDescDao(t)
}

在/item/TbItemDao.go中添加删除函数

//根据id删除
func delById(id int) int{
	count,err:=commons.Dml("delete from tb_item where id=?",id)
	if err!=nil{
		fmt.Println(err)
		return -1
	}
	return int(count)
}

修改/item/TbItemService.go中新增商品业务代码

//商品新增
func insetService(f url.Values) (e commons.EgoResult){
	var t TbItem
	cid,_:=strconv.Atoi(f["Cid"][0])
	t.Cid =cid
	t.Title = f["Title"][0]
	t.SellPoint = f["SellPoint"][0]
	price,_:=strconv.Atoi(f["Price"][0])
	t.Price = price
	num,_:=strconv.Atoi(f["Num"][0])
	t.Num=num
	t.Image = f["Image"][0]
	t.Status = 1
	date:=time.Now().Format("2006-01-02 15:04:05")
	t.Created =date
	t.Updated = date
	id:=commons.GenId()
	t.Id = id


	//商品表新增执行
	count :=insertItemDao(t)
	if count>0{
        //商品描述新增
		var tbItemDesc desc.TbItemDesc
		tbItemDesc.ItemId = id
		tbItemDesc.Created = date
		tbItemDesc.Updated = date
		tbItemDesc.ItemDesc = f["Desc"][0]
		countDesc:=desc.Insert(tbItemDesc)
		if countDesc>0{
			e.Status = 200
		}else{
			//删除商品中数据
			delById(id)
			e.Status = 400
		}
	}
	return

商品修改页面显示信息

  • 点击"查询商品"页面中编辑按钮弹出修改页面
    • 要求只能选择一行进行修改
  • 页面显示的数据是服务端根据客户端传递过来的商品id进行查询,查询时除了查询商品表(tb_item)以外还需要查询商品描述表(tb_item_desc)和商品类目表(tb_item_cat)把这些数据返回json
  • 客户端要求商品类目名称(CategoryName)和描述(Desc)

在/item/TbItem.go中添加

//给修改页面使用
type TbItemDescChild struct {
	TbItem
	CategoryName string
	Desc string
}

在/item/TbItemDao.go中添加

//根据主键查询内容
func selByIdDao(id int) *TbItem{
	rows,err:= commons.Dql("select * from tb_item where id=?",id)
	if err!=nil{
		fmt.Println(err)
		return nil
	}
	if rows.Next(){
		t := new (TbItem)
		var s sql.NullString
		rows.Scan(&t.Id, &t.Title, &t.SellPoint, &t.Price, &t.Num, &s, &t.Image, &t.Cid, &t.Status, &t.Created, &t.Updated)
		t.Barcode = s.String
		return t
	}
	return nil
}
//根据主键查询内容
func selByIdDao(id int) *TbItem{
	rows,err:= commons.Dql("select * from tb_item where id=?",id)
	if err!=nil{
		fmt.Println(err)
		return nil
	}
	if rows.Next(){
		t := new (TbItem)
		var s sql.NullString
		rows.Scan(&t.Id, &t.Title, &t.SellPoint, &t.Price, &t.Num, &s, &t.Image, &t.Cid, &t.Status, &t.Created, &t.Updated)
		t.Barcode = s.String
		return t
	}
	return nil
}
  • 在/item/desc/TbItemDescDao.go中添加

    //根据主键查询
    func selByIdDao(id int) *TbItemDesc{
    	r,err:=commons.Dql("select * from tb_item_desc where item_id=?",id)
    	if err!=nil{
    		fmt.Println(err)
    		return nil
    	}
    	if r.Next(){
    		t := new(TbItemDesc)
    		r.Scan(&t.ItemId,&t.ItemDesc,&t.Created,&t.Updated)
    		return t
    	}
    	return nil
    }
    
    //根据主键查询
    func selByIdDao(id int) *TbItemDesc{
    	r,err:=commons.Dql("select * from tb_item_desc where item_id=?",id)
    	if err!=nil{
    		fmt.Println(err)
    		return nil
    	}
    	if r.Next(){
    		t := new(TbItemDesc)
    		r.Scan(&t.ItemId,&t.ItemDesc,&t.Created,&t.Updated)
    		return t
    	}
    	return nil
    }
    
    • 在/item/desc/TbItemDescService.go中添加
    func SelByIdService(id int) * TbItemDesc{
    	return selByIdDao(id)
    }
    

    在/item/TbItemService.go中添加

    //修改页面显示信息
    func showItemDescCatService(id int) TbItemDescChild{
    	item := selByIdDao(id)
    	var c TbItemDescChild
    	c.Id = item.Id
    	c.Updated = item.Updated
    	c.Created = item.Created
    	c.Barcode = item.Barcode
    	c.Cid = item.Cid
    	c.Title = item.Title
    	c.SellPoint = item.SellPoint
    	c.Price = item.Price
    	c.Image = item.Image
    	c.Status = item.Status
    	c.Num = item.Num
    	//商品类目
    	c.CategoryName = cat.ShowCatByIdService(c.Cid).Name
    	//商品描述
    	c.Desc = desc.SelByIdService(c.Id).ItemDesc
    	return c
    }
    

    在/item/TbItemController.go中添加

    //显示修改页面信息
    func showItemDescCatController(w http.ResponseWriter, r *http.Request){
    	id,_:= strconv.Atoi(r.FormValue("id"))
    	c:=showItemDescCatService(id)
    	b,_:=json.Marshal(c)
    	w.Header().Set(commons.HEADER_CONTENT_TYPE,commons.JSON_HEADER)
    	w.Write(b)
    }
    
    func ItemHandler() {
    	commons.Router.HandleFunc("/showItem", showItemController)
    	commons.Router.HandleFunc("/item/delete", delByIdsController)
    	commons.Router.HandleFunc("/item/instock", instockController)
    	commons.Router.HandleFunc("/item/offstock", offstockController)
    	commons.Router.HandleFunc("/item/imageupload", imagesUploadController)
    	commons.Router.HandleFunc("/item/add", insertControllew)
    	commons.Router.HandleFunc("/item/showItemById", showItemDescCatController) //商品修改页面信息显示
    }
    

以上是关于Golang实战项目-B2C电商平台项目的主要内容,如果未能解决你的问题,请参考以下文章

Golang实战项目-B2C电商平台

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台