Commit a5cd0909 authored by 赵啸非's avatar 赵啸非

添加设备黑名单应用

parent 7c8a7d87
...@@ -136,3 +136,22 @@ CREATE TABLE `mortals_xhx_device` ( ...@@ -136,3 +136,22 @@ CREATE TABLE `mortals_xhx_device` (
`updateTime` datetime DEFAULT NULL COMMENT '更新时间', `updateTime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备';
-- ----------------------------
-- 设备应用黑名单表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_blackapp`;
CREATE TABLE mortals_xhx_device_blackapp(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键,自增长',
`siteId` bigint(20) COMMENT '站点ID',
`deviceId` bigint(20) COMMENT '设备id',
`deviceCode` varchar(255) COMMENT '设备编码',
`deviceName` varchar(255) COMMENT '设备名称',
`appId` bigint(20) COMMENT '应用id',
`appCode` varchar(255) COMMENT '应用编码',
`appName` varchar(255) COMMENT '应用名称',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`updateTime` datetime COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备应用黑名单';
...@@ -13205,6 +13205,256 @@ data|object|数据对象 ...@@ -13205,6 +13205,256 @@ data|object|数据对象
``` ```
## 设备
### 查询设备列表
**请求URL:** device/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询设备
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
deviceId|Long|否|设备id
deviceName|String|否|设备名称,字段前后添加%%模糊查询
deviceCode|String|否|设备编码,字段前后添加%%模糊查询
deviceSrc|Integer|否|设备来源(0.子设备,1.网关设备,2.直连设备)
deviceStatus|Integer|否|设备状态 (0.未激活,1.离线,2.在线)
**请求样例:**
```
{
"deviceId":7996,
"deviceName":"w7i721",
"deviceCode":"vzxi39",
"deviceSrc":9076,
"deviceStatus":472,
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|主键ID,主键,自增长
  deviceId|Long|设备id
  deviceName|String|设备名称
  deviceCode|String|设备编码
  deviceMac|String|设备的MAC地址
  siteId|Long|站点Id
  siteCode|String|站点编号,来源基础服务平台
  siteName|String|站点名称
  productCode|String|产品编码
  productName|String|产品名称
  deviceSrc|Integer|设备来源(0.子设备,1.网关设备,2.直连设备)
  lon|String|经度
  lati|String|纬度
  leadingOfficial|String|负责人
  leadingOfficialTelephone|String|联系电话
  deviceStatus|Integer|设备状态 (0.未激活,1.离线,2.在线)
  deviceRemark|String|备注
  source|Integer|设备来源(0.旧设备,1.新设备)
  createUserId|Long|创建用户
  createTime|Date|创建时间
  updateUserId|Long|更新用户
  updateTime|Date|更新时间
dict|object|字典对象
 deviceSrc|object|字典属性对象,详见附录
 deviceStatus|object|字典属性对象,详见附录
 source|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
## 设备应用黑名单
### 查询设备应用黑名单列表
**请求URL:** device/blackapp/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询设备应用黑名单
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
**请求样例:**
```
{
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|主键,自增长
  siteId|Long|站点ID
  deviceId|Long|设备id
  deviceCode|String|设备编码
  deviceName|String|设备名称
  appId|Long|应用id
  appCode|String|应用编码
  appName|String|应用名称
  createTime|Date|创建时间
  createUserId|Long|创建用户
  updateTime|Date|修改时间
dict|object|字典对象
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 保存更新设备应用黑名单
**请求URL:** device/blackapp/save
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 保存或更新设备应用黑名单:id为空时为新增保存,否则为更新提交
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:-------
siteId|Long|否|站点ID
deviceId|Long|否|设备id
deviceCode|String|否|设备编码
deviceName|String|否|设备名称
appId|Long|否|应用id
appCode|String|否|应用编码
appName|String|否|应用名称
**请求样例:**
```
{
"siteId":475,
"deviceId":6607,
"deviceCode":"gvi4oq",
"deviceName":"yp2e81",
"appId":6569,
"appCode":"saq4z7",
"appName":"azzcsh",
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|保存后主键id
 entity|object|保存更新实体
  id|Long|主键,自增长
  siteId|Long|站点ID
  deviceId|Long|设备id
  deviceCode|String|设备编码
  deviceName|String|设备名称
  appId|Long|应用id
  appCode|String|应用编码
  appName|String|应用名称
  createTime|Date|创建时间
  createUserId|Long|创建用户
  updateTime|Date|修改时间
**响应消息样例:**
```
{
"msg":"新增模块成功",
"code":1,
"data":{}
}
}
```
### 删除设备应用黑名单
**请求URL:** device/blackapp/delete
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 删除设备应用黑名单
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|String|是|数组
**请求样例:**
```
http://localhost:8080/device/blackapp/delete?id=1&id=2'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
## 字典附录 ## 字典附录
......
...@@ -19,9 +19,13 @@ public class AppVo extends BaseEntityLong { ...@@ -19,9 +19,13 @@ public class AppVo extends BaseEntityLong {
* 适用站点范围数量 * 适用站点范围数量
*/ */
private Integer applianceSiteScope; private Integer applianceSiteScope;
/**
* 站点列表
*/
private List<Long> siteIdList; private List<Long> siteIdList;
/**
*
*/
private List <Long> idList; private List <Long> idList;
/** /**
* 自主应用访问地址 * 自主应用访问地址
...@@ -36,5 +40,9 @@ public class AppVo extends BaseEntityLong { ...@@ -36,5 +40,9 @@ public class AppVo extends BaseEntityLong {
private String serverName; private String serverName;
private Integer serverPort; private Integer serverPort;
/**
* 设备编码
*/
private String deviceCode;
} }
\ No newline at end of file
...@@ -26,6 +26,9 @@ import com.mortals.xhx.common.utils.ZipUtils; ...@@ -26,6 +26,9 @@ import com.mortals.xhx.common.utils.ZipUtils;
import com.mortals.xhx.feign.app.device.IAppFeign; import com.mortals.xhx.feign.app.device.IAppFeign;
import com.mortals.xhx.module.app.model.*; import com.mortals.xhx.module.app.model.*;
import com.mortals.xhx.module.app.service.*; import com.mortals.xhx.module.app.service.*;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import com.mortals.xhx.module.device.model.DeviceBlackappQuery;
import com.mortals.xhx.module.device.service.DeviceBlackappService;
import com.mortals.xhx.module.site.model.SiteEntity; import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.service.SiteService; import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.utils.EncodeUtil; import com.mortals.xhx.utils.EncodeUtil;
...@@ -72,40 +75,28 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L ...@@ -72,40 +75,28 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
private AppVersionService appVersionService; private AppVersionService appVersionService;
@Autowired @Autowired
private IAppFeign appFeign; private IAppFeign appFeign;
@Autowired
private DeviceBlackappService deviceBlackappService;
/**
* @param params
* @param pageInfo
* @param context
* @return
* @throws AppException
*/
@Override @Override
protected void findAfter(AppEntity params, PageInfo pageInfo, Context context, List<AppEntity> list) throws AppException { protected AppEntity findBefore(AppEntity params, PageInfo pageInfo, Context context) throws AppException {
//排序 return super.findBefore(params, pageInfo, context);
if (!ObjectUtils.isEmpty(params.getIdList())) {
log.info("请求的排序id列表:{}", JSON.toJSONString(params.getIdList()));
try {
//去除idlist中不存在的
Set<Long> idSet = list.stream().map(item -> item.getId()).collect(Collectors.toSet());
List<Long> idList = params.getIdList();
Iterator<Long> ite = idList.iterator();
while (ite.hasNext()) {
Long next = ite.next();
if (!idSet.contains(next)) {
ite.remove();
}
}
//根据idList进行排序
for (int i = 0; i < idList.size(); i++) {
Long id = idList.get(i);
for (int j = 0; j < list.size(); j++) {
if (id.equals(list.get(j).getId())) {
//判断位置是否一直
if (i != j) {
//交换
Collections.swap(list, i, j);
}
}
}
}
} catch (Exception e) {
log.error("排序异常!", e);
}
} }
@Override
protected void findAfter(AppEntity params, PageInfo pageInfo, Context context, List<AppEntity> list) throws AppException {
//判断是否存在设备编码。存在 查询设备编码应用黑名单
checkDeviceBlackApp(params, list);
//根据指定的idlist顺序进行排序
sortAppByIdList(params, list);
//统计站点 //统计站点
list.forEach(item -> { list.forEach(item -> {
List<AppEntity> appEntityList = this.find(new AppQuery().appCode(item.getAppCode()), context); List<AppEntity> appEntityList = this.find(new AppQuery().appCode(item.getAppCode()), context);
...@@ -113,16 +104,10 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L ...@@ -113,16 +104,10 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
item.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList())); item.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList()));
//构建访问地址 //构建访问地址
SiteEntity siteEntity = siteService.getCache(item.getSiteId().toString()); SiteEntity siteEntity = siteService.getCache(item.getSiteId().toString());
// String domainUrl = GlobalSysInfo.getParamValue(Constant.PARAM_SERVER_HTTP_URL, "http://192.168.0.98:11078");
String domainUrl = ""; String domainUrl = "";
if (!ObjectUtils.isEmpty(params.getServerName()) && Validator.isIpv4(params.getServerName())) { if (!ObjectUtils.isEmpty(params.getServerName()) && Validator.isIpv4(params.getServerName())) {
//domainUrl = UrlBuilder.ofHttp(params.getServerName()).setPort(params.getServerPort() > 0 ? params.getServerPort() : 11078).build(); domainUrl = String.format("http://%s:%d", params.getServerName(), params.getServerPort() > 0 ? params.getServerPort() : 11078);
//domainUrl = StrUtil.sub(domainUrl, 0, domainUrl.length() - 1);
domainUrl= String.format("http://%s:%d",params.getServerName(), params.getServerPort() > 0 ? params.getServerPort() : 11078);
} else { } else {
// domainUrl = GlobalSysInfo.getParamValue(Constant.PARAM_SERVER_HTTP_URL, "http://192.168.0.98:11078");
boolean isDomain = ReUtil.isMatch("^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*\\.[a-zA-Z]{2,}$", params.getServerName()); boolean isDomain = ReUtil.isMatch("^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*\\.[a-zA-Z]{2,}$", params.getServerName());
if (isDomain) { if (isDomain) {
domainUrl = String.format("https://%s", params.getServerName()); domainUrl = String.format("https://%s", params.getServerName());
...@@ -137,14 +122,8 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L ...@@ -137,14 +122,8 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
if (!ObjectUtils.isEmpty(domainUrl)) { if (!ObjectUtils.isEmpty(domainUrl)) {
String custUrl = String.format("%s/%s/%s/%s/%s/", domainUrl, CUSTAPP_ROOT_PATH, siteEntity.getSiteCode(), item.getAppCode(), item.getVersion().toString()); String custUrl = String.format("%s/%s/%s/%s/%s/", domainUrl, CUSTAPP_ROOT_PATH, siteEntity.getSiteCode(), item.getAppCode(), item.getVersion().toString());
item.setCustUrl(custUrl); item.setCustUrl(custUrl);
// item.setCustUrl(UrlBuilder.ofHttp(domainUrl)
// .addPath(CUSTAPP_ROOT_PATH)
// .addPath(siteEntity.getSiteCode())
// .addPath(item.getAppCode())
// .addPath(item.getVersion().toString())
// .build());
} else { } else {
item.setCustUrl(CUSTAPP_ROOT_PATH + "/" + siteEntity.getSiteCode() + "/" + item.getAppCode() + "/" + item.getVersion()+ "/"); item.setCustUrl(CUSTAPP_ROOT_PATH + "/" + siteEntity.getSiteCode() + "/" + item.getAppCode() + "/" + item.getVersion() + "/");
} }
} else { } else {
...@@ -154,9 +133,6 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L ...@@ -154,9 +133,6 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
if (!ObjectUtils.isEmpty(domainUrl)) { if (!ObjectUtils.isEmpty(domainUrl)) {
String appIconUrl = String.format("%s/%s", domainUrl, item.getAppIconPath()); String appIconUrl = String.format("%s/%s", domainUrl, item.getAppIconPath());
item.setAppIconUrl(appIconUrl); item.setAppIconUrl(appIconUrl);
/*
item.setAppIconUrl(UrlBuilder.ofHttp(domainUrl)
.addPath(item.getAppIconPath()).build());*/
} else { } else {
item.setAppIconUrl(item.getAppIconPath()); item.setAppIconUrl(item.getAppIconPath());
} }
...@@ -165,6 +141,54 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L ...@@ -165,6 +141,54 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
super.findAfter(params, pageInfo, context, list); super.findAfter(params, pageInfo, context, list);
} }
private void sortAppByIdList(AppEntity params, List<AppEntity> list) {
if (!ObjectUtils.isEmpty(params.getIdList())) {
log.info("请求的排序id列表:{}", JSON.toJSONString(params.getIdList()));
try {
//去除idlist中不存在的
Set<Long> idSet = list.stream().map(item -> item.getId()).collect(Collectors.toSet());
List<Long> idList = params.getIdList();
Iterator<Long> ite = idList.iterator();
while (ite.hasNext()) {
Long next = ite.next();
if (!idSet.contains(next)) {
ite.remove();
}
}
//根据idList进行排序
for (int i = 0; i < idList.size(); i++) {
Long id = idList.get(i);
for (int j = 0; j < list.size(); j++) {
if (id.equals(list.get(j).getId())) {
//判断位置是否一直
if (i != j) {
//交换
Collections.swap(list, i, j);
}
}
}
}
} catch (Exception e) {
log.error("排序异常!", e);
}
}
}
private void checkDeviceBlackApp(AppEntity params, List<AppEntity> list) {
if (!ObjectUtils.isEmpty(params.getDeviceCode())) {
Set<Long> blackAppSet = deviceBlackappService.find(new DeviceBlackappQuery().deviceCode(params.getDeviceCode())).stream().map(i -> i.getAppId()).collect(Collectors.toSet());
if (!ObjectUtils.isEmpty(blackAppSet)) {
Iterator<AppEntity> iterator = list.iterator();
while (iterator.hasNext()) {
AppEntity next = iterator.next();
if (!blackAppSet.contains(next.getId())) {
iterator.remove();
}
}
}
}
}
@Override @Override
public Rest<String> appDistribute(AppEntity appEntity, Context context) { public Rest<String> appDistribute(AppEntity appEntity, Context context) {
SiteEntity siteCache = siteService.getCache(appEntity.getSiteId().toString()); SiteEntity siteCache = siteService.getCache(appEntity.getSiteId().toString());
......
package com.mortals.xhx.module.device.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import java.util.List;
/**
* 设备应用黑名单Dao
* 设备应用黑名单 DAO接口
*
* @author zxfei
* @date 2023-05-07
*/
public interface DeviceBlackappDao extends ICRUDDao<DeviceBlackappEntity,Long>{
}
package com.mortals.xhx.module.device.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.device.dao.DeviceBlackappDao;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 设备应用黑名单DaoImpl DAO接口
*
* @author zxfei
* @date 2023-05-07
*/
@Repository("deviceBlackappDao")
public class DeviceBlackappDaoImpl extends BaseCRUDDaoMybatis<DeviceBlackappEntity,Long> implements DeviceBlackappDao {
}
package com.mortals.xhx.module.device.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.device.model.vo.DeviceBlackappVo;
import lombok.Data;
/**
* 设备应用黑名单实体对象
*
* @author zxfei
* @date 2023-05-07
*/
@Data
public class DeviceBlackappEntity extends DeviceBlackappVo {
private static final long serialVersionUID = 1L;
/**
* 站点ID
*/
private Long siteId;
/**
* 设备id
*/
private Long deviceId;
/**
* 设备编码
*/
private String deviceCode;
/**
* 设备名称
*/
private String deviceName;
/**
* 应用id
*/
private Long appId;
/**
* 应用编码
*/
private String appCode;
/**
* 应用名称
*/
private String appName;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof DeviceBlackappEntity) {
DeviceBlackappEntity tmp = (DeviceBlackappEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.siteId = null;
this.deviceId = null;
this.deviceCode = "";
this.deviceName = "";
this.appId = null;
this.appCode = "";
this.appName = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 设备应用黑名单视图对象
*
* @author zxfei
* @date 2023-05-07
*/
@Data
public class DeviceBlackappVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.device.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import com.mortals.xhx.module.device.dao.DeviceBlackappDao;
/**
* DeviceBlackappService
*
* 设备应用黑名单 service接口
*
* @author zxfei
* @date 2023-05-07
*/
public interface DeviceBlackappService extends ICRUDService<DeviceBlackappEntity,Long>{
DeviceBlackappDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.device.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.device.dao.DeviceBlackappDao;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import com.mortals.xhx.module.device.service.DeviceBlackappService;
import lombok.extern.slf4j.Slf4j;
/**
* DeviceBlackappService
* 设备应用黑名单 service实现
*
* @author zxfei
* @date 2023-05-07
*/
@Service("deviceBlackappService")
@Slf4j
public class DeviceBlackappServiceImpl extends AbstractCRUDServiceImpl<DeviceBlackappDao, DeviceBlackappEntity, Long> implements DeviceBlackappService {
}
\ No newline at end of file
package com.mortals.xhx.module.device.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.device.model.DeviceBlackappEntity;
import com.mortals.xhx.module.device.service.DeviceBlackappService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 设备应用黑名单
*
* @author zxfei
* @date 2023-05-07
*/
@RestController
@RequestMapping("device/blackapp")
public class DeviceBlackappController extends BaseCRUDJsonBodyMappingController<DeviceBlackappService,DeviceBlackappEntity,Long> {
@Autowired
private ParamService paramService;
public DeviceBlackappController(){
super.setModuleDesc( "设备应用黑名单");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
}
\ No newline at end of file
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###设备应用黑名单列表
POST {{baseUrl}}/device/blackapp/list
Authorization: {{authToken}}
Content-Type: application/json
{
"page":1,
"size":10
}
###设备应用黑名单更新与保存
POST {{baseUrl}}/device/blackapp/save
Authorization: {{authToken}}
Content-Type: application/json
{
"siteId":118,
"deviceId":671,
"deviceCode":"0vcb6m",
"deviceName":"8mrep3",
"appId":502,
"appCode":"ncrywd",
"appName":"41cc9s",
}
> {%
client.global.set("DeviceBlackapp_id", JSON.parse(response.body).data.id);
%}
###设备应用黑名单查看
GET {{baseUrl}}/device/blackapp/info?id={{DeviceBlackapp_id}}
Authorization: {{authToken}}
Accept: application/json
###设备应用黑名单编辑
GET {{baseUrl}}/device/blackapp/edit?id={{DeviceBlackapp_id}}
Authorization: {{authToken}}
Accept: application/json
###设备应用黑名单删除
GET {{baseUrl}}/device/blackapp/delete?id={{DeviceBlackapp_id}}
Authorization: {{authToken}}
Accept: application/json
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