用户出现变更、用户不存在了,将系统用户从系统中删除。
前置条件(约束):
用户必须存在方可删除
后置条件(数据库操作)
从sysuser表删除用户信息
1.2.1 dao
使用自动生成的mapper从sysuser表删除一个用户
1.2.2 service
接口功能:将系统用户从系统中删除
接口参数:用户id
// 用户删除
@Override
public void deleteSysuser(Stringid) throwsException {
// 校验前置条件
// 先查找
Sysusersysuser = sysuserMapper.selectByPrimaryKey(id);
if (sysuser == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 212,
null));
}
sysuserMapper.deleteByPrimaryKey(id);
}
1.2.3 action
实现用户删除方法(提交方法)。
// 用户删除
@RequestMapping("/deletesysuser")
public @ResponseBody
SubmitResultInfodeletesysuser(String id) throws Exception {
userService.deleteSysuser(id);
return ResultUtil.createSubmitResult(ResultUtil.createSuccess(
Config.MESSAGE, 906, null));
}
1.2.4 页面
通常情况,针对单条记录操作,建议在记录上添加链接操作。
修改queryuser.jsp:
在datagrid 列表中添加删除按钮。
{
field : 'opt1',//对应json中的key
title : '删除',
width : 120,
formatter:function(value,row,index){
return "<ahref=javascript:deleteuser('"+row.id+"')>删除</a>";
}
定义删除方法(javascript)
//删除用户方法
function deleteuser(id){
//第一个参数是提示信息,第二个参数,取消执行的函数指针,第三个参是,确定执行的函数指针
_confirm('您确认删除吗?',null,function (){
//将要删除的id赋值给deleteid,deleteid在sysuserdeleteform中
$("#delete_id").val(id);
//使用ajax的from提交执行删除
//sysuserdeleteform:form的id,userdel_callback:删除回调函数,
//第三个参数是url的参数
//第四个参数是datatype,表示服务器返回的类型
jquerySubByFId('sysuserdeleteform',userdel_callback,null,"json");
});
}//删除用户的回调
function userdel_callback(data){
message_alert(data);
//刷新页面
//在提交成功后重新加载 datagrid
//取出提交结果
var type=data.resultInfo.type;
if(type==1){
//成功结果
//重新加载 datagrid
queryuser();
}
}
删除操作使用ajax的form提交,需要在页面中定义单独删除form,form中有一个删除用户id。Sysuserdeleteform 对应jquerySubByFId 中的id
<form id="sysuserdeleteform" action="${baseurl}user/deletesysuser.action"method="post">
<input type="hidden" id="delete_id"name="id"/>
</form>
修改用户的信息,可以修改用户账号、用户的名称、用户密码、用户类型、用户所属单位、用户状态。
前置条件(约束):
修改用户账号不允许暂用别人的账号
用户变更单位必须是存在的
后置条件(数据库操作)
从sysuser表修改用户信息
2.2.1 dao
使用自动生成的mapper从sysuser表修改一个用户
2.2.2 service
接口功能:修改用户信息
接口参数:修改用户的id、修改用户的信息
约束分析:修改用户账号不允许占用别人的账号
如果用户的账号不修改不用校验账号是否暂用别人的账号
如果用户修改账号了,才需要校验账号是否暂用别人的账号
通过修改的账号查询sysuser系统用户表,如果查询到说明暂用别人的账号
在修改之前需要先根据用户id获取用户信息:
实现类
// 更新用户
@Override
public void updateSysuser(Stringid, SysuserCustom sysuserCustom)
throws Exception {
// 非空校验。。。
// 修改用户账号不允许暂用别人的账号
// 如果判断账号修改了
// 页面提交的账号可能是用户修改的账号
Stringpage_userid = sysuserCustom.getUserid();
Sysusersysuser = sysuserMapper.selectByPrimaryKey(id);
if (sysuser == null) {
// 说明是藏数据
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 902,
null));
}
// 修改前的id
Stringuserid = sysuser.getUserid();
if(!page_userid.equals(userid)) {
Sysusersysuser_new = this.findSysuserByuserid(page_userid);
if (sysuser_new != null) {
// 说明账号被占用
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
213,null));
}
}
// 验证单位id 是否存在
Stringgroupid = sysuserCustom.getGroupid();// 用户类型,是监督单位还是卫生室
Stringsysmc = sysuserCustom.getSysmc();// 单位名称
Stringsysid = null;
if (groupid.equals("1") ||groupid.equals("2")) {// 监督单位
Userjduserjd = this.findUserjdByMc(sysmc);
if (userjd == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
217,null));
}
sysid= userjd.getId();
}elseif(groupid.equals("3")) {// 医院
Useryyuseryy = this.findUseryyByMc(sysmc);
if (useryy == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
217,null));
}
sysid= useryy.getId();
}elseif(groupid.equals("4")) {// 供应商
Usergysusergys = this.findUsergysByMc(sysmc);
if (usergys == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
217,null));
}
sysid= usergys.getId();
}
// 验证密码
Stringpage_pwd = sysuserCustom.getPwd().trim();
Stringmd5_pwd = null;// 对密码加密
if (page_pwd != null &&!page_pwd.equals("")) {
md5_pwd= newMD5().getMD5ofStr(page_pwd);
}
// 设置更新信息
// 更新先要查询到用户
Sysusersysuser_update = sysuserMapper.selectByPrimaryKey(id);
sysuser_update.setUserid(sysuserCustom.getUserid());
sysuser_update.setUsername(sysuserCustom.getUsername());
sysuser_update.setUserstate(sysuserCustom.getUserstate());
if (md5_pwd != null) {
sysuser_update.setPwd(md5_pwd);
}
sysuser_update.setGroupid(sysuserCustom.getGroupid());
sysuser_update.setSysid(sysid);// 单位id
sysuser_update.setAddr(sysuserCustom.getAddr());
sysuser_update.setPhone(sysuserCustom.getPhone());
// 更新所有列(空的也更新)
sysuserMapper.updateByPrimaryKey(sysuser_update);
}
// 通过id查询用户信息更新用户用到
@Override
public SysuserCustomfindSysuserById(String id) throws Exception {
Sysusersysuser=sysuserMapper.selectByPrimaryKey(id);
Stringgroupid = sysuser.getGroupid();
Stringsysid = sysuser.getSysid();
Stringsysmc = null;
if (groupid.equals("1") ||groupid.equals("2")) {
Userjduserjd =userjdMapper.selectByPrimaryKey(sysid);
if (userjd == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
217,null));
}
sysmc= userjd.getMc();
}elseif(groupid.equals("3")) {
Useryyuseryy = useryyMapper.selectByPrimaryKey(sysid);
if (useryy == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
217,null));
}
sysmc= useryy.getMc();
}elseif(groupid.equals("4")) {
Usergysusergys = usergysMapper.selectByPrimaryKey(sysid);
if (usergys == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
217,null));
}
sysmc= usergys.getMc();
}
SysuserCustomsysuserCustom=newSysuserCustom();
//将sysuser中数据设置到sysuserCustom
BeanUtils.copyProperties(sysuser,sysuserCustom);
sysuserCustom.setSysmc(sysmc);
return sysuserCustom;
}
2.2.3 action
两个方法:返回页面 和提交两个方法
// 用户修改页面
@RequestMapping("/editsysuser")
public Stringeditsysuser(Model model, String id) throws Exception {
SysuserCustomsysuserCustom = userService.findSysuserById(id);
model.addAttribute("sysuserCustom",sysuserCustom);
return "/base/user/editsysuser";
}
// 用户修改数据
@RequestMapping("/editsysusersubmit")
public @ResponseBody
SubmitResultInfoeditsysusersubmit(String id, SysuserQueryVo sysuserQueryVo)
throws Exception {
userService.updateSysuser(id,sysuserQueryVo.getSysuserCustom());
return ResultUtil.createSubmitResult(ResultUtil.createSuccess(
Config.MESSAGE, 906, null));
}
2.2.4 页面
在queryuser.jsp的datagrid 中添加修改链接。
{
field : 'opt2',//对应json中的key
title : '修改',
width : 120,
formatter:function(value,row,index){
return "<ahref=javascript:edituser('"+row.id+"')>修改</a>";
}
定义edituser 的script方法
//修改用户
function edituser(id){
//打开修改窗口
createmodalwindow("修改用户信息", 800, 300, '${baseurl}user/editsysuser.action?id='+id);
}
Editsysuser.Jsp 中的script方法
<script type="text/javascript">
function sysusersave(){
jquerySubByFId('userform',sysusersave_callback,null,"json");
}
//ajax调用的回调函数,ajax请求完成调用此函数,传入的参数是action返回的结果
function sysusersave_callback(data){
message_alert(data);
var type=data.resultInfo.type;
}
同样定义form
form id="userform"action="${baseurl}user/editsysusersubmit.action" method="post">
<!-- 更新用户的id -->
略