一.需求分析

  • 数据库中tb_item_param_item表为商品规格参数信息表,存放了每个商品对应的规格参数信息
  • 在新增商品页面中,点击选择类目后,如果类目有对应的商品规格参数模版,就会在下面显示出需要让用户添加的信息
  • 由于之前是使用非事务方式代码编写,此处依然按照之前的代码风格进行编写

二.代码实现

  • 在/item/下新建文件夹paramitem
  • 在src/item/paramitem下新建TbItemParamItem.go
  1. package paramitem
  2. type TbItemParamItem struct {
  3. Id int `json:"id"`
  4. ItemId int `json:"itemId"`
  5. ParamData string `json:"paramData"`
  6. Created string `json:"created"`
  7. Updated string `json:"updated"`
  8. }
  • 在src/item/paramitem/下新建TbItemParamItemDao.go
  1. package paramitem
  2. import (
  3. "commons"
  4. "fmt"
  5. )
  6. //新增商品规格参数,创建时间和更新时间为系统当前时间.主键自增
  7. func InsertParamItem(p TbItemParamItem) int{
  8. count,err:=commons.Dml("insert into tb_item_param_item values(default,?,?,now(),now())",p.ItemId,p.ParamData)
  9. if err!=nil{
  10. fmt.Println(err)
  11. return -1
  12. }
  13. return int(count)
  14. }
  • 在src/item/desc/TbItemDescDao.go中添加根据主键删除的函数
  1. //根据主键删除
  2. func DelDescByIdDao(id int) int{
  3. count,err:=commons.Dml("delete from tb_item_desc where item_id = ?",id)
  4. if err!=nil{
  5. fmt.Println(err)
  6. return -1
  7. }
  8. return int(count)
  9. }
  • 修改src/item/TbItemService.go中商品新增业务代码
  1. //商品新增
  2. func insetService(f url.Values) (e commons.EgoResult) {
  3. var t TbItem
  4. cid, _ := strconv.Atoi(f["Cid"][0])
  5. t.Cid = cid
  6. t.Title = f["Title"][0]
  7. t.SellPoint = f["SellPoint"][0]
  8. price, _ := strconv.Atoi(f["Price"][0])
  9. t.Price = price
  10. num, _ := strconv.Atoi(f["Num"][0])
  11. t.Num = num
  12. t.Image = f["Image"][0]
  13. t.Status = 1
  14. date := time.Now().Format("2006-01-02 15:04:05")
  15. t.Created = date
  16. t.Updated = date
  17. id := commons.GenId()
  18. t.Id = id
  19. //商品表新增
  20. count := insertItemDao(t)
  21. if count > 0 {
  22. var tbItemDesc desc.TbItemDesc
  23. tbItemDesc.ItemId = id
  24. tbItemDesc.Created = date
  25. tbItemDesc.Updated = date
  26. tbItemDesc.ItemDesc = f["Desc"][0]
  27. countDesc := desc.Insert(tbItemDesc)
  28. if countDesc > 0 {
  29. paramItem := paramitem.TbItemParamItem{ItemId:id,ParamData:f["paramData"][0]}
  30. countParamItem:=paramitem.InsertParamItem(paramItem)
  31. if countParamItem>0{
  32. e.Status = 200
  33. }else{
  34. //删除商品中数据
  35. delById(id)
  36. //删除商品描述中的数据
  37. desc.DelDescByIdDao(id)
  38. e.Status = 400
  39. }
  40. } else {
  41. //删除商品中数据
  42. delById(id)
  43. e.Status = 400
  44. }
  45. }
  46. return
  47. }