Commit 6c24e4f643dfc4febe49e6beffd008f18a143caf

Authored by 黄 x
1 parent de148a4e

fix: delete data component and update data board component_num

... ... @@ -12,6 +12,7 @@ import org.thingsboard.server.common.data.exception.ThingsboardException;
12 12 import org.thingsboard.server.common.data.yunteng.common.AddGroup;
13 13 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
14 14 import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
  15 +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
15 16 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
16 17 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
17 18 import org.thingsboard.server.common.data.yunteng.dto.DataBoardDTO;
... ... @@ -28,7 +29,7 @@ import java.util.List;
28 29
29 30 @RestController
30 31 @RequiredArgsConstructor
31   -@PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  32 +@PreAuthorize("@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{})")
32 33 @RequestMapping("api/yt/data_component")
33 34 @Api(tags = {"数据组件"})
34 35 public class YtDataComponentController extends BaseController {
... ... @@ -37,6 +38,8 @@ public class YtDataComponentController extends BaseController {
37 38
38 39 @GetMapping("/{boardId}")
39 40 @ApiOperation(value = "查询看板下的所有组件信息")
  41 + @PreAuthorize(
  42 + "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:data_component:list'})")
40 43 public ResponseResult<MoreDataComponentInfoDTO> getDataComponentsByBoardId(
41 44 @PathVariable("boardId") String boardId) throws ThingsboardException {
42 45 DataBoardDTO dataBoardDTO = checkDataBoardInfo(boardId);
... ... @@ -51,6 +54,8 @@ public class YtDataComponentController extends BaseController {
51 54
52 55 @PostMapping("/{boardId}/add")
53 56 @ApiOperation(value = "新增组件")
  57 + @PreAuthorize(
  58 + "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:data_component:add:post'})")
54 59 public ResponseResult<DataComponentDTO> save(
55 60 @PathVariable("boardId") String boardId,
56 61 @RequestBody @Validated(AddGroup.class) DataComponentDTO dataComponent)
... ... @@ -73,6 +78,8 @@ public class YtDataComponentController extends BaseController {
73 78
74 79 @PostMapping("/{boardId}/update")
75 80 @ApiOperation(value = "编辑组件")
  81 + @PreAuthorize(
  82 + "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:data_component:update:update'})")
76 83 public ResponseResult<DataComponentDTO> update(
77 84 @PathVariable("boardId") String boardId,
78 85 @RequestBody @Validated(UpdateGroup.class) DataComponentDTO dataComponent)
... ... @@ -86,12 +93,33 @@ public class YtDataComponentController extends BaseController {
86 93 return saveOrUpdate(dataComponent);
87 94 }
88 95
89   - @DeleteMapping
  96 + @DeleteMapping("/{dataBoardId}")
90 97 @ApiOperation(value = "删除数据组件")
  98 + @PreAuthorize(
  99 + "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:data_component:delete'})")
91 100 public ResponseResult<Boolean> deleteDataBoard(
92   - @Validated(DeleteGroup.class) @RequestBody DeleteDTO deleteDTO) throws ThingsboardException {
93   - deleteDTO.setTenantId(getCurrentUser().getCurrentTenantId());
94   - return ResponseResult.success(ytDataComponentService.deleteDataComponent(deleteDTO));
  101 + @PathVariable("dataBoardId") String dataBoardId,
  102 + @Validated(DeleteGroup.class) @RequestBody DeleteDTO deleteDTO)
  103 + throws ThingsboardException {
  104 + String tenantId = getCurrentUser().getCurrentTenantId();
  105 + deleteDTO.setTenantId(tenantId);
  106 + int deleteNum = ytDataComponentService.deleteDataComponent(deleteDTO);
  107 +
  108 + int zero = FastIotConstants.MagicNumber.ZERO;
  109 + boolean result = deleteNum > zero;
  110 + if (result) {
  111 + DataBoardDTO dataBoardDTO = ytDataBoardService.findDataBoardInfoById(dataBoardId, tenantId);
  112 + if (null != dataBoardDTO) {
  113 + int count =
  114 + dataBoardDTO.getComponentNum() != null
  115 + ? dataBoardDTO.getComponentNum() - deleteNum < zero
  116 + ? zero
  117 + : dataBoardDTO.getComponentNum() - deleteNum
  118 + : zero;
  119 + ytDataBoardService.updateDataBoardComponentNum(dataBoardId, tenantId, count);
  120 + }
  121 + }
  122 + return ResponseResult.success(result);
95 123 }
96 124
97 125 private ResponseResult<DataComponentDTO> saveOrUpdate(DataComponentDTO dataComponent)
... ...
... ... @@ -123,4 +123,9 @@ public class YtDataBoardServiceImpl extends AbstractBaseService<DataBoardMapper,
123 123 })
124 124 .orElse(null);
125 125 }
  126 +
  127 + @Override
  128 + public boolean updateDataBoardComponentNum(String id, String tenantId, int count) {
  129 + return baseMapper.updateDataBoardComponentNum(id, tenantId, count);
  130 + }
126 131 }
... ...
... ... @@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.JsonNode;
5 5 import org.apache.commons.lang3.StringUtils;
6 6 import org.springframework.stereotype.Service;
7 7 import org.springframework.transaction.annotation.Transactional;
8   -import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
9 8 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
10 9 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
11 10 import org.thingsboard.server.common.data.yunteng.dto.DataComponentDTO;
... ... @@ -80,11 +79,10 @@ public class YtDataComponentServiceImpl
80 79
81 80 @Override
82 81 @Transactional
83   - public boolean deleteDataComponent(DeleteDTO deleteDTO) {
  82 + public int deleteDataComponent(DeleteDTO deleteDTO) {
84 83 return baseMapper.delete(
85 84 new LambdaQueryWrapper<DataComponent>()
86 85 .eq(DataComponent::getTenantId, deleteDTO.getTenantId())
87   - .in(DataComponent::getId, deleteDTO.getIds()))
88   - > FastIotConstants.MagicNumber.ZERO;
  86 + .in(DataComponent::getId, deleteDTO.getIds()));
89 87 }
90 88 }
... ...
... ... @@ -2,8 +2,11 @@ package org.thingsboard.server.dao.yunteng.mapper;
2 2
3 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 4 import org.apache.ibatis.annotations.Mapper;
  5 +import org.apache.ibatis.annotations.Param;
5 6 import org.thingsboard.server.dao.yunteng.entities.DataBoard;
6 7
7 8 @Mapper
8 9 public interface DataBoardMapper extends BaseMapper<DataBoard> {
  10 + boolean updateDataBoardComponentNum(
  11 + @Param("id") String id, @Param("tenantId") String tenantId, @Param("count") int count);
9 12 }
... ...
... ... @@ -47,4 +47,13 @@ public interface YtDataBoardService {
47 47 * @return 看板信息
48 48 */
49 49 DataBoardDTO findDataBoardInfoById(String id,String tenantId);
  50 +
  51 + /**
  52 + * 跟新数据看板的组件数量
  53 + * @param id 看板id
  54 + * @param tenantId 租户ID
  55 + * @param count 更新值
  56 + * @return false失败 true成功
  57 + */
  58 + boolean updateDataBoardComponentNum(String id,String tenantId,int count);
50 59 }
... ...
... ... @@ -26,5 +26,5 @@ public interface YtDataComponentService {
26 26 *
27 27 * @param deleteDTO 删除IDS
28 28 */
29   - boolean deleteDataComponent(DeleteDTO deleteDTO);
  29 + int deleteDataComponent(DeleteDTO deleteDTO);
30 30 }
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +
  4 +<mapper namespace="org.thingsboard.server.dao.yunteng.mapper.DataBoardMapper">
  5 + <resultMap type="org.thingsboard.server.common.data.yunteng.dto.DataBoardDTO" id="boardMap">
  6 + <result property="id" column="id"/>
  7 + <result property="name" column="name"/>
  8 + <result property="tenantId" column="tenant_id"/>
  9 + <result property="componentNum" column="component_num"/>
  10 + <result property="createTime" column="create_time"/>
  11 + <result property="updateTime" column="update_time"/>
  12 + <result property="creator" column="creator"/>
  13 + <result property="updater" column="updater"/>
  14 + <result property="remark" column="remark"/>
  15 + </resultMap>
  16 + <update id="updateDataBoardComponentNum">
  17 + UPDATE iotfs_data_board
  18 + SET component_num =#{count}
  19 + <where>
  20 + id = #{id}
  21 + AND tenant_id = #{tenantId}
  22 + </where>
  23 + </update>
  24 +</mapper>
... ...