Commit c3747a59 authored by zhuangzhuang's avatar zhuangzhuang

6.15-修改权限,仓库的bug,增加单个接口的权限控制,修该网关的bug修复

parent b68c0e5c
......@@ -24,7 +24,12 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor()).excludePathPatterns("/alarmLog/**")
.excludePathPatterns("/login/**");
registry.addInterceptor(permissionInterceptor()).excludePathPatterns("/login/**").excludePathPatterns("/alarmLog/add");
registry.addInterceptor(permissionInterceptor())
.excludePathPatterns("/login/**")
.excludePathPatterns("/alarmLog/add")
.excludePathPatterns("/side/**");
super.addInterceptors(registry);
}
}
package com.example.tdl.interceptor;
import com.example.tdl.domain.vo.UserVo;
import com.example.tdl.service.PermissionService;
import com.example.tdl.service.RoleService;
import com.example.tdl.service.redis.TokenRedisService;
import com.google.gson.Gson;
......@@ -12,6 +13,8 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.List;
public class PermissionInterceptor implements HandlerInterceptor {
......@@ -23,10 +26,18 @@ public class PermissionInterceptor implements HandlerInterceptor {
@Autowired
private RoleService roleService;
@Autowired
private PermissionService permissionService;
Gson gson = new Gson();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String URL = request.getRequestURI();
if(URL.contains("swagger") || URL.contains("/v2/api-docs")){
return true;
}
logger.info("==============执行顺序: 1、preHandle================");
String requestUri = request.getRequestURI();
String contextPath = request.getContextPath();
......@@ -34,11 +45,20 @@ public class PermissionInterceptor implements HandlerInterceptor {
logger.info("url:"+url);
//获取用户信息以及对应的权限信息
UserVo user = gson.fromJson(redisService.get("TOKEN_" +request.getHeader("Account_token")),UserVo.class);
UserVo user = gson.fromJson(redisService.get("TOKEN_" +request.getHeader("Account_token")),UserVo.class);
//根据用户名获取对应的权限
return true;
List<String> permissions = permissionService.getByRoleName(user.getRoleName(),user.getCompanyNo());
for(int i =0,length = permissions.size();i<length;i++){
if(permissions.get(i).contains(url)){
return true;
}
}
response.setContentType("application/json");
response.setStatus(200);
response.setHeader("Content-type", "text/html;charset=UTF-8");
OutputStream ps = response.getOutputStream();
ps.write("{\"code\":0,\"message\":\"对不起,您没有权限进行此操作\"}".getBytes("UTF-8"));
return false;
}
@Override
......
......@@ -3,6 +3,7 @@ package com.example.tdl.mapper;
import com.example.tdl.domain.vo.PermissionVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -13,4 +14,6 @@ public interface PermissionMapper {
List<String> getPermissionParentName();
List<String> getPermissionByPermissionName(String permissionName);
List<String> getByRoleName(@Param("roleName") String roleName,@Param("companyNo") String companyNo);
}
......@@ -23,7 +23,7 @@ public interface WarehouseMapper {
List<DeviceVo> getDevice(String warehouseNo);
Integer getWarehouseNo(String warehouseNo);
Integer getWarehouseNo(@Param("warehouseNo")String warehouseNo,@Param("companyNo")String companyNo);
Integer getByWarehouseNoAndSN(@Param("warehouseNo") String warehouseNo,@Param("SN") String SN);
......
......@@ -149,8 +149,7 @@ public class MqttListener implements MqttCallback {
@Override
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
String Message = mqttMessage.toString();
Long timestamp = System.currentTimeMillis();
clearOvertimeConfig(timestamp);
clearOvertimeConfig(System.currentTimeMillis());
String[] tmparray = topic.split("/");
String Type = tmparray[1];
String SN = tmparray[2];
......@@ -184,12 +183,12 @@ public class MqttListener implements MqttCallback {
configCMDVo.setT(System.currentTimeMillis()/1000l);
gcconfig = new GWConfigWorker(Type,SN,gson.toJson(configCMDVo),configService,true);
}
gwconfigworkerMap.put(Type+"_"+SN+"_"+System.currentTimeMillis(),gcconfig);
gcconfig.SetMqttConfig(mqttconfig.getUrl(),mqttconfig.getPort(),
mqttconfig.getUsername(), mqttconfig.getPassword(),mqttconfig.getQos(),
mqttconfig.getCacrt(),mqttconfig.getClientkey(), mqttconfig.getClientcrt(),mqttconfig.getClientpwd());
result = configthreadPool.submit(gcconfig);
//futureMap.put(Type+"_"+SN+"_"+timestamp,result);
gwconfigworkerMap.put(Type+"_"+SN+"_"+timestamp,gcconfig);
// while (result.isDone())
// {
// String respcmd = result.get();
......@@ -208,6 +207,8 @@ public class MqttListener implements MqttCallback {
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
......
......@@ -25,4 +25,8 @@ public class PermissionService {
public List<String> getPermissionByPermissionName(String permissionName){
return permissionMapper.getPermissionByPermissionName(permissionName);
}
public List<String> getByRoleName(String roleName, String companyNo){
return permissionMapper.getByRoleName(roleName,companyNo);
}
}
......@@ -36,8 +36,8 @@ public class WarehouseService {
return warehouseMapper.getDevice(warehouseNo);
}
public Integer getWarehouseNo(String warehouseNo){
return warehouseMapper.getWarehouseNo(warehouseNo);
public Integer getWarehouseNo(String warehouseNo,String companyNo){
return warehouseMapper.getWarehouseNo(warehouseNo,companyNo);
}
public Integer getByWarehouseNoAndSN(String warehouseNo,String SN){
......
......@@ -1430,6 +1430,7 @@ public class CircuitController {
Map<Object,Object> msg=new HashMap<>();
msg.put("msg",map.get("msg"));
if (msg.get("msg").equals("解除网关成功")){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"circuitDeleteSuccess"));
String key ="TDL/"+tdlLogVo.getgType()+"/" +tdlLogVo.getgSN() +"/Data";
alarmRedisService.delKey(key);
......
......@@ -94,7 +94,7 @@ public class DownloadController {
fb.setMessage(i18n.getMessage(request,"warehouseNo"));
return gson.toJson(fb);
}
if(warehouseService.getWarehouseNo(downloadForWarehouseVo.getWarehouseNo()) ==0){
if(warehouseService.getWarehouseNo(downloadForWarehouseVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......
......@@ -132,11 +132,7 @@ public class EquipmentBindingController {
gprsPeriod= 60;
}else{
gpsPeriod=5;
if("17110194".equals(bindingVo.getgSN())){
gprsPeriod=7;
}else{
gprsPeriod=15;
}
gprsPeriod=15;
}
//开始绑定
//获取gateway下的所有tdl的编号
......@@ -165,7 +161,7 @@ public class EquipmentBindingController {
devList.add("TDL-"+bindingVo.getTDLSN());
ConfigCMDVo configCMDVo = new ConfigCMDVo("config",gpsPeriod,gprsPeriod,devList,tempL,tempH,humiL,humiH,pressL,pressH,sugEnergy,accThreshold,timeThreshold,tiltThreshold,bindingVo.getMode(),System.currentTimeMillis()/1000l);
Map<Object,Object> map=new HashMap<>();
map.put("companyName",user.getCompanyName());
map.put("companyNo",user.getCompanyNo());
map.put("transportationNo",bindingVo.getTransportationNo());
map.put("warehouseNo",bindingVo.getWarehouseNo());
map.put("useScene",bindingVo.getMode());
......@@ -258,7 +254,7 @@ public class EquipmentBindingController {
fb.setMessage("仓库编号不能为空");
return gson.toJson(fb);
}
if(warehouseService.getWarehouseNo(addWarehouseGatewayVo.getWarehouseNo()) ==0){
if(warehouseService.getWarehouseNo(addWarehouseGatewayVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage("仓库编号不存在");
return gson.toJson(fb);
......@@ -297,4 +293,6 @@ public class EquipmentBindingController {
}
return gson.toJson(fb);
}
}
......@@ -121,6 +121,11 @@ public class GatewayController {
fb.setMessage(i18n.getMessage(request,"gatewayType"));
return gson.toJson(fb);
}
if(addGatewayVo.getType().matches("[u4e00-u9fa5]")){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"badGatewayType"));
return gson.toJson(fb);
}
if (StringUtils.isEmpty(addGatewayVo.getModelName())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"gatewayModelName"));
......@@ -168,6 +173,9 @@ public class GatewayController {
})
@RequestMapping(value="/updateGateway",method = RequestMethod.POST)
public Object updateGateway(@RequestBody UpdateGatewayVo updateGatewayVo,HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if (StringUtils.isEmpty(updateGatewayVo.getSN())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"gatewaySN"));
......@@ -183,7 +191,7 @@ public class GatewayController {
fb.setMessage(i18n.getMessage(request,"gatewayType"));
return gson.toJson(fb);
}
if (gatewayService.getBySNAndType(updateGatewayVo.getSN(),updateGatewayVo.getType())==null){
if (gatewayService.getBySN(updateGatewayVo.getSN(),user.getCompanyNo())==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"existGateway"));
return gson.toJson(fb);
......
......@@ -212,6 +212,8 @@ public class HomePageController {
return dateResult;
}
//将utc时间转换成时间戳
public static String dateToStamp(String s) throws ParseException {
Date date =null ;
......
......@@ -293,7 +293,7 @@ public class WarehouseController {
}
JSONObject jsonObject= JSON.parseObject(warehouseNo);
warehouseNo=(String)jsonObject.get("warehouseNo");
if(warehouseService.getWarehouseNo(warehouseNo) ==0){
if(warehouseService.getWarehouseNo(warehouseNo,userRedisVo.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......@@ -385,7 +385,7 @@ public class WarehouseController {
}
JSONObject jsonObject= JSON.parseObject(warehouseNo);
warehouseNo=(String)jsonObject.get("warehouseNo");
if(warehouseService.getWarehouseNo(warehouseNo) ==0){
if(warehouseService.getWarehouseNo(warehouseNo,user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......@@ -414,7 +414,7 @@ public class WarehouseController {
}
JSONObject jsonObject= JSON.parseObject(warehouseNo);
warehouseNo=(String)jsonObject.get("warehouseNo");
if(warehouseService.getWarehouseNo(warehouseNo) ==0){
if(warehouseService.getWarehouseNo(warehouseNo,user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......@@ -452,7 +452,7 @@ public class WarehouseController {
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
String warehouseNo = getWarehouseNo();
String warehouseNo = getWarehouseNo(user.getCompanyNo());
if(StringUtils.isEmpty(addWarehouseVo.getImg())){
addWarehouseVo.setImg("https://tdlcloud.oss-cn-shanghai.aliyuncs.com/pic/wareHouseImage/1527562358242TM.jpg");
}
......@@ -639,6 +639,11 @@ public class WarehouseController {
fb.setMessage(i18n.getMessage(request,"warehouseNo"));
return gson.toJson(fb);
}
if(warehouseService.getWarehouseNo(updateWarehouseVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
}
if (StringUtils.isEmpty(updateWarehouseVo.getWarehouseName())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"warehouseName"));
......@@ -806,7 +811,7 @@ public class WarehouseController {
}
JSONObject jsonObject= JSON.parseObject(warehouseNo);
warehouseNo=(String)jsonObject.get("warehouseNo");
if(warehouseService.getWarehouseNo(warehouseNo) ==0){
if(warehouseService.getWarehouseNo(warehouseNo,user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......@@ -847,7 +852,7 @@ public class WarehouseController {
fb.setMessage(i18n.getMessage(request,"warehouseNo"));
return gson.toJson(fb);
}
if(warehouseService.getWarehouseNo(addWarehouseGatewayVo.getWarehouseNo()) ==0){
if(warehouseService.getWarehouseNo(addWarehouseGatewayVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......@@ -902,7 +907,7 @@ public class WarehouseController {
fb.setMessage(i18n.getMessage(request,"warehouseNo"));
return gson.toJson(fb);
}
if(warehouseService.getWarehouseNo(warehouseUserVo.getWarehouseNo()) ==0){
if(warehouseService.getWarehouseNo(warehouseUserVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......@@ -969,8 +974,16 @@ public class WarehouseController {
})
@PostMapping("/getWarehouseData")
public Object getWarehouseData(@RequestBody String warehouseNo,HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
JSONObject jsonObject=JSON.parseObject(warehouseNo);
warehouseNo=(String) jsonObject.get("warehouseNo");
if(warehouseService.getWarehouseNo(warehouseNo,user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
}
List<WarehouseGatewayDateVo> warehouseGatewayDateVoList=new ArrayList<>();
List<GatewayOnLineVo> gatewayOnLineVos=gatewayService.getByWarehouseNo(warehouseNo);
for (int a=0;a<gatewayOnLineVos.size();a++){
......@@ -1089,12 +1102,15 @@ public class WarehouseController {
})
@PostMapping("/getTdlData")
public Object getTdlData(@RequestBody SearchTdlVo searchTdlVo ,HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if (StringUtils.isEmpty(searchTdlVo.getWarehouseNo())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"warehouseNo"));
return gson.toJson(fb);
}
if(warehouseService.getWarehouseNo(searchTdlVo.getWarehouseNo()) ==0){
if(warehouseService.getWarehouseNo(searchTdlVo.getWarehouseNo(), user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
......@@ -1158,11 +1174,11 @@ public class WarehouseController {
//生成仓库编号
public String getWarehouseNo(){
public String getWarehouseNo(String companyNo){
String warehouseNo = "WH" +System.currentTimeMillis() ;
warehouseNo = warehouseNo +((int)(Math.random()*(9999-1000+1))+1000);
if (warehouseService.getWarehouseNo(warehouseNo)>0){
while (warehouseService.getWarehouseNo(warehouseNo)>0){
if (warehouseService.getWarehouseNo(warehouseNo,companyNo)>0){
while (warehouseService.getWarehouseNo(warehouseNo,companyNo)>0){
warehouseNo=warehouseNo+((int)(Math.random()*(9999-1000+1))+1000);
}
}
......
#spring.datasource.url=jdbc:mysql://47.97.184.225:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.url=jdbc:mysql://192.168.1.16:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.url=jdbc:mysql://192.168.1.53:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.url=jdbc:mysql://192.168.1.16:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
#spring.datasource.password=37774020
spring.datasource.password=37774020
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
......@@ -64,15 +61,16 @@ spring.influxdb.write-timeout=10
spring.influxdb.gzip=true
#tdl.core.add =http://logisticscore-java:8079/witium/addMount
#tdl.core.delete =http://logisticscore-java:8079/witium/delMount
tdl.core.add =http://192.168.1.16:8079/witium/addMount
tdl.core.delete =http://192.168.1.16:8079/witium/delMount
mqtt.userName = ugen
mqtt.password = ugen
#tdl.core.add =http://logisticscore-java:8079/witium/addMount
#tdl.core.delete =http://logisticscore-java:8079/witium/delMount
#
#mqtt.userName = wtlogistics
#mqtt.password = wtlogistics
......
......@@ -193,6 +193,7 @@ gatewaySN=\u7F51\u5173\u5E8F\u5217\u53F7\u4E0D\u80FD\u4E3A\u7A7A
gatewaySNRule=gateway\u7F16\u53F7\u5FC5\u987B\u662F8\u4F4D\u6570\u5B57
gatewayName=\u7F51\u5173\u540D\u4E0D\u80FD\u4E3A\u7A7A
gatewayType=\u7F51\u5173\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
badGatewayType = \u7F51\u5173\u7C7B\u578B\u4E0D\u80FD\u5B58\u5728\u4E2D\u6587
gatewayModelName=\u7F51\u5173\u6A21\u677F\u540D\u4E0D\u80FD\u4E3A\u7A7A
existModelName=\u8BE5\u6A21\u677F\u4E0D\u5B58\u5728
repeatedSN=\u6DFB\u52A0\u7684\u7F51\u5173\u5DF2\u5B58\u5728
......
......@@ -8,6 +8,7 @@
WHERE state=1
<if test="companyNo!='TM201803298320'">
and pid=(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR})
OR companyNo=#{companyNo,jdbcType=VARCHAR}
</if>
</select>
......
......@@ -6,7 +6,7 @@
<![CDATA[
{
call pro_addTDLGatewayLog(
#{companyName,mode=IN,jdbcType=VARCHAR},
#{companyNo,mode=IN,jdbcType=VARCHAR},
#{transportationNo,mode=IN,jdbcType=VARCHAR},
#{warehouseNo,mode=IN,jdbcType=VARCHAR},
#{useScene,mode=IN,jdbcType=INTEGER},
......
......@@ -13,7 +13,7 @@
SELECT type from gateway g INNER JOIN company c on g.company_id=c.id
where SN=#{SN,jdbcType=VARCHAR}
<if test="companyNo!='TM201803298320'">
WHERE companyNo=#{companyNo,jdbcType=VARCHAR}
and companyNo=#{companyNo,jdbcType=VARCHAR}
</if>
</select>
......
......@@ -17,4 +17,14 @@
SELECT p.permissionName FROM permission p,permission a WHERE p.pid=a.id AND a.permissionName=#{permissionName,jdbcType=VARCHAR}
</select>
<select id="getByRoleName" parameterType="String" resultType="String">
select DISTINCT url
from permission p,role_has_permission rp,role r,company c
where p.id = rp.permission_id
and r.id = rp.role_id
and c.id = r.company_id
and companyNo = #{companyNo,jdbcType=VARCHAR}
and roleName = #{roleName,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
......@@ -55,7 +55,9 @@
</select>
<select id="getWarehouseNo" resultType="java.lang.Integer" parameterType="String">
select count(warehouseNo) from warehouse where warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
select count(warehouseNo) from warehouse
where warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
and company_id =(select id from company where companyNo=#{companyNo,jdbcType=VARCHAR})
</select>
<select id="getByWarehouseName" parameterType="String" resultType="com.example.tdl.domain.vo.ResultWarehouseVo">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment