1.第一关
1.1 mapper层
package net.educoder.mapper;
import net.educoder.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface Step1Mapper {
/********** Begin **********/
/**
* 查询所有布控嫌疑人
*
* @return
*/
@Select("select * from monitoring")
List<User> findMonitoringUser();
/********** End **********/
@Select("select * from monitoring where 1=0")
void init();
}
1.2 Service层
package net.educoder.service.impl;
import net.educoder.entity.User;
import net.educoder.mapper.Step1Mapper;
import net.educoder.service.Step1Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class Step1ServiceImpl implements Step1Service {
/********** Begin **********/
@Autowired
Step1Mapper mapper;
@Override
public List<User> findMonitoringUser() {
return mapper.findMonitoringUser();
}
/********** End **********/
}
1.3 controller层
package net.educoder.controller;
import net.educoder.entity.User;
import net.educoder.service.Step1Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class Step1Controller {
/********** Begin **********/
@Autowired
Step1Service service;
@RequestMapping("/monitoringUser")
@ResponseBody
public Map<String, Object> monitoringUser() {
HashMap<String, Object> map = new HashMap<>();
List<User> list = service.findMonitoringUser();
map.put("code", 0);
map.put("msg", "");
map.put("count", list.size());
map.put("data", list);
return map;
}
/********** End **********/
}
1.4 html界面
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>精准布控</title>
<link rel="stylesheet" type="text/css" th:href="@{/jw/css/index.css}">
<link rel="stylesheet" type="text/css" th:href="@{/jw/css/magic-check.css}">
<script type="text/javascript" th:src="@{/jw/js/jquery-3.3.1.min.js}"></script>
<script type="text/javascript" th:src="@{/jw/js/index.js}"></script>
<link rel="stylesheet" type="text/css" th:href="@{/layui/css/layui.css}">
</head>
<body>
<div class="policeHead">
<img th:src="@{/jw/images/logo.png}"/>
<a href="/" class="returnToIndex">返回</a>
<table id="demo" lay-filter="test"></table>
<div id="jsmind_container"></div>
</div>
<script type="text/javascript" th:src="@{/layui/layui.all.js}"></script>
<script th:inline="javaScript">
layui.use('table', function () {
var table = layui.table;
/********** Begin **********/
table.render({
elem: '#demo',
height: 312,
url: '/monitoringUser',
page: true,
cols: [[//表头
{field: 'id', title: '身份证号码', fixed: 'left'},
{field: 'trueName', title: '真实姓名'},
{field: 'monitoringTime', title: '布控时间'},
{field: 'monitoringRange', title: '布控范围'}
]]
});
/********** End **********/
});
</script>
</body>
</html>
2.第二关
2.1 mapper层
package net.educoder.mapper;
import net.educoder.entity.Event;
import net.educoder.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface Step2Mapper {
/********** Begin **********/
/**
* 通过用户编号查询日志事件
*
* @param code
* @return
*/
@Select("select * from eventLog where code = #{code}")
List<Event> findEventLogByCode(String code);
/**
* 通过用户编号查询布控嫌疑人基本布控信息
*
* @param id
* @return
*/
@Select("select * from monitoring where id = #{id}")
User findMonitoringUserById(String id);
/********** End **********/
}
2.2 Service层
package net.educoder.service.impl;
import net.educoder.entity.Event;
import net.educoder.entity.JsMind;
import net.educoder.entity.User;
import net.educoder.mapper.Step2Mapper;
import net.educoder.service.Step2Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class Step2ServiceImpl implements Step2Service {
/********** Begin **********/
@Autowired
Step2Mapper mapper;
@Override
public List<JsMind> findEventLogByCode(String id) {
List<JsMind> list = new ArrayList<>();
User user = mapper.findMonitoringUserById(id);
List<Event> log = mapper.findEventLogByCode(id);
for (int i = 0; i < log.size(); i++) {
if (i == 0) {
JsMind jsMind = new JsMind("root", "true", "", user.getTrueName());
list.add(jsMind);
}
JsMind jsMind = new JsMind(i + "", "false", "root", log.get(i).getLog());
list.add(jsMind);
}
return list;
}
/********** End **********/
}
2.3 controller层
package net.educoder.controller;
import net.educoder.entity.JsMind;
import net.educoder.service.Step2Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class Step2Controller {
/********** Begin **********/
@Autowired
Step2Service service;
@RequestMapping("/jsMindInfo")
@ResponseBody
public Map<String, Object> jsMindInfo(String id) {
HashMap<String, Object> map = new HashMap<>();
List<JsMind> list = service.findEventLogByCode(id);
map.put("list", list);
return map;
}
/********** End **********/
}
2.4 html界面
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>精准布控</title>
<link rel="stylesheet" type="text/css" th:href="@{/jw/css/index.css}">
<link rel="stylesheet" type="text/css" th:href="@{/jw/css/magic-check.css}">
<script type="text/javascript" th:src="@{/jw/js/jquery-3.3.1.min.js}"></script>
<script type="text/javascript" th:src="@{/jw/js/index.js}"></script>
<link rel="stylesheet" type="text/css" th:href="@{/layui/css/layui.css}">
<link rel="stylesheet" type="text/css" th:href="@{/jsmind/jsmind.css}">
<script type="text/javascript" th:src="@{/jsmind/jsmind.draggable.js}"></script>
<script type="text/javascript" th:src="@{/jsmind/jsmind.js}"></script>
<style type="text/css">
#jsmind_container {
height: 600px;
border: solid 1px #ccc;
/*background:#f4f4f4;*/
background: #f4f4f4;
}
</style>
</head>
<body>
<div class="policeHead">
<img th:src="@{/jw/images/logo.png}"/>
<a href="/" class="returnToIndex">返回</a>
<table id="demo" lay-filter="test"></table>
<div id="jsmind_container"></div>
</div>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs layui-btn-normal layui-btn-fluid" lay-event="cat">查看</a>
</script>
<script type="text/javascript" th:src="@{/layui/layui.all.js}"></script>
<script th:inline="javaScript">
layui.use('table', function () {
var table = layui.table;
//第一个实例
table.render({
elem: '#demo'
, height: 312
, url: '/monitoringUser'
, page: true //开启分页
, cols: [[ //表头
{field: 'id', title: '身份证号码', fixed: 'left'}
, {field: 'trueName', title: '真实姓名'}
, {field: 'monitoringTime', title: '布控时间'}
, {field: 'monitoringRange', title: '布控范围'}
, {fixed: 'right', title: '操作', toolbar: '#barDemo'}
]]
});
table.on('tool(test)', function (obj) {
var data = obj.data;
if (obj.event === 'cat') {
load_jsmind(data.id)
}
});
});
var options = {
container: 'jsmind_container',
editable: true,
theme: 'primary'
}
var jm = new jsMind(options);
function load_jsmind(id) {
/********** Begin **********/
$.ajax({
url: "/jsMindInfo",
data: {"id": id},
success: function (data) {
var mind = {
"meta": {
"name": "example",
"author": "hizzgdev@163.com",
"version": "0.2"
},
"format": "node_array",
"data": data.list
};
jm.show(mind)
},
dataType: "json",
type: "post"
});
/********** End **********/
}
</script>
</body>
</html>