1.3.1. 第三方开发接入步骤

avatar

步骤

1、访问SmartDBS,注册完第三方开发者账号,并使用此账号进行登录;

2、创建应用,可获得AppKey和AppSecret,用于Demo启动配置;

3、关于下载和启动Demo,请查看启动Demo

1.3.2. SmartDBS访问地址:

https://console.dbs.zkclouds.com/

1.3.3. 第三方开发者注册

注册流程:进入登录页>点击开发者注册>完善注册信息>验证邮箱验证码>注册成功。

如下图

avatar

avatar

1.3.4. 创建应用

avatar

avatar

1.3.5. 启动Demo

avatar

步骤

1、demo工程下载地址:https://github.com/smartdbs/SmartDBS-Demo

2、打开工程中【smart-dbs-demo-startup】模块,resources目录中,application.properties文件

3、appKey,appSecret配置,相应的值可以从创建应用处获得

4、数据库连接信息配置,需配置数据库地址,库名,和连接账户信息

5、endpoint为SmartDBS提供的API调用地址,可不用修改

6、Application启动类,启动项目

7、系统启动,无需手动创建表结构,系统自动创建。

DBS_demo项目application.properties文件配置,例如:

#******************数据库配置******************
spring.datasource.url= jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useFastDateParsing=false&autoReconnect=true
spring.datasource.username= root
spring.datasource.password= root

#******************应用信息配置******************
dbs.api.appKey=eda5b104cf754608970329e2d74e8629
dbs.api.appSecret=5a15cc759c804bc19b6f8319b8628820

#******************文件上传路径配置******************
# 指定文件存储路径,径路需为绝对路径,Linux为根路径(windows:如D:/data/,linux:如usr/data/)
# windows系统
#dbs.upload.path=E:/data/
# linux系统
dbs.upload.path=/opt/workspace/logs/

1.3.6. 快速开发

1、demo中,各方法的业务代码逻辑总体可分为两部分,一部分是Demo端的数据操作,另一部分为调用SDK操作SmartDBS端的数据

2、以新增设备为例,业务代码中分为两个部分

3、新增成功后,demo端的数据操作会同步到SmartDBS端,执行异常时,事务需回滚


     public void addDevice() {

        // 语言参数,前后端分离项目,返回前端的异常信息进行国际化处理
        String language = "zh_CN";

        // 构建设备DTO,设置设备相关基础信息
        DeviceDTO deviceDTO = new DeviceDTO();
        deviceDTO.setSn("123456789");
        deviceDTO.setAlias("二楼北门");
        // 设备类型(0:考勤设备-ATT 1:门禁设备-ACC)
        deviceDTO.setType(SysConstants.ACC);

        //检查参数是否合法
        ResultUtil.handldBlankError(deviceDTO.getSn(), "E11", language);
        ResultUtil.handldBlankError(deviceDTO.getAlias(), "E13", language);
        ResultUtil.handldNullError(deviceDTO.getType(), "E14", language);

        //判断设备是否已经存在,抛出异常信息
        Device device = deviceService.getOne(new LambdaQueryWrapper<Device>().eq(Device::getSn, deviceDTO.getSn()));
        ResultUtil.handleExistsError(device, "E15", language);

        // 查询企业信息
        Company company = companyService.getByAppKey(dbsConfig.getAppKey());
        Device entity = new Device();
        //拷贝对象属性至 新的设备对象
        ModelUtils.copyPropertiesIgnoreNull(deviceDTO, entity);
        entity.setCompanyId(company.getId());
        entity.setStatus(SysConstants.OFFLINE);
        entity.setEnable(SysConstants.ENABLE);
        entity.setActive(SysConstants.ACTIVATED);
        //保存demo端设备信息
        deviceService.save(entity);

    // ***************************************************

        //调用 新增设备SDK
        // 构建API调用必须的用户,此用户即企业的集成用户
        User apiUser = new User(company.getUserName(), company.getPassword());
        // 初始化SDK的模块
        // 构造新增设备的请求实体
        CreateDeviceRequest createDeviceRequest = new CreateDeviceRequest();
        createDeviceRequest.setSn(entity.getSn());
        createDeviceRequest.setAlais(entity.getAlias());
        createDeviceRequest.setApiUser(apiUser);
        // 调用SDK,并返回结果
        Message res = DBSApi.dbsClient.addDevice(createDeviceRequest);
        // 抛出异常信息
        ResultUtil.handleDbsResultError(res);
    }

results matching ""

    No results matching ""