医药采购系统的添加用户模块

1.1     需求

添加用户:

用户账号(输入)、用户名称(输入)、用户密码(输入)、用户类型(下拉)、用户单位名称(输入)、用户状态(单选)

用户类型:下拉选择框 有卫生局,卫生院,卫生室,供货商,系统管理员

 

前置条件(操作约束):

用户账号不允许重复

根据用户类型,输入单位名称必须存在对应的单位表


后置条件(数据库操作):

向sysuser表插入一条记录

 


1.2     分析开发

 

1.2.1     dao

向sysuser表插入一条记录

使用逆向工程生成的mapper实现

 

1.2.2     service

接口功能:添加系统用户

操作参数:用户信息,使用SysuserCustom

接口约束:

用户账号不允许重复

根据用户类型,输入单位名称必须存在对应的单位表

 

代码:

注意在service进行数据合法性校验。(因为在页面的校验,可以通过脚本绕过去,但是service的校验绕不过去)

遇到异常要抛出异常信息。

// 查询监督单位名称是否正确

   public UserjdfindUserjdByMc(String mc) throws Exception {

 

      UserjdExampleuserjdExample = newUserjdExample();

      UserjdExample.Criteria criteria= userjdExample.createCriteria();

      // 设置条件根据账号查询

      criteria.andMcEqualTo(mc);

 

      List<Userjd> list = userjdMapper.selectByExample(userjdExample);

      if (list != null && list.size()== 1) {

         return list.get(0);

      }

      return null;

 

   }

 

public voidinsertSysuser(SysuserCustom sysuserCustom) throws Exception {

     

      //参数校验

      //通用的参数合法校验,非空校验,长度校验

      //...使用一些工具类来完成

     

      //数据业务合法性校验

      //账号唯一性校验,查询数据库校验出来

      //思路:根据用户账号查询sysuser表,如果查询到说明账号重复

      Sysusersysuser = this.findSysuserByUserid(sysuserCustom.getUserid());

      if(sysuser!=null){

         //账号重复

         //抛出异常,可预知异常

         throw new Exception("账号重复");

      }

 

      //根据用户类型,输入单位名称必须存在对应的单位表

      Stringgroupid = sysuserCustom.getGroupid();//用户类型

      Stringsysmc = sysuserCustom.getSysmc();//单位名称

      if(groupid.equals("1") ||groupid.equals("2")){

         //监督单位

         //根据单位名称查询单位信息

         Userjduserjd = this.findUserjdByMc(sysmc);

         if(userjd==null){

            //抛出异常,可预知异常

            throw new Exception("单位名称输入错误");

         }

      }else if(groupid.equals("3")){

         //卫生室

         //根据单位名称查询单位信息

         Useryyuseryy = this.findUseryyByMc(sysmc);

         if(useryy==null){

            //抛出异常,可预知异常

            throw new Exception("单位名称输入错误");

         }

      }else if(groupid.equals("4")){

         //供货商

         //根据单位名称查询单位信息

         Usergysusergys = this.findUsergysByMc(sysmc);

         if(usergys==null){

            //抛出异常,可预知异常

            throw new Exception("单位名称输入错误");

         }

      }

      //设置主键

      sysuserCustom.setId(UUIDBuild.getUUID());

      sysuserMapper.insert(sysuserCustom);

     

     

   }

 

 

1.2.3     action

 

添加用户,写两个方法:

进入添加页面方法

此方法准备数据在添加页面显示。

 

提交方法:

调用service类提交,将service返回的结果在页面展示,如果service抛出异常,在action中捕获异常。

 

Action方法中注意对异常处理,异常信息就是service抛出的异常。

//添加用户提交

   //提交结果转json输出到页面

   //提交表单数据统一使用包装类

   @RequestMapping("/addsysusersubmit")

   public @ResponseBodyMap<String,Object> addsysusersubmit(SysuserQueryVo sysuserQueryVo)throws Exception{

     

      //提示用户信息

     

      Stringmessage = "操作成功!!";

      int type=0;//成功

      try {

         //调用service执行用户添加

         userService.insertSysuser(sysuserQueryVo.getSysuserCustom());

      }catch(Exception e) {

         //输出异常信息

         e.printStackTrace();

         //对应异常信息进行解析

         message = e.getMessage();

         type=1;//失败

      }

      //将执行结果返回页面

     

      Map<String,Object> result_map= newHashMap<String, Object>();

      result_map.put("type", type);

      result_map.put("message",message);

      return result_map;

   }

1.2.4     页面

 

l  用户添加页面

在用户列表页面中,点击“添加”,打开添加页面。

使用如下方法打开一个新窗口:

 

 

//参数:窗口的title、宽、高、url地址

createmodalwindow("添加用户信息", 800, 250, '${baseurl}user/adduser.action');

createmodalwindow:使用jquery easyui的window组件,里边拼接一个html串,串就是ifram,ifram的链接就是用户添加的url

 

 

//datagrid 的工具栏

   var toolbar_v = [ {

      //工具栏

      id : 'btnadd',

      text : '添加',

      iconCls : 'icon-add',

      handler : function() {

      //打开一个窗口添加用户界面

      //参数窗口的title     url地址

      createmodalwindow("添加用户信息",800,250,"${baseurl}user/addsysuser.action");

      }

   } ];

 

l  用户添加提交

 

页面提交给服务端是key/value数据,服务端返回是json。

为什么服务要返回json?

Json作为接口交互通用格式越来越流行,在页面通过js解析json数据非常方便。

 

本系统采用post提交,使用jquery提供一个ajax的form提交组件。

Jquery.from.min.js  文件

 

封装一个js方法,用于提交form表单的数据,进行ajax提交,内部使用上边form提交的组件。

/*

*form提交(post方式)

*

*formId form Id

*callbackfn 回调函数名(要求函数必须有参数且不能多与两个,一个参数时参数为响应文本,两个参数时第一个参数为响应文本)

*param 回调函数参数(如果为null,那么调用一个参数的回调函数,否则调用两个参数的回调函数)

*dataType:预期服务器返回的数据类型

*/

function jquerySubByFId(formId,callbackFn,param,dataType){

   var formObj = jQuery("#" + formId);

   var options = {

            dataType:  ("undefined"!=dataType&& null!=dataType)?dataType:"json",

         success:function(responseText){

            if(param === null){

                callbackFn(responseText);

            }else{

                callbackFn(responseText,param);

            }

         }

   };

   formObj.ajaxSubmit(options);

}

 

 

在用户添加页面上编写提交方法:

 

function sysusersave(){

     //准备使用jquery 提供的ajax Form提交方式

     //formid传入,方法自动将form中的数据组成成key/value数据,通过ajax提交,提交方法类型为form中定义的method

     //使用ajax form提交时,不用指定urlurl就是form中定义的action

     //此种方式和原始的post方式差不多,只不过使用了ajax方式

    

     //第一个参数:formid

     //第二个参数:sysusersave_callback是回调函数,sysusersave_callback当成一个方法的指针

     //第三个参数:传入的参数,可以为空

     //第四个参数:dataType预期服务器返回的数据类型,这里action返回json

     //根据formid找到该formaction地址

     jquerySubByFId('userform',sysusersave_callback,null,"json");

    

  }

 

 

//编写提交回调方法 此方法使用了dataGrid 的message 方法

 

  function sysusersave_callback(data){
 
//alert(data.message);
  if(data.type=='0'){
 $.messager.alert('提示信息',data.message,'success');
 }else{
 $.messager.alert('提示信息',data.message,'error');
 }

 

在回调方法中,使用jqueryeasyui的提示方法。

 

你可能感兴趣的:(spring,mvc,datagrid)