src/main/java/com/whyc/controller/LoginController.java
New file @@ -0,0 +1,55 @@ package com.whyc.controller; import com.whyc.dto.Response; import com.whyc.service.LoginService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @RequestMapping("login") @RestController @Api(tags = "登录") public class LoginController { @Autowired private LoginService service; @PostMapping("login") @ApiOperation(value ="登录") public Response login(@RequestParam String userName, String password,HttpServletRequest request){ return service.login(userName,password,request); } @PostMapping("logout") @ApiOperation(value ="退出登录") public void logout(){ service.logout(); } /**拦截登录*//* @GetMapping("/") @ApiIgnore public ModelAndView toLoginHtml(HttpServletRequest request, HttpServletResponse response,ModelAndView view) throws ServletException, IOException { //request.getRequestDispatcher("login.html").forward(request,response); System.out.println("转发啦..."); //response.setContentType("text/html;charset=utf-8"); //response.sendRedirect("http://localhost:8090/login.html"); //response.sendRedirect("/login.html"); view.setViewName("login"); return view; }*/ /**拦截登录*/ @GetMapping("unauthorized") @ApiIgnore public void unauthorized(HttpServletRequest request,HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=utf-8"); response.getWriter().write("您未获取到接口的调用授权,拒绝访问!"); } } src/main/java/com/whyc/controller/PermissionController.java
New file @@ -0,0 +1,62 @@ package com.whyc.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.whyc.pojo.Permission; import com.whyc.service.PermissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @RestController @RequestMapping("permission") @Api(tags = "权限") @Slf4j public class PermissionController { @Resource private PermissionService permissionService; @PostMapping @ApiOperation(value = "添加") public boolean add(@RequestBody Permission permission){ return permissionService.add(permission); } @PostMapping("/batch") @ApiOperation(value = "添加批量") public boolean addBatch(@RequestBody List<Permission> permissions){ return permissionService.addBatch(permissions); } @GetMapping("/all") @ApiOperation(value = "查询所有") public List<Permission> getAll(){ return permissionService.getAll(); } @GetMapping("/page") @ApiOperation(value = "查询分页") public IPage<Permission> getPage(@RequestParam int pageNum, int pageSize){ Page<Permission> page = new Page<>(pageNum, pageSize); return permissionService.getAllWithPage(page); } @PutMapping @ApiOperation(value = "编辑") public boolean update(@RequestBody Permission permission){ return permissionService.update(permission); } @DeleteMapping @ApiOperation(value = "删除") public boolean delete(@RequestParam int id){ return permissionService.delete(id); } } src/main/java/com/whyc/controller/RoleController.java
New file @@ -0,0 +1,137 @@ package com.whyc.controller; import com.whyc.pojo.*; import com.whyc.service.RoleMenuService; import com.whyc.service.RolePermissionService; import com.whyc.service.RoleService; import com.whyc.service.UserRoleService; import com.whyc.util.CommonUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @RequestMapping("role") @RestController @Slf4j @Api(value ="role value",tags = "角色相关-用户,权限,菜单") public class RoleController { @Autowired private RoleService roleService; @Autowired private UserRoleService userRoleService; @Autowired private RolePermissionService rolePermissionService; @Autowired private RoleMenuService roleMenuService; /**=============用户与角色================**/ @GetMapping("userWithNoRole") @ApiOperation(value = "查询未分配角色的用户") public List<User> getUserWithNoRole(){ return userRoleService.getUserWithNoRole(); } @GetMapping("userWithRole") @ApiOperation(value = "查询分配角色的用户") public List<UserRole> getUserWithRole(){ return userRoleService.getUserWithRole(); } @GetMapping("userWithRoleMap") @ApiOperation(value = "查询分配角色的用户Map") public Map<String,List<UserRole>> getUserWithRoleMap(){ return userRoleService.getUserWithRoleMap(); } @GetMapping("roleAll") @ApiOperation(value = "查询所有角色") public List<Role> getRoleAll(){ return roleService.getAll(); } @PostMapping @ApiOperation(value = "新增角色") public boolean add(@RequestBody Role role){ return roleService.add(role); } @PostMapping("batch") @ApiOperation(value = "批量新增角色") public boolean addBatch(@RequestBody List<Role> roles){ return roleService.addBatch(roles); } /** * TODO 采用caffeine重写 */ @PostMapping("bindingUserWithRole") @ApiOperation(value = "绑定用户和角色") @CacheEvict(cacheNames = {"userBridge"},key="'getAuthorizationInfo'+#p0") //清除 public boolean bindingUserWithRole(@RequestParam int userId,int roleId){ return userRoleService.bindingUserWithRole(userId,roleId); } /** * TODO 采用caffeine重写 */ @PostMapping("bindingUserWithRoleBatch") @ApiOperation(value = "批量绑定用户和角色",notes = "传入userId和roleId的数组") @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 public boolean bindingUserWithRoleBatch(@RequestBody List<UserRole> userRoles){ return userRoleService.bindingUserWithRoleBatch(userRoles); } /**===============角色与权限================**/ /** * TODO 采用caffeine重写 */ @PostMapping("bindingRoleWithPermission") @ApiOperation(value = "绑定角色-权限") @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 public boolean bindingRoleWithPermission(@RequestParam int roleId,int permissionId){ return rolePermissionService.bindingUserWithRole(roleId,permissionId); } /** * TODO 采用caffeine重写 */ @PostMapping("bindingRoleWithPermissionBatch") @ApiOperation(value = "批量绑定角色-权限",notes = "传入roleId和privilegeId的数组") @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 public boolean bindingRoleWithPermissionBatch(@RequestBody List<RolePermission> rolePermissions){ return rolePermissionService.bindingUserWithRoleBatch(rolePermissions); } @GetMapping("permissions") @ApiOperation(value = "获取当前用户的权限") public List<Permission> getPermissions(HttpServletRequest request){ User user = CommonUtil.getUser(request); return rolePermissionService.getPermissions(user.getId()); } /**==============用户-角色-菜单================**/ @GetMapping("userMenu") @ApiOperation(value = "获取当前用户的菜单") public List<Menu> getUserMenu(HttpServletRequest request){ User user = CommonUtil.getUser(request); return roleMenuService.getUserMenu(user.getId()); } } src/main/java/com/whyc/controller/StationController.java
New file @@ -0,0 +1,29 @@ package com.whyc.controller; import com.whyc.dto.Response; import com.whyc.pojo.Station; import com.whyc.service.StationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("video") @Api(tags = "站点") public class StationController { @Autowired private StationService service; @GetMapping("all") @ApiOperation(value = "查询所有机房站点") public Response<List<Station>> listAll(){ return service.listAll(); } } src/main/java/com/whyc/controller/UserController.java
New file @@ -0,0 +1,62 @@ package com.whyc.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.whyc.dto.Response; import com.whyc.pojo.User; import com.whyc.service.UserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @RestController @RequestMapping("user") @Api(tags = "用户") @Slf4j public class UserController { @Resource private UserService userService; @PostMapping @ApiOperation(value = "添加") public Response add(@RequestBody User user){ return userService.add(user); } @GetMapping @ApiOperation(value = "查询byId") public User getById(@RequestParam int id){ return userService.getById(id); } @GetMapping("/all") @ApiOperation(value = "查询所有") public List<User> getAll(){ return userService.getAll(); } @GetMapping("/page") @ApiOperation(value = "查询分页") public IPage<User> getPage(@RequestParam int pageNum,int pageSize){ Page<Object> page = new Page<>(pageNum, pageSize); return userService.getAllWithPage(page); } @PutMapping @ApiOperation(value = "编辑") public boolean update(@RequestBody User user){ return userService.update(user); } @DeleteMapping @ApiOperation(value = "删除") public boolean delete(@RequestParam int id){ return userService.delete(id); } } src/main/java/com/whyc/controller/VideoController.java
New file @@ -0,0 +1,54 @@ package com.whyc.controller; import com.whyc.dto.Response; import com.whyc.pojo.Video; import com.whyc.service.VideoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @RestController @RequestMapping("video") @Api(tags = "视频管理") public class VideoController { @Autowired private VideoService service; @PostMapping @ApiOperation(value = "添加") public Response add(@RequestBody Video video){ return service.add(video); } @GetMapping @ApiOperation(value = "查询设备信息-根据设备id") public Response getInfo(@RequestParam Integer id){ return service.getInfo(id); } @PostMapping("page") @ApiOperation(value = "查询设备列表分页") public Response getPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestBody Video video){ return service.getPage(pageNum,pageSize,video); } @GetMapping("allShow") @ApiOperation(value = "查询所有可显示视频的设备") public Response getAllShow(){ return service.getAllShow(); } @PutMapping("status") @ApiOperation(value = "设置视频设备显示状态") public Response updateStatus(@RequestParam Integer id, @RequestParam Integer status){ return service.updateStatus(id,status); } } src/main/java/com/whyc/mapper/StationMapper.java
New file @@ -0,0 +1,6 @@ package com.whyc.mapper; import com.whyc.pojo.Station; public interface StationMapper extends CustomMapper<Station> { } src/main/java/com/whyc/mapper/VideoMapper.java
New file @@ -0,0 +1,12 @@ package com.whyc.mapper; import com.whyc.pojo.Video; import org.apache.ibatis.annotations.Select; import java.util.List; public interface VideoMapper extends CustomMapper<Video> { @Select("select distinct v.*,b.stationName from db_battinf.tb_battinf b,db_battinf.tb_video v where b.stationId=v.station_id") List<Video> getList(); } src/main/java/com/whyc/pojo/Station.java
New file @@ -0,0 +1,34 @@ package com.whyc.pojo; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @ApiModel @TableName(schema = "db_battinf",value = "tb_battinf") public class Station { @ApiModelProperty("站点机房id") private Integer stationId; @ApiModelProperty("站点机房名称") /** xx省-xx市-xx区-xx机房站点--xx设备 **/ private String stationName; public Integer getStationId() { return stationId; } public void setStationId(Integer stationId) { this.stationId = stationId; } public String getStationName() { return stationName; } public void setStationName(String stationName) { this.stationName = stationName; } } src/main/java/com/whyc/pojo/Video.java
New file @@ -0,0 +1,85 @@ package com.whyc.pojo; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.sql.Date; @ApiModel @TableName(schema = "db_battinf",value = "tb_video") public class Video extends Station { @ApiModelProperty("id") @TableId private Integer id; @ApiModelProperty("站点id") private Integer stationId; @ApiModelProperty("视频设备ip") private String ip; @ApiModelProperty("视频设备名称-位置") private String name; @ApiModelProperty("接入日期") private Date accessDate; @ApiModelProperty("状态:-1:报废,0-不显示,1-显示") private Integer status; public Video() { } public Video(Integer id, Integer status) { this.id = id; this.status = status; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Override public Integer getStationId() { return stationId; } public void setStationId(Integer stationId) { this.stationId = stationId; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getAccessDate() { return accessDate; } public void setAccessDate(Date accessDate) { this.accessDate = accessDate; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } } src/main/java/com/whyc/service/StationService.java
New file @@ -0,0 +1,39 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.whyc.dto.Response; import com.whyc.mapper.StationMapper; import com.whyc.pojo.Station; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.sql.Wrapper; import java.util.List; @Service public class StationService { @Resource private StationMapper mapper; public Response<List<Station>> listAll() { QueryWrapper<Station> wrapper = Wrappers.query(); wrapper.select("stationId","stationName") .groupBy("stationId") .orderByAsc("stationId"); List<Station> stationList = mapper.selectList(wrapper); //对机房站点名称进行处理 stationList.stream().forEach(station -> { String[] nameSplit = station.getStationName().split("-"); String newStationName = new StringBuilder() .append(nameSplit[0]).append("-") .append(nameSplit[1]).append("-") .append(nameSplit[2]).append("-") .append(nameSplit[3]).toString(); station.setStationName(newStationName); }); return new Response<List<Station>>().set(1,stationList); } } src/main/java/com/whyc/service/VideoService.java
New file @@ -0,0 +1,68 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.mapper.VideoMapper; import com.whyc.pojo.Video; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.sql.Date; import java.util.List; @Service public class VideoService { @Resource private VideoMapper mapper; public Response add(Video video) { video.setAccessDate(new Date(System.currentTimeMillis())); //初始化,新加入的视频设备,默认是显示在页面的. video.setStatus(1); mapper.insert(video); return new Response().setMsg(1,"添加成功"); } public Response getInfo(Integer id) { Video video = mapper.selectById(id); return new Response().set(1,video); } public Response getPage(Integer pageNum, Integer pageSize, Video video) { PageHelper.startPage(pageNum,pageSize); List<Video> videoList = mapper.getList(); //对机房站点名称进行处理 videoList.stream().forEach(video2 -> { String[] nameSplit = video2.getStationName().split("-"); String newStationName = new StringBuilder() .append(nameSplit[0]).append("-") .append(nameSplit[1]).append("-") .append(nameSplit[2]).append("-") .append(nameSplit[3]).toString(); video2.setStationName(newStationName); }); PageInfo<Video> videoPageInfo = new PageInfo<>(videoList); return new Response().set(1,videoPageInfo); } public Response getAllShow() { QueryWrapper<Video> wrapper = Wrappers.query(); wrapper.select("ip","name") .eq("status",1); List<Video> videoList = mapper.selectList(wrapper); return new Response().set(1,videoList); } public Response updateStatus(Integer id, Integer status) { mapper.updateById(new Video(id,status)); return new Response().setMsg(1,"状态更新成功"); } } src/main/java/com/whyc/swagger/SwaggerConfig4Knife.java
@@ -22,7 +22,7 @@ public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("实验室仿真系统") .groupName("视频监控系统") .select() .apis(RequestHandlerSelectors.any()) .apis(RequestHandlerSelectors.basePackage("com.whyc.controller")) @@ -31,9 +31,9 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("实验室仿真系统") //大标题 title .title("视频监控系统") //大标题 title .contact(new Contact("PerryHsu","todo","todo")) .description("实验室仿真系统") //小标题 .description("视频监控系统") //小标题 .version("1.0") //版本 // .termsOfServiceUrl("http://xxx.xxx.com") //终端服务程序 // .license("LICENSE") //链接显示文字 src/main/java/com/whyc/video/WsHandler.java
@@ -92,7 +92,7 @@ BufferedReader br= new BufferedReader(new InputStreamReader(process.getErrorStream())); String line = ""; while ((line = br.readLine()) != null) { System.out.println("视频推流信息[" + line + "]"); //System.out.println("视频推流信息[" + line + "]"); } flag = process.waitFor(); } src/main/resources/config/application.yml
@@ -48,7 +48,7 @@ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl pagehelper: helper-dialect: mysql reasonable: true reasonable: false support-methods-arguments: true params: count=countSql #swagger是否激活,swagger的UI界面地址为 localhost:8080/swagger-ui.html src/main/webapp/index2.html
@@ -3,16 +3,32 @@ <head> </head> <body> <canvas id="video"></canvas> <canvas id="video2"></canvas> <script type="text/javascript" src="jsmpeg.min.js"></script> <script type="text/javascript"> <canvas id="video"></canvas> <canvas id="video2"></canvas> <canvas id="video3"></canvas> <canvas id="video5"></canvas> <canvas id="video8"></canvas> <script type="text/javascript" src="jsmpeg.min.js"></script> <script type="text/javascript"> var canvas = document.getElementById('video'); var canvas2 = document.getElementById('video2'); var url = 'ws://127.0.0.1:8090/video?192.168.10.3'; var url2 = 'ws://127.0.0.1:8090/video?192.168.10.5'; var url = 'ws://127.0.0.1:8090/video?192.168.10.5'; var player = new JSMpeg.Player(url, {canvas: canvas}); var canvas2 = document.getElementById('video2'); var url2 = 'ws://127.0.0.1:8090/video?192.168.10.5'; var player2 = new JSMpeg.Player(url2, {canvas: canvas2}); var canvas3 = document.getElementById('video3'); var url3 = 'ws://127.0.0.1:8090/video?192.168.10.5'; var player3 = new JSMpeg.Player(url3, {canvas: canvas3}); var canvas5 = document.getElementById('video5'); var url5 = 'ws://127.0.0.1:8090/video?192.168.10.9'; var player5 = new JSMpeg.Player(url5, {canvas: canvas5}); var canvas8 = document.getElementById('video8'); var url8 = 'ws://127.0.0.1:8090/video?192.168.10.2'; var player8 = new JSMpeg.Player(url8, {canvas: canvas8}); </script> </body> </html>