一.需求分析

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

二.代码实现

  • 在/item/TbItem.go中添加
  1. //给修改页面使用
  2. type TbItemDescChild struct {
  3. TbItem
  4. CategoryName string
  5. Desc string
  6. }
  • 在/item/TbItemDao.go中添加
  1. //根据主键查询内容
  2. func selByIdDao(id int) *TbItem{
  3. rows,err:= commons.Dql("select * from tb_item where id=?",id)
  4. if err!=nil{
  5. fmt.Println(err)
  6. return nil
  7. }
  8. if rows.Next(){
  9. t := new (TbItem)
  10. var s sql.NullString
  11. rows.Scan(&t.Id, &t.Title, &t.SellPoint, &t.Price, &t.Num, &s, &t.Image, &t.Cid, &t.Status, &t.Created, &t.Updated)
  12. t.Barcode = s.String
  13. return t
  14. }
  15. return nil
  16. }
  • 在/item/desc/TbItemDescDao.go中添加
  1. //根据主键查询
  2. func selByIdDao(id int) *TbItemDesc{
  3. r,err:=commons.Dql("select * from tb_item_desc where item_id=?",id)
  4. if err!=nil{
  5. fmt.Println(err)
  6. return nil
  7. }
  8. if r.Next(){
  9. t := new(TbItemDesc)
  10. r.Scan(&t.ItemId,&t.ItemDesc,&t.Created,&t.Updated)
  11. return t
  12. }
  13. return nil
  14. }
  • 在/item/desc/TbItemDescService.go中添加
  1. func SelByIdService(id int) * TbItemDesc{
  2. return selByIdDao(id)
  3. }
  • 在/item/TbItemService.go中添加
  1. //修改页面显示信息
  2. func showItemDescCatService(id int) TbItemDescChild{
  3. item := selByIdDao(id)
  4. var c TbItemDescChild
  5. c.Id = item.Id
  6. c.Updated = item.Updated
  7. c.Created = item.Created
  8. c.Barcode = item.Barcode
  9. c.Cid = item.Cid
  10. c.Title = item.Title
  11. c.SellPoint = item.SellPoint
  12. c.Price = item.Price
  13. c.Image = item.Image
  14. c.Status = item.Status
  15. c.Num = item.Num
  16. //商品类目
  17. c.CategoryName = cat.ShowCatByIdService(c.Cid).Name
  18. //商品描述
  19. c.Desc = desc.SelByIdService(c.Id).ItemDesc
  20. return c
  21. }
  • 在/item/TbItemController.go中添加
  1. //显示修改页面信息
  2. func showItemDescCatController(w http.ResponseWriter, r *http.Request){
  3. id,_:= strconv.Atoi(r.FormValue("id"))
  4. c:=showItemDescCatService(id)
  5. b,_:=json.Marshal(c)
  6. w.Header().Set(commons.HEADER_CONTENT_TYPE,commons.JSON_HEADER)
  7. w.Write(b)
  8. }
  9. func ItemHandler() {
  10. commons.Router.HandleFunc("/showItem", showItemController)
  11. commons.Router.HandleFunc("/item/delete", delByIdsController)
  12. commons.Router.HandleFunc("/item/instock", instockController)
  13. commons.Router.HandleFunc("/item/offstock", offstockController)
  14. commons.Router.HandleFunc("/item/imageupload", imagesUploadController)
  15. commons.Router.HandleFunc("/item/add", insertControllew)
  16. commons.Router.HandleFunc("/item/showItemById", showItemDescCatController) //商品修改页面信息显示
  17. }