一.需求分析
- 数据库中tb_item_param_item表为商品规格参数信息表,存放了每个商品对应的规格参数信息
- 在新增商品页面中,点击选择类目后,如果类目有对应的商品规格参数模版,就会在下面显示出需要让用户添加的信息
- 由于之前是使用非事务方式代码编写,此处依然按照之前的代码风格进行编写
二.代码实现
- 在/item/下新建文件夹paramitem
- 在src/item/paramitem下新建TbItemParamItem.go
package paramitem
type TbItemParamItem struct {
Id int `json:"id"`
ItemId int `json:"itemId"`
ParamData string `json:"paramData"`
Created string `json:"created"`
Updated string `json:"updated"`
}
- 在src/item/paramitem/下新建TbItemParamItemDao.go
package paramitem
import (
"commons"
"fmt"
)
//新增商品规格参数,创建时间和更新时间为系统当前时间.主键自增
func InsertParamItem(p TbItemParamItem) int{
count,err:=commons.Dml("insert into tb_item_param_item values(default,?,?,now(),now())",p.ItemId,p.ParamData)
if err!=nil{
fmt.Println(err)
return -1
}
return int(count)
}
- 在src/item/desc/TbItemDescDao.go中添加根据主键删除的函数
//根据主键删除
func DelDescByIdDao(id int) int{
count,err:=commons.Dml("delete from tb_item_desc where item_id = ?",id)
if err!=nil{
fmt.Println(err)
return -1
}
return int(count)
}
- 修改src/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 {
paramItem := paramitem.TbItemParamItem{ItemId:id,ParamData:f["paramData"][0]}
countParamItem:=paramitem.InsertParamItem(paramItem)
if countParamItem>0{
e.Status = 200
}else{
//删除商品中数据
delById(id)
//删除商品描述中的数据
desc.DelDescByIdDao(id)
e.Status = 400
}
} else {
//删除商品中数据
delById(id)
e.Status = 400
}
}
return
}