一. 需求分析
- 把 02资料/章节207商品删除 中内容拷贝到项目中
- 页面支持多条删除.客户端向服务端传递的是拼接好的字符串,服务端需要对内容进行拆分
- 根据数据库中tb_item表设计,数据删除是逻辑删除,即删除时修改tb_item中status为3
- 商品的删除,下架,上架都是修改status列的值,dao编写时要考虑复用
- 服务器接收后删除多条数据,返回EgoResult对应的JSON数据,客户端根据返回数据的Status判断是否删除成功
$.post("/item/delete",{"ids":ids},function (data) { if (data.Status==200){ $.messager.show({ title:'系统消息', msg:'删除'+ids+'成功', showType:'show', showType:'slide' }); $("#item_table").datagrid("reload") }else{ $.messager.show({ title:'系统消息', msg:'删除失败', showType:'show', showType:'slide' }); }})
- 在页面中Datagrid中已经编写了代码,根据不同status值显示不同效果
{field: 'Status', title: '状态', width: 100,formatter: function(value,row,index){ if (value==1){ return "正常"; }else if (value==2){ return "<span style='color:blue'>下架</span>"; }else if (value==3){ return "<span style='color:red'>删除</span>"; }}},
二.代码实现
/*返回值如果小于0表示更新失败 */func updStatusByIdsDao(ids []string,status int) int{ if len(ids)<=0{ return -1 } sql:="update tb_item set status=? where " for i:=0;i<len(ids);i++{ sql+=" id="+ids[i] if i<len(ids)-1{ sql+=" or " } } count,err := commons.Dml(sql,status) if err!=nil{ fmt.Println(err) return -1 } return int(count)}
//删除商品func delByIdsService(ids string) (e commons.EgoResult){ count:=updStatusByIdsDao(strings.Split(ids,","),3) if count>0{ e.Status=200 } return}
- 在TbItemController.go中添加函数,并修改ItemHandler()函数内容
//商品删除func delByIdsController(w http.ResponseWriter, r *http.Request) { ids:=r.FormValue("ids") er:=delByIdsService(ids) b,_:=json.Marshal(er) w.Header().Set("Content-Type","application/json;charset=utf-8") w.Write(b)}func ItemHandler() { commons.Router.HandleFunc("/showItem", showItemController) commons.Router.HandleFunc("/item/delete", delByIdsController)}