南昌市物联网技防平台-后台
1.desk,service,user 模块 pom依赖修改
2.新增 blade-onenetstudio 模块,集成onenetstudio 基于MQTT协议的sdk,实现设备的属性上报功能
4 files modified
14 files added
675 ■■■■■ changed files
blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java 6 ●●●●● patch | view | raw | blame | history
blade-service/blade-desk/pom.xml 15 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/pom.xml 52 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/OneNetStudioApplication.java 14 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/entity/Equipments.java 65 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.java 17 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.xml 11 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/EquipmentService.java 13 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/impl/EquipmentServiceImpl.java 25 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/tm/PropertyPost.java 183 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/resources/application-dev.yml 12 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/resources/application-prod.yml 10 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/resources/application-test.yml 10 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/resources/application.yml 10 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/resources/certificate.pem 20 ●●●●● patch | view | raw | blame | history
blade-service/blade-onenetstudio/src/main/resources/model-R67X22o88Y.json 161 ●●●●● patch | view | raw | blame | history
blade-service/blade-user/pom.xml 15 ●●●●● patch | view | raw | blame | history
blade-service/pom.xml 36 ●●●●● patch | view | raw | blame | history
blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java
@@ -20,8 +20,10 @@
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springblade.core.tool.node.INode;
import org.springblade.system.entity.Dept;
@@ -36,6 +38,8 @@
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "DeptVO对象", description = "DeptVO对象")
@AllArgsConstructor
@NoArgsConstructor
public class DeptVO extends Dept implements INode<DeptVO> {
    private static final long serialVersionUID = 1L;
@@ -81,4 +85,6 @@
     */
    private String deptCategoryName;
}
blade-service/blade-desk/pom.xml
@@ -48,6 +48,21 @@
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-oss-qiniu</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-common</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-dict-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-scope-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-transaction</artifactId>
blade-service/blade-onenetstudio/pom.xml
New file
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>blade-service</artifactId>
        <groupId>org.springblade</groupId>
        <version>2.7.1.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>blade-onenetstudio</artifactId>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-core-boot</artifactId>
        </dependency>
        <dependency>
            <groupId>com.onenet.studio</groupId>
            <artifactId>acc-sdk-process</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.paho</groupId>
                    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.8.0</version>
        </dependency>
        <!-- org.eclipse.paho.client.mqttv3 -->
        <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
            <version>1.2.5</version>
        </dependency>
    </dependencies>
</project>
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/OneNetStudioApplication.java
New file
@@ -0,0 +1,14 @@
package org.springblade.onenetstudio;
import com.onenet.studio.acc.sdk.annotations.ThingsModelConfiguration;
import org.springblade.core.launch.BladeApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients
@ThingsModelConfiguration("src/main/resources/model-R67X22o88Y.json")
public class OneNetStudioApplication {
    public static void main(String[] args) {
        BladeApplication.run("blade-onenetstudio",OneNetStudioApplication.class,args);
    }
}
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/entity/Equipments.java
New file
@@ -0,0 +1,65 @@
package org.springblade.onenetstudio.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
/**
 * 实体类
 *
 * @author BladeX
 * @since 2020-07-01
 */
@Data
public class Equipments implements Serializable {
    /**
     * 设备名称
     */
    private String deviceName;
    /**
     * 经度
     */
    private String jd;
    /**
     * 纬度
     */
    private String wd;
    /**
     * 设备状态
     */
    private String dtype;
    /**
     * 序列号
     */
    private String serialNumber;
    /**
     * 设备型号
     */
    private String eqModel;
    /**
     * 产品id,onenetstudio 平台生成
     */
    private String proId;
    /**
     * 设备秘钥,onenetstudio 平台生成
     */
    private String eqSecret;
    /**
     * 设备名称,onenetstudio 平台生成
     */
    private String eqName;
    /**
     * 联网方式
     */
    private String netType;
}
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.java
New file
@@ -0,0 +1,17 @@
package org.springblade.onenetstudio.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.springblade.onenetstudio.entity.Equipments;
import java.util.List;
@Mapper
public interface EquipmentMapper {
    /**
     * 查询已在onenetstudio平台注册的设备
     * @return
     */
    List<Equipments> selRegisterEqList();
}
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.onenetstudio.mapper.EquipmentMapper">
    <!--查询已在onenetstudio 平台注册的设备-->
    <select id="selRegisterEqList" resultType="org.springblade.onenetstudio.entity.Equipments">
        select deviceName,jd,wd,dtype,serialNumber,
        eq_model eqModel,pro_id proId,eq_secret eqSecret,eq_name eqName,net_type netType from sys_equipment
         where pro_id is not null
    </select>
</mapper>
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/EquipmentService.java
New file
@@ -0,0 +1,13 @@
package org.springblade.onenetstudio.service;
import org.springblade.onenetstudio.entity.Equipments;
import java.util.List;
public interface EquipmentService {
    /**
     * 查询已在onenetstudio平台注册的设备
     * @return
     */
    List<Equipments> selRegisterEqList();
}
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/impl/EquipmentServiceImpl.java
New file
@@ -0,0 +1,25 @@
package org.springblade.onenetstudio.service.impl;
import org.springblade.onenetstudio.entity.Equipments;
import org.springblade.onenetstudio.mapper.EquipmentMapper;
import org.springblade.onenetstudio.service.EquipmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EquipmentServiceImpl implements EquipmentService {
    @Autowired
    private EquipmentMapper equipmentMapper;
    /**
     * 查询已在onenetstudio平台注册的设备
     * @return
     */
    @Override
    public List<Equipments> selRegisterEqList() {
        return equipmentMapper.selRegisterEqList();
    }
}
blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/tm/PropertyPost.java
New file
@@ -0,0 +1,183 @@
package org.springblade.onenetstudio.tm;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.onenet.studio.acc.sdk.OpenApi;
import com.onenet.studio.acc.sdk.OpenApiExtention;
import com.onenet.studio.acc.sdk.dto.GeoLocationStructDTO;
import org.springblade.onenetstudio.entity.Equipments;
import org.springblade.onenetstudio.service.EquipmentService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 设备属性数据交互
 */
@Component
public class PropertyPost {
    @Resource
    private EquipmentService equipmentService;
    @Value("${sdk.api.url}")
    private String url;
    @PostConstruct
    public void init() {
        //查询设备
        List<Equipments> equipmentsList = equipmentService.selRegisterEqList();
        //有数据则创建openApi对象
        if (equipmentsList.size()>0){
            for (Equipments equipments:equipmentsList) {
                try {
                    OpenApi openApi = OpenApi.Builder.newBuilder()
                        .url(url)
                        .productId(equipments.getProId())
                        .devKey(equipments.getEqName())
                        .accessKey(equipments.getEqSecret())
    //                .caCrtFile(caCrtFile)
                        .build();
                    System.out.println("openApi = " + openApi);
                    OpenApiExtention extention = new OpenApiExtention(openApi);
                    //属性上报
                    propertyUp(extention,equipments);
                    //属性设置
                    //        propertySet(extention);
                    //属性获取
                    //        peropertyGet(extention);
                    //期望值获取
                    //        desiredGet(extention);
                    //期望值删除
                    //        desiredDel(extention);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     * 属性上报
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void propertyUp(OpenApiExtention extention,Equipments equipments) {
        //设置坐标数据
        GeoLocationStructDTO geoLocationStructDTO = new GeoLocationStructDTO();
        geoLocationStructDTO.setAltitude(100.00);
        geoLocationStructDTO.setLatitude(Double.parseDouble(String.format("%.2f", Double.parseDouble(equipments.getWd()))));
        geoLocationStructDTO.setLongitude(Double.parseDouble(String.format("%.2f", Double.parseDouble(equipments.getJd()))));
        geoLocationStructDTO.setCoordinateSystem(1);
        try {
            //设备数据上报
            int result = extention.propertyUpload(5000,
                                                0,
                                                100,
                                                geoLocationStructDTO,
                                                equipments.getDeviceName(),
                                                equipments.getNetType(),
                                                equipments.getSerialNumber(),
                                                equipments.getEqModel());
            //result 0 即为上报成功   1:失败
            System.out.println("up result : " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 属性设置
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void propertySet(OpenApiExtention extention) {
//        try {
//            extention.propertySet(oneJson -> {
//                System.out.println("receive oneJson : " + oneJson);
//                JSONObject json = JSON.parseObject(oneJson);
//                try {
//                    extention.propertySetReply(json.getString("id"), 200, "success");
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            });
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
    /**
     * 属性获取
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void peropertyGet(OpenApiExtention extention) {
        try {
            extention.propertyGet(oneJson -> {
                System.out.println("receive oneJson : " + oneJson);
                JSONObject json = JSON.parseObject(oneJson);
                try {
                    // 返回的属性与收到的属性要对应上,否则不成功
                    Map<String, Object> map = new HashMap<>();
                    map.put("DeviceStatus", 1);
                    extention.propertyGetReply(json.getString("id"), 200, "success", map);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 期望值获取
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void desiredGet(OpenApiExtention extention) {
        List<String> list = new ArrayList<>();
        list.add("DeviceStatus");
        try {
            JSONObject get = extention.propertyDesiredGet(list.toArray(new String[list.size()]), 5000);
            System.out.println("desired get oneJson : " + get.toJSONString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 期望值删除
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     * @return void
     **/
    public void desiredDel(OpenApiExtention extention) {
        Map<String, Integer> map = new HashMap<>();
        map.put("DeviceStatus", 1);
        try {
            int result = extention.propertyDesiredDel(5000, map);
            System.out.println("desired del result : " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
blade-service/blade-onenetstudio/src/main/resources/application-dev.yml
New file
@@ -0,0 +1,12 @@
#服务器端口
server:
  port: 809
#数据源配置
spring:
  datasource:
    url: jdbc:mysql://36.134.81.48:3306/jfpt?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&useOldAliasMetadataBehavior=true
    username: root
    password: jfpt123
blade-service/blade-onenetstudio/src/main/resources/application-prod.yml
New file
@@ -0,0 +1,10 @@
#服务器端口
server:
  port: 8205
#数据源配置
spring:
  datasource:
    url: ${blade.datasource.prod.url}
    username: ${blade.datasource.prod.username}
    password: ${blade.datasource.prod.password}
blade-service/blade-onenetstudio/src/main/resources/application-test.yml
New file
@@ -0,0 +1,10 @@
#服务器端口
server:
  port: 8105
#数据源配置
spring:
  datasource:
    url: ${blade.datasource.test.url}
    username: ${blade.datasource.test.username}
    password: ${blade.datasource.test.password}
blade-service/blade-onenetstudio/src/main/resources/application.yml
New file
@@ -0,0 +1,10 @@
sdk:
  api:
    #url: ssl://183.230.102.116:8883  加密连接
    url: tcp://218.201.45.7:1883
#    # 产品ID
#    product-id: R67X22o88Y
#    # 设备名称
#    dev-key: test3
#    # 产品key
#    access-key: a/uhC1M1q8+tpXPFe+E5v81xYVu/pSd906sNGZOvlVM=
blade-service/blade-onenetstudio/src/main/resources/certificate.pem
New file
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDOzCCAiOgAwIBAgIJAPCCNfxANtVEMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNV
BAYTAkNOMQ4wDAYDVQQKDAVDTUlPVDEVMBMGA1UEAwwMT25lTkVUIE1RVFRTMB4X
DTE5MDUyOTAxMDkyOFoXDTQ5MDUyMTAxMDkyOFowNDELMAkGA1UEBhMCQ04xDjAM
BgNVBAoMBUNNSU9UMRUwEwYDVQQDDAxPbmVORVQgTVFUVFMwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQC/VvJ6lGWfy9PKdXKBdzY83OERB35AJhu+9jkx
5d4SOtZScTe93Xw9TSVRKrFwu5muGgPusyAlbQnFlZoTJBZY/745MG6aeli6plpR
r93G6qVN5VLoXAkvqKslLZlj6wXy70/e0GC0oMFzqSP0AY74icANk8dUFB2Q8usS
UseRafNBcYfqACzF/Wa+Fu/upBGwtl7wDLYZdCm3KNjZZZstvVB5DWGnqNX9HkTl
U9NBMS/7yph3XYU3mJqUZxryb8pHLVHazarNRppx1aoNroi+5/t3Fx/gEa6a5PoP
ouH35DbykmzvVE67GUGpAfZZtEFE1e0E/6IB84PE00llvy3pAgMBAAGjUDBOMB0G
A1UdDgQWBBTTi/q1F2iabqlS7yEoX1rbOsz5GDAfBgNVHSMEGDAWgBTTi/q1F2ia
bqlS7yEoX1rbOsz5GDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAL
aqJ2FgcKLBBHJ8VeNSuGV2cxVYH1JIaHnzL6SlE5q7MYVg+Ofbs2PRlTiWGMazC7
q5RKVj9zj0z/8i3ScWrWXFmyp85ZHfuo/DeK6HcbEXJEOfPDvyMPuhVBTzuBIRJb
41M27NdIVCdxP6562n6Vp0gbE8kN10q+ksw8YBoLFP0D1da7D5WnSV+nwEIP+F4a
3ZX80bNt6tRj9XY0gM68mI60WXrF/qYL+NUz+D3Lw9bgDSXxpSN8JGYBR85BxBvR
NNAhsJJ3yoAvbPUQ4m8J/CoVKKgcWymS1pvEHmF47pgzbbjm5bdthlIx+swdiGFa
WzdhzTYwVkxBaU+xf/2w
-----END CERTIFICATE-----
blade-service/blade-onenetstudio/src/main/resources/model-R67X22o88Y.json
New file
@@ -0,0 +1,161 @@
{
  "properties" : [ {
    "identifier" : "AlarmState",
    "name" : "报警状态",
    "functionType" : "st",
    "accessMode" : "r",
    "functionMode" : "property",
    "desc" : "",
    "dataType" : {
      "type" : "enum",
      "specs" : {
        "0" : "正常",
        "1" : "危险报警"
      }
    }
  }, {
    "identifier" : "BatteryLevel",
    "name" : "电池电量",
    "functionType" : "st",
    "accessMode" : "r",
    "functionMode" : "property",
    "desc" : "",
    "dataType" : {
      "type" : "int32",
      "specs" : {
        "min" : "0",
        "max" : "100",
        "unit" : "百分比 / %",
        "step" : "1"
      }
    }
  }, {
    "identifier" : "GeoLocation",
    "name" : "地理位置",
    "functionType" : "st",
    "accessMode" : "r",
    "functionMode" : "property",
    "desc" : "",
    "dataType" : {
      "type" : "struct",
      "specs" : [ {
        "identifier" : "Longitude",
        "name" : "经度",
        "dataType" : {
          "type" : "double",
          "specs" : {
            "min" : "-180",
            "max" : "180",
            "unit" : "度 / °",
            "step" : "0.01"
          }
        }
      }, {
        "identifier" : "Latitude",
        "name" : "纬度",
        "dataType" : {
          "type" : "double",
          "specs" : {
            "min" : "-90",
            "max" : "90",
            "unit" : "度 / °",
            "step" : "0.01"
          }
        }
      }, {
        "identifier" : "Altitude",
        "name" : "海拔",
        "dataType" : {
          "type" : "double",
          "specs" : {
            "min" : "0",
            "max" : "9999",
            "unit" : "米 / m",
            "step" : "0.01"
          }
        }
      }, {
        "identifier" : "CoordinateSystem",
        "name" : "坐标系统",
        "dataType" : {
          "type" : "enum",
          "specs" : {
            "1" : "WGS_84",
            "2" : "GCJ_02"
          }
        }
      } ]
    }
  }, {
    "identifier" : "name",
    "name" : "设备名称",
    "functionType" : "u",
    "accessMode" : "rw",
    "functionMode" : "property",
    "desc" : null,
    "dataType" : {
      "type" : "string",
      "specs" : {
        "length" : "255"
      }
    }
  }, {
    "identifier" : "networkWay",
    "name" : "联网方式",
    "functionType" : "u",
    "accessMode" : "rw",
    "functionMode" : "property",
    "desc" : null,
    "dataType" : {
      "type" : "string",
      "specs" : {
        "length" : "255"
      }
    }
  }, {
    "identifier" : "serialNumber",
    "name" : "设备序列号",
    "functionType" : "u",
    "accessMode" : "rw",
    "functionMode" : "property",
    "desc" : null,
    "dataType" : {
      "type" : "string",
      "specs" : {
        "length" : "255"
      }
    }
  }, {
    "identifier" : "type",
    "name" : "设备型号",
    "functionType" : "u",
    "accessMode" : "rw",
    "functionMode" : "property",
    "desc" : null,
    "dataType" : {
      "type" : "string",
      "specs" : {
        "length" : "255"
      }
    }
  } ],
  "events" : [ {
    "identifier" : "Error",
    "name" : "故障上报",
    "desc" : "",
    "functionMode" : "event",
    "outputData" : [ {
      "identifier" : "ErrorCode",
      "name" : "故障代码",
      "dataType" : {
        "type" : "enum",
        "specs" : {
          "0" : "无故障"
        }
      }
    } ],
    "functionType" : "st",
    "eventType" : "info"
  } ],
  "services" : [ ]
}
blade-service/blade-user/pom.xml
@@ -38,6 +38,21 @@
            <artifactId>blade-system-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-common</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-dict-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-scope-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
    </dependencies>
    <build>
blade-service/pom.xml
@@ -22,13 +22,11 @@
        <module>blade-system</module>
        <module>blade-user</module>
        <module>blade-jfpts</module>
        <module>blade-onenetstudio</module>
    </modules>
    <dependencies>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-tenant</artifactId>
@@ -37,16 +35,26 @@
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-api-crypto</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-dict-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-scope-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
    </dependencies>
    <!--2021-5-13 修改,由于blade-onenetstudio 模块compie时报错,当前模块不能引入一下三个依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springblade</groupId>
                <artifactId>blade-common</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springblade</groupId>
                <artifactId>blade-dict-api</artifactId>
                <version>${bladex.project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springblade</groupId>
                <artifactId>blade-scope-api</artifactId>
                <version>${bladex.project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>