1. 本章任务
前期已完成以下功能开发:
- 登录
- 后台管理主页面
- 奖助学金项目管理
- 机构管理
- 人员管理
- 角色权限管理
今天来开发问题反馈功能。问题反馈是指学生提出反馈问题,并且查看反馈问题的答复信息(管理员负责答复问题)。
此处涉及两个页面:学生问题反馈页面questionAsk.html
,管理员问题答复页面questionReply.html
。
2. 添加菜单
首先在WebContent
目录下添加两个页面questionAsk.html
和questionReply.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. 总结
问题反馈和问题答复其实就是一个变通版本的分页查询、新增、修改功能。需要根据登录人员的角色查询/处理不同的数据库数据而已。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦