EasyUI+JavaWeb奖助学金管理系统[17]-问题反馈功能开发

1. 本章任务

前期已完成以下功能开发:

  • 登录
  • 后台管理主页面
  • 奖助学金项目管理
  • 机构管理
  • 人员管理
  • 角色权限管理

今天来开发问题反馈功能。问题反馈是指学生提出反馈问题,并且查看反馈问题的答复信息(管理员负责答复问题)。

此处涉及两个页面:学生问题反馈页面questionAsk.html,管理员问题答复页面questionReply.html

2. 添加菜单

首先在WebContent目录下添加两个页面questionAsk.htmlquestionReply.html

然后在Menu表添加两个菜单:

INSERT INTO `scholar-system`.`menu`(`id`, `name`, `path`) VALUES (5, '问题反馈', 'questionAsk.html');
INSERT INTO `scholar-system`.`menu`(`id`, `name`, `path`) VALUES (6, '问题答复', 'questionReply.html');

最后还需要通过管理员的权限管理页面,为管理员角色添加问题答复权限,为学生角色添加问题反馈权限。

3. 学生问题反馈开发

首先学生需要能分页查看自己反馈的问题,此处就是一个普通的分页查询,需要注意的一点是在查询时需要携带当前登录用户的信息,因为学生只能查看自己反馈的问题。然后学生可以提交问题,在问题反馈表中新增一条记录即可。

修改questionAsk.html代码:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">
		<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
		<link rel="stylesheet" type="text/css" href="css/main.css">
		<script type="text/javascript" src="easyui/jquery.min.js"></script>
		<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
		<script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>
	</head>

	<body>
		<div class="tool-box">
			<a id="btn" onclick="btnAddClick()" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add'">反馈问题</a>
		</div>
		<table id="mainTable" title="已反馈问题列表" class="easyui-datagrid" url="CoreServlet?method=getQuestionPage" pagination="true"
		 singleSelect="true" fitColumns="true">
			<thead>
				<tr>
					<th data-options="field:'id',width:50">序号</th>
					<th data-options="field:'userName',width:50">反馈人</th>
					<th data-options="field:'departName',width:50">所属班级</th>
					<th data-options="field:'content',width:100">问题内容</th>
					<th data-options="field:'reply',width:100">问题答复</th>
				</tr>
			</thead>
		</table>
		<!-- 新增弹窗 -->
		<div id="dialog-add" class="easyui-dialog" title="问题反馈" data-options="iconCls:'icon-ok',closed:'true'" style="width: 600px; height: 400px; padding: 10px">
			<table>
				<tr>
					<td>反馈内容:</td>
					<td><input id="add-content" class="easyui-textbox" style="width: 200px"></td>
				</tr>
				<tr>
					<td></td>
					<td><a id="btn" onclick="btnAddSubmit()" href="#" class="easyui-linkbutton">保存</a></td>
				</tr>
			</table>
		</div>
	</body>
	<script>
		// 新增点击
		function btnAddClick() {
			$('#dialog-add').dialog('open');
		}
		// 新增保存
		function btnAddSubmit() {
			var param = {
				content: $("#add-content").val()
			}
			$.ajax({
				url: "CoreServlet?method=questionSubmit",
				type: "post",
				dataType: "json",
				data: param,
				success: function(res) {
					console.log(res);
					if (res.code == 0) { //成功则刷新表格
						$('#mainTable').datagrid('reload');
						$('#dialog-add').dialog('close');
					} else { //提示错误信息
						alert(res.msg);
					}
				},
			});
		}
	</script>
</html>

修改CoreServlet:

// 获取问题列表
		else if (method.equals("getQuestionPage")) {
			if (loginUser.getRole().equals("schoolmaster")) {// 管理员查看全部问题
				QuestionDao questionDao = new QuestionDao();
				total = questionDao.getCount();
				result.setTotal(total);
				result.setRows(questionDao.getPage(page, rows));
			} else if (loginUser.getRole().equals("student")) {// 学生查看自己提交的问题
				QuestionDao questionDao = new QuestionDao();
				total = questionDao.getCount(loginUser.getId());
				result.setTotal(total);
				result.setRows(questionDao.getPage(page, rows, loginUser.getId()));
			}
		}
		// 提交问题
		else if (method.equals("questionSubmit")) {
			// 获取机构信息
			DepartDao departDao = new DepartDao();
			Depart depart = departDao.getById(loginUser.getDepartId());
			// 组装问题信息
			Question question = new Question();
			question.setUserId(loginUser.getId());
			question.setUserName(loginUser.getUserName());
			question.setDepartId(depart.getId());
			question.setDepartName(depart.getName());
			question.setContent(request.getParameter("content"));
			// 插入数据库
			QuestionDao questionDao = new QuestionDao();
			questionDao.insert(question);
			result.setCode(0);
			result.setMsg("操作成功");
		}

修改QuestionDao:

	/**
	 * 获取数量
	 */
	public int getCount() throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select count(id) from question ";
		QueryRunner runner = new QueryRunner();
		Number number = (Number) runner.query(conn, sql, new ScalarHandler());
		int value = number.intValue();
		ConnectionUtils.releaseConnection(conn);
		return value;
	}

	/**
	 * 分页查询
	 */
	public List<Question> getPage(int page, int rows) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select * from question limit ?,?";
		QueryRunner runner = new QueryRunner();
		Object[] params = { (page - 1) * rows };
		List<Question> questions = runner.query(conn, sql, new BeanListHandler<Question>(Question.class), params);
		ConnectionUtils.releaseConnection(conn);
		return questions;
	}

	/**
	 * 获取数量(通过userId)
	 */
	public int getCount(String userId) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select count(id) from question where userId=?";
		QueryRunner runner = new QueryRunner();
		Object[] params = { userId };
		Number number = (Number) runner.query(conn, sql, new ScalarHandler(), params);
		int value = number.intValue();
		ConnectionUtils.releaseConnection(conn);
		return value;
	}

	/**
	 * 分页查询(通过userId)
	 */
	public List<Question> getPage(int page, int rows, String userId) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select * from question where userId=? limit ?,?";
		QueryRunner runner = new QueryRunner();
		Object[] params = { userId,(page - 1) * rows, rows };
		List<Question> questions = runner.query(conn, sql, new BeanListHandler<Question>(Question.class), params);
		ConnectionUtils.releaseConnection(conn);
		return questions;
	}

4. 管理员问题答复功能开发

其实管理员功能答复,首先是显示所有问题的分页列表,然后就是可以编辑其中一个问题的reply属性。

没有什么新的功能,感兴趣的可以直接去看源码。

5. 总结

问题反馈和问题答复其实就是一个变通版本的分页查询、新增、修改功能。需要根据登录人员的角色查询/处理不同的数据库数据而已。


如有问题请扫码联系我
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页