Itrip项目(4)个人中心实现联系人功能

244 阅读8分钟

一、在后端prjuser工程实现个人中心里管理联系人功能(后台代码)

(1)在prjuser工程的mapper包里接口类ItripUserLinkUserMapper里添加联系人相关方法:

    /**
     * 查找所有联系人
     * */
    public List<ItripUserLinkUser> findPageAll(Map<String,Object> map);

    /**
     * 获取总记录数
     * */
    public int findMaxRow();

将上述联系人方法在resource目录下ItripUserLinkUserMapper.xml进行具体实现:

<!--  分页  -->
  <select id="findPageAll" resultMap="BaseResultMap" parameterType="java.util.Map" >
    select
        <include refid="Base_Column_List" />
    from itrip_user_link_user
    where 1=1 order by id limit ${(page-1)*rows},${rows}
  </select>

  <!-- 获取总记录数 -->
  <select id="findMaxRow" resultType="int">
    select count(*) from itrip_user_link_user
  </select>

(2)编写联系人方法的业务类,在biz包下新建接口类ItripUserLinkUserBiz

public interface ItripUserLinkUserBiz {
	public boolean save(ItripUserLinkUser linkUser);
	public boolean update(ItripUserLinkUser linkUser);
	public boolean delById(Long id);
	public ItripUserLinkUser findById(Long id);
	/**
	 * 查找所有联系人
	 * */
	public List<ItripUserLinkUser> findPageAll(int page,int rows);

	/**
	 * 获取总记录数
	 * */
	public int findMaxPage(int rows);
}

编写联系人业务的实现类ItripUserLinkUserBizImp

@Service
@Transactional
public class ItripUserLinkUserBizImp implements ItripUserLinkUserBiz {
	@Autowired
	private ItripUserLinkUserMapper userLinkUserMapper;

	public ItripUserLinkUserMapper getUserLinkUserMapper() {
		return userLinkUserMapper;
	}

	public void setUserLinkUserMapper(ItripUserLinkUserMapper userLinkUserMapper) {
		this.userLinkUserMapper = userLinkUserMapper;
	}

	@Override
	public boolean save(ItripUserLinkUser linkUser) {
		int row=userLinkUserMapper.insert(linkUser);
		if(row>0){  //受影响行数>0
			return true;
		}
		return false;
	}

	@Override
	public boolean update(ItripUserLinkUser linkUser) {
		int row=userLinkUserMapper.updateByPrimaryKey(linkUser);
		if(row>0){
			return true;
		}

		return false;
	}

	@Override
	public boolean delById(Long id) {
		int row=userLinkUserMapper.deleteByPrimaryKey(id);
		if(row>0){
			return true;
		}
		return false;
	}

	@Override
	public ItripUserLinkUser findById(Long id) {
		return userLinkUserMapper.selectByPrimaryKey(id);
	}

	@Override
	public List<ItripUserLinkUser> findPageAll(int page,int rows) {     //当前页数和每页记录数
		if(page<1)page=1;
		if(rows<1)rows=5;

		Map<String,Object> map=new HashMap<>();
		map.put("page",page);
		map.put("rows",rows);


		return userLinkUserMapper.findPageAll(map);
	}

	/***
	 * 获取总页数
	 * */
	@Override
	public int findMaxPage(int rows) {
		int maxrow=0;
		int maxpage=1;
		maxrow=userLinkUserMapper.findMaxRow();
		if(maxrow>0){
			maxpage=maxrow%rows==0?maxrow/rows:maxrow/rows+1;
		}

		return maxpage;
	}
}

(3)编写联系人方法的控制器类接口ItripUserLinkUserAction(传递Web信息)

public interface ItripUserLinkUserAction {
	public String save(HttpServletRequest request,HttpServletResponse response, ItripUserLinkUser linkUser);
	public String update(HttpServletRequest request,HttpServletResponse response, ItripUserLinkUser linkUser);
	public String delById(HttpServletRequest request,HttpServletResponse response, Long id);
	public String findById(HttpServletRequest request,HttpServletResponse response, Long id);
	public String findPageAll(HttpServletRequest request,HttpServletResponse response, Integer page,Integer rows);
}

在imp包编写控制器接口的实现类ItripUserLinkUserImpAction

@CrossOrigin(allowCredentials = "true", maxAge = 3600) //跨域请求注解
@RestController
public class ItripUserLinkUserImpAction implements ItripUserLinkUserAction {
	@Autowired
	private ItripUserLinkUserBiz userLinkUserBiz;

	public ItripUserLinkUserBiz getUserLinkUserBiz() {
		return userLinkUserBiz;
	}

	public void setUserLinkUserBiz(ItripUserLinkUserBiz userLinkUserBiz) {
		this.userLinkUserBiz = userLinkUserBiz;
	}

	@Override
	@RequestMapping(value = "save_LinkUser.do")
	public String save(HttpServletRequest request, HttpServletResponse response, ItripUserLinkUser linkUser) {
		boolean flag=userLinkUserBiz.save(linkUser);
		if(flag){
			return ""+1;
		}
		return ""+0;
	}

	@Override
	@RequestMapping(value = "update_LinkUser.do")
	public String update(HttpServletRequest request, HttpServletResponse response, ItripUserLinkUser linkUser) {
		boolean flag=userLinkUserBiz.update(linkUser);
		if(flag){
			return ""+1;
		}
		return ""+0;
	}

	@Override
	@RequestMapping(value = "delById_LinkUser.do")
	public String delById(HttpServletRequest request, HttpServletResponse response, Long id) {
		boolean flag=userLinkUserBiz.delById(id);
		if(flag){
			return ""+1;
		}
		return ""+0;

	}

	@Override
	@RequestMapping(value = "findById_LinkUser.do")
	public String findById(HttpServletRequest request, HttpServletResponse response, Long id) {
		ItripUserLinkUser oldlinkUser=userLinkUserBiz.findById(id);
		if(oldlinkUser!=null){
			String jsonstr=JSONObject.toJSONString(oldlinkUser);
			System.out.println("js-->"+jsonstr);
			return jsonstr;
		}
		return null;

	}

	@Override
	@RequestMapping(value = "findPageAll_LinkUser.do")
	public String findPageAll(HttpServletRequest request, HttpServletResponse response, Integer page, Integer rows) {
		page=page==null||page<1?1:page;
		rows=rows==null||rows<1?5:rows;

		if(rows>20)rows=20;//限制每页显示的记录数不能超过20条
		//获取总页数
		int maxpage=userLinkUserBiz.findMaxPage(rows);
		if(page>maxpage)page=maxpage;

		//获取每页记录的集合
		List<ItripUserLinkUser> linkUserList=userLinkUserBiz.findPageAll(page, rows);

		Map<String,Object> map=new HashMap<>();
		map.put("page", page);
		map.put("rows", rows);
		map.put("maxpage", maxpage);
		map.put("linkUserList", linkUserList);

		String jsonstr=JSONObject.toJSONString(map);
		System.out.println("js-->"+jsonstr);
		return jsonstr;
	}
}

二、在前端prjview工程实现个人中心里管理联系人功能(前端代码)

(1)在prjview工程里新建webapp->myinfo->index.html展示个人中心前台界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>个人中心-常用旅客</title>
    <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" href="../css/reset.css"/>
    <link rel="stylesheet" href="../css/font-awesome.min.css"/>
    <link rel="stylesheet" href="../css/common.css"/>
    <link rel="stylesheet" href="../lib/cityselect/cityselect.css"/>
    <link rel="stylesheet" href="../css/index.css"/>
    <link rel="stylesheet" href="../css/travel.css"/>
    <link rel="stylesheet" href="../css/strategy.css"/>
    <!-- 引入easyui的jQuery框架 -->
    <link rel="stylesheet" type="text/css" href="../easyui/themes/bootstrap/easyui.css">
    <link rel="stylesheet" type="text/css" href="../easyui/themes/icon.css">
    
    
    <script src="../lib/jquery-2.1.4.min.js" type="text/javascript"></script>
    <script src="../lib/cityselect/cityselect.js" type="text/javascript"></script>
    <script src="../lib/echarts/echarts.min.js"></script>
    <script src="../lib/echarts/shine.js"></script>
    <script src="../lib/echarts/china.js"></script>
    
    <!-- 引入easyui的js文件 -->
    <script src="../easyui/jquery.easyui.min.js"></script>
    <script src="../easyui/locale/easyui-lang-zh_CN.js"></script>
</head>
<body>

<!-- nav开始 -->
<div class="i-nav clearfix">
    <div class="i-nav-wrap">
        <ul>
            <li><a href="../index.html" class=""><i class="icon-home"></i>首页</a></li>
            <li><a href="../travel/index.html" class="current"><i class="icon-globe"></i>旅游</a></li>
            <li ><a href="../tavern/index.html"><i class="icon-hospital"></i>酒店</a></li>
            <li><a href="../flyTicket.html"><i class="icon-plane"></i>机票</a></li>
             <!-- <li><a href="#"><i class="icon-credit-card"></i>门票</a></li> -->
            <li><a href="index.html"><i class="icon-book"></i>攻略</a></li>
        </ul>
        <!-- 未登录显示 -->
        <div class="i-nav-login" id="unlogin">
            <a href="login.html">登陆</a>
            <span>|</span>
            <a href="register.html">注册</a>
        </div>

        <!-- 用于登录者呈现登陆者的用户姓名 -->
        <div class="i-nav-login" id="username">
            <font color="#f0ffff">欢迎您:</font><span id="uname">xxx</span>|<font color="#f0ffff"><a id="btmyinfo" href="myinfo/index.html">用户中心</a></font>|<font color="#f0ffff"><a id="btlogout" href="#">注销</a></font>
        </div>
    </div>
</div>
<!-- nav结束 -->

<!-- 内容开始 -->
<div id="cc" class="easyui-layout" data-options="border:false" style="width:100%;height:650px;">

    <!-- 左侧导航面板  -->
    <div data-options="region:'west',title:'我的i旅行首页',split:true" style="width:250px;">
        <div id="aa" class="easyui-accordion"  style="width:250px;height:fit-content;">
            <div title="订单" data-options="iconCls:'icon-save',selected:true" style="overflow:auto;padding:20px;">
                <h2 style="font-size: 14px;padding: 5px">全部订单</h2>
                <h2 style="font-size: 14px;padding: 5px">旅游订单</h2>
                <h2 style="font-size: 14px;padding: 5px">酒店订单</h2>
                <h2 style="font-size: 14px;padding: 5px">机票订单</h2>
            </div>
            <div title="个人中心" data-options="iconCls:'icon-reload'" style="padding:20px;">
                <h2 style="font-size: 14px;padding: 5px"><a href="#" id="btmyinfolinkuser">常用旅客信息</a></h2>
            </div>

        </div>

    </div>
    <!-- 内容面板 -->
    <div data-options="region:'center',title:'个人中心',border:false" style="padding:5px;background:#eee;width:880px;height:450px">

        <div id="myinfo-ttab" data-options="border:false" class="easyui-tabs" style="width: 800px;height: 450px">

		</div>
    </div>
</div>

<!-- 内容结束 -->
<script src="index.js" type="text/javascript"></script>
<script>
    window.onload = function (e) {
        strategy.init();
    }
</script>
</body>
</html>

index.js文件里编写index.html的点击事件

//点击常用联系人信息
$(function(){
    $("#btmyinfolinkuser").click(function(){
        if($('#myinfo-ttab').tabs('exists','常用旅客信息')){//判断常用旅客信息面板是否出现在容器上
            $('#myinfo-ttab').tabs('select','常用旅客信息');//选择‘常用旅客信息’面板
        }else{
            // 添加新的标签面板
            $('#myinfo-ttab').tabs('add',{
                title:'常用旅客信息',
                content:'<iframe src="linkuser.html" frameborder="0" width="100%" height="350px" marginheight="0" marginwidth="0" scrolling="no"></iframe>',
                fit:true,
                //closable:true,
                tools:[{
                    iconCls:'icon-mini-refresh',
                    handler:function(){
                        alert('refresh');
                    }
                }]
            });
        }
    });
});

/*****登陆者信息**************/
$("#unlogin").show();
$("#username").hide();

//读取本地cookie
//读取
function readCookie(name){

    var searchName=name+"=";
    var cookies=document.cookie.split(';');
    for(var i=0;i<cookies.length;i++){
        var c=cookies[i];
        while(c.charAt(0)==' '){
            c=c.substring(1,c.length);
        }
        if(c.indexOf(searchName)==0){
            return c.substring(searchName.length,c.length)
        }
    }
    return null;
}
$(function(){
    var id=readCookie("id");
    //alert(id);
    $.getJSON('http://localhost:9001/showIndexUser_Users.do?id='+id,function (us) {
        //alert(us);
        if(us!=''){
            $("#uname").html('<font color="#f0ffff">'+us.username+'</font>');
            $("#unlogin").hide();
            $("#username").show();
        }
    });

    /***********************************************/
//注销用户登录
    $("#btlogout").click(function(){
        $.get('http://localhost:9001/logout_Users.do?id='+id,function(rst){
            alert(rst);
            if(rst=='注销成功'){
                $("#unlogin").show();
                $("#username").hide();
            }
        });
    });

添加常用旅客信息面板linkuser.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
	<!-- 引入easyui的jQuery框架 -->
	<link rel="stylesheet" type="text/css" href="../easyui/themes/bootstrap/easyui.css">
	<link rel="stylesheet" type="text/css" href="../easyui/themes/icon.css">


	<script src="../lib/jquery-2.1.4.min.js" type="text/javascript"></script>

	<!-- 引入easyui的js文件 -->
	<script src="../easyui/jquery.easyui.min.js"></script>
	<script src="../easyui/locale/easyui-lang-zh_CN.js"></script>
	<script src="linkuser.js"></script>
</head>
<body>
	<div data-options="region:'center',fit:true,border:false">

		<div id="p" class="easyui-panel" title="旅客信息"
		     style="width:800px;height:350px;padding:10px;background:#fafafa;"
		     data-options="border:false"
		    >
			<a id="btadd" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add'">添加联系人</a><br>
			<table id="dg"></table>

		</div>
	</div>
	<!-- 添加联系人的窗口 -->
	<div id="win" class="easyui-window" title="添加用户信息" style="width:400px;height:350px"
	     data-options="iconCls:'icon-save',modal:true">
		<form id="ff" action="" method="post" name="ff">
			<div style="padding: 10px">
				姓&nbsp;&nbsp;&nbsp;名:&nbsp;&nbsp;<input type="text" class="easyui-validatebox" name="linkusername" id="linkusername" data-options="required:true"/><br>
				<input type="hidden" name="id" id="id"/>
				<input type="hidden" name="userid" id="userid"/>
				<input type="hidden" name="createdby" id="createdby"/>
				<input type="hidden" name="screationdate" id="screationdate"/>
			</div>
			<div style="padding: 10px">
				电&nbsp;&nbsp;&nbsp;话:&nbsp;&nbsp;<input type="text" class="easyui-validatebox" name="linkphone" id="linkphone" data-options="required:true"/><br>
			</div>
			<div style="padding: 10px">
				身份证:&nbsp;&nbsp;<input type="text" class="easyui-validatebox" name="linkidcard" id="linkidcard" data-options="required:true"/><br>
			</div>
			<div style="padding: 10px">
				<a id="btsave" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-save'">保存</a>
				<a id="btupdate" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-save'">修改</a>
			</div>
		</form>
	</div>
</body>
</html>

linkuser.js

//读取本地cookie
//读取
function readCookie(name){

	var searchName=name+"=";
	var cookies=document.cookie.split(';');
	for(var i=0;i<cookies.length;i++){
		var c=cookies[i];
		while(c.charAt(0)==' '){
			c=c.substring(1,c.length);
		}
		if(c.indexOf(searchName)==0){
			return c.substring(searchName.length,c.length)
		}
	}
	return null;
}

$(function(){
	var uid=readCookie("id");//从cookie中获取登陆者的id

	//设置对话窗口为关闭状态
	$('#win').window('close');  // close a window

	$('#dg').datagrid({
		url : 'http://localhost:9001/findPageAll_LinkUser.do?t=' + new Date().getTime(),
		width:'750',
		loadMsg:'正在加载网络数据,请稍后.....',
		singleSelect:true,
		pagination:true,
		pageList:[5,10,15,20],
		pageSize:5,
		striped:true,
		columns : [ [   //此处属性与实体类属性名保持一致
			{
				field : 'id',
				title : '编号',
				width : '50',
				align : 'center'
			},
			{
				field : 'linkusername',
				title : '姓名',
				width : '100',
				align : 'center'
			},
			{
				field : 'linkphone',
				title : '手机/电话',
				width : '100',
				align : 'center'
			},
			{
				field : 'linkidcardtype',
				title : '证件类型',
				width : '100',
				align : 'center',
				formatter:function(value,row,index){
					if(row.linkidcardtype=='0'){
						return '身份证';
					}
					if(row.linkidcardtype=='1'){
						return '驾驶证';
					}
				}
			},
			{
				field : 'linkidcard',
				title : '证件号码',
				width : '200',
				align : 'center'
			},
			{
				field : 'opts',
				title : '操作',
				width : 200,
				align : 'center',
				formatter:function(value,row,index){
					if(row.userid==1001){
						return '';
					}
					return '<input type=button value=删除  onclick="dodel('+row.id+')"/> <input type=button value=修改  onclick="findById('+row.id+')"/>';
				}
			}
		] ]
	});

由于使用到easyui,所以对后台代码进行更新:
在ItripUserLinkUserBiz里添加:

/**
	 * 获取总记录数
	 * */
	public int findMaxRow();

在ItripUserLinkUserBizImp里添加:

/**
	 * 获取总记录数
	 * */
	public int findMaxRow(){
		return userLinkUserMapper.findMaxRow();

在实现类ItripUserLinkUserImpAction里更新:

@Override
	@RequestMapping(value = "findPageAll_LinkUser.do")
	public String findPageAll(HttpServletRequest request, HttpServletResponse response, Integer page, Integer rows) {
		page=page==null||page<1?1:page;
		rows=rows==null||rows<1?5:rows;

		if(rows>20)rows=20;//限制每页显示的记录数不能超过20条
		//获取总页数
		int maxpage=userLinkUserBiz.findMaxPage(rows);
		if(page>maxpage)page=maxpage;

		//获取总记录数
		int maxrow=userLinkUserBiz.findMaxRow();
		//获取每页记录的集合
		List<ItripUserLinkUser> linkUserList=userLinkUserBiz.findPageAll(page, rows);

		Map<String,Object> map=new HashMap<>();
		map.put("page", page);//传递给easyui当前页数
		map.put("rows", linkUserList);//传递给easyui分页控件的记录集合,使用rows封装
		map.put("total", maxrow);//传递给easyui的分页控件,自动进行分页处理

		String jsonstr=JSONObject.toJSONString(map);
		System.out.println("js-->"+jsonstr);
		return jsonstr;
	}

linkuser.js补充添加事件(对联系人保存添加等等)

//点击添加联系人
	$("#btadd").click(function(){
		$('#win').window('open');  // close a window
	});

//保存联系人事件
	$("#btsave").click(function(){
		$("#userid").val(uid);
		$("#createdby").val(uid);
		var date=new Date();
		$("#screationdate").val(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate());

//easyui的form表单提交
		$.messager.progress();	// 显示进度条
		$('#ff').form('submit', {
			url: 'http://localhost:9001/save_LinkUser.do',
			onSubmit: function(){
				var isValid = $(this).form('validate');
				if (!isValid){
					$.messager.progress('close');	// 如果表单是无效的则隐藏进度条
				}
				return isValid;	// 返回false终止表单提交
			},
			success: function(msg){
				//alert(msg);
				//if(msg=='1'){
					$.messager.alert('提示','保存成功!');
					$('#dg').datagrid('reload');    // 重新载入当前页面数据

				//}else{
				//	$.messager.alert('提示','保存失败!');
				//}
				$.messager.progress('close');	// 如果提交成功则隐藏进度条
				$('#win').window('close');  // close a window
			}
		});
/**************************保存联系人结束************************************/

//修改联系人按钮事件
	$("#btupdate").click(function(){
		/*********easyui的form表单提交**************/
		$.messager.progress();	// 显示进度条
		$('#ff').form('submit', {
			url: 'http://localhost:9001/update_LinkUser.do',
			onSubmit: function(){
				var isValid = $(this).form('validate');
				if (!isValid){
					$.messager.progress('close');	// 如果表单是无效的则隐藏进度条
				}
				return isValid;	// 返回false终止表单提交
			},
			success: function(msg){
				//alert(msg);
				//if(msg=='1'){
				$.messager.alert('提示','更新成功!');
				$('#dg').datagrid('reload');    // 重新载入当前页面数据

				//}else{
				//	$.messager.alert('提示','保存失败!');
				//}
				$.messager.progress('close');	// 如果提交成功则隐藏进度条
				$('#win').window('close');  // close a window
			}
		});
	});
});



//删除联系人
function dodel(id){
	$.messager.confirm('确认','您确认想要删除记录吗?',function(r){
		if (r){
			$.get('http://localhost:9001/delById_LinkUser.do?id='+id,function(msg){
				if(msg=='1'){
					$.messager.alert('提示','删除成功!');
					$('#dg').datagrid('reload');    // 重新载入当前页面数据

				}else{
					$.messager.alert('提示','删除失败!');
				}
			});
		}
	});
}

//查找联系人
function findById(id){
	//读取远程服务器返回的数据给表单元素赋值
	$('#ff').form('load','http://localhost:9001/findById_LinkUser.do?id='+id);	// 读取表单的URL
	$('#win').window('open');  // open a window
}