一. 需求分析

  • 把 02资料/章节207商品删除 中内容拷贝到项目中
  • 页面支持多条删除.客户端向服务端传递的是拼接好的字符串,服务端需要对内容进行拆分
  • 根据数据库中tb_item表设计,数据删除是逻辑删除,即删除时修改tb_item中status为3
  • 商品的删除,下架,上架都是修改status列的值,dao编写时要考虑复用
  • 服务器接收后删除多条数据,返回EgoResult对应的JSON数据,客户端根据返回数据的Status判断是否删除成功
  1. $.post("/item/delete",{"ids":ids},function (data) {
  2. if (data.Status==200){
  3. $.messager.show({
  4. title:'系统消息',
  5. msg:'删除'+ids+'成功',
  6. showType:'show',
  7. showType:'slide'
  8. });
  9. $("#item_table").datagrid("reload")
  10. }else{
  11. $.messager.show({
  12. title:'系统消息',
  13. msg:'删除失败',
  14. showType:'show',
  15. showType:'slide'
  16. });
  17. }
  18. })
  • 在页面中Datagrid中已经编写了代码,根据不同status值显示不同效果
  1. {field: 'Status', title: '状态', width: 100,formatter: function(value,row,index){
  2. if (value==1){
  3. return "正常";
  4. }else if (value==2){
  5. return "<span style='color:blue'>下架</span>";
  6. }else if (value==3){
  7. return "<span style='color:red'>删除</span>";
  8. }
  9. }
  10. },

二.代码实现

  • 在TbItemDao中添加函数,实现删除
  1. /*
  2. 返回值如果小于0表示更新失败
  3. */
  4. func updStatusByIdsDao(ids []string,status int) int{
  5. if len(ids)<=0{
  6. return -1
  7. }
  8. sql:="update tb_item set status=? where "
  9. for i:=0;i<len(ids);i++{
  10. sql+=" id="+ids[i]
  11. if i<len(ids)-1{
  12. sql+=" or "
  13. }
  14. }
  15. count,err := commons.Dml(sql,status)
  16. if err!=nil{
  17. fmt.Println(err)
  18. return -1
  19. }
  20. return int(count)
  21. }
  • 在TbItemService.go中添加函数
  1. //删除商品
  2. func delByIdsService(ids string) (e commons.EgoResult){
  3. count:=updStatusByIdsDao(strings.Split(ids,","),3)
  4. if count>0{
  5. e.Status=200
  6. }
  7. return
  8. }
  • 在TbItemController.go中添加函数,并修改ItemHandler()函数内容
  1. //商品删除
  2. func delByIdsController(w http.ResponseWriter, r *http.Request) {
  3. ids:=r.FormValue("ids")
  4. er:=delByIdsService(ids)
  5. b,_:=json.Marshal(er)
  6. w.Header().Set("Content-Type","application/json;charset=utf-8")
  7. w.Write(b)
  8. }
  9. func ItemHandler() {
  10. commons.Router.HandleFunc("/showItem", showItemController)
  11. commons.Router.HandleFunc("/item/delete", delByIdsController)
  12. }