Showing
65 changed files
with
2565 additions
and
97 deletions
@@ -29,7 +29,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | @@ -29,7 +29,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | ||
29 | @RestController | 29 | @RestController |
30 | @RequestMapping("api/yt/admin") | 30 | @RequestMapping("api/yt/admin") |
31 | @RequiredArgsConstructor | 31 | @RequiredArgsConstructor |
32 | -@PreAuthorize("hasAnyRole('SYS_ADMIN','PLATFORM_ADMIN')") | 32 | +//@PreAuthorize("hasAnyRole('SYS_ADMIN','PLATFORM_ADMIN')") |
33 | public class YtAdminController extends BaseController { | 33 | public class YtAdminController extends BaseController { |
34 | 34 | ||
35 | private final YtTenantService ytTenantService; | 35 | private final YtTenantService ytTenantService; |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtAlarmNoticeController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import io.jsonwebtoken.*; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.security.authentication.BadCredentialsException; | ||
7 | +import org.springframework.util.Assert; | ||
8 | +import org.springframework.web.bind.annotation.*; | ||
9 | +import org.thingsboard.server.common.data.yunteng.dto.AlarmInfoDTO; | ||
10 | +import org.thingsboard.server.dao.yunteng.service.YtNoticeService; | ||
11 | +import org.thingsboard.server.service.security.exception.JwtExpiredTokenException; | ||
12 | + | ||
13 | +import java.net.InetAddress; | ||
14 | + | ||
15 | +/** | ||
16 | + * @version V1.0 | ||
17 | + * @Description : | ||
18 | + * 1.其它地方抛出异常,交由控制层统一处理 | ||
19 | + * 2.服务层注意持久化的事务管理 | ||
20 | + * @Dependency: 依赖包 | ||
21 | + * @Author: junlianglee | ||
22 | + * @Date Created in 2021/11/23$ | ||
23 | + * @Copyright 2016-2018 - Powered By 云腾五洲 | ||
24 | + */ | ||
25 | +@RestController | ||
26 | +@RequestMapping("/api/yt/notice") | ||
27 | +@RequiredArgsConstructor | ||
28 | +@Slf4j | ||
29 | +public class YtAlarmNoticeController { | ||
30 | + | ||
31 | + private final YtNoticeService service; | ||
32 | + | ||
33 | + @PostMapping("/alert") | ||
34 | + public void alermNotice(@RequestParam(value = "token", required = true) String token, | ||
35 | + @RequestBody AlarmInfoDTO alarmInfo){ | ||
36 | + Assert.notNull(token, "token cannot be null"); | ||
37 | + Assert.notNull(alarmInfo, "alarm info cannot be null"); | ||
38 | + if(parseTokenClaims(token,alarmInfo)){ | ||
39 | + service.alert(token,alarmInfo); | ||
40 | + } | ||
41 | + } | ||
42 | + | ||
43 | + | ||
44 | + | ||
45 | + private boolean parseTokenClaims(String token,AlarmInfoDTO alarmInfo) { | ||
46 | + try { | ||
47 | + Claims claims = Jwts.parser() | ||
48 | + .setSigningKey(alarmInfo.getSeverity()) | ||
49 | + .parseClaimsJws(token) | ||
50 | + .getBody(); | ||
51 | + if(claims.get("deviceId").equals(alarmInfo.getDeviceId()) | ||
52 | + &&claims.get("tenantId").equals(alarmInfo.getTenantId()) | ||
53 | + &&claims.get("ip").equals(InetAddress.getLocalHost().getHostAddress())){ | ||
54 | + return true; | ||
55 | + } | ||
56 | + return false; | ||
57 | + } catch (UnsupportedJwtException | MalformedJwtException | IllegalArgumentException | SignatureException ex) { | ||
58 | + log.debug("Invalid JWT Token", ex); | ||
59 | + throw new BadCredentialsException("Invalid JWT token: ", ex); | ||
60 | + } catch (ExpiredJwtException expiredEx) { | ||
61 | + log.debug("JWT Token is expired", expiredEx); | ||
62 | + throw new JwtExpiredTokenException(expiredEx.getMessage()); | ||
63 | + } catch (Exception e) { | ||
64 | + log.error("not allowed send notice",e); | ||
65 | + } | ||
66 | + return false; | ||
67 | + } | ||
68 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtAppDesignController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import io.swagger.annotations.Api; | ||
4 | +import io.swagger.annotations.ApiOperation; | ||
5 | +import lombok.RequiredArgsConstructor; | ||
6 | +import org.springframework.http.ResponseEntity; | ||
7 | +import org.springframework.web.bind.annotation.*; | ||
8 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
9 | +import org.thingsboard.server.common.data.yunteng.dto.SysAppDesignDTO; | ||
10 | +import org.thingsboard.server.controller.BaseController; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.SysAppDesignService; | ||
12 | + | ||
13 | +/** | ||
14 | + * @author: 徐浩然 | ||
15 | + * @desc: APP定制 | ||
16 | + * @date: 2021/12/3-18:45 | ||
17 | + */ | ||
18 | +@Api(tags = "APP定制") | ||
19 | +@RestController | ||
20 | +@RequestMapping("api/v1/appDesign") | ||
21 | +@RequiredArgsConstructor | ||
22 | +public class YtAppDesignController extends BaseController { | ||
23 | + | ||
24 | + private final SysAppDesignService sysAppDesignService; | ||
25 | + | ||
26 | + @GetMapping("get") | ||
27 | + @ApiOperation("查询详情") | ||
28 | + public ResponseEntity<SysAppDesignDTO> get() throws ThingsboardException { | ||
29 | + return ResponseEntity.ok(sysAppDesignService.get(getCurrentUser().getCurrentTenantId())); | ||
30 | + } | ||
31 | + | ||
32 | + @PutMapping("update") | ||
33 | + @ApiOperation("更新") | ||
34 | + public ResponseEntity update(@RequestBody SysAppDesignDTO sysAppDesignDTO) | ||
35 | + throws ThingsboardException { | ||
36 | + sysAppDesignDTO.setId(null); | ||
37 | + return sysAppDesignService.update(sysAppDesignDTO, getCurrentUser().getCurrentTenantId()) | ||
38 | + ? ResponseEntity.ok().build() | ||
39 | + : ResponseEntity.badRequest().build(); | ||
40 | + } | ||
41 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtDictController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import lombok.RequiredArgsConstructor; | ||
4 | +import org.springframework.validation.annotation.Validated; | ||
5 | +import org.springframework.web.bind.annotation.*; | ||
6 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
7 | +import org.thingsboard.server.common.data.yunteng.common.AddGroup; | ||
8 | +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; | ||
9 | +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; | ||
10 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | ||
11 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | ||
12 | +import org.thingsboard.server.common.data.yunteng.dto.SysDictDTO; | ||
13 | +import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; | ||
14 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
15 | +import org.thingsboard.server.common.data.yunteng.utils.tools.ResponseResult; | ||
16 | +import org.thingsboard.server.controller.BaseController; | ||
17 | +import org.thingsboard.server.dao.yunteng.service.SysDictService; | ||
18 | + | ||
19 | +import java.util.HashMap; | ||
20 | + | ||
21 | +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*; | ||
22 | + | ||
23 | +@RestController | ||
24 | +@RequestMapping("api/v1/dict") | ||
25 | +@RequiredArgsConstructor | ||
26 | +public class YtDictController extends BaseController { | ||
27 | + private final SysDictService sysDictService; | ||
28 | + | ||
29 | + @GetMapping(params = {PAGE_SIZE, PAGE}) | ||
30 | + public PageData<SysDictDTO> pageSysDict( | ||
31 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
32 | + @RequestParam(PAGE) int page, | ||
33 | + @RequestParam(value = "dictName", required = false) String dictName, | ||
34 | + @RequestParam(value = "dictCode", required = false) String dictCode, | ||
35 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
36 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) { | ||
37 | + | ||
38 | + HashMap<String, Object> queryMap = new HashMap<>(); | ||
39 | + queryMap.put(PAGE_SIZE, pageSize); | ||
40 | + queryMap.put(PAGE, page); | ||
41 | + queryMap.put(ORDER_FILED, orderBy); | ||
42 | + queryMap.put("dictName", dictName); | ||
43 | + queryMap.put("dictCode", dictCode); | ||
44 | + if (orderType != null) { | ||
45 | + queryMap.put(ORDER_TYPE, orderType.name()); | ||
46 | + } | ||
47 | + return sysDictService.page(queryMap); | ||
48 | + } | ||
49 | + | ||
50 | + @PostMapping | ||
51 | + public ResponseResult<SysDictDTO> saveSysDict( | ||
52 | + @Validated({AddGroup.class}) @RequestBody SysDictDTO sysDictDTO) throws ThingsboardException { | ||
53 | + SysDictDTO newDTO = | ||
54 | + sysDictService.saveSysDict(sysDictDTO, getCurrentUser().getCurrentTenantId()); | ||
55 | + return ResponseResult.success(newDTO); | ||
56 | + } | ||
57 | + | ||
58 | + @DeleteMapping | ||
59 | + public ResponseResult<String> deleteSysDict( | ||
60 | + @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) { | ||
61 | + return sysDictService.deleteSysDict(deleteDTO.getIds()) | ||
62 | + ? ResponseResult.success(FastIotConstants.StateValue.DELETE_SUCCESS) | ||
63 | + : ResponseResult.failed(FastIotConstants.StateValue.DELETE_FAILED); | ||
64 | + } | ||
65 | + | ||
66 | + @PutMapping | ||
67 | + public ResponseResult<SysDictDTO> updateSysDict( | ||
68 | + @Validated({UpdateGroup.class}) @RequestBody SysDictDTO SysDictDTO) | ||
69 | + throws ThingsboardException { | ||
70 | + return ResponseResult.success( | ||
71 | + sysDictService.updateSysDict(SysDictDTO, getCurrentUser().getCurrentTenantId())); | ||
72 | + } | ||
73 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtDictItemController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import lombok.RequiredArgsConstructor; | ||
4 | +import org.springframework.http.ResponseEntity; | ||
5 | +import org.springframework.validation.annotation.Validated; | ||
6 | +import org.springframework.web.bind.annotation.*; | ||
7 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
8 | +import org.thingsboard.server.common.data.yunteng.common.AddGroup; | ||
9 | +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; | ||
10 | +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; | ||
11 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | ||
12 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | ||
13 | +import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO; | ||
14 | +import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; | ||
15 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
16 | +import org.thingsboard.server.common.data.yunteng.utils.tools.ResponseResult; | ||
17 | +import org.thingsboard.server.controller.BaseController; | ||
18 | +import org.thingsboard.server.dao.yunteng.service.SysDictItemService; | ||
19 | + | ||
20 | +import java.util.HashMap; | ||
21 | +import java.util.List; | ||
22 | +import java.util.Map; | ||
23 | + | ||
24 | +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*; | ||
25 | + | ||
26 | +@RestController | ||
27 | +@RequestMapping("api/v1/dictItem") | ||
28 | +@RequiredArgsConstructor | ||
29 | +public class YtDictItemController extends BaseController { | ||
30 | + private final SysDictItemService sysDictItemService; | ||
31 | + | ||
32 | + @GetMapping(params = {PAGE_SIZE, PAGE}) | ||
33 | + public PageData<SysDictItemDTO> pageSysDictItem( | ||
34 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
35 | + @RequestParam(PAGE) int page, | ||
36 | + @RequestParam(value = "dictId", required = false) String dictId, | ||
37 | + @RequestParam(value = "itemText", required = false) String itemText, | ||
38 | + @RequestParam(value = "status", required = false) Integer status, | ||
39 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
40 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) { | ||
41 | + | ||
42 | + HashMap<String, Object> queryMap = new HashMap<>(); | ||
43 | + queryMap.put(PAGE_SIZE, pageSize); | ||
44 | + queryMap.put(PAGE, page); | ||
45 | + queryMap.put(ORDER_FILED, orderBy); | ||
46 | + queryMap.put("itemText", itemText); | ||
47 | + queryMap.put("status", status); | ||
48 | + queryMap.put("dictId", dictId); | ||
49 | + if (orderType != null) { | ||
50 | + queryMap.put(ORDER_TYPE, orderType.name()); | ||
51 | + } | ||
52 | + return sysDictItemService.page(queryMap); | ||
53 | + } | ||
54 | + | ||
55 | + @PostMapping | ||
56 | + public ResponseResult<SysDictItemDTO> saveSysDictItem( | ||
57 | + @Validated({AddGroup.class}) @RequestBody SysDictItemDTO sysDictItemDTO) | ||
58 | + throws ThingsboardException { | ||
59 | + SysDictItemDTO newDTO = | ||
60 | + sysDictItemService.saveSysDictItem(sysDictItemDTO, getCurrentUser().getCurrentTenantId()); | ||
61 | + return ResponseResult.success(newDTO); | ||
62 | + } | ||
63 | + | ||
64 | + @DeleteMapping | ||
65 | + public ResponseResult<String> deleteSysDictItem( | ||
66 | + @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) { | ||
67 | + return sysDictItemService.deleteSysDictItem(deleteDTO.getIds()) | ||
68 | + ? ResponseResult.success(FastIotConstants.StateValue.DELETE_SUCCESS) | ||
69 | + : ResponseResult.failed(FastIotConstants.StateValue.DELETE_FAILED); | ||
70 | + } | ||
71 | + | ||
72 | + @PutMapping | ||
73 | + public ResponseResult<SysDictItemDTO> updateSysDictItem( | ||
74 | + @Validated({UpdateGroup.class}) @RequestBody SysDictItemDTO SysDictItemDTO) | ||
75 | + throws ThingsboardException { | ||
76 | + return ResponseResult.success( | ||
77 | + sysDictItemService.updateSysDictItem( | ||
78 | + SysDictItemDTO, getCurrentUser().getCurrentTenantId())); | ||
79 | + } | ||
80 | + | ||
81 | + @PostMapping("/find") | ||
82 | + public ResponseEntity<List<SysDictItemDTO>> findDictItemByDictCode( | ||
83 | + @RequestBody Map<String, String> dictCode) { | ||
84 | + return ResponseEntity.ok(sysDictItemService.findDictItemByDictCode(dictCode.get("dictCode"))); | ||
85 | + } | ||
86 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtEnterpriseController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import io.swagger.annotations.Api; | ||
4 | +import io.swagger.annotations.ApiOperation; | ||
5 | +import lombok.RequiredArgsConstructor; | ||
6 | +import org.springframework.http.ResponseEntity; | ||
7 | +import org.springframework.web.bind.annotation.*; | ||
8 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
9 | +import org.thingsboard.server.common.data.yunteng.dto.SysEnterpriseDTO; | ||
10 | +import org.thingsboard.server.controller.BaseController; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.SysEnterpriseService; | ||
12 | + | ||
13 | +/** | ||
14 | + * @author: 徐浩然 | ||
15 | + * @desc: 企业信息 | ||
16 | + * @date: 2021/12/3-18:45 | ||
17 | + */ | ||
18 | +@Api(tags = "企业信息") | ||
19 | +@RestController | ||
20 | +@RequestMapping("api/v1/enterprise") | ||
21 | +@RequiredArgsConstructor | ||
22 | +public class YtEnterpriseController extends BaseController { | ||
23 | + | ||
24 | + private final SysEnterpriseService sysEnterpriseService; | ||
25 | + | ||
26 | + @GetMapping("get") | ||
27 | + @ApiOperation("查询详情") | ||
28 | + public ResponseEntity<SysEnterpriseDTO> get() throws ThingsboardException { | ||
29 | + return ResponseEntity.ok(sysEnterpriseService.get(getCurrentUser().getCurrentTenantId())); | ||
30 | + } | ||
31 | + | ||
32 | + @PutMapping("update") | ||
33 | + @ApiOperation("更新") | ||
34 | + public ResponseEntity update(@RequestBody SysEnterpriseDTO sysEnterpriseDTO) | ||
35 | + throws ThingsboardException { | ||
36 | + return sysEnterpriseService.update(sysEnterpriseDTO, getCurrentUser().getCurrentTenantId()) | ||
37 | + ? ResponseEntity.ok().build() | ||
38 | + : ResponseEntity.badRequest().build(); | ||
39 | + } | ||
40 | +} |
1 | package org.thingsboard.server.controller.yunteng; | 1 | package org.thingsboard.server.controller.yunteng; |
2 | 2 | ||
3 | -import io.jsonwebtoken.*; | 3 | +import io.swagger.annotations.Api; |
4 | +import io.swagger.annotations.ApiOperation; | ||
4 | import lombok.RequiredArgsConstructor; | 5 | import lombok.RequiredArgsConstructor; |
5 | -import lombok.extern.slf4j.Slf4j; | ||
6 | -import org.springframework.security.authentication.BadCredentialsException; | ||
7 | -import org.springframework.util.Assert; | 6 | +import org.springframework.http.ResponseEntity; |
8 | import org.springframework.web.bind.annotation.*; | 7 | import org.springframework.web.bind.annotation.*; |
9 | -import org.thingsboard.server.common.data.yunteng.dto.AlarmInfoDTO; | ||
10 | -import org.thingsboard.server.dao.yunteng.service.YtNoticeService; | ||
11 | -import org.thingsboard.server.service.security.exception.JwtExpiredTokenException; | 8 | +import org.thingsboard.server.common.data.exception.ThingsboardException; |
9 | +import org.thingsboard.server.common.data.yunteng.dto.SysNoticeDTO; | ||
10 | +import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; | ||
11 | +import org.thingsboard.server.common.data.yunteng.enums.SysNoticeTypeEnum; | ||
12 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
13 | +import org.thingsboard.server.controller.BaseController; | ||
14 | +import org.thingsboard.server.dao.yunteng.entities.SysNotice; | ||
15 | +import org.thingsboard.server.dao.yunteng.service.SysNoticeService; | ||
12 | 16 | ||
13 | -import java.net.InetAddress; | 17 | +import java.util.HashMap; |
18 | +import java.util.List; | ||
19 | +import java.util.Map; | ||
20 | + | ||
21 | +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*; | ||
14 | 22 | ||
15 | /** | 23 | /** |
16 | - * @version V1.0 | ||
17 | - * @Description : | ||
18 | - * 1.其它地方抛出异常,交由控制层统一处理 | ||
19 | - * 2.服务层注意持久化的事务管理 | ||
20 | - * @Dependency: 依赖包 | ||
21 | - * @Author: junlianglee | ||
22 | - * @Date Created in 2021/11/23$ | ||
23 | - * @Copyright 2016-2018 - Powered By 云腾五洲 | 24 | + * @author: 徐浩然 |
25 | + * @desc: 通知管理 | ||
26 | + * @date: 2021/12/2-11:05 | ||
24 | */ | 27 | */ |
28 | +@Api(tags = "通知管理") | ||
25 | @RestController | 29 | @RestController |
26 | -@RequestMapping("/api/yt/notice") | 30 | +@RequestMapping("api/v1/notice") |
27 | @RequiredArgsConstructor | 31 | @RequiredArgsConstructor |
28 | -@Slf4j | ||
29 | -public class YtNoticeController { | 32 | +public class YtNoticeController extends BaseController { |
30 | 33 | ||
31 | - private final YtNoticeService service; | 34 | + private final SysNoticeService sysNoticeService; |
32 | 35 | ||
33 | - @PostMapping("/alert") | ||
34 | - public void alermNotice(@RequestParam(value = "token", required = true) String token, | ||
35 | - @RequestBody AlarmInfoDTO alarmInfo){ | ||
36 | - Assert.notNull(token, "token cannot be null"); | ||
37 | - Assert.notNull(alarmInfo, "alarm info cannot be null"); | ||
38 | - if(parseTokenClaims(token,alarmInfo)){ | ||
39 | - service.alert(token,alarmInfo); | ||
40 | - } | 36 | + @GetMapping( |
37 | + path = "page", | ||
38 | + params = {PAGE_SIZE, PAGE}) | ||
39 | + @ApiOperation("分页") | ||
40 | + public PageData<SysNoticeDTO> page( | ||
41 | + @RequestParam(value = "type", required = false) SysNoticeTypeEnum type, | ||
42 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
43 | + @RequestParam(PAGE) int page, | ||
44 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
45 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) | ||
46 | + throws ThingsboardException { | ||
47 | + Map<String, Object> queryMap = new HashMap<>(); | ||
48 | + queryMap.put(PAGE_SIZE, pageSize); | ||
49 | + queryMap.put(PAGE, page); | ||
50 | + queryMap.put(ORDER_FILED, orderBy); | ||
51 | + queryMap.put("tenantCode", getCurrentUser().getCurrentTenantId()); | ||
52 | + if (orderType != null) { | ||
53 | + queryMap.put(ORDER_TYPE, orderType.name()); | ||
54 | + } | ||
55 | + // 通知类型 | ||
56 | + if (type != null) { | ||
57 | + queryMap.put("type", type.name()); | ||
41 | } | 58 | } |
59 | + return sysNoticeService.page(queryMap); | ||
60 | + } | ||
42 | 61 | ||
62 | + @GetMapping("{id}") | ||
63 | + @ApiOperation("详情") | ||
64 | + public ResponseEntity<SysNoticeDTO> get(@PathVariable("id") String id) | ||
65 | + throws ThingsboardException { | ||
66 | + return ResponseEntity.ok(sysNoticeService.get(id, getCurrentUser().getCurrentTenantId())); | ||
67 | + } | ||
43 | 68 | ||
69 | + @DeleteMapping("delete") | ||
70 | + @ApiOperation("批量删除") | ||
71 | + public ResponseEntity delete(@RequestParam List<String> ids) throws ThingsboardException { | ||
72 | + boolean flag = sysNoticeService.delete(ids, getCurrentUser().getCurrentTenantId()); | ||
73 | + return flag ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); | ||
74 | + } | ||
44 | 75 | ||
45 | - private boolean parseTokenClaims(String token,AlarmInfoDTO alarmInfo) { | ||
46 | - try { | ||
47 | - Claims claims = Jwts.parser() | ||
48 | - .setSigningKey(alarmInfo.getSeverity()) | ||
49 | - .parseClaimsJws(token) | ||
50 | - .getBody(); | ||
51 | - if(claims.get("deviceId").equals(alarmInfo.getDeviceId()) | ||
52 | - &&claims.get("tenantId").equals(alarmInfo.getTenantId()) | ||
53 | - &&claims.get("ip").equals(InetAddress.getLocalHost().getHostAddress())){ | ||
54 | - return true; | ||
55 | - } | ||
56 | - return false; | ||
57 | - } catch (UnsupportedJwtException | MalformedJwtException | IllegalArgumentException | SignatureException ex) { | ||
58 | - log.debug("Invalid JWT Token", ex); | ||
59 | - throw new BadCredentialsException("Invalid JWT token: ", ex); | ||
60 | - } catch (ExpiredJwtException expiredEx) { | ||
61 | - log.debug("JWT Token is expired", expiredEx); | ||
62 | - throw new JwtExpiredTokenException(expiredEx.getMessage()); | ||
63 | - } catch (Exception e) { | ||
64 | - log.error("not allowed send notice",e); | ||
65 | - } | ||
66 | - return false; | ||
67 | - } | 76 | + @PostMapping("save") |
77 | + @ApiOperation("保存草稿") | ||
78 | + public ResponseEntity save(@RequestBody SysNoticeDTO sysNoticeDTO) throws ThingsboardException { | ||
79 | + SysNotice sysNotice = | ||
80 | + sysNoticeService.save(sysNoticeDTO, getCurrentUser().getCurrentTenantId()); | ||
81 | + return sysNotice == null ? ResponseEntity.badRequest().build() : ResponseEntity.ok().build(); | ||
82 | + } | ||
83 | + | ||
84 | + @PostMapping("send") | ||
85 | + @ApiOperation("发布通知") | ||
86 | + public ResponseEntity send(@RequestBody SysNoticeDTO sysNoticeDTO) throws ThingsboardException { | ||
87 | + SysNotice sysNotice = | ||
88 | + sysNoticeService.send( | ||
89 | + sysNoticeDTO, | ||
90 | + getCurrentUser().getCurrentTenantId(), | ||
91 | + getCurrentUser().getCurrentUserId(), | ||
92 | + ""); | ||
93 | + return sysNotice == null ? ResponseEntity.badRequest().build() : ResponseEntity.ok().build(); | ||
94 | + } | ||
68 | } | 95 | } |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtNoticeUserController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | +import io.swagger.annotations.Api; | ||
3 | +import io.swagger.annotations.ApiOperation; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import org.jetbrains.annotations.NotNull; | ||
6 | +import org.springframework.http.ResponseEntity; | ||
7 | +import org.springframework.web.bind.annotation.*; | ||
8 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
9 | +import org.thingsboard.server.common.data.yunteng.dto.SysNoticeUserDTO; | ||
10 | +import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; | ||
11 | +import org.thingsboard.server.common.data.yunteng.enums.SysNoticeTypeEnum; | ||
12 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
13 | +import org.thingsboard.server.controller.BaseController; | ||
14 | +import org.thingsboard.server.dao.yunteng.service.SysNoticeUserService; | ||
15 | + | ||
16 | +import java.util.HashMap; | ||
17 | +import java.util.Map; | ||
18 | +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*; | ||
19 | + | ||
20 | +/** | ||
21 | + * @author: 徐浩然 | ||
22 | + * @desc: 我的通知 | ||
23 | + * @date: 2021/12/2-22:19 | ||
24 | + */ | ||
25 | +@Api(tags = "我的通知") | ||
26 | +@RestController | ||
27 | +@RequestMapping("api/v1/noticeUser") | ||
28 | +@RequiredArgsConstructor | ||
29 | +public class YtNoticeUserController extends BaseController { | ||
30 | + | ||
31 | + private final SysNoticeUserService sysNoticeUserService; | ||
32 | + | ||
33 | + @GetMapping( | ||
34 | + path = "read", | ||
35 | + params = {PAGE_SIZE, PAGE}) | ||
36 | + @ApiOperation("查看人员阅读情况分页") | ||
37 | + public PageData<SysNoticeUserDTO> read( | ||
38 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
39 | + @RequestParam(PAGE) int page, | ||
40 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
41 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) throws ThingsboardException { | ||
42 | + Map<String, Object> queryMap = getMap(pageSize, page, orderBy, orderType); | ||
43 | + return sysNoticeUserService.read(queryMap, getCurrentUser().getCurrentUserId()); | ||
44 | + } | ||
45 | + | ||
46 | + @GetMapping( | ||
47 | + path = "page", | ||
48 | + params = {PAGE_SIZE, PAGE}) | ||
49 | + @ApiOperation("我的通知分页") | ||
50 | + public PageData<SysNoticeUserDTO> page( | ||
51 | + @RequestParam(value = "type", required = false) SysNoticeTypeEnum type, | ||
52 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
53 | + @RequestParam(PAGE) int page, | ||
54 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
55 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) throws ThingsboardException { | ||
56 | + Map<String, Object> queryMap = getMap(pageSize, page, orderBy, orderType); | ||
57 | + // 通知类型 | ||
58 | + if (type != null) { | ||
59 | + queryMap.put("type", type.name()); | ||
60 | + } | ||
61 | + return sysNoticeUserService.page(queryMap); | ||
62 | + } | ||
63 | + | ||
64 | + @GetMapping("{id}") | ||
65 | + @ApiOperation("详情") | ||
66 | + public ResponseEntity<SysNoticeUserDTO> get(@PathVariable("id") String id) throws ThingsboardException { | ||
67 | + return ResponseEntity.ok(sysNoticeUserService.get(id, getCurrentUser().getCurrentTenantId())); | ||
68 | + } | ||
69 | + | ||
70 | + @NotNull | ||
71 | + private Map<String, Object> getMap( | ||
72 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
73 | + @RequestParam(PAGE) int page, | ||
74 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
75 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) throws ThingsboardException { | ||
76 | + Map<String, Object> queryMap = new HashMap<>(); | ||
77 | + queryMap.put(PAGE_SIZE, pageSize); | ||
78 | + queryMap.put(PAGE, page); | ||
79 | + queryMap.put(ORDER_FILED, orderBy); | ||
80 | + queryMap.put("tenantCode", getCurrentUser().getCurrentUserId()); | ||
81 | + if (orderType != null) { | ||
82 | + queryMap.put(ORDER_TYPE, orderType.name()); | ||
83 | + } | ||
84 | + return queryMap; | ||
85 | + } | ||
86 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtOrganizationController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | +import lombok.RequiredArgsConstructor; | ||
3 | +import org.springframework.http.HttpStatus; | ||
4 | +import org.springframework.http.ResponseEntity; | ||
5 | +import org.springframework.validation.annotation.Validated; | ||
6 | +import org.springframework.web.bind.annotation.*; | ||
7 | +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; | ||
8 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
9 | +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; | ||
10 | +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; | ||
11 | +import org.thingsboard.server.common.data.yunteng.core.exception.FastIotException; | ||
12 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | ||
13 | +import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; | ||
14 | +import org.thingsboard.server.controller.BaseController; | ||
15 | +import org.thingsboard.server.dao.yunteng.service.OrganizationService; | ||
16 | + | ||
17 | +import java.net.URI; | ||
18 | +import java.util.List; | ||
19 | +import java.util.Optional; | ||
20 | + | ||
21 | +@RestController | ||
22 | +@RequestMapping("api/v1/organization") | ||
23 | +@RequiredArgsConstructor | ||
24 | +public class YtOrganizationController extends BaseController { | ||
25 | + | ||
26 | + private final OrganizationService organizationService; | ||
27 | + | ||
28 | + @PostMapping | ||
29 | + public ResponseEntity<OrganizationDTO> saveGroup(@RequestBody OrganizationDTO groupDTO) | ||
30 | + throws FastIotException, ThingsboardException { | ||
31 | + OrganizationDTO newGroupDTO = | ||
32 | + organizationService.saveOrganization(groupDTO, getCurrentUser().getCurrentTenantId()); | ||
33 | + return Optional.ofNullable(newGroupDTO) | ||
34 | + .map( | ||
35 | + dto -> { | ||
36 | + URI location = | ||
37 | + ServletUriComponentsBuilder.fromCurrentRequest() | ||
38 | + .path("/{id}") | ||
39 | + .buildAndExpand(newGroupDTO.getId()) | ||
40 | + .toUri(); | ||
41 | + return ResponseEntity.created(location).body(newGroupDTO); | ||
42 | + }) | ||
43 | + .orElse(ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build()); | ||
44 | + } | ||
45 | + | ||
46 | + @DeleteMapping | ||
47 | + public ResponseEntity<Boolean> deleteOrganizations( | ||
48 | + @Validated(DeleteGroup.class) @RequestBody DeleteDTO deleteDTO) throws ThingsboardException { | ||
49 | + return ResponseEntity.ok( | ||
50 | + organizationService.deleteOrganizations(deleteDTO, getCurrentUser().getCurrentTenantId())); | ||
51 | + } | ||
52 | + | ||
53 | + @GetMapping("/me/organizations") | ||
54 | + public List<OrganizationDTO> getMyOrganizations() { | ||
55 | + return organizationService.getMyOrganizations(); | ||
56 | + } | ||
57 | + | ||
58 | + @PutMapping | ||
59 | + public OrganizationDTO updateOrganization(@Validated(UpdateGroup.class) @RequestBody OrganizationDTO groupDTO) { | ||
60 | + return organizationService.updateOrganization(groupDTO); | ||
61 | + } | ||
62 | + | ||
63 | + @PutMapping("saveOrUpdateUserOrganizationMapping/{userId}") | ||
64 | + public void bindUserToOrganization( | ||
65 | + @RequestBody String[] organizationIds, @PathVariable("userId") String userId) { | ||
66 | + organizationService.bindUserToOrganization(userId, organizationIds); | ||
67 | + } | ||
68 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtOssFileController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import org.springframework.http.ResponseEntity; | ||
4 | +import org.springframework.web.bind.annotation.*; | ||
5 | +import org.springframework.web.multipart.MultipartFile; | ||
6 | +import org.thingsboard.server.common.data.yunteng.core.utils.FileStorageService; | ||
7 | +import org.thingsboard.server.common.data.yunteng.dto.FileUploadResponse; | ||
8 | + | ||
9 | +import javax.servlet.http.HttpServletRequest; | ||
10 | +import javax.servlet.http.HttpServletResponse; | ||
11 | + | ||
12 | +@RestController | ||
13 | +@RequestMapping("api/v1/oss") | ||
14 | +public class YtOssFileController { | ||
15 | + | ||
16 | + private final FileStorageService fileStorageService; | ||
17 | + | ||
18 | + public YtOssFileController(FileStorageService fileStorageService) { | ||
19 | + this.fileStorageService = fileStorageService; | ||
20 | + } | ||
21 | + | ||
22 | + @PostMapping("upload") | ||
23 | + public FileUploadResponse uploadFile(@RequestParam("file") MultipartFile file) { | ||
24 | + return fileStorageService.upload(file); | ||
25 | + } | ||
26 | + | ||
27 | + @GetMapping("/downloadFile/{fileName:.+}") | ||
28 | + public ResponseEntity<?> downloadFile( | ||
29 | + @PathVariable String fileName, HttpServletRequest request, HttpServletResponse response) { | ||
30 | + return fileStorageService.download(fileName, request, response); | ||
31 | + } | ||
32 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtPlatformDesignController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import io.swagger.annotations.Api; | ||
4 | +import io.swagger.annotations.ApiOperation; | ||
5 | +import lombok.RequiredArgsConstructor; | ||
6 | +import org.springframework.http.ResponseEntity; | ||
7 | +import org.springframework.web.bind.annotation.*; | ||
8 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
9 | +import org.thingsboard.server.common.data.yunteng.dto.SysPlatformDesignDTO; | ||
10 | +import org.thingsboard.server.controller.BaseController; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.SysPlatformDesignService; | ||
12 | + | ||
13 | +/** | ||
14 | + * @author: 徐浩然 | ||
15 | + * @desc: 平台定制 | ||
16 | + * @date: 2021/12/3-18:44 | ||
17 | + */ | ||
18 | +@Api(tags = "平台定制") | ||
19 | +@RestController | ||
20 | +@RequestMapping("api/v1/platform") | ||
21 | +@RequiredArgsConstructor | ||
22 | +public class YtPlatformDesignController extends BaseController { | ||
23 | + | ||
24 | + private final SysPlatformDesignService sysPlatformDesignService; | ||
25 | + | ||
26 | + @GetMapping("get") | ||
27 | + @ApiOperation("查询详情") | ||
28 | + public ResponseEntity<SysPlatformDesignDTO> get() throws ThingsboardException { | ||
29 | + return ResponseEntity.ok(sysPlatformDesignService.get(getCurrentUser().getCurrentTenantId())); | ||
30 | + } | ||
31 | + | ||
32 | + @PutMapping("update") | ||
33 | + @ApiOperation("更新") | ||
34 | + public ResponseEntity update(@RequestBody SysPlatformDesignDTO sysPlatformDesignDTO) | ||
35 | + throws ThingsboardException { | ||
36 | + return sysPlatformDesignService.update( | ||
37 | + sysPlatformDesignDTO, getCurrentUser().getCurrentTenantId()) | ||
38 | + ? ResponseEntity.ok().build() | ||
39 | + : ResponseEntity.badRequest().build(); | ||
40 | + } | ||
41 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtRoleController.java
renamed from
application/src/main/java/org/thingsboard/server/controller/yunteng/RoleController.java
@@ -23,7 +23,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | @@ -23,7 +23,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | ||
23 | @RestController | 23 | @RestController |
24 | @RequestMapping("api/yt/role") | 24 | @RequestMapping("api/yt/role") |
25 | @RequiredArgsConstructor | 25 | @RequiredArgsConstructor |
26 | -public class RoleController extends BaseController { | 26 | +public class YtRoleController extends BaseController { |
27 | 27 | ||
28 | private final RoleService roleService; | 28 | private final RoleService roleService; |
29 | 29 |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtSmsLogController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import lombok.RequiredArgsConstructor; | ||
4 | +import org.springframework.validation.annotation.Validated; | ||
5 | +import org.springframework.web.bind.annotation.*; | ||
6 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
7 | +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; | ||
8 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | ||
9 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | ||
10 | +import org.thingsboard.server.common.data.yunteng.dto.SmsLogDTO; | ||
11 | +import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; | ||
12 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
13 | +import org.thingsboard.server.common.data.yunteng.utils.tools.ResponseResult; | ||
14 | +import org.thingsboard.server.controller.BaseController; | ||
15 | +import org.thingsboard.server.dao.yunteng.service.SmsLogService; | ||
16 | + | ||
17 | +import java.util.HashMap; | ||
18 | + | ||
19 | +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*; | ||
20 | + | ||
21 | +@RestController | ||
22 | +@RequestMapping("api/v1/smsLog") | ||
23 | +@RequiredArgsConstructor | ||
24 | +public class YtSmsLogController extends BaseController { | ||
25 | + | ||
26 | + private final SmsLogService smsLogService; | ||
27 | + | ||
28 | + @GetMapping(params = {PAGE_SIZE, PAGE}) | ||
29 | + public PageData<SmsLogDTO> pageMessageConfig( | ||
30 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
31 | + @RequestParam(PAGE) int page, | ||
32 | + @RequestParam(value = "toPhone", required = false) String toPhone, | ||
33 | + @RequestParam(value = "startTime", required = false) String startTime, | ||
34 | + @RequestParam(value = "endTime", required = false) String endTime, | ||
35 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
36 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) | ||
37 | + throws ThingsboardException { | ||
38 | + | ||
39 | + HashMap<String, Object> queryMap = new HashMap<>(); | ||
40 | + queryMap.put(PAGE_SIZE, pageSize); | ||
41 | + queryMap.put(PAGE, page); | ||
42 | + queryMap.put(ORDER_FILED, orderBy); | ||
43 | + queryMap.put("toPhone", toPhone); | ||
44 | + queryMap.put("startTime", startTime); | ||
45 | + queryMap.put("endTime", endTime); | ||
46 | + if (orderType != null) { | ||
47 | + queryMap.put(ORDER_TYPE, orderType.name()); | ||
48 | + } | ||
49 | + return smsLogService.page(queryMap, getCurrentUser().getCurrentTenantId()); | ||
50 | + } | ||
51 | + | ||
52 | + @DeleteMapping | ||
53 | + public ResponseResult<String> deleteMailLog( | ||
54 | + @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) { | ||
55 | + return smsLogService.deleteSmsLog(deleteDTO.getIds()) | ||
56 | + ? ResponseResult.success(FastIotConstants.StateValue.DELETE_SUCCESS) | ||
57 | + : ResponseResult.failed(FastIotConstants.StateValue.DELETE_FAILED); | ||
58 | + } | ||
59 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtTenantController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import lombok.RequiredArgsConstructor; | ||
4 | +import org.springframework.web.bind.annotation.*; | ||
5 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
6 | +import org.thingsboard.server.common.data.yunteng.dto.request.SendResetPasswordEmailMsg; | ||
7 | +import org.thingsboard.server.controller.BaseController; | ||
8 | +import org.thingsboard.server.dao.yunteng.service.YtUserService; | ||
9 | + | ||
10 | +@RestController | ||
11 | +@RequestMapping("/api/v1/tenant") | ||
12 | +@RequiredArgsConstructor | ||
13 | +public class YtTenantController extends BaseController { | ||
14 | + | ||
15 | + private final YtUserService userService; | ||
16 | + | ||
17 | + @PostMapping("/resetPassword/{userId}") | ||
18 | + public void resetPassword(@PathVariable("userId") String userId) throws ThingsboardException { | ||
19 | + userService.resetPassword( | ||
20 | + userId, getCurrentUser().isPtSysadmin(), getCurrentUser().getCurrentTenantId()); | ||
21 | + } | ||
22 | + | ||
23 | + @PostMapping("/sendRestPasswordMsg") | ||
24 | + public void resetPassword(@RequestBody SendResetPasswordEmailMsg msg) { | ||
25 | + userService.sendRestPasswordMsg(msg); | ||
26 | + } | ||
27 | +} |
application/src/main/java/org/thingsboard/server/controller/yunteng/YtTownController.java
0 → 100644
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | +import io.swagger.annotations.Api; | ||
3 | +import io.swagger.annotations.ApiOperation; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import org.springframework.http.ResponseEntity; | ||
6 | +import org.springframework.web.bind.annotation.GetMapping; | ||
7 | +import org.springframework.web.bind.annotation.PathVariable; | ||
8 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
9 | +import org.springframework.web.bind.annotation.RestController; | ||
10 | +import org.thingsboard.server.dao.yunteng.entities.SysTown; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.SysTownService; | ||
12 | + | ||
13 | +import java.util.List; | ||
14 | + | ||
15 | +/** | ||
16 | + * @author: 徐浩然 | ||
17 | + * @desc: 中国城镇区街 | ||
18 | + * @date: 2021/12/3-15:56 | ||
19 | + */ | ||
20 | +@Api(tags = "中国城镇区街") | ||
21 | +@RestController | ||
22 | +@RequestMapping("api/v1/town") | ||
23 | +@RequiredArgsConstructor | ||
24 | +public class YtTownController { | ||
25 | + private final SysTownService sysTownService; | ||
26 | + | ||
27 | + @GetMapping("list") | ||
28 | + @ApiOperation("查询所有省份") | ||
29 | + public ResponseEntity<List<SysTown>> getCityList() { | ||
30 | + return ResponseEntity.ok(sysTownService.getCityList()); | ||
31 | + } | ||
32 | + | ||
33 | + @GetMapping("childs/{variable}/{value}") | ||
34 | + @ApiOperation("查询子集") | ||
35 | + public ResponseEntity<List<SysTown>> childs( | ||
36 | + @PathVariable("variable") String variable, @PathVariable("value") String value) { | ||
37 | + return ResponseEntity.ok(sysTownService.findChilds(variable, value)); | ||
38 | + } | ||
39 | +} |
@@ -60,4 +60,20 @@ public interface FastIotConstants { | @@ -60,4 +60,20 @@ public interface FastIotConstants { | ||
60 | String TB_CACHE_CONFIG_KEY = "TB_CONNECT_CACHE"; | 60 | String TB_CACHE_CONFIG_KEY = "TB_CONNECT_CACHE"; |
61 | String EXISTING_TENANT = "EXISTING_TENANT"; | 61 | String EXISTING_TENANT = "EXISTING_TENANT"; |
62 | } | 62 | } |
63 | + interface ReadState { | ||
64 | + String UNREAD = "0"; | ||
65 | + String READ = "1"; | ||
66 | + } | ||
67 | + | ||
68 | + interface ReceiverType { | ||
69 | + String PERSONAL = "3"; | ||
70 | + String DEPARTMENT = "2"; | ||
71 | + String ORGANIZATION = "1"; | ||
72 | + String ALL = "0"; | ||
73 | + } | ||
74 | + | ||
75 | + interface DraftStatus { | ||
76 | + String PUBLISHED = "1"; | ||
77 | + String DRAFT = "0"; | ||
78 | + } | ||
63 | } | 79 | } |
@@ -12,6 +12,10 @@ public final class ModelConstants { | @@ -12,6 +12,10 @@ public final class ModelConstants { | ||
12 | public static final String TENANT_ROLE_TABLE_NAME = "sys_tenant_role"; | 12 | public static final String TENANT_ROLE_TABLE_NAME = "sys_tenant_role"; |
13 | /** 菜单表 */ | 13 | /** 菜单表 */ |
14 | public static final String MENU_TABLE_NAME = "sys_menu"; | 14 | public static final String MENU_TABLE_NAME = "sys_menu"; |
15 | + /** 通知管理 */ | ||
16 | + public static final String SYS_NOTICE_TABLE_NAME = "sys_notice"; | ||
17 | + /** 我的通知 */ | ||
18 | + public static final String SYS_NOTICE_USER_TABLE_NAME = "sys_notice_user"; | ||
15 | /** 角色表 */ | 19 | /** 角色表 */ |
16 | public static final String ROLE_TABLE_NAME = "sys_role"; | 20 | public static final String ROLE_TABLE_NAME = "sys_role"; |
17 | /** 用户角色关系表 */ | 21 | /** 用户角色关系表 */ |
@@ -48,6 +52,14 @@ public final class ModelConstants { | @@ -48,6 +52,14 @@ public final class ModelConstants { | ||
48 | public static final String IOTFS_ALARM_PROFILE_TABLE_NAME = "iotfs_alarm_profile"; | 52 | public static final String IOTFS_ALARM_PROFILE_TABLE_NAME = "iotfs_alarm_profile"; |
49 | /** 告警联系人 */ | 53 | /** 告警联系人 */ |
50 | public static final String IOTFS_ALARM_CONTACT_TABLE_NAME = "iotfs_alarm_contact"; | 54 | public static final String IOTFS_ALARM_CONTACT_TABLE_NAME = "iotfs_alarm_contact"; |
55 | + /** 企业信息 */ | ||
56 | + public static final String SYS_ENTERPRISE_TABLE_NAME = "sys_enterprise"; | ||
57 | + /** 平台定制 */ | ||
58 | + public static final String SYS_PLATFORM_DESIGN_TABLE_NAME = "sys_platform_design"; | ||
59 | + /** APP定制 */ | ||
60 | + public static final String SYS_APP_DESIGN_TABLE_NAME = "sys_app_design"; | ||
61 | + /** 中国城镇区街 */ | ||
62 | + public static final String SYS_TOWN_TABLE_NAME = "sys_town"; | ||
51 | } | 63 | } |
52 | 64 | ||
53 | public static class TableFields { | 65 | public static class TableFields { |
@@ -28,6 +28,7 @@ public enum ErrorMessage { | @@ -28,6 +28,7 @@ public enum ErrorMessage { | ||
28 | NONE_DEFAULT_RULE_CHAIN(400009,"该租户不存在默认的规则链"), | 28 | NONE_DEFAULT_RULE_CHAIN(400009,"该租户不存在默认的规则链"), |
29 | TENANT_MISMATCHING(400010,"租户不匹配"), | 29 | TENANT_MISMATCHING(400010,"租户不匹配"), |
30 | GET_CURRENT_USER_EXCEPTION(400011,"获取当前用户信息异常"), | 30 | GET_CURRENT_USER_EXCEPTION(400011,"获取当前用户信息异常"), |
31 | + SEND_DESTINATION_NOT_FOUND(400012,"通知失败!找不到发送目标"), | ||
31 | CONNECT_TO_TB_ERROR(500001,"与TB联系错误"), | 32 | CONNECT_TO_TB_ERROR(500001,"与TB联系错误"), |
32 | HAVE_NO_PERMISSION(500002,"没有修改权限"); | 33 | HAVE_NO_PERMISSION(500002,"没有修改权限"); |
33 | private final int code; | 34 | private final int code; |
1 | +package org.thingsboard.server.common.data.yunteng.dto; | ||
2 | +import com.fasterxml.jackson.annotation.JsonFormat; | ||
3 | +import com.fasterxml.jackson.databind.JsonNode; | ||
4 | +import lombok.Data; | ||
5 | +import org.thingsboard.server.common.data.yunteng.common.aspect.annotation.AutoDict; | ||
6 | + | ||
7 | +import java.time.LocalDateTime; | ||
8 | + | ||
9 | +@Data | ||
10 | +public class SmsLogDTO extends BaseDTO { | ||
11 | + | ||
12 | + /** 短信平台类型 */ | ||
13 | + @AutoDict(dictCode = "platform_type") | ||
14 | + private String type; | ||
15 | + | ||
16 | + /** 发送状态:ResponseCodeEnum枚举值 */ | ||
17 | + private String status; | ||
18 | + | ||
19 | + /** 发送时间 */ | ||
20 | + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||
21 | + private LocalDateTime sendTime; | ||
22 | + | ||
23 | + /** 发送手机号 */ | ||
24 | + private String toPhone; | ||
25 | + | ||
26 | + /** 发送模板参数 */ | ||
27 | + private JsonNode templateParam; | ||
28 | + | ||
29 | + /** 租户Code */ | ||
30 | + private String tenantCode; | ||
31 | + | ||
32 | + /**用途*/ | ||
33 | + @AutoDict(dictCode = "template_purpose") | ||
34 | + private String templatePurpose; | ||
35 | + | ||
36 | + /**备注*/ | ||
37 | + private String remark; | ||
38 | +} |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/SysAppDesignDTO.java
0 → 100644
1 | +package org.thingsboard.server.common.data.yunteng.dto; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModel; | ||
4 | +import io.swagger.annotations.ApiModelProperty; | ||
5 | +import lombok.Data; | ||
6 | +import lombok.RequiredArgsConstructor; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author: 徐浩然 | ||
10 | + * @desc: APP定制 | ||
11 | + * @date: 2021/12/3-18:23 | ||
12 | + */ | ||
13 | +@Data | ||
14 | +@ApiModel(value = "APP定制") | ||
15 | +@RequiredArgsConstructor | ||
16 | +public class SysAppDesignDTO extends BaseDTO { | ||
17 | + @ApiModelProperty(value = "平台名称") | ||
18 | + private String name; | ||
19 | + @ApiModelProperty(value = "logo地址") | ||
20 | + private String logo; | ||
21 | + @ApiModelProperty(value = "背景图片地址") | ||
22 | + private String background; | ||
23 | + @ApiModelProperty(value = "背景颜色") | ||
24 | + private String backgroundColor; | ||
25 | + @ApiModelProperty(value = "轮播图,地址\",\"分割") | ||
26 | + private String rotation; | ||
27 | +} |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/SysEnterpriseDTO.java
0 → 100644
1 | +package org.thingsboard.server.common.data.yunteng.dto; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModel; | ||
4 | +import io.swagger.annotations.ApiModelProperty; | ||
5 | +import lombok.Data; | ||
6 | +import lombok.RequiredArgsConstructor; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author: 徐浩然 | ||
10 | + * @desc: 企业信息 | ||
11 | + * @date: 2021/12/3-18:11 | ||
12 | + */ | ||
13 | +@Data | ||
14 | +@ApiModel(value = "企业信息") | ||
15 | +@RequiredArgsConstructor | ||
16 | +public class SysEnterpriseDTO extends BaseDTO { | ||
17 | + @ApiModelProperty(value = "公司名称") | ||
18 | + private String name; | ||
19 | + @ApiModelProperty(value = "公司简称") | ||
20 | + private String abbreviation; | ||
21 | + @ApiModelProperty(value = "公司官网") | ||
22 | + private String officialWebsite; | ||
23 | + @ApiModelProperty(value = "公司邮箱") | ||
24 | + private String email; | ||
25 | + @ApiModelProperty(value = "公司简介") | ||
26 | + private String synopsis; | ||
27 | + @ApiModelProperty(value = "详细地址") | ||
28 | + private String address; | ||
29 | + @ApiModelProperty(value = "联系人") | ||
30 | + private String contacts; | ||
31 | + @ApiModelProperty(value = "区号") | ||
32 | + private String area; | ||
33 | + @ApiModelProperty(value = "联系电话") | ||
34 | + private String tel; | ||
35 | + @ApiModelProperty(value = "省") | ||
36 | + private String nameProv; | ||
37 | + @ApiModelProperty(value = "省code") | ||
38 | + private String codeProv; | ||
39 | + @ApiModelProperty(value = "市") | ||
40 | + private String nameCity; | ||
41 | + @ApiModelProperty(value = "市code") | ||
42 | + private String codeCity; | ||
43 | + @ApiModelProperty(value = "区") | ||
44 | + private String nameCoun; | ||
45 | + @ApiModelProperty(value = "区code") | ||
46 | + private String codeCoun; | ||
47 | + @ApiModelProperty(value = "县") | ||
48 | + private String nameTown; | ||
49 | + @ApiModelProperty(value = "县code") | ||
50 | + private String codeTown; | ||
51 | +} |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/SysNoticeDTO.java
0 → 100644
1 | +package org.thingsboard.server.common.data.yunteng.dto; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModel; | ||
4 | +import io.swagger.annotations.ApiModelProperty; | ||
5 | +import lombok.Data; | ||
6 | +import lombok.EqualsAndHashCode; | ||
7 | +import org.thingsboard.server.common.data.yunteng.enums.SysNoticeTypeEnum; | ||
8 | + | ||
9 | +import java.time.LocalDateTime; | ||
10 | +import java.util.List; | ||
11 | + | ||
12 | +/** | ||
13 | + * @author: 徐浩然 | ||
14 | + * @desc: 通知管理 | ||
15 | + * @date: 2021/12/2-10:32 | ||
16 | + */ | ||
17 | +@Data | ||
18 | +@ApiModel(value = "通知管理") | ||
19 | +@EqualsAndHashCode(callSuper = false) | ||
20 | +public class SysNoticeDTO extends TenantDTO { | ||
21 | + | ||
22 | + private static final long serialVersionUID = 3466370312762440488L; | ||
23 | + @ApiModelProperty(value = "通知类型",required = true) | ||
24 | + private SysNoticeTypeEnum type; | ||
25 | + @ApiModelProperty(value = "标题",required = true) | ||
26 | + private String title; | ||
27 | + @ApiModelProperty(value = "内容",required = true) | ||
28 | + private String content; | ||
29 | + @ApiModelProperty(value = "接收者(字典值receiver_type) 0:全部 1:组织 2:部门 3:个人",required = true) | ||
30 | + private String receiverType; | ||
31 | + @ApiModelProperty(value = "根据receiverType不同变化,,0:传空,1:组织id,2:部门id,3:用户id",required = true) | ||
32 | + private List<String> pointId; | ||
33 | + @ApiModelProperty(value = "接收者ID,用逗号分开") | ||
34 | + private String receiverTypeIds; | ||
35 | + @ApiModelProperty(value = "发送状态(字典值draft_status) 0:草稿 1:已发布") | ||
36 | + private String status; | ||
37 | + @ApiModelProperty(value = "发送者") | ||
38 | + private String senderName; | ||
39 | + @ApiModelProperty(value = "发送时间") | ||
40 | + private LocalDateTime senderDate; | ||
41 | +} |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/SysNoticeUserDTO.java
0 → 100644
1 | +package org.thingsboard.server.common.data.yunteng.dto; | ||
2 | +import io.swagger.annotations.ApiModelProperty; | ||
3 | +import lombok.Data; | ||
4 | +import lombok.EqualsAndHashCode; | ||
5 | +import org.thingsboard.server.common.data.yunteng.enums.SysNoticeTypeEnum; | ||
6 | + | ||
7 | +import java.time.LocalDateTime; | ||
8 | + | ||
9 | +/** | ||
10 | + * @author: 徐浩然 | ||
11 | + * @desc: 我的通知 | ||
12 | + * @date: 2021/12/2-10:56 | ||
13 | + */ | ||
14 | +@Data | ||
15 | +@EqualsAndHashCode(callSuper = false) | ||
16 | +public class SysNoticeUserDTO extends TenantDTO { | ||
17 | + | ||
18 | + private static final long serialVersionUID = -5421685500963791707L; | ||
19 | + @ApiModelProperty(value = "接收者ID") | ||
20 | + private String receiverId; | ||
21 | + @ApiModelProperty(value = "通知ID") | ||
22 | + private String NoticeId; | ||
23 | + @ApiModelProperty(value = "阅读状态 0:未读 1:已读") | ||
24 | + private String ReadStatus; | ||
25 | + @ApiModelProperty(value = "阅读时间") | ||
26 | + private LocalDateTime ReadDate; | ||
27 | + @ApiModelProperty(value = "通知类型") | ||
28 | + private SysNoticeTypeEnum type; | ||
29 | + @ApiModelProperty(value = "发送者") | ||
30 | + private String senderName; | ||
31 | + @ApiModelProperty(value = "通知管理") | ||
32 | + private SysNoticeDTO sysNotice; | ||
33 | +} |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/SysPlatformDesignDTO.java
0 → 100644
1 | +package org.thingsboard.server.common.data.yunteng.dto; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModel; | ||
4 | +import io.swagger.annotations.ApiModelProperty; | ||
5 | +import lombok.Data; | ||
6 | +import lombok.RequiredArgsConstructor; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author: 徐浩然 | ||
10 | + * @desc: 平台定制 | ||
11 | + * @date: 2021/12/3-18:20 | ||
12 | + */ | ||
13 | +@Data | ||
14 | +@ApiModel(value = "平台定制") | ||
15 | +@RequiredArgsConstructor | ||
16 | +public class SysPlatformDesignDTO extends BaseDTO { | ||
17 | + @ApiModelProperty(value = "平台名称") | ||
18 | + private String name; | ||
19 | + @ApiModelProperty(value = "logo地址") | ||
20 | + private String logo; | ||
21 | + @ApiModelProperty(value = "icon图标地址") | ||
22 | + private String icon; | ||
23 | + @ApiModelProperty(value = "背景图片地址") | ||
24 | + private String background; | ||
25 | + @ApiModelProperty(value = "背景颜色") | ||
26 | + private String backgroundColor; | ||
27 | + @ApiModelProperty(value = "版权信息") | ||
28 | + private String copyright; | ||
29 | + @ApiModelProperty(value = "备案信息") | ||
30 | + private String presentedOurselves; | ||
31 | + @ApiModelProperty(value = "域名") | ||
32 | + private String domain; | ||
33 | +} |
1 | +package org.thingsboard.server.dao.yunteng.entities; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import lombok.Data; | ||
5 | +import lombok.RequiredArgsConstructor; | ||
6 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author: 徐浩然 | ||
10 | + * @desc: APP定制 | ||
11 | + * @date: 2021/12/3-18:23 | ||
12 | + */ | ||
13 | +@Data | ||
14 | +@RequiredArgsConstructor | ||
15 | +@TableName(ModelConstants.Table.SYS_APP_DESIGN_TABLE_NAME) | ||
16 | +public class SysAppDesign extends TenantBaseEntity { | ||
17 | + private static final long serialVersionUID = -3412813210017919075L; | ||
18 | + /** 平台名称 */ | ||
19 | + private String name; | ||
20 | + /** logo地址 */ | ||
21 | + private String logo; | ||
22 | + /** 背景图片地址 */ | ||
23 | + private String background; | ||
24 | + /** 背景颜色 */ | ||
25 | + private String backgroundColor; | ||
26 | + /** 轮播图,地址","分割 */ | ||
27 | + private String rotation; | ||
28 | +} |
1 | +package org.thingsboard.server.dao.yunteng.entities; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableField; | ||
4 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
5 | +import lombok.Data; | ||
6 | +import lombok.RequiredArgsConstructor; | ||
7 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | ||
8 | + | ||
9 | +/** | ||
10 | + * @author: 徐浩然 | ||
11 | + * @desc: 企业信息 | ||
12 | + * @date: 2021/12/3-18:11 | ||
13 | + */ | ||
14 | +@Data | ||
15 | +@RequiredArgsConstructor | ||
16 | +@TableName(ModelConstants.Table.SYS_ENTERPRISE_TABLE_NAME) | ||
17 | +public class SysEnterprise extends TenantBaseEntity { | ||
18 | + private static final long serialVersionUID = -804373668052255756L; | ||
19 | + /** 公司名称 */ | ||
20 | + private String name; | ||
21 | + /** 公司简称 */ | ||
22 | + private String abbreviation; | ||
23 | + /** 公司官网 */ | ||
24 | + private String officialWebsite; | ||
25 | + /** 公司邮箱 */ | ||
26 | + private String email; | ||
27 | + /** 公司简介 */ | ||
28 | + private String synopsis; | ||
29 | + /** 详细地址 */ | ||
30 | + private String address; | ||
31 | + /** 联系人 */ | ||
32 | + private String contacts; | ||
33 | + /** 区号 */ | ||
34 | + private String area; | ||
35 | + /** 联系电话 */ | ||
36 | + private String tel; | ||
37 | + /** 县code */ | ||
38 | + private String codeTown; | ||
39 | + /** 省 */ | ||
40 | + @TableField(exist = false) | ||
41 | + private String nameProv; | ||
42 | + /** 省code */ | ||
43 | + @TableField(exist = false) | ||
44 | + private String codeProv; | ||
45 | + /** 市 */ | ||
46 | + @TableField(exist = false) | ||
47 | + private String nameCity; | ||
48 | + /** 市code */ | ||
49 | + @TableField(exist = false) | ||
50 | + private String codeCity; | ||
51 | + /** 区 */ | ||
52 | + @TableField(exist = false) | ||
53 | + private String nameCoun; | ||
54 | + /** 区code */ | ||
55 | + @TableField(exist = false) | ||
56 | + private String codeCoun; | ||
57 | + /** 县 */ | ||
58 | + @TableField(exist = false) | ||
59 | + private String nameTown; | ||
60 | +} |
1 | +package org.thingsboard.server.dao.yunteng.entities; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import lombok.Data; | ||
5 | +import lombok.EqualsAndHashCode; | ||
6 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | ||
7 | +import org.thingsboard.server.common.data.yunteng.enums.SysNoticeTypeEnum; | ||
8 | + | ||
9 | +import java.time.LocalDateTime; | ||
10 | + | ||
11 | +/** | ||
12 | + * @author: 徐浩然 | ||
13 | + * @desc: 通知管理 | ||
14 | + * @date: 2021/12/2-10:32 | ||
15 | + */ | ||
16 | +@Data | ||
17 | +@EqualsAndHashCode(callSuper = false) | ||
18 | +@TableName(ModelConstants.Table.SYS_NOTICE_TABLE_NAME) | ||
19 | +public class SysNotice extends TenantBaseEntity { | ||
20 | + | ||
21 | + private static final long serialVersionUID = 3466370312762440488L; | ||
22 | + /** 通知类型 */ | ||
23 | + private SysNoticeTypeEnum type; | ||
24 | + /** 标题 */ | ||
25 | + private String title; | ||
26 | + /** 内容 */ | ||
27 | + private String content; | ||
28 | + /** 接收者(字典值receiver_type) 0:全部 1:组织 2:部门 3:个人 */ | ||
29 | + private String receiverType; | ||
30 | + /** 接收者ID,用逗号分开 */ | ||
31 | + private String receiverTypeIds; | ||
32 | + /** 发送状态(字典值draft_status) 0:草稿 1:已发布 */ | ||
33 | + private String status; | ||
34 | + /** 发送者 */ | ||
35 | + private String senderName; | ||
36 | + /** 发送时间 */ | ||
37 | + private LocalDateTime senderDate; | ||
38 | +} |
1 | +package org.thingsboard.server.dao.yunteng.entities; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableField; | ||
4 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
5 | +import lombok.Data; | ||
6 | +import lombok.EqualsAndHashCode; | ||
7 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | ||
8 | +import org.thingsboard.server.common.data.yunteng.enums.SysNoticeTypeEnum; | ||
9 | + | ||
10 | +import java.time.LocalDateTime; | ||
11 | + | ||
12 | +/** | ||
13 | + * @author: 徐浩然 | ||
14 | + * @desc: 我的通知 | ||
15 | + * @date: 2021/12/2-10:56 | ||
16 | + */ | ||
17 | +@Data | ||
18 | +@EqualsAndHashCode(callSuper = false) | ||
19 | +@TableName(ModelConstants.Table.SYS_NOTICE_USER_TABLE_NAME) | ||
20 | +public class SysNoticeUser extends TenantBaseEntity { | ||
21 | + | ||
22 | + private static final long serialVersionUID = -5421685500963791707L; | ||
23 | + /** 接收者ID */ | ||
24 | + private String receiverId; | ||
25 | + /** 通知ID */ | ||
26 | + private String NoticeId; | ||
27 | + /** 阅读状态 0:未读 1:已读 */ | ||
28 | + private String ReadStatus; | ||
29 | + /** 阅读时间 */ | ||
30 | + private LocalDateTime ReadDate; | ||
31 | + /** 通知类型 */ | ||
32 | + @TableField(exist = false) | ||
33 | + private SysNoticeTypeEnum type; | ||
34 | + /** 发送者 */ | ||
35 | + @TableField(exist = false) | ||
36 | + private String senderName; | ||
37 | + /** 发送时间 */ | ||
38 | + @TableField(exist = false) | ||
39 | + private LocalDateTime senderDate; | ||
40 | +} |
1 | +package org.thingsboard.server.dao.yunteng.entities; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import lombok.Data; | ||
5 | +import lombok.RequiredArgsConstructor; | ||
6 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author: 徐浩然 | ||
10 | + * @desc: 平台定制 | ||
11 | + * @date: 2021/12/3-18:20 | ||
12 | + */ | ||
13 | +@Data | ||
14 | +@RequiredArgsConstructor | ||
15 | +@TableName(ModelConstants.Table.SYS_PLATFORM_DESIGN_TABLE_NAME) | ||
16 | +public class SysPlatformDesign extends TenantBaseEntity { | ||
17 | + private static final long serialVersionUID = 6761478750642927740L; | ||
18 | + /** 平台名称 */ | ||
19 | + private String name; | ||
20 | + /** logo地址 */ | ||
21 | + private String logo; | ||
22 | + /** icon图标地址 */ | ||
23 | + private String icon; | ||
24 | + /** 背景图片地址 */ | ||
25 | + private String background; | ||
26 | + /** 背景颜色 */ | ||
27 | + private String backgroundColor; | ||
28 | + /** 版权信息 */ | ||
29 | + private String copyright; | ||
30 | + /** 备案信息 */ | ||
31 | + private String presentedOurselves; | ||
32 | + /** 域名 */ | ||
33 | + private String domain; | ||
34 | +} |
1 | +package org.thingsboard.server.dao.yunteng.entities; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import io.swagger.annotations.ApiModel; | ||
5 | +import io.swagger.annotations.ApiModelProperty; | ||
6 | +import lombok.Data; | ||
7 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | ||
8 | + | ||
9 | +/** | ||
10 | + * @author: 徐浩然 | ||
11 | + * @desc: 中国城镇区街 | ||
12 | + * @date: 2021/12/3-15:31 | ||
13 | + */ | ||
14 | +@Data | ||
15 | +@ApiModel(value = "中国城镇区街") | ||
16 | +@TableName(ModelConstants.Table.SYS_TOWN_TABLE_NAME) | ||
17 | +public class SysTown { | ||
18 | + @ApiModelProperty(value = "省") | ||
19 | + private String nameProv; | ||
20 | + @ApiModelProperty(value = "省code") | ||
21 | + private String codeProv; | ||
22 | + @ApiModelProperty(value = "市") | ||
23 | + private String nameCity; | ||
24 | + @ApiModelProperty(value = "市code") | ||
25 | + private String codeCity; | ||
26 | + @ApiModelProperty(value = "区") | ||
27 | + private String nameCoun; | ||
28 | + @ApiModelProperty(value = "区code") | ||
29 | + private String codeCoun; | ||
30 | + @ApiModelProperty(value = "县") | ||
31 | + private String nameTown; | ||
32 | + @ApiModelProperty(value = "县code") | ||
33 | + private String codeTown; | ||
34 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
3 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.stereotype.Service; | ||
7 | +import org.springframework.transaction.annotation.Transactional; | ||
8 | +import org.thingsboard.server.common.data.yunteng.dto.SmsLogDTO; | ||
9 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
10 | +import org.thingsboard.server.dao.yunteng.entities.SmsLog; | ||
11 | +import org.thingsboard.server.dao.yunteng.mapper.SmsLogMapper; | ||
12 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
13 | +import org.thingsboard.server.dao.yunteng.service.SmsLogService; | ||
14 | + | ||
15 | +import java.util.Map; | ||
16 | +import java.util.Set; | ||
17 | + | ||
18 | +@Service | ||
19 | +@Slf4j | ||
20 | +@RequiredArgsConstructor | ||
21 | +public class SmsLogServiceImpl extends AbstractBaseService<SmsLogMapper, SmsLog> | ||
22 | + implements SmsLogService { | ||
23 | + | ||
24 | + @Override | ||
25 | + public PageData<SmsLogDTO> page(Map<String, Object> queryMap,String tenantId) { | ||
26 | + IPage<SmsLog> configIPage = | ||
27 | + baseMapper.selectPage( | ||
28 | + getPage(queryMap, "send_time", false), | ||
29 | + new QueryWrapper<SmsLog>() | ||
30 | + .lambda() | ||
31 | + .eq(SmsLog::getTenantCode,tenantId) | ||
32 | + .like( | ||
33 | + queryMap.get("toPhone") != null, | ||
34 | + SmsLog::getToPhone, | ||
35 | + String.valueOf(queryMap.get("toPhone"))) | ||
36 | + .between( | ||
37 | + queryMap.get("startTime") != null && queryMap.get("endTime") != null, | ||
38 | + SmsLog::getSendTime, | ||
39 | + queryMap.get("startTime"), | ||
40 | + queryMap.get("endTime"))); | ||
41 | + return getPageData(configIPage, SmsLogDTO.class); | ||
42 | + } | ||
43 | + | ||
44 | + @Override | ||
45 | + @Transactional | ||
46 | + public boolean deleteSmsLog(Set<String> ids) { | ||
47 | + return baseMapper.deleteBatchIds(ids) > 0; | ||
48 | + } | ||
49 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.stereotype.Service; | ||
7 | +import org.thingsboard.server.common.data.yunteng.dto.SysAppDesignDTO; | ||
8 | +import org.thingsboard.server.dao.yunteng.entities.SysAppDesign; | ||
9 | +import org.thingsboard.server.dao.yunteng.mapper.SysAppDesignMapper; | ||
10 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.SysAppDesignService; | ||
12 | + | ||
13 | +/** | ||
14 | + * @author: 徐浩然 | ||
15 | + * @desc: APP定制 | ||
16 | + * @date: 2021/12/3-18:40 | ||
17 | + */ | ||
18 | +@Slf4j | ||
19 | +@Service | ||
20 | +@RequiredArgsConstructor | ||
21 | +public class SysAppDesignServiceImpl extends AbstractBaseService<SysAppDesignMapper, SysAppDesign> | ||
22 | + implements SysAppDesignService { | ||
23 | + @Override | ||
24 | + public boolean save(SysAppDesignDTO sysAppDesignDTO,String tenantId) { | ||
25 | + if (get(tenantId) != null) { | ||
26 | + return false; | ||
27 | + } | ||
28 | + SysAppDesign entity = sysAppDesignDTO.getEntity(SysAppDesign.class); | ||
29 | + entity.setTenantCode(tenantId); | ||
30 | + return baseMapper.insert(entity) > 0; | ||
31 | + } | ||
32 | + | ||
33 | + @Override | ||
34 | + public SysAppDesignDTO get(String tenantId) { | ||
35 | + SysAppDesign sysAppDesign = baseMapper | ||
36 | + .selectOne( | ||
37 | + new LambdaQueryWrapper<SysAppDesign>() | ||
38 | + .eq(SysAppDesign::getTenantCode, tenantId)); | ||
39 | + return sysAppDesign == null ? null : sysAppDesign.getDTO(SysAppDesignDTO.class); | ||
40 | + } | ||
41 | + | ||
42 | + @Override | ||
43 | + public boolean update(SysAppDesignDTO sysAppDesignDTO,String tenantId) { | ||
44 | + if (get(tenantId) != null) { | ||
45 | + return baseMapper.update( | ||
46 | + sysAppDesignDTO.getEntity(SysAppDesign.class), | ||
47 | + new LambdaQueryWrapper<SysAppDesign>() | ||
48 | + .eq(SysAppDesign::getTenantCode, tenantId)) | ||
49 | + > 0; | ||
50 | + }else { | ||
51 | + return save(sysAppDesignDTO,tenantId); | ||
52 | + } | ||
53 | + } | ||
54 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
3 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.apache.commons.lang3.StringUtils; | ||
7 | +import org.springframework.stereotype.Service; | ||
8 | +import org.springframework.transaction.annotation.Transactional; | ||
9 | +import org.thingsboard.server.common.data.yunteng.core.exception.DataValidationException; | ||
10 | +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | ||
11 | +import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO; | ||
12 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
13 | +import org.thingsboard.server.dao.yunteng.entities.SysDictItem; | ||
14 | +import org.thingsboard.server.dao.yunteng.mapper.SysDictItemMapper; | ||
15 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
16 | +import org.thingsboard.server.dao.yunteng.service.SysDictItemService; | ||
17 | + | ||
18 | +import java.util.List; | ||
19 | +import java.util.Map; | ||
20 | +import java.util.Set; | ||
21 | + | ||
22 | +@Slf4j | ||
23 | +@Service | ||
24 | +@RequiredArgsConstructor | ||
25 | +public class SysDictItemServiceImpl extends AbstractBaseService<SysDictItemMapper, SysDictItem> | ||
26 | + implements SysDictItemService { | ||
27 | + | ||
28 | + @Override | ||
29 | + public PageData<SysDictItemDTO> page(Map<String, Object> queryMap) { | ||
30 | + if (StringUtils.isEmpty((CharSequence) queryMap.get("dictId"))) { | ||
31 | + throw new DataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | ||
32 | + } | ||
33 | + IPage<SysDictItem> iPage = | ||
34 | + baseMapper.selectPage( | ||
35 | + getPage(queryMap, "create_time", false), | ||
36 | + new QueryWrapper<SysDictItem>() | ||
37 | + .lambda() | ||
38 | + .like( | ||
39 | + queryMap.get("itemText") != null, | ||
40 | + SysDictItem::getItemText, | ||
41 | + String.valueOf(queryMap.get("itemText"))) | ||
42 | + .eq( | ||
43 | + queryMap.get("dictId") != null, | ||
44 | + SysDictItem::getDictId, | ||
45 | + String.valueOf(queryMap.get("dictId")))); | ||
46 | + return getPageData(iPage, SysDictItemDTO.class); | ||
47 | + } | ||
48 | + | ||
49 | + @Override | ||
50 | + @Transactional | ||
51 | + public SysDictItemDTO saveSysDictItem(SysDictItemDTO sysDictItemDTO,String tenantId) { | ||
52 | + SysDictItem sysDictItem = new SysDictItem(); | ||
53 | + sysDictItemDTO.copyToEntity(sysDictItem); | ||
54 | + sysDictItem.setTenantCode(tenantId); | ||
55 | + baseMapper.insert(sysDictItem); | ||
56 | + sysDictItem.copyToDTO(sysDictItemDTO); | ||
57 | + return sysDictItemDTO; | ||
58 | + } | ||
59 | + | ||
60 | + @Override | ||
61 | + @Transactional | ||
62 | + public boolean deleteSysDictItem(Set<String> sysDictItemIds) { | ||
63 | + return baseMapper.deleteBatchIds(sysDictItemIds) > 0; | ||
64 | + } | ||
65 | + | ||
66 | + @Override | ||
67 | + @Transactional | ||
68 | + public SysDictItemDTO updateSysDictItem(SysDictItemDTO sysDictItemDTO,String tenantId) { | ||
69 | + SysDictItem sysDictItem = baseMapper.selectById(sysDictItemDTO.getId()); | ||
70 | + sysDictItemDTO.copyToEntity(sysDictItem); | ||
71 | + sysDictItem.setTenantCode(tenantId); | ||
72 | + baseMapper.updateById(sysDictItem); | ||
73 | + sysDictItem.copyToDTO(sysDictItemDTO); | ||
74 | + return sysDictItemDTO; | ||
75 | + } | ||
76 | + | ||
77 | + @Override | ||
78 | + public List<SysDictItemDTO> findDictItemByDictCode(String dictCode) { | ||
79 | + if (StringUtils.isEmpty(dictCode)) { | ||
80 | + throw new DataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | ||
81 | + } | ||
82 | + return baseMapper.getDictItemInfo(null, dictCode); | ||
83 | + } | ||
84 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
3 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.stereotype.Service; | ||
7 | +import org.springframework.transaction.annotation.Transactional; | ||
8 | +import org.thingsboard.server.common.data.yunteng.core.exception.DataValidationException; | ||
9 | +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | ||
10 | +import org.thingsboard.server.common.data.yunteng.dto.SysDictDTO; | ||
11 | +import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO; | ||
12 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
13 | +import org.thingsboard.server.dao.yunteng.entities.SysDict; | ||
14 | +import org.thingsboard.server.dao.yunteng.mapper.SysDictItemMapper; | ||
15 | +import org.thingsboard.server.dao.yunteng.mapper.SysDictMapper; | ||
16 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
17 | +import org.thingsboard.server.dao.yunteng.service.SysDictService; | ||
18 | + | ||
19 | +import java.util.List; | ||
20 | +import java.util.Map; | ||
21 | +import java.util.Set; | ||
22 | + | ||
23 | +@Slf4j | ||
24 | +@Service | ||
25 | +@RequiredArgsConstructor | ||
26 | +public class SysDictServiceImpl extends AbstractBaseService<SysDictMapper, SysDict> | ||
27 | + implements SysDictService { | ||
28 | + | ||
29 | + private final SysDictItemMapper sysDictItemMapper; | ||
30 | + | ||
31 | + @Override | ||
32 | + public PageData<SysDictDTO> page(Map<String, Object> queryMap) { | ||
33 | + IPage<SysDict> iPage = | ||
34 | + baseMapper.selectPage( | ||
35 | + getPage(queryMap, "create_time", false), | ||
36 | + new QueryWrapper<SysDict>() | ||
37 | + .lambda() | ||
38 | + .like( | ||
39 | + queryMap.get("dictName") != null, | ||
40 | + SysDict::getDictName, | ||
41 | + String.valueOf(queryMap.get("dictName"))) | ||
42 | + .like( | ||
43 | + queryMap.get("dictCode") != null, | ||
44 | + SysDict::getDictCode, | ||
45 | + String.valueOf(queryMap.get("dictCode")))); | ||
46 | + return getPageData(iPage, SysDictDTO.class); | ||
47 | + } | ||
48 | + | ||
49 | + @Override | ||
50 | + @Transactional | ||
51 | + public SysDictDTO saveSysDict(SysDictDTO sysDictDTO,String tenantId) { | ||
52 | + // 新增之前先判断该租户是否已添加 | ||
53 | + SysDictDTO querySysDict = baseMapper.getDictInfoByCode(tenantId, sysDictDTO.getDictCode()); | ||
54 | + if (querySysDict != null) { | ||
55 | + throw new DataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | ||
56 | + } | ||
57 | + SysDict sysDict = new SysDict(); | ||
58 | + sysDictDTO.copyToEntity(sysDict); | ||
59 | + sysDict.setTenantCode(tenantId); | ||
60 | + baseMapper.insert(sysDict); | ||
61 | + sysDict.copyToDTO(sysDictDTO); | ||
62 | + return sysDictDTO; | ||
63 | + } | ||
64 | + | ||
65 | + @Override | ||
66 | + @Transactional | ||
67 | + public boolean deleteSysDict(Set<String> sysDictIds) { | ||
68 | + for (String id : sysDictIds) { | ||
69 | + List<SysDictItemDTO> sysDictItemDTO = | ||
70 | + sysDictItemMapper.getDictItemInfo(id,null); | ||
71 | + if (sysDictItemDTO != null) { | ||
72 | + throw new DataValidationException( | ||
73 | + "There is a relationship between superiors and subordinates"); | ||
74 | + } | ||
75 | + } | ||
76 | + return baseMapper.deleteBatchIds(sysDictIds) > 0; | ||
77 | + } | ||
78 | + | ||
79 | + @Override | ||
80 | + @Transactional | ||
81 | + public SysDictDTO updateSysDict(SysDictDTO sysDictDTO,String tenantId) { | ||
82 | + SysDict sysDict = baseMapper.selectById(sysDictDTO.getId()); | ||
83 | + sysDictDTO.copyToEntity(sysDict); | ||
84 | + sysDict.setTenantCode(tenantId); | ||
85 | + baseMapper.updateById(sysDict); | ||
86 | + sysDict.copyToDTO(sysDictDTO); | ||
87 | + return sysDictDTO; | ||
88 | + } | ||
89 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.stereotype.Service; | ||
7 | +import org.thingsboard.server.common.data.yunteng.dto.SysEnterpriseDTO; | ||
8 | +import org.thingsboard.server.dao.yunteng.entities.SysEnterprise; | ||
9 | +import org.thingsboard.server.dao.yunteng.mapper.SysEnterpriseMapper; | ||
10 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.SysEnterpriseService; | ||
12 | + | ||
13 | +/** | ||
14 | + * @author: 徐浩然 | ||
15 | + * @desc: 企业信息 | ||
16 | + * @date: 2021/12/3-18:40 | ||
17 | + */ | ||
18 | +@Slf4j | ||
19 | +@Service | ||
20 | +@RequiredArgsConstructor | ||
21 | +public class SysEnterpriseServiceImpl | ||
22 | + extends AbstractBaseService<SysEnterpriseMapper, SysEnterprise> | ||
23 | + implements SysEnterpriseService { | ||
24 | + @Override | ||
25 | + public boolean save(SysEnterpriseDTO sysAppDesignDTO,String tenantId) { | ||
26 | + SysEnterprise entity = sysAppDesignDTO.getEntity(SysEnterprise.class); | ||
27 | + entity.setTenantCode(tenantId); | ||
28 | + return baseMapper.insert(entity) > 0; | ||
29 | + } | ||
30 | + | ||
31 | + @Override | ||
32 | + public SysEnterpriseDTO get(String tenantId) { | ||
33 | + SysEnterprise sysEnterprise = baseMapper.get(tenantId).getEntity(SysEnterprise.class); | ||
34 | + return sysEnterprise == null ? null : sysEnterprise.getDTO(SysEnterpriseDTO.class); | ||
35 | + } | ||
36 | + | ||
37 | + @Override | ||
38 | + public boolean update(SysEnterpriseDTO sysAppDesignDTO,String tenantId) { | ||
39 | + if (get(tenantId) != null) { | ||
40 | + return baseMapper.update( | ||
41 | + sysAppDesignDTO.getEntity(SysEnterprise.class), | ||
42 | + new LambdaQueryWrapper<SysEnterprise>() | ||
43 | + .eq(SysEnterprise::getTenantCode,tenantId)) | ||
44 | + > 0; | ||
45 | + }else { | ||
46 | + return save(sysAppDesignDTO,tenantId); | ||
47 | + } | ||
48 | + } | ||
49 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
5 | +import lombok.RequiredArgsConstructor; | ||
6 | +import lombok.extern.slf4j.Slf4j; | ||
7 | +import org.apache.commons.lang3.ObjectUtils; | ||
8 | +import org.apache.commons.lang3.StringUtils; | ||
9 | +import org.springframework.stereotype.Service; | ||
10 | +import org.springframework.transaction.annotation.Transactional; | ||
11 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | ||
12 | +import org.thingsboard.server.common.data.yunteng.core.exception.EntityCreationException; | ||
13 | +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | ||
14 | +import org.thingsboard.server.common.data.yunteng.dto.SysNoticeDTO; | ||
15 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
16 | +import org.thingsboard.server.dao.yunteng.entities.SysNotice; | ||
17 | +import org.thingsboard.server.dao.yunteng.entities.SysNoticeUser; | ||
18 | +import org.thingsboard.server.dao.yunteng.entities.User; | ||
19 | +import org.thingsboard.server.dao.yunteng.mapper.SysNoticeMapper; | ||
20 | +import org.thingsboard.server.dao.yunteng.mapper.UserMapper; | ||
21 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
22 | +import org.thingsboard.server.dao.yunteng.service.SysNoticeService; | ||
23 | +import org.thingsboard.server.dao.yunteng.service.UserOrganizationMappingService; | ||
24 | + | ||
25 | +import java.time.LocalDateTime; | ||
26 | +import java.util.ArrayList; | ||
27 | +import java.util.List; | ||
28 | +import java.util.Map; | ||
29 | +import java.util.stream.Collectors; | ||
30 | + | ||
31 | +/** | ||
32 | + * @author: 徐浩然 | ||
33 | + * @desc: 通知管理 | ||
34 | + * @date: 2021/12/2-11:09 | ||
35 | + */ | ||
36 | +@Slf4j | ||
37 | +@Service | ||
38 | +@RequiredArgsConstructor | ||
39 | +public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, SysNotice> | ||
40 | + implements SysNoticeService { | ||
41 | + | ||
42 | + private final SysNoticeUserServiceImpl sysNoticeUserService; | ||
43 | + private final UserOrganizationMappingService userOrganizationMappingService; | ||
44 | + private final UserMapper userMapper; | ||
45 | + | ||
46 | + @Override | ||
47 | + public PageData<SysNoticeDTO> page(Map<String, Object> queryMap) { | ||
48 | + IPage<SysNotice> sysNoticeIPage = | ||
49 | + getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, true); | ||
50 | + sysNoticeIPage = baseMapper.page(sysNoticeIPage, queryMap); | ||
51 | + return getPageData(sysNoticeIPage, SysNoticeDTO.class); | ||
52 | + } | ||
53 | + | ||
54 | + @Override | ||
55 | + public SysNoticeDTO get(String id,String tenantId) { | ||
56 | + return baseMapper | ||
57 | + .get(id, tenantId) | ||
58 | + .getDTO(SysNoticeDTO.class); | ||
59 | + } | ||
60 | + | ||
61 | + @Override | ||
62 | + public boolean delete(List<String> ids,String tenantId) { | ||
63 | + return baseMapper.delete( | ||
64 | + new LambdaQueryWrapper<SysNotice>() | ||
65 | + .in(SysNotice::getId, ids) | ||
66 | + .eq(SysNotice::getTenantCode, tenantId)) | ||
67 | + > 0; | ||
68 | + } | ||
69 | + | ||
70 | + @Override | ||
71 | + public SysNotice save(SysNoticeDTO sysNoticeDTO,String tenantId) { | ||
72 | + SysNotice entity = sysNoticeDTO.getEntity(SysNotice.class); | ||
73 | + // 设置为草稿 | ||
74 | + entity.setStatus(FastIotConstants.DraftStatus.DRAFT); | ||
75 | + entity.setTenantCode(tenantId); | ||
76 | + // 拼接需要发送的名单 | ||
77 | + if (sysNoticeDTO.getReceiverType() == null || sysNoticeDTO.getPointId() == null) { | ||
78 | + throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name()); | ||
79 | + } | ||
80 | + LambdaQueryWrapper<User> wrapper = | ||
81 | + new LambdaQueryWrapper<User>().eq(User::getTenantCode, entity.getTenantCode()); | ||
82 | + switch (entity.getReceiverType()) { | ||
83 | + case FastIotConstants.ReceiverType.ALL: | ||
84 | + // 全部 | ||
85 | + entity.setReceiverTypeIds( | ||
86 | + userMapper.selectList(wrapper).stream() | ||
87 | + .map(User::getId) | ||
88 | + .collect(Collectors.joining(","))); | ||
89 | + break; | ||
90 | + case FastIotConstants.ReceiverType.ORGANIZATION: | ||
91 | + // 组织内 | ||
92 | + entity.setReceiverTypeIds( | ||
93 | + userOrganizationMappingService | ||
94 | + .getUserIdByOrganizationIds(tenantId,sysNoticeDTO.getPointId().toArray(String[]::new)) | ||
95 | + .stream() | ||
96 | + .collect(Collectors.joining(","))); | ||
97 | + break; | ||
98 | + // case FastIotConstants.ReceiverType.DEPARTMENT: | ||
99 | + // // 部门 | ||
100 | + // entity.setReceiverTypeIds( | ||
101 | + // userMapper.selectList(wrapper.in(User::getDeptId, | ||
102 | + // sysNoticeDTO.getPointId())).stream() | ||
103 | + // .map(User::getId) | ||
104 | + // .collect(Collectors.joining(","))); | ||
105 | + // break; | ||
106 | + case FastIotConstants.ReceiverType.PERSONAL: | ||
107 | + // 个人 | ||
108 | + entity.setReceiverTypeIds( | ||
109 | + sysNoticeDTO.getPointId().stream().collect(Collectors.joining(","))); | ||
110 | + break; | ||
111 | + default: | ||
112 | + throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name()); | ||
113 | + } | ||
114 | + if (StringUtils.isEmpty(entity.getReceiverTypeIds())) { | ||
115 | + throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name()); | ||
116 | + } | ||
117 | + | ||
118 | + if (entity.getId() == null) { | ||
119 | + return baseMapper.insert(entity) > 0 ? entity : null; | ||
120 | + } else { | ||
121 | + return baseMapper.updateById(entity) > 0 ? entity : null; | ||
122 | + } | ||
123 | + } | ||
124 | + | ||
125 | + @Override | ||
126 | + @Transactional | ||
127 | + public SysNotice send(SysNoticeDTO sysNoticeDTO,String tenantId,String currentUserId,String currentUserName) { | ||
128 | + SysNotice save = null; | ||
129 | + // 没有传id则证明不存在需要新增一下 | ||
130 | + if (StringUtils.isEmpty(sysNoticeDTO.getId())) { | ||
131 | + save = save(sysNoticeDTO,tenantId); | ||
132 | + if (save == null) { | ||
133 | + return null; | ||
134 | + } | ||
135 | + } | ||
136 | + save.setStatus(FastIotConstants.DraftStatus.PUBLISHED); | ||
137 | + save.setSenderName(currentUserName); | ||
138 | + save.setCreator(currentUserId); | ||
139 | + save.setSenderDate(LocalDateTime.now()); | ||
140 | + int update = | ||
141 | + baseMapper.update( | ||
142 | + save, | ||
143 | + new LambdaQueryWrapper<SysNotice>() | ||
144 | + .eq(SysNotice::getId, save.getId()) | ||
145 | + .eq(SysNotice::getTenantCode,tenantId)); | ||
146 | + if (update > 0) { | ||
147 | + // 发送消息 | ||
148 | + String[] split = save.getReceiverTypeIds().split(","); | ||
149 | + List<SysNoticeUser> list = new ArrayList<>(split.length); | ||
150 | + for (int i = 0; i < split.length; i++) { | ||
151 | + SysNoticeUser sysNoticeUser = new SysNoticeUser(); | ||
152 | + sysNoticeUser.setReceiverId(split[i]); | ||
153 | + sysNoticeUser.setNoticeId(save.getId()); | ||
154 | + sysNoticeUser.setTenantCode(save.getTenantCode()); | ||
155 | + sysNoticeUser.setReadStatus(FastIotConstants.ReadState.UNREAD); | ||
156 | + list.add(sysNoticeUser); | ||
157 | + } | ||
158 | + if (ObjectUtils.isEmpty(list) || !sysNoticeUserService.insertBatch(list, 100)) { | ||
159 | + // 通知失败 | ||
160 | + throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name()); | ||
161 | + } | ||
162 | + } | ||
163 | + return save; | ||
164 | + } | ||
165 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | ||
4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
5 | +import org.springframework.stereotype.Service; | ||
6 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | ||
7 | +import org.thingsboard.server.common.data.yunteng.dto.SysNoticeUserDTO; | ||
8 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
9 | +import org.thingsboard.server.dao.yunteng.entities.SysNoticeUser; | ||
10 | +import org.thingsboard.server.dao.yunteng.mapper.SysNoticeUserMapper; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
12 | +import org.thingsboard.server.dao.yunteng.service.SysNoticeUserService; | ||
13 | + | ||
14 | +import java.time.LocalDateTime; | ||
15 | +import java.util.Map; | ||
16 | + | ||
17 | +/** | ||
18 | + * @author: 徐浩然 | ||
19 | + * @desc: 我的通知 | ||
20 | + * @date: 2021/12/2-20:43 | ||
21 | + */ | ||
22 | +@Service | ||
23 | +public class SysNoticeUserServiceImpl | ||
24 | + extends AbstractBaseService<SysNoticeUserMapper, SysNoticeUser> | ||
25 | + implements SysNoticeUserService { | ||
26 | + | ||
27 | + @Override | ||
28 | + public PageData<SysNoticeUserDTO> page(Map<String, Object> queryMap) { | ||
29 | + return getPage(queryMap); | ||
30 | + } | ||
31 | + | ||
32 | + @Override | ||
33 | + public PageData<SysNoticeUserDTO> read(Map<String, Object> queryMap,String currentUserId) { | ||
34 | + queryMap.put("creator", currentUserId); | ||
35 | + return getPage(queryMap); | ||
36 | + } | ||
37 | + | ||
38 | + @Override | ||
39 | + public SysNoticeUserDTO get(String id,String tenantId) { | ||
40 | + SysNoticeUser sysNoticeUser = | ||
41 | + baseMapper.get(id, tenantId).getEntity(SysNoticeUser.class); | ||
42 | + if (!FastIotConstants.ReadState.READ.equals(sysNoticeUser.getReadStatus()) || sysNoticeUser.getReadDate() == null) { | ||
43 | + // 设置已读 | ||
44 | + sysNoticeUser.setReadStatus(FastIotConstants.ReadState.READ); | ||
45 | + sysNoticeUser.setReadDate(LocalDateTime.now()); | ||
46 | + baseMapper.update( | ||
47 | + null, | ||
48 | + new LambdaUpdateWrapper<SysNoticeUser>() | ||
49 | + .eq(SysNoticeUser::getId, sysNoticeUser.getId()) | ||
50 | + .set(SysNoticeUser::getReadStatus, sysNoticeUser.getReadStatus()) | ||
51 | + .set(SysNoticeUser::getReadDate, sysNoticeUser.getReadDate())); | ||
52 | + } | ||
53 | + return sysNoticeUser.getDTO(SysNoticeUserDTO.class); | ||
54 | + } | ||
55 | + | ||
56 | + private PageData<SysNoticeUserDTO> getPage(Map<String, Object> queryMap) { | ||
57 | + IPage<SysNoticeUser> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, true); | ||
58 | + IPage<SysNoticeUserDTO> sysNoticeUserPage = baseMapper.page(page, queryMap); | ||
59 | + return getPageData(sysNoticeUserPage, SysNoticeUserDTO.class); | ||
60 | + } | ||
61 | +} |
dao/src/main/java/org/thingsboard/server/dao/yunteng/impl/SysPlatformDesignServiceImpl.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.stereotype.Service; | ||
7 | +import org.thingsboard.server.common.data.yunteng.dto.SysPlatformDesignDTO; | ||
8 | +import org.thingsboard.server.dao.yunteng.entities.SysPlatformDesign; | ||
9 | +import org.thingsboard.server.dao.yunteng.mapper.SysPlatformDesignMapper; | ||
10 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.SysPlatformDesignService; | ||
12 | + | ||
13 | +/** | ||
14 | + * @author: 徐浩然 | ||
15 | + * @desc: 平台定制 | ||
16 | + * @date: 2021/12/3-18:41 | ||
17 | + */ | ||
18 | +@Slf4j | ||
19 | +@Service | ||
20 | +@RequiredArgsConstructor | ||
21 | +public class SysPlatformDesignServiceImpl | ||
22 | + extends AbstractBaseService<SysPlatformDesignMapper, SysPlatformDesign> | ||
23 | + implements SysPlatformDesignService { | ||
24 | + @Override | ||
25 | + public boolean save(SysPlatformDesignDTO sysAppDesignDTO,String tenantId) { | ||
26 | + SysPlatformDesign entity = sysAppDesignDTO.getEntity(SysPlatformDesign.class); | ||
27 | + entity.setTenantCode(tenantId); | ||
28 | + return baseMapper.insert(entity) > 0; | ||
29 | + } | ||
30 | + | ||
31 | + @Override | ||
32 | + public SysPlatformDesignDTO get(String tenantId) { | ||
33 | + SysPlatformDesign sysPlatformDesign = baseMapper | ||
34 | + .selectOne( | ||
35 | + new LambdaQueryWrapper<SysPlatformDesign>() | ||
36 | + .eq(SysPlatformDesign::getTenantCode, tenantId)); | ||
37 | + return sysPlatformDesign == null ? null : sysPlatformDesign.getDTO(SysPlatformDesignDTO.class); | ||
38 | + } | ||
39 | + | ||
40 | + @Override | ||
41 | + public boolean update(SysPlatformDesignDTO sysAppDesignDTO,String tenantId) { | ||
42 | + if (get(tenantId) != null) { | ||
43 | + return baseMapper.update( | ||
44 | + sysAppDesignDTO.getEntity(SysPlatformDesign.class), | ||
45 | + new LambdaQueryWrapper<SysPlatformDesign>() | ||
46 | + .eq(SysPlatformDesign::getTenantCode, tenantId)) | ||
47 | + > 0; | ||
48 | + }else { | ||
49 | + return save(sysAppDesignDTO,tenantId); | ||
50 | + } | ||
51 | + } | ||
52 | +} |
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
4 | +import lombok.RequiredArgsConstructor; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.stereotype.Service; | ||
7 | +import org.thingsboard.server.dao.yunteng.entities.SysTown; | ||
8 | +import org.thingsboard.server.dao.yunteng.mapper.SysTownMapper; | ||
9 | +import org.thingsboard.server.dao.yunteng.service.SysTownService; | ||
10 | + | ||
11 | +import java.lang.reflect.Field; | ||
12 | +import java.util.List; | ||
13 | +import java.util.Stack; | ||
14 | + | ||
15 | +/** | ||
16 | + * @author: 徐浩然 | ||
17 | + * @desc: 中国城镇区街 | ||
18 | + * @date: 2021/12/3-15:37 | ||
19 | + */ | ||
20 | +@Slf4j | ||
21 | +@Service | ||
22 | +@RequiredArgsConstructor | ||
23 | +public class SysTownServiceImpl implements SysTownService { | ||
24 | + | ||
25 | + private final SysTownMapper sysTownMapper; | ||
26 | + | ||
27 | + @Override | ||
28 | + public List<SysTown> findChilds(String variable, String value) { | ||
29 | + Field[] fields = SysTown.class.getDeclaredFields(); | ||
30 | + Stack<String> list = new Stack<>(); | ||
31 | + for (int i = 0; i < fields.length; i++) { | ||
32 | + // 查询variable是第几个变量,可以决定groupby什么 | ||
33 | + list.add(fields[i].getName()); | ||
34 | + if (fields[i].getName().equals(variable)) { | ||
35 | + if (i % 2 == 0) { | ||
36 | + list.add(fields[++i].getName()); | ||
37 | + } | ||
38 | + list.add(fields[++i].getName()); | ||
39 | + list.add(fields[++i].getName()); | ||
40 | + break; | ||
41 | + } | ||
42 | + } | ||
43 | + String[] groupBy = | ||
44 | + list.stream() | ||
45 | + // 驼峰转下划线 | ||
46 | + .map(this::to_) | ||
47 | + // 组成需要groupby的字段 | ||
48 | + .toArray(String[]::new); | ||
49 | + return sysTownMapper.selectList( | ||
50 | + new QueryWrapper<SysTown>() | ||
51 | + .select(groupBy) | ||
52 | + .eq(to_(variable), value) | ||
53 | + .groupBy(groupBy)); | ||
54 | + } | ||
55 | + | ||
56 | + private String to_(String s){ | ||
57 | + return s.replaceAll("[A-Z]", "_$0").toLowerCase(); | ||
58 | + } | ||
59 | + | ||
60 | + @Override | ||
61 | + public SysTown findParent(String variable, String value) { | ||
62 | + return sysTownMapper.selectList(new QueryWrapper<SysTown>().eq(variable, value)).stream() | ||
63 | + .findFirst() | ||
64 | + .orElse(null); | ||
65 | + } | ||
66 | + | ||
67 | + public List<SysTown> getCityList() { | ||
68 | + return sysTownMapper.getCityList(); | ||
69 | + } | ||
70 | +} |
dao/src/main/java/org/thingsboard/server/dao/yunteng/impl/UserOrganizationMappingServiceImpl.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
3 | +import lombok.RequiredArgsConstructor; | ||
4 | +import lombok.extern.slf4j.Slf4j; | ||
5 | +import org.apache.commons.lang3.ObjectUtils; | ||
6 | +import org.springframework.stereotype.Service; | ||
7 | +import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; | ||
8 | +import org.thingsboard.server.dao.yunteng.entities.UserOrganizationMapping; | ||
9 | +import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper; | ||
10 | +import org.thingsboard.server.dao.yunteng.mapper.UserOrganizationMappingMapper; | ||
11 | +import org.thingsboard.server.dao.yunteng.service.UserOrganizationMappingService; | ||
12 | + | ||
13 | +import java.util.ArrayList; | ||
14 | +import java.util.List; | ||
15 | +import java.util.stream.Collectors; | ||
16 | + | ||
17 | +/** | ||
18 | + * @author: 徐浩然 | ||
19 | + * @desc: 组织用户关联表 | ||
20 | + * @date: 2021/12/3-10:18 | ||
21 | + */ | ||
22 | +@Slf4j | ||
23 | +@Service | ||
24 | +@RequiredArgsConstructor | ||
25 | +public class UserOrganizationMappingServiceImpl implements UserOrganizationMappingService { | ||
26 | + | ||
27 | + private final UserOrganizationMappingMapper userOrganizationMappingMapper; | ||
28 | + private final OrganizationMapper organizationMapper; | ||
29 | + | ||
30 | + @Override | ||
31 | + public List<String> getUserIdByOrganizationIds(String tenantId,String... ids) { | ||
32 | + List<String> collect = | ||
33 | + organizationMapper | ||
34 | + .findOrganizationTreeList( | ||
35 | + tenantId, List.of(ids)) | ||
36 | + .stream() | ||
37 | + .map(OrganizationDTO::getId) | ||
38 | + .collect(Collectors.toList()); | ||
39 | + if (ObjectUtils.isEmpty(collect)) { | ||
40 | + return new ArrayList<>(); | ||
41 | + } else { | ||
42 | + return userOrganizationMappingMapper | ||
43 | + .selectList( | ||
44 | + new LambdaQueryWrapper<UserOrganizationMapping>() | ||
45 | + .in(UserOrganizationMapping::getOrganizationId, collect)) | ||
46 | + .stream() | ||
47 | + .map(UserOrganizationMapping::getUserId) | ||
48 | + .collect(Collectors.toList()); | ||
49 | + } | ||
50 | + } | ||
51 | +} |
@@ -36,7 +36,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -36,7 +36,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
36 | 36 | ||
37 | @Override | 37 | @Override |
38 | @Transactional | 38 | @Transactional |
39 | - public OrganizationDTO saveOrganization(OrganizationDTO organizationDTO) { | 39 | + public OrganizationDTO saveOrganization(OrganizationDTO organizationDTO,String tenantId) { |
40 | Assert.notNull(organizationDTO.getName(), "organization name cannot be null"); | 40 | Assert.notNull(organizationDTO.getName(), "organization name cannot be null"); |
41 | if (StringUtils.isNotBlank(organizationDTO.getParentId())) { | 41 | if (StringUtils.isNotBlank(organizationDTO.getParentId())) { |
42 | Organization organization = baseMapper.selectById(organizationDTO.getParentId()); | 42 | Organization organization = baseMapper.selectById(organizationDTO.getParentId()); |
@@ -51,7 +51,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -51,7 +51,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
51 | } | 51 | } |
52 | } | 52 | } |
53 | Organization organization = new Organization(); | 53 | Organization organization = new Organization(); |
54 | - //organizationDTO.setTenantCode(getCurrentUser().getTenantCode()); | 54 | + organizationDTO.setTenantCode(tenantId); |
55 | organizationDTO.copyToEntity(organization, "id"); | 55 | organizationDTO.copyToEntity(organization, "id"); |
56 | baseMapper.insert(organization); | 56 | baseMapper.insert(organization); |
57 | organization.copyToDTO(organizationDTO); | 57 | organization.copyToDTO(organizationDTO); |
@@ -60,7 +60,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -60,7 +60,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
60 | 60 | ||
61 | @Override | 61 | @Override |
62 | @Transactional | 62 | @Transactional |
63 | - public boolean deleteOrganizations(DeleteDTO deleteDTO) { | 63 | + public boolean deleteOrganizations(DeleteDTO deleteDTO,String tenantId) { |
64 | if(null == deleteDTO || deleteDTO.getIds().isEmpty()){ | 64 | if(null == deleteDTO || deleteDTO.getIds().isEmpty()){ |
65 | throw new DataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | 65 | throw new DataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); |
66 | } | 66 | } |
@@ -92,7 +92,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -92,7 +92,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
92 | // if (!deviceList.isEmpty()) { | 92 | // if (!deviceList.isEmpty()) { |
93 | // throw new DataValidationException("待删除数据存在关联设备,不能删除!"); | 93 | // throw new DataValidationException("待删除数据存在关联设备,不能删除!"); |
94 | // } | 94 | // } |
95 | -// doDeleteUserOrganizationMapping(idToDelete); | 95 | + doDeleteUserOrganizationMapping(idToDelete); |
96 | return baseMapper.deleteBatchIds(idToDelete)>0; | 96 | return baseMapper.deleteBatchIds(idToDelete)>0; |
97 | } | 97 | } |
98 | 98 |
@@ -59,8 +59,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -59,8 +59,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
59 | private final TenantRoleMapper tenantRoleMapper; | 59 | private final TenantRoleMapper tenantRoleMapper; |
60 | 60 | ||
61 | private final YtSmsService ytSmsService; | 61 | private final YtSmsService ytSmsService; |
62 | - private final YtMessageTemplateService messageTemplateService; | ||
63 | - private final YtOrganizationService groupService; | 62 | + private final MessageTemplateService messageTemplateService; |
63 | + private final OrganizationService groupService; | ||
64 | 64 | ||
65 | public static final String ACTIVATE_URL_PATTERN = "%s/api/noauth/activate?activateToken=%s"; | 65 | public static final String ACTIVATE_URL_PATTERN = "%s/api/noauth/activate?activateToken=%s"; |
66 | private final PasswordEncoder passwordEncoder; | 66 | private final PasswordEncoder passwordEncoder; |
@@ -75,8 +75,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -75,8 +75,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
75 | 75 | ||
76 | @Override | 76 | @Override |
77 | @Transactional | 77 | @Transactional |
78 | - public UserDTO saveAccount(UserDTO userDTO, boolean sendEmail, boolean sendMsg,boolean isSysadmin,String tenantId) { | ||
79 | - boolean isAdminOperate = isSysadmin; | 78 | + public UserDTO saveAccount(UserDTO userDTO, boolean sendEmail, boolean sendMsg,boolean isPtSysadmin,String tenantId) { |
79 | + boolean isAdminOperate = isPtSysadmin; | ||
80 | if (StringUtils.isAllBlank(userDTO.getUsername())) { | 80 | if (StringUtils.isAllBlank(userDTO.getUsername())) { |
81 | throw new DataValidationException("username is required"); | 81 | throw new DataValidationException("username is required"); |
82 | } | 82 | } |
@@ -98,7 +98,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -98,7 +98,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
98 | if (isAdminOperate) { | 98 | if (isAdminOperate) { |
99 | // 添加的租户管理员 | 99 | // 添加的租户管理员 |
100 | if (StringUtils.isNotBlank(userDTO.getTenantCode())) { | 100 | if (StringUtils.isNotBlank(userDTO.getTenantCode())) { |
101 | - user.setTenantId(userDTO.getTenantCode()); | 101 | + user.setTenantCode(userDTO.getTenantCode()); |
102 | user.setPassword(passwordEncoder.encode(DEFAULT_PWD)); | 102 | user.setPassword(passwordEncoder.encode(DEFAULT_PWD)); |
103 | int tenantExist = | 103 | int tenantExist = |
104 | tenantMapper.selectCount( | 104 | tenantMapper.selectCount( |
@@ -111,24 +111,24 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -111,24 +111,24 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
111 | } else { | 111 | } else { |
112 | // 添加的平台系统其他用户 | 112 | // 添加的平台系统其他用户 |
113 | user.setLevel(FastIotConstants.LevelValue.IS_OTHER_ADMIN); | 113 | user.setLevel(FastIotConstants.LevelValue.IS_OTHER_ADMIN); |
114 | - user.setTenantId(tenantId); | 114 | + user.setTenantCode(tenantId); |
115 | } | 115 | } |
116 | userExist = | 116 | userExist = |
117 | baseMapper.selectCount( | 117 | baseMapper.selectCount( |
118 | new QueryWrapper<User>() | 118 | new QueryWrapper<User>() |
119 | .lambda() | 119 | .lambda() |
120 | .eq(User::getUsername, userDTO.getUsername()) | 120 | .eq(User::getUsername, userDTO.getUsername()) |
121 | - .eq(User::getTenantId, userDTO.getTenantCode())) | 121 | + .eq(User::getTenantCode, userDTO.getTenantCode())) |
122 | > 0; | 122 | > 0; |
123 | } else { | 123 | } else { |
124 | user.setLevel(FastIotConstants.LevelValue.IS_NORMAL); | 124 | user.setLevel(FastIotConstants.LevelValue.IS_NORMAL); |
125 | - user.setTenantId(tenantId); | 125 | + user.setTenantCode(tenantId); |
126 | userExist = | 126 | userExist = |
127 | baseMapper.selectCount( | 127 | baseMapper.selectCount( |
128 | new QueryWrapper<User>() | 128 | new QueryWrapper<User>() |
129 | .lambda() | 129 | .lambda() |
130 | .eq(User::getUsername, userDTO.getUsername()) | 130 | .eq(User::getUsername, userDTO.getUsername()) |
131 | - .eq(User::getTenantId, tenantId)) | 131 | + .eq(User::getTenantCode, tenantId)) |
132 | > 0; | 132 | > 0; |
133 | } | 133 | } |
134 | if (userExist) { | 134 | if (userExist) { |
@@ -167,10 +167,10 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -167,10 +167,10 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
167 | } | 167 | } |
168 | 168 | ||
169 | @Override | 169 | @Override |
170 | - public String getActivationLink(String userId,boolean isSysadmin,String tenantId) { | 170 | + public String getActivationLink(String userId,boolean isPtSysadmin,String tenantId) { |
171 | User user = baseMapper.selectById(userId); | 171 | User user = baseMapper.selectById(userId); |
172 | - if (!isSysadmin | ||
173 | - && tenantId.equals(user.getTenantId())) { | 172 | + if (!isPtSysadmin |
173 | + && tenantId.equals(user.getTenantCode())) { | ||
174 | throw new AccessDeniedException( | 174 | throw new AccessDeniedException( |
175 | "you don't have permission to get activation link for this user"); | 175 | "you don't have permission to get activation link for this user"); |
176 | } | 176 | } |
@@ -218,13 +218,13 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -218,13 +218,13 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
218 | } | 218 | } |
219 | 219 | ||
220 | @Override | 220 | @Override |
221 | - public Optional<UserDTO> getUser(String userId,boolean isSysadmin,String tenantId) { | 221 | + public Optional<UserDTO> getUser(String userId,boolean isPtSysadmin,String tenantId) { |
222 | User user = baseMapper.selectById(userId); | 222 | User user = baseMapper.selectById(userId); |
223 | if (user != null) { | 223 | if (user != null) { |
224 | UserDTO userDTO = new UserDTO(); | 224 | UserDTO userDTO = new UserDTO(); |
225 | user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN); | 225 | user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN); |
226 | - if (!isSysadmin | ||
227 | - && !tenantId.equals(user.getTenantId())) { | 226 | + if (!isPtSysadmin |
227 | + && !tenantId.equals(user.getTenantCode())) { | ||
228 | return Optional.empty(); | 228 | return Optional.empty(); |
229 | } | 229 | } |
230 | return Optional.of(userDTO); | 230 | return Optional.of(userDTO); |
@@ -235,11 +235,11 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -235,11 +235,11 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
235 | 235 | ||
236 | @Override | 236 | @Override |
237 | @Transactional | 237 | @Transactional |
238 | - public UserDTO updateUser(UserDTO userDTO,boolean isSysadmin,String tenantId) { | 238 | + public UserDTO updateUser(UserDTO userDTO,boolean isPtSysadmin,String tenantId) { |
239 | Assert.notNull(userDTO.getId(), "user is must be specified"); | 239 | Assert.notNull(userDTO.getId(), "user is must be specified"); |
240 | User user = baseMapper.selectById(userDTO.getId()); | 240 | User user = baseMapper.selectById(userDTO.getId()); |
241 | - if (!isSysadmin | ||
242 | - && !user.getTenantId().equals(tenantId)) { | 241 | + if (!isPtSysadmin |
242 | + && !user.getTenantCode().equals(tenantId)) { | ||
243 | throw new NoneTenantAssetException("this user not belong to current tenant"); | 243 | throw new NoneTenantAssetException("this user not belong to current tenant"); |
244 | } | 244 | } |
245 | if (!user.getUsername().equals(userDTO.getUsername())) { | 245 | if (!user.getUsername().equals(userDTO.getUsername())) { |
@@ -262,13 +262,13 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -262,13 +262,13 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
262 | @Override | 262 | @Override |
263 | public PageData<UserDTO> page( | 263 | public PageData<UserDTO> page( |
264 | Map<String, Object> queryMap, | 264 | Map<String, Object> queryMap, |
265 | - boolean isSysadmin, | 265 | + boolean isPtSysadmin, |
266 | boolean isPlatformAdmin, | 266 | boolean isPlatformAdmin, |
267 | boolean isTenantAdmin, | 267 | boolean isTenantAdmin, |
268 | String tenantId) { | 268 | String tenantId) { |
269 | IPage<UserDTO> userPage = new Page<>(); | 269 | IPage<UserDTO> userPage = new Page<>(); |
270 | IPage<User> userIPage = getPage(queryMap, "create_time", true); | 270 | IPage<User> userIPage = getPage(queryMap, "create_time", true); |
271 | - if (isSysadmin) { | 271 | + if (isPtSysadmin) { |
272 | String roleType = (String) queryMap.get("roleType"); | 272 | String roleType = (String) queryMap.get("roleType"); |
273 | if (StringUtils.isEmpty(roleType)) { | 273 | if (StringUtils.isEmpty(roleType)) { |
274 | roleType = RoleEnum.ROLE_PLATFORM_ADMIN.name(); | 274 | roleType = RoleEnum.ROLE_PLATFORM_ADMIN.name(); |
@@ -318,14 +318,14 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -318,14 +318,14 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
318 | 318 | ||
319 | @Override | 319 | @Override |
320 | @Transactional | 320 | @Transactional |
321 | - public boolean deleteUser(Set<String> userIds,boolean isSysadmin,String tenantId) { | 321 | + public boolean deleteUser(Set<String> userIds,boolean isPtSysadmin,String tenantId) { |
322 | // 1. 判断是否所有的id都属于此人 | 322 | // 1. 判断是否所有的id都属于此人 |
323 | - if (!isSysadmin) { | 323 | + if (!isPtSysadmin) { |
324 | int notTenantUserCount = | 324 | int notTenantUserCount = |
325 | baseMapper.selectCount( | 325 | baseMapper.selectCount( |
326 | new QueryWrapper<User>() | 326 | new QueryWrapper<User>() |
327 | .lambda() | 327 | .lambda() |
328 | - .ne(User::getTenantId, tenantId) | 328 | + .ne(User::getTenantCode, tenantId) |
329 | .in(User::getId, userIds)); | 329 | .in(User::getId, userIds)); |
330 | if (notTenantUserCount > 0) { | 330 | if (notTenantUserCount > 0) { |
331 | throw new AccessDeniedException("cannot delete user that not belong to your tenant"); | 331 | throw new AccessDeniedException("cannot delete user that not belong to your tenant"); |
@@ -346,9 +346,9 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -346,9 +346,9 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
346 | 346 | ||
347 | @Override | 347 | @Override |
348 | @Transactional | 348 | @Transactional |
349 | - public UserDTO saveTenantAdmin(UserDTO userDTO,boolean isSysadmin,String tenantId) { | 349 | + public UserDTO saveTenantAdmin(UserDTO userDTO,boolean isPtSysadmin,String tenantId) { |
350 | if (StringUtils.isNotBlank(userDTO.getId())) { | 350 | if (StringUtils.isNotBlank(userDTO.getId())) { |
351 | - return updateUser(userDTO,isSysadmin,tenantId); | 351 | + return updateUser(userDTO,isPtSysadmin,tenantId); |
352 | } | 352 | } |
353 | validatePhoneNumberAndEmail(userDTO); | 353 | validatePhoneNumberAndEmail(userDTO); |
354 | User user = new User(); | 354 | User user = new User(); |
@@ -379,8 +379,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -379,8 +379,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
379 | 379 | ||
380 | @Override | 380 | @Override |
381 | @Transactional | 381 | @Transactional |
382 | - public void resetPassword(String userId,boolean isSysadmin,String tenantId) { | ||
383 | - if (isSysadmin) { | 382 | + public void resetPassword(String userId,boolean isPtSysadmin,String tenantId) { |
383 | + if (isPtSysadmin) { | ||
384 | baseMapper.setPassword2NullAndInsertActiveToken( | 384 | baseMapper.setPassword2NullAndInsertActiveToken( |
385 | userId, RandomStringUtils.randomAlphabetic(10)); | 385 | userId, RandomStringUtils.randomAlphabetic(10)); |
386 | } else { | 386 | } else { |
@@ -388,7 +388,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -388,7 +388,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
388 | if (user == null) { | 388 | if (user == null) { |
389 | return; | 389 | return; |
390 | } | 390 | } |
391 | - if (tenantId.equals(user.getTenantId())) { | 391 | + if (tenantId.equals(user.getTenantCode())) { |
392 | baseMapper.setPassword2NullAndInsertActiveToken( | 392 | baseMapper.setPassword2NullAndInsertActiveToken( |
393 | userId, RandomStringUtils.randomAlphabetic(10)); | 393 | userId, RandomStringUtils.randomAlphabetic(10)); |
394 | } | 394 | } |
@@ -434,7 +434,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | @@ -434,7 +434,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp | ||
434 | public Optional<List<UserDTO>> getOrganizationUserByOrganizationId(String groupId,String tenantId) { | 434 | public Optional<List<UserDTO>> getOrganizationUserByOrganizationId(String groupId,String tenantId) { |
435 | Organization group = organizationMapper.selectById(groupId); | 435 | Organization group = organizationMapper.selectById(groupId); |
436 | if (group == null | 436 | if (group == null |
437 | - || !group.getTenantId().equals(tenantId)) { | 437 | + || !group.getTenantCode().equals(tenantId)) { |
438 | return Optional.empty(); | 438 | return Optional.empty(); |
439 | } | 439 | } |
440 | Set<String> userIds = | 440 | Set<String> userIds = |
1 | +package org.thingsboard.server.dao.yunteng.mapper; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | +import org.apache.ibatis.annotations.Mapper; | ||
5 | +import org.thingsboard.server.dao.yunteng.entities.SysAppDesign; | ||
6 | + | ||
7 | +/** | ||
8 | + * @author: 徐浩然 | ||
9 | + * @desc: | ||
10 | + * @date: 2021/12/3-18:28 | ||
11 | + */ | ||
12 | +@Mapper | ||
13 | +public interface SysAppDesignMapper extends BaseMapper<SysAppDesign> {} |
1 | +package org.thingsboard.server.dao.yunteng.mapper; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | +import org.apache.ibatis.annotations.Mapper; | ||
5 | +import org.apache.ibatis.annotations.Param; | ||
6 | +import org.thingsboard.server.common.data.yunteng.dto.SysEnterpriseDTO; | ||
7 | +import org.thingsboard.server.dao.yunteng.entities.SysEnterprise; | ||
8 | + | ||
9 | +/** | ||
10 | + * @author: 徐浩然 | ||
11 | + * @desc: 企业信息 | ||
12 | + * @date: 2021/12/3-18:27 | ||
13 | + */ | ||
14 | +@Mapper | ||
15 | +public interface SysEnterpriseMapper extends BaseMapper<SysEnterprise> { | ||
16 | + /** | ||
17 | + * @param tenantCode | ||
18 | + * @return | ||
19 | + */ | ||
20 | + SysEnterpriseDTO get(@Param("tenantCode") String tenantCode); | ||
21 | +} |
1 | +package org.thingsboard.server.dao.yunteng.mapper; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
5 | +import org.apache.ibatis.annotations.Mapper; | ||
6 | +import org.apache.ibatis.annotations.Param; | ||
7 | +import org.thingsboard.server.dao.yunteng.entities.SysNotice; | ||
8 | + | ||
9 | +import java.util.Map; | ||
10 | + | ||
11 | +/** | ||
12 | + * @author: 徐浩然 | ||
13 | + * @desc: | ||
14 | + * @date: 2021/12/2-10:33 | ||
15 | + */ | ||
16 | +@Mapper | ||
17 | +public interface SysNoticeMapper extends BaseMapper<SysNotice> { | ||
18 | + /** | ||
19 | + * @param page | ||
20 | + * @param queryMap | ||
21 | + * @return 系统通知分页 | ||
22 | + */ | ||
23 | + IPage<SysNotice> page(IPage<SysNotice> page, @Param("queryMap") Map<String, Object> queryMap); | ||
24 | + | ||
25 | + /** | ||
26 | + * @param id | ||
27 | + * @return 消息详情 | ||
28 | + */ | ||
29 | + SysNotice get(@Param("id") String id, @Param("tenantCode") String tenantCode); | ||
30 | +} |
1 | +package org.thingsboard.server.dao.yunteng.mapper; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
5 | +import org.apache.ibatis.annotations.Mapper; | ||
6 | +import org.apache.ibatis.annotations.Param; | ||
7 | +import org.thingsboard.server.common.data.yunteng.dto.SysNoticeUserDTO; | ||
8 | +import org.thingsboard.server.dao.yunteng.entities.SysNoticeUser; | ||
9 | + | ||
10 | +import java.util.Map; | ||
11 | + | ||
12 | +/** | ||
13 | + * @author: 徐浩然 | ||
14 | + * @desc: | ||
15 | + * @date: 2021/12/2-11:02 | ||
16 | + */ | ||
17 | +@Mapper | ||
18 | +public interface SysNoticeUserMapper extends BaseMapper<SysNoticeUser> { | ||
19 | + /** | ||
20 | + * @param page | ||
21 | + * @param queryMap | ||
22 | + * @return 通知阅读记录分页 | ||
23 | + */ | ||
24 | + IPage<SysNoticeUserDTO> page(IPage<SysNoticeUser> page, @Param("queryMap") Map<String, Object> queryMap); | ||
25 | + | ||
26 | + /** | ||
27 | + * @param id | ||
28 | + * @param tenantCode | ||
29 | + * @return | ||
30 | + */ | ||
31 | + SysNoticeUserDTO get(@Param("id") String id, @Param("tenantCode") String tenantCode); | ||
32 | +} |
1 | +package org.thingsboard.server.dao.yunteng.mapper; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | +import org.apache.ibatis.annotations.Mapper; | ||
5 | +import org.thingsboard.server.dao.yunteng.entities.SysPlatformDesign; | ||
6 | + | ||
7 | +/** | ||
8 | + * @author: 徐浩然 | ||
9 | + * @desc: | ||
10 | + * @date: 2021/12/3-18:28 | ||
11 | + */ | ||
12 | +@Mapper | ||
13 | +public interface SysPlatformDesignMapper extends BaseMapper<SysPlatformDesign> {} |
1 | +package org.thingsboard.server.dao.yunteng.mapper; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | +import org.apache.ibatis.annotations.Mapper; | ||
5 | +import org.apache.ibatis.annotations.Select; | ||
6 | +import org.thingsboard.server.dao.yunteng.entities.SysTown; | ||
7 | + | ||
8 | +import java.util.List; | ||
9 | + | ||
10 | +/** | ||
11 | + * @author: 徐浩然 | ||
12 | + * @desc: | ||
13 | + * @date: 2021/12/3-15:34 | ||
14 | + */ | ||
15 | +@Mapper | ||
16 | +public interface SysTownMapper extends BaseMapper<SysTown> { | ||
17 | + /** @return 查询所有省份 */ | ||
18 | + @Select("select name_prov,code_prov from sys_town group by name_prov, code_prov") | ||
19 | + List<SysTown> getCityList(); | ||
20 | +} |
@@ -2,12 +2,19 @@ package org.thingsboard.server.dao.yunteng.service; | @@ -2,12 +2,19 @@ package org.thingsboard.server.dao.yunteng.service; | ||
2 | 2 | ||
3 | 3 | ||
4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
5 | +import com.baomidou.mybatisplus.core.enums.SqlMethod; | ||
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
6 | import com.baomidou.mybatisplus.core.metadata.IPage; | 7 | import com.baomidou.mybatisplus.core.metadata.IPage; |
7 | import com.baomidou.mybatisplus.core.metadata.OrderItem; | 8 | import com.baomidou.mybatisplus.core.metadata.OrderItem; |
9 | +import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils; | ||
10 | +import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; | ||
8 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 11 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
12 | +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; | ||
9 | import org.apache.commons.lang3.StringUtils; | 13 | import org.apache.commons.lang3.StringUtils; |
14 | +import org.apache.ibatis.session.SqlSession; | ||
15 | +import org.mybatis.spring.SqlSessionUtils; | ||
10 | import org.springframework.beans.factory.annotation.Autowired; | 16 | import org.springframework.beans.factory.annotation.Autowired; |
17 | +import org.springframework.transaction.annotation.Transactional; | ||
11 | import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | 18 | import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; |
12 | import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; | 19 | import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; |
13 | import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; | 20 | import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; |
@@ -15,6 +22,7 @@ import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | @@ -15,6 +22,7 @@ import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
15 | import org.thingsboard.server.common.data.yunteng.utils.tools.TBPageData; | 22 | import org.thingsboard.server.common.data.yunteng.utils.tools.TBPageData; |
16 | import org.thingsboard.server.dao.yunteng.entities.BaseEntity; | 23 | import org.thingsboard.server.dao.yunteng.entities.BaseEntity; |
17 | 24 | ||
25 | +import java.util.Collection; | ||
18 | import java.util.List; | 26 | import java.util.List; |
19 | import java.util.Map; | 27 | import java.util.Map; |
20 | 28 | ||
@@ -71,4 +79,61 @@ public abstract class AbstractBaseService<M extends BaseMapper<T>, T extends Bas | @@ -71,4 +79,61 @@ public abstract class AbstractBaseService<M extends BaseMapper<T>, T extends Bas | ||
71 | List<D> targetList = ReflectUtils.sourceToTarget(tbPageData.getData(),target); | 79 | List<D> targetList = ReflectUtils.sourceToTarget(tbPageData.getData(),target); |
72 | return new PageData<>(targetList, tbPageData.getTotalElements()); | 80 | return new PageData<>(targetList, tbPageData.getTotalElements()); |
73 | } | 81 | } |
82 | + | ||
83 | + | ||
84 | + /** | ||
85 | + * 批量插入 | ||
86 | + * | ||
87 | + * @param entityList | ||
88 | + * @param batchSize | ||
89 | + * @return | ||
90 | + */ | ||
91 | + @Transactional(rollbackFor = Exception.class) | ||
92 | + public boolean insertBatch(Collection<T> entityList, int batchSize) { | ||
93 | + SqlSession batchSqlSession = sqlSessionBatch(); | ||
94 | + int i = 0; | ||
95 | + String sqlStatement = sqlStatement(SqlMethod.INSERT_ONE); | ||
96 | + try { | ||
97 | + for (T anEntityList : entityList) { | ||
98 | + batchSqlSession.insert(sqlStatement, anEntityList); | ||
99 | + if (i >= 1 && i % batchSize == 0) { | ||
100 | + batchSqlSession.flushStatements(); | ||
101 | + } | ||
102 | + i++; | ||
103 | + } | ||
104 | + batchSqlSession.flushStatements(); | ||
105 | + } finally { | ||
106 | + closeSqlSession(batchSqlSession); | ||
107 | + } | ||
108 | + return true; | ||
109 | + } | ||
110 | + /** | ||
111 | + * 获取SqlStatement | ||
112 | + * | ||
113 | + * @param sqlMethod | ||
114 | + * @return | ||
115 | + */ | ||
116 | + protected String sqlStatement(SqlMethod sqlMethod) { | ||
117 | + return SqlHelper.table(currentModelClass()).getSqlStatement(sqlMethod.getMethod()); | ||
118 | + } | ||
119 | + | ||
120 | + /** 批量操作 SqlSession */ | ||
121 | + protected SqlSession sqlSessionBatch() { | ||
122 | + return SqlHelper.sqlSessionBatch(currentModelClass()); | ||
123 | + } | ||
124 | + | ||
125 | + /** | ||
126 | + * 释放sqlSession | ||
127 | + * | ||
128 | + * @param sqlSession session | ||
129 | + */ | ||
130 | + protected void closeSqlSession(SqlSession sqlSession) { | ||
131 | + SqlSessionUtils.closeSqlSession( | ||
132 | + sqlSession, GlobalConfigUtils.currentSessionFactory(currentModelClass())); | ||
133 | + } | ||
134 | + | ||
135 | + protected Class<T> currentModelClass() { | ||
136 | + return (Class<T>) | ||
137 | + ReflectionKit.getSuperClassGenericType(getClass(), 1); | ||
138 | + } | ||
74 | } | 139 | } |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | + | ||
4 | +import org.thingsboard.server.common.data.yunteng.dto.SmsLogDTO; | ||
5 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
6 | + | ||
7 | +import java.util.Map; | ||
8 | +import java.util.Set; | ||
9 | + | ||
10 | +public interface SmsLogService { | ||
11 | + PageData<SmsLogDTO> page(Map<String, Object> queryMap,String tenantId); | ||
12 | + | ||
13 | + boolean deleteSmsLog(Set<String> ids); | ||
14 | +} |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | + | ||
4 | +import org.thingsboard.server.common.data.yunteng.dto.SysAppDesignDTO; | ||
5 | + | ||
6 | +/** | ||
7 | + * @author: 徐浩然 | ||
8 | + * @desc: | ||
9 | + * @date: 2021/12/3-18:40 | ||
10 | + */ | ||
11 | +public interface SysAppDesignService { | ||
12 | + boolean save(SysAppDesignDTO sysAppDesignDTO,String tenantId); | ||
13 | + | ||
14 | + SysAppDesignDTO get(String tenantId); | ||
15 | + | ||
16 | + boolean update(SysAppDesignDTO sysAppDesignDTO,String tenantId); | ||
17 | +} |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | + | ||
4 | +import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO; | ||
5 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
6 | + | ||
7 | +import java.util.List; | ||
8 | +import java.util.Map; | ||
9 | +import java.util.Set; | ||
10 | + | ||
11 | +public interface SysDictItemService { | ||
12 | + PageData<SysDictItemDTO> page(Map<String, Object> queryMap); | ||
13 | + | ||
14 | + SysDictItemDTO saveSysDictItem(SysDictItemDTO sysDictItemDTO,String tenantId); | ||
15 | + | ||
16 | + boolean deleteSysDictItem(Set<String> sysDictItemIds); | ||
17 | + | ||
18 | + SysDictItemDTO updateSysDictItem(SysDictItemDTO sysDictItemDTO,String tenantId); | ||
19 | + | ||
20 | + /** | ||
21 | + * 查询字典code对应的所有字典值 | ||
22 | + * @param dictCode 字典code | ||
23 | + * @return List<SysDictItemDTO> | ||
24 | + */ | ||
25 | + List<SysDictItemDTO> findDictItemByDictCode(String dictCode); | ||
26 | +} |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | +import org.thingsboard.server.common.data.yunteng.dto.SysDictDTO; | ||
4 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
5 | + | ||
6 | +import java.util.Map; | ||
7 | +import java.util.Set; | ||
8 | + | ||
9 | +public interface SysDictService { | ||
10 | + PageData<SysDictDTO> page(Map<String, Object> queryMap); | ||
11 | + | ||
12 | + SysDictDTO saveSysDict(SysDictDTO sysDictDTO,String tenantId); | ||
13 | + | ||
14 | + boolean deleteSysDict(Set<String> sysDictIds); | ||
15 | + | ||
16 | + SysDictDTO updateSysDict(SysDictDTO sysDictDTO,String tenantId); | ||
17 | +} |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | + | ||
4 | +import org.thingsboard.server.common.data.yunteng.dto.SysEnterpriseDTO; | ||
5 | + | ||
6 | +/** | ||
7 | + * @author: 徐浩然 | ||
8 | + * @desc: | ||
9 | + * @date: 2021/12/3-18:39 | ||
10 | + */ | ||
11 | +public interface SysEnterpriseService { | ||
12 | + boolean save(SysEnterpriseDTO sysEnterpriseDTO,String tenantId); | ||
13 | + | ||
14 | + SysEnterpriseDTO get(String tenantId); | ||
15 | + | ||
16 | + boolean update(SysEnterpriseDTO sysEnterpriseDTO,String tenantId); | ||
17 | +} |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | +import org.thingsboard.server.common.data.yunteng.dto.SysNoticeDTO; | ||
4 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
5 | +import org.thingsboard.server.dao.yunteng.entities.SysNotice; | ||
6 | + | ||
7 | +import java.util.List; | ||
8 | +import java.util.Map; | ||
9 | + | ||
10 | +/** | ||
11 | + * @author: 徐浩然 | ||
12 | + * @desc: 通知管理 | ||
13 | + * @date: 2021/12/2-11:07 | ||
14 | + */ | ||
15 | +public interface SysNoticeService { | ||
16 | + | ||
17 | + PageData<SysNoticeDTO> page(Map<String, Object> queryMap); | ||
18 | + | ||
19 | + SysNoticeDTO get(String id,String tenantId); | ||
20 | + | ||
21 | + boolean delete(List<String> ids,String tenantId); | ||
22 | + | ||
23 | + SysNotice save(SysNoticeDTO sysNoticeDTO,String tenantId); | ||
24 | + | ||
25 | + SysNotice send(SysNoticeDTO sysNoticeDTO,String tenantId,String currentUserId,String currentUserName); | ||
26 | +} |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | +import org.thingsboard.server.common.data.yunteng.dto.SysNoticeUserDTO; | ||
4 | +import org.thingsboard.server.common.data.yunteng.utils.tools.PageData; | ||
5 | + | ||
6 | +import java.util.Map; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author: 徐浩然 | ||
10 | + * @desc: | ||
11 | + * @date: 2021/12/2-20:43 | ||
12 | + */ | ||
13 | +public interface SysNoticeUserService { | ||
14 | + PageData<SysNoticeUserDTO> page(Map<String, Object> queryMap); | ||
15 | + | ||
16 | + PageData<SysNoticeUserDTO> read(Map<String, Object> queryMap,String currentUserId); | ||
17 | + | ||
18 | + SysNoticeUserDTO get(String id,String tenantId); | ||
19 | +} |
dao/src/main/java/org/thingsboard/server/dao/yunteng/service/SysPlatformDesignService.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | +import org.thingsboard.server.common.data.yunteng.dto.SysPlatformDesignDTO; | ||
3 | + | ||
4 | +/** | ||
5 | + * @author: 徐浩然 | ||
6 | + * @desc: | ||
7 | + * @date: 2021/12/3-18:39 | ||
8 | + */ | ||
9 | +public interface SysPlatformDesignService { | ||
10 | + boolean save(SysPlatformDesignDTO sysPlatformDesignDTO,String tenantId); | ||
11 | + | ||
12 | + SysPlatformDesignDTO get(String tenantId); | ||
13 | + | ||
14 | + boolean update(SysPlatformDesignDTO sysPlatformDesignDTO,String tenantId); | ||
15 | +} |
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | +import org.thingsboard.server.dao.yunteng.entities.SysTown; | ||
4 | + | ||
5 | +import java.util.List; | ||
6 | + | ||
7 | +/** | ||
8 | + * @author: 徐浩然 | ||
9 | + * @desc: | ||
10 | + * @date: 2021/12/3-15:36 | ||
11 | + */ | ||
12 | +public interface SysTownService { | ||
13 | + | ||
14 | + List<SysTown> findChilds(String variable, String value); | ||
15 | + | ||
16 | + SysTown findParent(String variable, String value); | ||
17 | + | ||
18 | + List<SysTown> getCityList(); | ||
19 | +} |
dao/src/main/java/org/thingsboard/server/dao/yunteng/service/UserOrganizationMappingService.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | +import java.util.List; | ||
4 | + | ||
5 | +/** | ||
6 | + * @author: 徐浩然 | ||
7 | + * @desc: 组织用户关联表 | ||
8 | + * @date: 2021/12/3-10:17 | ||
9 | + */ | ||
10 | +public interface UserOrganizationMappingService { | ||
11 | + | ||
12 | + List<String> getUserIdByOrganizationIds(String tenantId,String... ids); | ||
13 | +} |
@@ -8,10 +8,10 @@ import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; | @@ -8,10 +8,10 @@ import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; | ||
8 | import java.util.List; | 8 | import java.util.List; |
9 | import java.util.Set; | 9 | import java.util.Set; |
10 | 10 | ||
11 | -public interface YtOrganizationService { | ||
12 | - OrganizationDTO saveOrganization(OrganizationDTO organizationDTO); | 11 | +public interface OrganizationService { |
12 | + OrganizationDTO saveOrganization(OrganizationDTO organizationDTO,String tenantId); | ||
13 | 13 | ||
14 | - boolean deleteOrganizations(DeleteDTO deleteDTO); | 14 | + boolean deleteOrganizations(DeleteDTO deleteDTO,String tenantId); |
15 | 15 | ||
16 | List<OrganizationDTO> getMyOrganizations(); | 16 | List<OrganizationDTO> getMyOrganizations(); |
17 | 17 |
@@ -16,23 +16,23 @@ import java.util.Set; | @@ -16,23 +16,23 @@ import java.util.Set; | ||
16 | public interface YtUserService { | 16 | public interface YtUserService { |
17 | List<UserDetailsDTO> findUserDetailsByUsername(String username); | 17 | List<UserDetailsDTO> findUserDetailsByUsername(String username); |
18 | 18 | ||
19 | - UserDTO saveAccount(UserDTO userDTO, boolean sendEmail, boolean sendMsg,boolean isSysadmin,String tenantId); | 19 | + UserDTO saveAccount(UserDTO userDTO, boolean sendEmail, boolean sendMsg,boolean isPtSysadmin,String tenantId); |
20 | 20 | ||
21 | - String getActivationLink(String userId,boolean isSysadmin,String tenantId); | 21 | + String getActivationLink(String userId,boolean isPtSysadmin,String tenantId); |
22 | 22 | ||
23 | - Optional<UserDTO> getUser(String userId,boolean isSysadmin,String tenantId); | 23 | + Optional<UserDTO> getUser(String userId,boolean isPtSysadmin,String tenantId); |
24 | 24 | ||
25 | UserInfoDTO me(String userId,String tenantId,Set<String> currentRoles); | 25 | UserInfoDTO me(String userId,String tenantId,Set<String> currentRoles); |
26 | 26 | ||
27 | - PageData<UserDTO> page(Map<String, Object> queryMap,boolean isSysadmin,boolean isPlatformAdmin,boolean isTenantAdmin,String tenantId); | 27 | + PageData<UserDTO> page(Map<String, Object> queryMap,boolean isPtSysadmin,boolean isPlatformAdmin,boolean isTenantAdmin,String tenantId); |
28 | 28 | ||
29 | - UserDTO updateUser(UserDTO userDTO,boolean isSysadmin,String tenantId); | 29 | + UserDTO updateUser(UserDTO userDTO,boolean isPtSysadmin,String tenantId); |
30 | 30 | ||
31 | - boolean deleteUser(Set<String> userIds,boolean isSysadmin,String tenantId); | 31 | + boolean deleteUser(Set<String> userIds,boolean isPtSysadmin,String tenantId); |
32 | 32 | ||
33 | - UserDTO saveTenantAdmin(UserDTO userDTO,boolean isSysadmin,String tenantId); | 33 | + UserDTO saveTenantAdmin(UserDTO userDTO,boolean isPtSysadmin,String tenantId); |
34 | 34 | ||
35 | - void resetPassword(String userId,boolean isSysadmin,String tenantId); | 35 | + void resetPassword(String userId,boolean isPtSysadmin,String tenantId); |
36 | 36 | ||
37 | List<UserDetailsDTO> getUserByPhoneNumber(String phoneNumber); | 37 | List<UserDetailsDTO> getUserByPhoneNumber(String phoneNumber); |
38 | 38 |
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.SysEnterpriseMapper"> | ||
5 | + <resultMap id="entity" type="org.thingsboard.server.common.data.yunteng.dto.SysEnterpriseDTO"> | ||
6 | + <result property="name" column="name"/> | ||
7 | + <result property="abbreviation" column="abbreviation"/> | ||
8 | + <result property="officialWebsite" column="official_website"/> | ||
9 | + <result property="email" column="email"/> | ||
10 | + <result property="synopsis" column="synopsis"/> | ||
11 | + <result property="address" column="address"/> | ||
12 | + <result property="contacts" column="contacts"/> | ||
13 | + <result property="area" column="area"/> | ||
14 | + <result property="tel" column="tel"/> | ||
15 | + <result property="codeTown" column="code_town"/> | ||
16 | + <result property="nameProv" column="name_prov"/> | ||
17 | + <result property="codeProv" column="code_prov"/> | ||
18 | + <result property="nameCity" column="name_city"/> | ||
19 | + <result property="codeCity" column="code_city"/> | ||
20 | + <result property="nameCoun" column="name_coun"/> | ||
21 | + <result property="codeCoun" column="code_coun"/> | ||
22 | + <result property="nameTown" column="name_town"/> | ||
23 | + </resultMap> | ||
24 | + | ||
25 | + <select id="get" resultMap="entity"> | ||
26 | + select se.name as name, | ||
27 | + se.abbreviation abbreviation, | ||
28 | + se.official_website official_website, | ||
29 | + se.email email, | ||
30 | + se.synopsis synopsis, | ||
31 | + se.address address, | ||
32 | + se.contacts contacts, | ||
33 | + se.area area, | ||
34 | + se.tel tel, | ||
35 | + se.code_town code_town, | ||
36 | + st.name_prov name_prov, | ||
37 | + st.code_prov code_prov, | ||
38 | + st.name_city name_city, | ||
39 | + st.code_city code_city, | ||
40 | + st.name_coun name_coun, | ||
41 | + st.code_coun code_coun, | ||
42 | + st.name_town name_town | ||
43 | + from sys_enterprise se | ||
44 | + left join sys_town st on st.code_town = se.code_town | ||
45 | + where se.tenant_code = #{tenantCode} | ||
46 | + </select> | ||
47 | + | ||
48 | +</mapper> |
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.SysNoticeMapper"> | ||
5 | + <resultMap type="org.thingsboard.server.common.data.yunteng.dto.SysNoticeDTO" id="sysNotice"> | ||
6 | + <result property="id" column="id"/> | ||
7 | + <result property="type" column="type" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/> | ||
8 | + <result property="title" column="title"/> | ||
9 | + <result property="content" column="content"/> | ||
10 | + <result property="receiverType" column="receiver_type"/> | ||
11 | + <result property="receiverTypeIds" column="receiver_type_ids"/> | ||
12 | + <result property="status" column="status"/> | ||
13 | + <result property="senderName" column="sender_name"/> | ||
14 | + <result property="senderDate" column="sender_date"/> | ||
15 | + <result property="creator" column="creator"/> | ||
16 | + <result property="updater" column="updater"/> | ||
17 | + <result property="createTime" column="create_time"/> | ||
18 | + <result property="updateTime" column="update_time"/> | ||
19 | + <result property="tenantCode" column="tenant_code"/> | ||
20 | + </resultMap> | ||
21 | + | ||
22 | + <sql id="dict"> | ||
23 | + SELECT sdi.item_text | ||
24 | + FROM sys_dict_item sdi | ||
25 | + LEFT JOIN sys_dict sd ON sd.id = sdi.dict_id | ||
26 | + WHERE sdi.status = 1 | ||
27 | + </sql> | ||
28 | + | ||
29 | + <sql id="columns"> | ||
30 | + SELECT | ||
31 | + sn.id id, | ||
32 | + sn.type AS type, | ||
33 | + sn.title title, | ||
34 | + sn.content AS content, | ||
35 | + ( | ||
36 | + <include refid="dict"/> | ||
37 | + AND sd.dict_code = 'receiver_type' AND sdi.item_value = sn.receiver_type | ||
38 | + ) receiver_type, | ||
39 | + sn.receiver_type_ids receiver_type_ids, | ||
40 | + ( | ||
41 | + <include refid="dict"/> | ||
42 | + AND sd.dict_code = 'draft_status' AND sdi.item_value = sn.status | ||
43 | + ) status, | ||
44 | + sn.sender_name sender_name, | ||
45 | + sn.sender_date sender_date, | ||
46 | + sn.creator creator, | ||
47 | + sn.updater updater, | ||
48 | + sn.create_time create_time, | ||
49 | + sn.update_time update_time, | ||
50 | + sn.tenant_code tenant_code | ||
51 | + FROM sys_notice sn | ||
52 | + </sql> | ||
53 | + <select id="page" resultMap="sysNotice"> | ||
54 | + <include refid="columns"/> | ||
55 | + WHERE | ||
56 | + sn.tenant_code = #{queryMap.tenantCode} | ||
57 | + <if test="queryMap.type != null"> | ||
58 | + sn.type = #{queryMap.type} | ||
59 | + </if> | ||
60 | + </select> | ||
61 | + <select id="get" resultMap="sysNotice"> | ||
62 | + <include refid="columns"/> | ||
63 | + WHERE | ||
64 | + sn.tenant_code = #{tenantCode} | ||
65 | + AND sn.id = #{id} | ||
66 | + </select> | ||
67 | +</mapper> |
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.SysNoticeUserMapper"> | ||
5 | + <resultMap type="org.thingsboard.server.common.data.yunteng.dto.SysNoticeUserDTO" id="sysNoticeUser"> | ||
6 | + <result property="receiverId" column="receiver_id"/> | ||
7 | + <result property="noticeId" column="notice_id"/> | ||
8 | + <result property="readStatus" column="read_status"/> | ||
9 | + <result property="readDate" column="read_date"/> | ||
10 | + <result property="creator" column="creator"/> | ||
11 | + <result property="updater" column="updater"/> | ||
12 | + <result property="createTime" column="create_time"/> | ||
13 | + <result property="updateTime" column="update_time"/> | ||
14 | + <result property="tenantCode" column="tenant_code"/> | ||
15 | + <result property="id" column="id"/> | ||
16 | + <association property="sysNotice" javaType="org.thingsboard.server.common.data.yunteng.dto.SysNoticeDTO"> | ||
17 | + <result property="type" column="type" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/> | ||
18 | + <result property="senderName" column="sender_name"/> | ||
19 | + <result property="senderDate" column="sender_date"/> | ||
20 | + </association> | ||
21 | + </resultMap> | ||
22 | + | ||
23 | + <sql id="dict"> | ||
24 | + SELECT sdi.item_text | ||
25 | + FROM sys_dict_item sdi | ||
26 | + LEFT JOIN sys_dict sd ON sd.id = sdi.dict_id | ||
27 | + WHERE sdi.status = 1 | ||
28 | + </sql> | ||
29 | + | ||
30 | + <sql id="columns"> | ||
31 | + SELECT snu.receiver_id receiver_id, | ||
32 | + snu.notice_id notice_id, | ||
33 | + snu.read_status read_status, | ||
34 | + snu.read_date read_date, | ||
35 | + snu.creator creator, | ||
36 | + snu.updater updater, | ||
37 | + snu.create_time create_time, | ||
38 | + snu.update_time update_time, | ||
39 | + snu.tenant_code tenant_code, | ||
40 | + snu.id id, | ||
41 | + sn.type AS type, | ||
42 | + sn.sender_name sender_name, | ||
43 | + sn.sender_date sender_date | ||
44 | + FROM sys_notice_user snu | ||
45 | + LEFT JOIN sys_notice sn ON sn.id = snu.notice_id | ||
46 | + </sql> | ||
47 | + <select id="page" resultMap="sysNoticeUser"> | ||
48 | + <include refid="columns"/> | ||
49 | + WHERE | ||
50 | + snu.tenant_code = #{queryMap.tenantCode} | ||
51 | + <if test="queryMap.type != null"> | ||
52 | + AND sn.type = #{queryMap.type} | ||
53 | + </if> | ||
54 | + <if test="queryMap.creator != null"> | ||
55 | + AND sn.creator = #{queryMap.creator} | ||
56 | + </if> | ||
57 | + </select> | ||
58 | + <select id="get" resultMap="sysNoticeUser"> | ||
59 | + <include refid="columns"/> | ||
60 | + WHERE | ||
61 | + snu.tenant_code = #{tenantCode} | ||
62 | + AND snu.id = #{id} | ||
63 | + </select> | ||
64 | +</mapper> |