今天说下账号删除的功能,因列表可勾选多个账号删除,因此账号删除功能做成了批量删除,兼容多个账号删除。同时,这里还有个逻辑:当前登录用户不能删除自己。
前端调用删除逻辑:
$("#deleteView").click("click", function() {//绑定删除按扭
var cbox = grid.getSelectedCheckbox();
if (cbox.length == 0) {
parent.$.ligerDialog.alert("请选择删除项");
return;
}
parent.$.ligerDialog.confirm('删除后不能恢复,确定删除吗?', function(confirm) {
if (confirm) {
$.ajax({
type: "post",
dataType: "json", //json格式的数据
async: false, //同步 不写的情况下 默认为true
url: rootPath + '/background/account/deleteById.html', //要访问的后台地址
data: {ids:cbox.join(",")}, //要发送的数据
success: function(data){
if (data.flag) {
parent.$.ligerDialog.success('删除成功', '提示', function() {
loadGird();//重新加载表格数据
});
}else{
parent.$.ligerDialog.warn("删除失败");
}
}
});
}
});
});
说明:
1、首先判断是否选择,若没有选择则提示需要选择后操作。
2、提示删除警告,删除后不可恢复。
3、当点击确认删除,调用后端删除接口,对选择的记录上送id用逗号隔开。
4、处理结果弹出对话框提示,对于成功需要重新加载表格列表数据。
后端接口处理逻辑:
/**
* 批量删除账号
*/
@ResponseBody
@RequestMapping("deleteById")
public Map<String, Object> deleteById(String ids, HttpServletRequest request) {
String userId = String.valueOf((Integer) request.getSession().getAttribute(Common.USER_SESSION_ID));
Map<String, Object> map = new HashMap<String, Object>();
try {
String[] idSplit = ids.split(",");
List<String> idsList = new ArrayList(Arrays.asList(idSplit));
if (idsList.contains(userId)){
//当前登录用户不能删除自己
for (int i = 0; i < idsList.size(); i++) {
if (idsList.get(i).equals(userId)){
idsList.remove(i);
i--;
}
}
}
map.put("flag", accountService.deleteBatch(idsList));
} catch (Exception e) {
map.put("flag", false);
}
return map;
}
说明:
1、获取当前登录的用户id。
2、将上送id数据用逗号分隔,组装成集合。
3、判断当前用户id是否在集合中,若在则删除,表示登录用户不能删除自己。
4、调用批量删除服务,返回结果。
mapper处理批量删除的逻辑如下:
<delete id="deleteBatch" parameterType="java.util.List">
DELETE FROM sys_account WHERE id in(
<foreach collection="list" item="id" index="index" separator=",">
${id}
</foreach>
);
</delete>
软件定制及其他业务
请加微信号:13128600812
公众号: