一.需求分析
- 数据库中tb_item_param_item表为商品规格参数信息表,存放了每个商品对应的规格参数信息
- 在新增商品页面中,点击选择类目后,如果类目有对应的商品规格参数模版,就会在下面显示出需要让用户添加的信息
- 由于之前是使用非事务方式代码编写,此处依然按照之前的代码风格进行编写
二.代码实现
- 在/item/下新建文件夹paramitem
- 在src/item/paramitem下新建TbItemParamItem.go
package paramitemtype 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 paramitemimport ( "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}