一. 需求分析

  • 从 02资料/章节212商品新增 中把资源拷贝到项目中
  • 商品新增时需要新增的是两个表的数据tb_item和tb_item_desc表(tb_item_param规格参数暂时不考虑),在本小节中只新增tb_item表中数据,下一小节新增商品描述
  • 新增成功后服务端返回EgoResult对应的json数据
  • 页面接收数据后判断,如果Status为200,清空页面数据.

二.代码演示

  • 在TbItemDao.go中编写函数实现对tb_item表的新增
  1. //新增
  2. func insertItemDao(t TbItem) int{
  3. count,err:=commons.Dml("insert into tb_item values(?,?,?,?,?,?,?,?,?,?,?)",t.Id,t.Title,t.SellPoint,t.Price,t.Num,t.Barcode,t.Image,t.Cid,t.Status,t.Created,t.Updated)
  4. if err!=nil{
  5. return -1
  6. }
  7. return int(count)
  8. }
  • 在commons文件夹下新建Commons.go文件,并编写工具函数,实现生成主键
  1. package commons
  2. import (
  3. "time"
  4. "math/rand"
  5. "strconv"
  6. )
  7. //生成数据库主键
  8. func GenId() int{
  9. rand.Seed(time.Now().UnixNano())
  10. id,_:=strconv.Atoi(strconv.Itoa(rand.Intn(10000))+strconv.Itoa(int(time.Now().Unix())))
  11. return id
  12. }
  • 在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. count :=insertItemDao(t)
  20. if count>0{
  21. e.Status = 200
  22. }
  23. return
  24. }
  • 在TbItemController.go中添加函数实现商品新增,并添加映射
  1. //商品新增
  2. func insertControllew (w http.ResponseWriter, r *http.Request) {
  3. //需要先进行解析
  4. r.ParseForm()
  5. er:=insetService(r.Form)
  6. b,_:=json.Marshal(er)
  7. w.Header().Set(commons.HEADER_CONTENT_TYPE,commons.JSON_HEADER)
  8. w.Write(b)
  9. }
  10. func ItemHandler() {
  11. commons.Router.HandleFunc("/showItem", showItemController)
  12. commons.Router.HandleFunc("/item/delete", delByIdsController)
  13. commons.Router.HandleFunc("/item/instock", instockController)
  14. commons.Router.HandleFunc("/item/offstock", offstockController)
  15. commons.Router.HandleFunc("/item/imageupload", imagesUploadController)
  16. commons.Router.HandleFunc("/item/add", insertControllew) //商品新增
  17. }