From 95da9027e6ebe2a0392fb7fc070586cc51fbbc11 Mon Sep 17 00:00:00 2001 From: kami Date: Mon, 11 Apr 2022 13:45:27 +0800 Subject: [PATCH] =?UTF-8?q?+f;=E6=96=B0=E5=A2=9E=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=A0=81=E5=8A=9F=E8=83=BD=201=E3=80=81=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E8=A1=A8=E6=B7=BB=E5=8A=A0=20is=5Fauthorize=20=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=90=AF=E7=94=A8=E6=8E=88=E6=9D=83=E7=A0=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=9B=202=E3=80=81=E4=BA=A7=E5=93=81=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E7=A0=81=E5=8A=9F=E8=83=BD=EF=BC=9A=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5=E3=80=81=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=8E=88=E6=9D=83=E7=A0=81=E3=80=81=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E8=AE=BE=E5=A4=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- springboot/sql/update/is_authorize_update.sql | 19 + .../ProductAuthorizeController.java | 110 +++++ .../ruoyi/iot/controller/ToolController.java | 10 + .../java/com/ruoyi/iot/domain/Product.java | 8 + .../ruoyi/iot/domain/ProductAuthorize.java | 151 +++++++ .../iot/mapper/ProductAuthorizeMapper.java | 82 ++++ .../ruoyi/iot/model/ProductAuthorizeVO.java | 30 ++ .../iot/service/IProductAuthorizeService.java | 78 ++++ .../impl/ProductAuthorizeServiceImpl.java | 156 ++++++++ .../mapper/iot/ProductAuthorizeMapper.xml | 133 +++++++ .../resources/mapper/iot/ProductMapper.xml | 7 +- vue/package.json | 1 + vue/src/api/iot/authorize.js | 52 +++ vue/src/main.js | 4 +- .../views/iot/product/product-authorize.vue | 375 ++++++++++++++++++ vue/src/views/iot/product/product-edit.vue | 21 + 16 files changed, 1235 insertions(+), 2 deletions(-) create mode 100644 springboot/sql/update/is_authorize_update.sql create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ProductAuthorizeController.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/ProductAuthorize.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/ProductAuthorizeMapper.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/ProductAuthorizeVO.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IProductAuthorizeService.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/ProductAuthorizeServiceImpl.java create mode 100644 springboot/wumei-iot/src/main/resources/mapper/iot/ProductAuthorizeMapper.xml create mode 100644 vue/src/api/iot/authorize.js create mode 100644 vue/src/views/iot/product/product-authorize.vue diff --git a/springboot/sql/update/is_authorize_update.sql b/springboot/sql/update/is_authorize_update.sql new file mode 100644 index 00000000..a99121ec --- /dev/null +++ b/springboot/sql/update/is_authorize_update.sql @@ -0,0 +1,19 @@ +ALTER TABLE `iot_product` +ADD COLUMN `is_authorize` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用授权码(0-否,1-是)' AFTER `is_sys`; + +CREATE TABLE `iot_product_authorize` ( + `authorize_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '授权码ID', + `authorize_code` varchar(32) NOT NULL COMMENT '授权码', + `product_id` bigint NOT NULL COMMENT '产品ID', + `device_id` bigint NULL COMMENT '设备ID', + `serial_number` varchar(64) NULL COMMENT '设备编号', + `user_id` bigint NULL COMMENT '用户ID', + `user_name` varchar(30) NULL COMMENT '用户名称', + `del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', + `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`authorize_id`) +) COMMENT = '产品授权码表'; \ No newline at end of file diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ProductAuthorizeController.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ProductAuthorizeController.java new file mode 100644 index 00000000..567078a3 --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ProductAuthorizeController.java @@ -0,0 +1,110 @@ +package com.ruoyi.iot.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.iot.model.ProductAuthorizeVO; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.iot.domain.ProductAuthorize; +import com.ruoyi.iot.service.IProductAuthorizeService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 产品授权码Controller + * + * @author kami + * @date 2022-04-11 + */ +@RestController +@RequestMapping("/iot/authorize") +public class ProductAuthorizeController extends BaseController +{ + @Autowired + private IProductAuthorizeService productAuthorizeService; + + /** + * 查询产品授权码列表 + */ + @PreAuthorize("@ss.hasPermi('iot:authorize:list')") + @GetMapping("/list") + public TableDataInfo list(ProductAuthorize productAuthorize) + { + startPage(); + List list = productAuthorizeService.selectProductAuthorizeList(productAuthorize); + return getDataTable(list); + } + + /** + * 导出产品授权码列表 + */ + @PreAuthorize("@ss.hasPermi('iot:authorize:export')") + @Log(title = "产品授权码", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ProductAuthorize productAuthorize) + { + List list = productAuthorizeService.selectProductAuthorizeList(productAuthorize); + ExcelUtil util = new ExcelUtil(ProductAuthorize.class); + util.exportExcel(response, list, "产品授权码数据"); + } + + /** + * 获取产品授权码详细信息 + */ + @PreAuthorize("@ss.hasPermi('iot:authorize:query')") + @GetMapping(value = "/{authorizeId}") + public AjaxResult getInfo(@PathVariable("authorizeId") Long authorizeId) + { + return AjaxResult.success(productAuthorizeService.selectProductAuthorizeByAuthorizeId(authorizeId)); + } + + /** + * 新增产品授权码 + */ + @PreAuthorize("@ss.hasPermi('iot:authorize:add')") + @Log(title = "产品授权码", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ProductAuthorize productAuthorize) + { + return toAjax(productAuthorizeService.insertProductAuthorize(productAuthorize)); + } + + /** + * 根据数量批量新增产品授权码 + */ + @PreAuthorize("@ss.hasPermi('iot:authorize:add')") + @Log(title = "根据数量批量新增产品授权码", businessType = BusinessType.INSERT) + @PostMapping("addProductAuthorizeByNum") + public AjaxResult addProductAuthorizeByNum(@RequestBody ProductAuthorizeVO productAuthorizeVO) + { + return toAjax(productAuthorizeService.addProductAuthorizeByNum(productAuthorizeVO)); + } + + /** + * 修改产品授权码 + */ + @PreAuthorize("@ss.hasPermi('iot:authorize:edit')") + @Log(title = "产品授权码", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ProductAuthorize productAuthorize) + { + return toAjax(productAuthorizeService.updateProductAuthorize(productAuthorize)); + } + + /** + * 删除产品授权码 + */ + @PreAuthorize("@ss.hasPermi('iot:authorize:remove')") + @Log(title = "产品授权码", businessType = BusinessType.DELETE) + @DeleteMapping("/{authorizeIds}") + public AjaxResult remove(@PathVariable Long[] authorizeIds) + { + return toAjax(productAuthorizeService.deleteProductAuthorizeByAuthorizeIds(authorizeIds)); + } +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ToolController.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ToolController.java index ee40d483..c0004c76 100644 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ToolController.java +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/ToolController.java @@ -14,6 +14,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.iot.domain.Device; +import com.ruoyi.iot.domain.ProductAuthorize; import com.ruoyi.iot.model.AuthenticateInputModel; import com.ruoyi.iot.model.DeviceAuthenticateModel; import com.ruoyi.iot.model.MqttClientConnectModel; @@ -24,6 +25,7 @@ import com.ruoyi.iot.model.ThingsModels.ThingsModelShadow; import com.ruoyi.iot.mqtt.EmqxService; import com.ruoyi.iot.mqtt.MqttConfig; import com.ruoyi.iot.service.IDeviceService; +import com.ruoyi.iot.service.IProductAuthorizeService; import com.ruoyi.iot.service.IToolService; import com.ruoyi.iot.service.impl.ThingsModelServiceImpl; import com.ruoyi.iot.util.AESUtils; @@ -77,6 +79,8 @@ public class ToolController extends BaseController { @Autowired private IDeviceService deviceService; + private IProductAuthorizeService authorizeService; + @Autowired private ThingsModelServiceImpl thingsModelService; @@ -139,6 +143,8 @@ public class ToolController extends BaseController { Device device = deviceService.selectShortDeviceBySerialNumber(deviceNum); if (device !=null && mqttConfig.getusername().equals(username) && mqttConfig.getpassword().equals(password)) { System.out.println("-----------认证成功,clientId:" + clientid + "---------------"); + ProductAuthorize authorize = new ProductAuthorize(null, device.getProductId(), device.getDeviceId(), device.getSerialNumber(), 1L, "admin"); + authorizeService.boundProductAuthorize(authorize); return ResponseEntity.ok().body("ok"); } return returnUnauthorized(clientid, username, password, "认证信息有误"); @@ -172,12 +178,16 @@ public class ToolController extends BaseController { // 设备状态验证 (1-未激活,2-禁用,3-在线,4-离线) if (model.getDeviceId() != null && model.getDeviceId() != 0 && model.getStatus() != 2) { System.out.println("-----------认证成功,clientId:" + clientid + "---------------"); + ProductAuthorize authorize = new ProductAuthorize(null, model.getProductId(), model.getDeviceId(), model.getSerialNumber(), 1L, "admin"); + authorizeService.boundProductAuthorize(authorize); return ResponseEntity.ok().body("ok"); } else { // 自动添加设备 int result = deviceService.insertDeviceAuto(deviceNum, userId, productId); if (result == 1) { System.out.println("-----------认证成功,clientId:" + clientid + "---------------"); + ProductAuthorize authorize = new ProductAuthorize(null, model.getProductId(), model.getDeviceId(), model.getSerialNumber(), 1L, "admin"); + authorizeService.boundProductAuthorize(authorize); return ResponseEntity.ok().body("ok"); } } diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java index 4f8ad3bf..63e25362 100644 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java @@ -42,6 +42,10 @@ public class Product extends BaseEntity @Excel(name = "是否系统通用", readConverterExp = "0=-否,1-是") private Integer isSys; + /** 是否启用授权码(0-否,1-是) */ + @Excel(name = "是否启用授权码", readConverterExp = "0=-否,1-是") + private Integer isAuthorize; + /** mqtt账号 */ private String mqttAccount; @@ -164,6 +168,9 @@ public class Product extends BaseEntity return isSys; } + public void setIsAuthorize(Integer isAuthorize) {this.isAuthorize = isAuthorize;} + public Integer getIsAuthorize() {return isAuthorize;} + public void setMqttAccount(String mqttAccount) { this.mqttAccount = mqttAccount; @@ -238,6 +245,7 @@ public class Product extends BaseEntity .append("tenantId", getTenantId()) .append("tenantName", getTenantName()) .append("isSys", getIsSys()) + .append("isAuthorize", getIsAuthorize()) .append("status", getStatus()) .append("deviceType", getDeviceType()) .append("networkMethod", getNetworkMethod()) diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/ProductAuthorize.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/ProductAuthorize.java new file mode 100644 index 00000000..cacd59cd --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/ProductAuthorize.java @@ -0,0 +1,151 @@ +package com.ruoyi.iot.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 产品授权码对象 iot_product_authorize + * + * @author kami + * @date 2022-04-11 + */ +public class ProductAuthorize extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 授权码ID */ + private Long authorizeId; + + /** 授权码 */ + @Excel(name = "授权码") + private String authorizeCode; + + /** 产品ID */ + @Excel(name = "产品ID") + private Long productId; + + /** 设备ID */ + @Excel(name = "设备ID") + private Long deviceId; + + /** 设备编号 */ + @Excel(name = "设备编号") + private String serialNumber; + + /** 用户ID */ + @Excel(name = "用户ID") + private Long userId; + + /** 用户名称 */ + @Excel(name = "用户名称") + private String userName; + + /** 删除标志(0代表存在 2代表删除) */ + private String delFlag; + + public ProductAuthorize() { + } + + public ProductAuthorize(String authorizeCode, Long productId, Long deviceId, String serialNumber, Long userId, String userName) { + this.authorizeCode = authorizeCode; + this.productId = productId; + this.deviceId = deviceId; + this.serialNumber = serialNumber; + this.userId = userId; + this.userName = userName; + } + + public void setAuthorizeId(Long authorizeId) + { + this.authorizeId = authorizeId; + } + + public Long getAuthorizeId() + { + return authorizeId; + } + public void setAuthorizeCode(String authorizeCode) + { + this.authorizeCode = authorizeCode; + } + + public String getAuthorizeCode() + { + return authorizeCode; + } + public void setProductId(Long productId) + { + this.productId = productId; + } + + public Long getProductId() + { + return productId; + } + public void setDeviceId(Long deviceId) + { + this.deviceId = deviceId; + } + + public Long getDeviceId() + { + return deviceId; + } + public void setSerialNumber(String serialNumber) + { + this.serialNumber = serialNumber; + } + + public String getSerialNumber() + { + return serialNumber; + } + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getUserId() + { + return userId; + } + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getUserName() + { + return userName; + } + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + + public String getDelFlag() + { + return delFlag; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("authorizeId", getAuthorizeId()) + .append("authorizeCode", getAuthorizeCode()) + .append("productId", getProductId()) + .append("deviceId", getDeviceId()) + .append("serialNumber", getSerialNumber()) + .append("userId", getUserId()) + .append("userName", getUserName()) + .append("delFlag", getDelFlag()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/ProductAuthorizeMapper.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/ProductAuthorizeMapper.java new file mode 100644 index 00000000..b1ac0cbf --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/ProductAuthorizeMapper.java @@ -0,0 +1,82 @@ +package com.ruoyi.iot.mapper; + +import java.util.List; +import com.ruoyi.iot.domain.ProductAuthorize; + +/** + * 产品授权码Mapper接口 + * + * @author kami + * @date 2022-04-11 + */ +public interface ProductAuthorizeMapper +{ + /** + * 查询产品授权码 + * + * @param authorizeId 产品授权码主键 + * @return 产品授权码 + */ + public ProductAuthorize selectProductAuthorizeByAuthorizeId(Long authorizeId); + + /** + * 查询产品授权码列表 + * + * @param productAuthorize 产品授权码 + * @return 产品授权码集合 + */ + public List selectProductAuthorizeList(ProductAuthorize productAuthorize); + + /** + * 新增产品授权码 + * + * @param productAuthorize 产品授权码 + * @return 结果 + */ + public int insertProductAuthorize(ProductAuthorize productAuthorize); + + /** + * 修改产品授权码 + * + * @param productAuthorize 产品授权码 + * @return 结果 + */ + public int updateProductAuthorize(ProductAuthorize productAuthorize); + + /** + * 删除产品授权码 + * + * @param authorizeId 产品授权码主键 + * @return 结果 + */ + public int deleteProductAuthorizeByAuthorizeId(Long authorizeId); + + /** + * 批量删除产品授权码 + * + * @param authorizeIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProductAuthorizeByAuthorizeIds(Long[] authorizeIds); + + /** + * 批量新增产品授权码 + * @param list + * @return + */ + public int insertBatchAuthorize(List list); + + /** + * 根据产品id查询一条未绑定的授权码 + * @param authorize + * @return + */ + ProductAuthorize selectOneUnboundAuthorizeByProductId(ProductAuthorize authorize); + + /** + * 根据授权码查询一条未绑定的授权码 + * @param authorize + * @return + */ + ProductAuthorize selectOneUnboundAuthorizeByAuthorizeCode(ProductAuthorize authorize); +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/ProductAuthorizeVO.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/ProductAuthorizeVO.java new file mode 100644 index 00000000..a21c8966 --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/ProductAuthorizeVO.java @@ -0,0 +1,30 @@ +package com.ruoyi.iot.model; + +/** + * 批量新增产品授权码VO + * + * @author Venus Zhang + * @create 2022-04-11 15:04 + */ + +public class ProductAuthorizeVO { + + private Long productId; + private int createNum; + + public Long getProductId() { + return productId; + } + + public void setProductId(Long productId) { + this.productId = productId; + } + + public int getCreateNum() { + return createNum; + } + + public void setCreateNum(int createNum) { + this.createNum = createNum; + } +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IProductAuthorizeService.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IProductAuthorizeService.java new file mode 100644 index 00000000..38d35469 --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IProductAuthorizeService.java @@ -0,0 +1,78 @@ +package com.ruoyi.iot.service; + +import java.util.List; +import com.ruoyi.iot.domain.ProductAuthorize; +import com.ruoyi.iot.model.ProductAuthorizeVO; + +/** + * 产品授权码Service接口 + * + * @author kami + * @date 2022-04-11 + */ +public interface IProductAuthorizeService +{ + /** + * 查询产品授权码 + * + * @param authorizeId 产品授权码主键 + * @return 产品授权码 + */ + public ProductAuthorize selectProductAuthorizeByAuthorizeId(Long authorizeId); + + /** + * 查询产品授权码列表 + * + * @param productAuthorize 产品授权码 + * @return 产品授权码集合 + */ + public List selectProductAuthorizeList(ProductAuthorize productAuthorize); + + /** + * 新增产品授权码 + * + * @param productAuthorize 产品授权码 + * @return 结果 + */ + public int insertProductAuthorize(ProductAuthorize productAuthorize); + + /** + * 修改产品授权码 + * + * @param productAuthorize 产品授权码 + * @return 结果 + */ + public int updateProductAuthorize(ProductAuthorize productAuthorize); + + /** + * 批量删除产品授权码 + * + * @param authorizeIds 需要删除的产品授权码主键集合 + * @return 结果 + */ + public int deleteProductAuthorizeByAuthorizeIds(Long[] authorizeIds); + + /** + * 删除产品授权码信息 + * + * @param authorizeId 产品授权码主键 + * @return 结果 + */ + public int deleteProductAuthorizeByAuthorizeId(Long authorizeId); + + /** + * 根据数量批量新增产品授权码 + * @param productAuthorizeVO + * @return + */ + public int addProductAuthorizeByNum(ProductAuthorizeVO productAuthorizeVO); + + + /** + * 根据产品id和设备序列号绑定授权码 + * @param productAuthorize + * @return + */ + public int boundProductAuthorize(ProductAuthorize productAuthorize); + +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/ProductAuthorizeServiceImpl.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/ProductAuthorizeServiceImpl.java new file mode 100644 index 00000000..b270ec35 --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/ProductAuthorizeServiceImpl.java @@ -0,0 +1,156 @@ +package com.ruoyi.iot.service.impl; + +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.iot.domain.ProductAuthorize; +import com.ruoyi.iot.mapper.ProductAuthorizeMapper; +import com.ruoyi.iot.model.ProductAuthorizeVO; +import com.ruoyi.iot.service.IProductAuthorizeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +import static com.ruoyi.common.utils.SecurityUtils.getLoginUser; + +/** + * 产品授权码Service业务层处理 + * + * @author kami + * @date 2022-04-11 + */ +@Service +public class ProductAuthorizeServiceImpl implements IProductAuthorizeService +{ + @Autowired + private ProductAuthorizeMapper productAuthorizeMapper; + + /** + * 查询产品授权码 + * + * @param authorizeId 产品授权码主键 + * @return 产品授权码 + */ + @Override + public ProductAuthorize selectProductAuthorizeByAuthorizeId(Long authorizeId) + { + return productAuthorizeMapper.selectProductAuthorizeByAuthorizeId(authorizeId); + } + + /** + * 查询产品授权码列表 + * + * @param productAuthorize 产品授权码 + * @return 产品授权码 + */ + @Override + public List selectProductAuthorizeList(ProductAuthorize productAuthorize) + { + return productAuthorizeMapper.selectProductAuthorizeList(productAuthorize); + } + + /** + * 新增产品授权码 + * + * @param productAuthorize 产品授权码 + * @return 结果 + */ + @Override + public int insertProductAuthorize(ProductAuthorize productAuthorize) + { + productAuthorize.setCreateTime(DateUtils.getNowDate()); + return productAuthorizeMapper.insertProductAuthorize(productAuthorize); + } + + /** + * 修改产品授权码 + * + * @param productAuthorize 产品授权码 + * @return 结果 + */ + @Override + public int updateProductAuthorize(ProductAuthorize productAuthorize) + { + productAuthorize.setUpdateTime(DateUtils.getNowDate()); + return productAuthorizeMapper.updateProductAuthorize(productAuthorize); + } + + /** + * 批量删除产品授权码 + * + * @param authorizeIds 需要删除的产品授权码主键 + * @return 结果 + */ + @Override + public int deleteProductAuthorizeByAuthorizeIds(Long[] authorizeIds) + { + return productAuthorizeMapper.deleteProductAuthorizeByAuthorizeIds(authorizeIds); + } + + /** + * 删除产品授权码信息 + * + * @param authorizeId 产品授权码主键 + * @return 结果 + */ + @Override + public int deleteProductAuthorizeByAuthorizeId(Long authorizeId) + { + return productAuthorizeMapper.deleteProductAuthorizeByAuthorizeId(authorizeId); + } + + /** + * 根据数量批量新增产品授权码 + * @param productAuthorizeVO + * @return + */ + @Override + @Transactional + public int addProductAuthorizeByNum(ProductAuthorizeVO productAuthorizeVO) { + Long productId = productAuthorizeVO.getProductId(); + int createNum = productAuthorizeVO.getCreateNum(); + List list = new ArrayList<>(createNum); + SysUser user = getLoginUser().getUser(); + for (int i = 0; i < createNum; i++) { + ProductAuthorize authorize = new ProductAuthorize(); + authorize.setProductId(productId); + authorize.setCreateBy(user.getUserName()); + authorize.setCreateTime(DateUtils.getNowDate()); + authorize.setAuthorizeCode(IdUtils.fastSimpleUUID().toUpperCase()); + list.add(authorize); + } + return productAuthorizeMapper.insertBatchAuthorize(list); + } + + /** + * 根据产品id和设备序列号绑定授权码 + * + * @param productAuthorize + * @return + */ + @Override + @Transactional + public int boundProductAuthorize(ProductAuthorize productAuthorize){ + ProductAuthorize authorize = null; + if(StringUtils.isEmpty(productAuthorize.getAuthorizeCode())){ + //TODO-kami: 2022/4/11 13:34 后期无需查询,硬件调用直接传入参数,可以删除 + authorize = productAuthorizeMapper.selectOneUnboundAuthorizeByProductId(productAuthorize); + productAuthorize.setAuthorizeCode(authorize.getAuthorizeCode()); + }else { + authorize = productAuthorizeMapper.selectOneUnboundAuthorizeByAuthorizeCode(productAuthorize); + } + if (authorize == null){ + throw new ServiceException("授权码数据异常", HttpStatus.BAD_REQUEST); + } + productAuthorize.setAuthorizeId(authorize.getAuthorizeId()); + productAuthorize.setUpdateTime(DateUtils.getNowDate()); + return productAuthorizeMapper.updateProductAuthorize(productAuthorize); + } + +} diff --git a/springboot/wumei-iot/src/main/resources/mapper/iot/ProductAuthorizeMapper.xml b/springboot/wumei-iot/src/main/resources/mapper/iot/ProductAuthorizeMapper.xml new file mode 100644 index 00000000..15f424fe --- /dev/null +++ b/springboot/wumei-iot/src/main/resources/mapper/iot/ProductAuthorizeMapper.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + select authorize_id, authorize_code, product_id, device_id, serial_number, user_id, user_name, del_flag, create_by, create_time, update_by, update_time, remark from iot_product_authorize + + + + + + + + + + + insert into iot_product_authorize + + authorize_code, + product_id, + device_id, + serial_number, + user_id, + user_name, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{authorizeCode}, + #{productId}, + #{deviceId}, + #{serialNumber}, + #{userId}, + #{userName}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + insert into iot_product_authorize (authorize_code,product_id,create_by,create_time) + values + + + #{item.authorizeCode},#{item.productId},#{item.createBy},#{item.createTime} + + + + + + update iot_product_authorize + + user_id = #{userId}, + device_id = #{deviceId}, + authorize_code = #{authorizeCode}, + product_id = #{productId}, + serial_number = #{serialNumber}, + user_name = #{userName}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where authorize_id = #{authorizeId} + + + + delete from iot_product_authorize where authorize_id = #{authorizeId} + + + + delete from iot_product_authorize where authorize_id in + + #{authorizeId} + + + \ No newline at end of file diff --git a/springboot/wumei-iot/src/main/resources/mapper/iot/ProductMapper.xml b/springboot/wumei-iot/src/main/resources/mapper/iot/ProductMapper.xml index e4ee0764..ce6cc554 100644 --- a/springboot/wumei-iot/src/main/resources/mapper/iot/ProductMapper.xml +++ b/springboot/wumei-iot/src/main/resources/mapper/iot/ProductMapper.xml @@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -31,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select product_id, product_name, category_id, category_name, tenant_id, tenant_name, is_sys,mqtt_account,mqtt_password,mqtt_secret ,status, device_type, network_method, vertificate_method, create_time, update_time, img_url,remark from iot_product + select product_id, product_name, category_id, category_name, tenant_id, tenant_name, is_sys, is_authorize, mqtt_account,mqtt_password,mqtt_secret ,status, device_type, network_method, vertificate_method, create_time, update_time, img_url,remark from iot_product