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 | 29 | @RestController |
30 | 30 | @RequestMapping("api/yt/admin") |
31 | 31 | @RequiredArgsConstructor |
32 | -@PreAuthorize("hasAnyRole('SYS_ADMIN','PLATFORM_ADMIN')") | |
32 | +//@PreAuthorize("hasAnyRole('SYS_ADMIN','PLATFORM_ADMIN')") | |
33 | 33 | public class YtAdminController extends BaseController { |
34 | 34 | |
35 | 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 | 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 | 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 | 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 | 29 | @RestController |
26 | -@RequestMapping("/api/yt/notice") | |
30 | +@RequestMapping("api/v1/notice") | |
27 | 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 | 23 | @RestController |
24 | 24 | @RequestMapping("api/yt/role") |
25 | 25 | @RequiredArgsConstructor |
26 | -public class RoleController extends BaseController { | |
26 | +public class YtRoleController extends BaseController { | |
27 | 27 | |
28 | 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 | 60 | String TB_CACHE_CONFIG_KEY = "TB_CONNECT_CACHE"; |
61 | 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 | 12 | public static final String TENANT_ROLE_TABLE_NAME = "sys_tenant_role"; |
13 | 13 | /** 菜单表 */ |
14 | 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 | 20 | public static final String ROLE_TABLE_NAME = "sys_role"; |
17 | 21 | /** 用户角色关系表 */ |
... | ... | @@ -48,6 +52,14 @@ public final class ModelConstants { |
48 | 52 | public static final String IOTFS_ALARM_PROFILE_TABLE_NAME = "iotfs_alarm_profile"; |
49 | 53 | /** 告警联系人 */ |
50 | 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 | 65 | public static class TableFields { | ... | ... |
... | ... | @@ -28,6 +28,7 @@ public enum ErrorMessage { |
28 | 28 | NONE_DEFAULT_RULE_CHAIN(400009,"该租户不存在默认的规则链"), |
29 | 29 | TENANT_MISMATCHING(400010,"租户不匹配"), |
30 | 30 | GET_CURRENT_USER_EXCEPTION(400011,"获取当前用户信息异常"), |
31 | + SEND_DESTINATION_NOT_FOUND(400012,"通知失败!找不到发送目标"), | |
31 | 32 | CONNECT_TO_TB_ERROR(500001,"与TB联系错误"), |
32 | 33 | HAVE_NO_PERMISSION(500002,"没有修改权限"); |
33 | 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 | 36 | |
37 | 37 | @Override |
38 | 38 | @Transactional |
39 | - public OrganizationDTO saveOrganization(OrganizationDTO organizationDTO) { | |
39 | + public OrganizationDTO saveOrganization(OrganizationDTO organizationDTO,String tenantId) { | |
40 | 40 | Assert.notNull(organizationDTO.getName(), "organization name cannot be null"); |
41 | 41 | if (StringUtils.isNotBlank(organizationDTO.getParentId())) { |
42 | 42 | Organization organization = baseMapper.selectById(organizationDTO.getParentId()); |
... | ... | @@ -51,7 +51,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
51 | 51 | } |
52 | 52 | } |
53 | 53 | Organization organization = new Organization(); |
54 | - //organizationDTO.setTenantCode(getCurrentUser().getTenantCode()); | |
54 | + organizationDTO.setTenantCode(tenantId); | |
55 | 55 | organizationDTO.copyToEntity(organization, "id"); |
56 | 56 | baseMapper.insert(organization); |
57 | 57 | organization.copyToDTO(organizationDTO); |
... | ... | @@ -60,7 +60,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
60 | 60 | |
61 | 61 | @Override |
62 | 62 | @Transactional |
63 | - public boolean deleteOrganizations(DeleteDTO deleteDTO) { | |
63 | + public boolean deleteOrganizations(DeleteDTO deleteDTO,String tenantId) { | |
64 | 64 | if(null == deleteDTO || deleteDTO.getIds().isEmpty()){ |
65 | 65 | throw new DataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); |
66 | 66 | } |
... | ... | @@ -92,7 +92,7 @@ public class YtOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
92 | 92 | // if (!deviceList.isEmpty()) { |
93 | 93 | // throw new DataValidationException("待删除数据存在关联设备,不能删除!"); |
94 | 94 | // } |
95 | -// doDeleteUserOrganizationMapping(idToDelete); | |
95 | + doDeleteUserOrganizationMapping(idToDelete); | |
96 | 96 | return baseMapper.deleteBatchIds(idToDelete)>0; |
97 | 97 | } |
98 | 98 | ... | ... |
... | ... | @@ -59,8 +59,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
59 | 59 | private final TenantRoleMapper tenantRoleMapper; |
60 | 60 | |
61 | 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 | 65 | public static final String ACTIVATE_URL_PATTERN = "%s/api/noauth/activate?activateToken=%s"; |
66 | 66 | private final PasswordEncoder passwordEncoder; |
... | ... | @@ -75,8 +75,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
75 | 75 | |
76 | 76 | @Override |
77 | 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 | 80 | if (StringUtils.isAllBlank(userDTO.getUsername())) { |
81 | 81 | throw new DataValidationException("username is required"); |
82 | 82 | } |
... | ... | @@ -98,7 +98,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
98 | 98 | if (isAdminOperate) { |
99 | 99 | // 添加的租户管理员 |
100 | 100 | if (StringUtils.isNotBlank(userDTO.getTenantCode())) { |
101 | - user.setTenantId(userDTO.getTenantCode()); | |
101 | + user.setTenantCode(userDTO.getTenantCode()); | |
102 | 102 | user.setPassword(passwordEncoder.encode(DEFAULT_PWD)); |
103 | 103 | int tenantExist = |
104 | 104 | tenantMapper.selectCount( |
... | ... | @@ -111,24 +111,24 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
111 | 111 | } else { |
112 | 112 | // 添加的平台系统其他用户 |
113 | 113 | user.setLevel(FastIotConstants.LevelValue.IS_OTHER_ADMIN); |
114 | - user.setTenantId(tenantId); | |
114 | + user.setTenantCode(tenantId); | |
115 | 115 | } |
116 | 116 | userExist = |
117 | 117 | baseMapper.selectCount( |
118 | 118 | new QueryWrapper<User>() |
119 | 119 | .lambda() |
120 | 120 | .eq(User::getUsername, userDTO.getUsername()) |
121 | - .eq(User::getTenantId, userDTO.getTenantCode())) | |
121 | + .eq(User::getTenantCode, userDTO.getTenantCode())) | |
122 | 122 | > 0; |
123 | 123 | } else { |
124 | 124 | user.setLevel(FastIotConstants.LevelValue.IS_NORMAL); |
125 | - user.setTenantId(tenantId); | |
125 | + user.setTenantCode(tenantId); | |
126 | 126 | userExist = |
127 | 127 | baseMapper.selectCount( |
128 | 128 | new QueryWrapper<User>() |
129 | 129 | .lambda() |
130 | 130 | .eq(User::getUsername, userDTO.getUsername()) |
131 | - .eq(User::getTenantId, tenantId)) | |
131 | + .eq(User::getTenantCode, tenantId)) | |
132 | 132 | > 0; |
133 | 133 | } |
134 | 134 | if (userExist) { |
... | ... | @@ -167,10 +167,10 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
167 | 167 | } |
168 | 168 | |
169 | 169 | @Override |
170 | - public String getActivationLink(String userId,boolean isSysadmin,String tenantId) { | |
170 | + public String getActivationLink(String userId,boolean isPtSysadmin,String tenantId) { | |
171 | 171 | User user = baseMapper.selectById(userId); |
172 | - if (!isSysadmin | |
173 | - && tenantId.equals(user.getTenantId())) { | |
172 | + if (!isPtSysadmin | |
173 | + && tenantId.equals(user.getTenantCode())) { | |
174 | 174 | throw new AccessDeniedException( |
175 | 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 | 218 | } |
219 | 219 | |
220 | 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 | 222 | User user = baseMapper.selectById(userId); |
223 | 223 | if (user != null) { |
224 | 224 | UserDTO userDTO = new UserDTO(); |
225 | 225 | user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN); |
226 | - if (!isSysadmin | |
227 | - && !tenantId.equals(user.getTenantId())) { | |
226 | + if (!isPtSysadmin | |
227 | + && !tenantId.equals(user.getTenantCode())) { | |
228 | 228 | return Optional.empty(); |
229 | 229 | } |
230 | 230 | return Optional.of(userDTO); |
... | ... | @@ -235,11 +235,11 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
235 | 235 | |
236 | 236 | @Override |
237 | 237 | @Transactional |
238 | - public UserDTO updateUser(UserDTO userDTO,boolean isSysadmin,String tenantId) { | |
238 | + public UserDTO updateUser(UserDTO userDTO,boolean isPtSysadmin,String tenantId) { | |
239 | 239 | Assert.notNull(userDTO.getId(), "user is must be specified"); |
240 | 240 | User user = baseMapper.selectById(userDTO.getId()); |
241 | - if (!isSysadmin | |
242 | - && !user.getTenantId().equals(tenantId)) { | |
241 | + if (!isPtSysadmin | |
242 | + && !user.getTenantCode().equals(tenantId)) { | |
243 | 243 | throw new NoneTenantAssetException("this user not belong to current tenant"); |
244 | 244 | } |
245 | 245 | if (!user.getUsername().equals(userDTO.getUsername())) { |
... | ... | @@ -262,13 +262,13 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
262 | 262 | @Override |
263 | 263 | public PageData<UserDTO> page( |
264 | 264 | Map<String, Object> queryMap, |
265 | - boolean isSysadmin, | |
265 | + boolean isPtSysadmin, | |
266 | 266 | boolean isPlatformAdmin, |
267 | 267 | boolean isTenantAdmin, |
268 | 268 | String tenantId) { |
269 | 269 | IPage<UserDTO> userPage = new Page<>(); |
270 | 270 | IPage<User> userIPage = getPage(queryMap, "create_time", true); |
271 | - if (isSysadmin) { | |
271 | + if (isPtSysadmin) { | |
272 | 272 | String roleType = (String) queryMap.get("roleType"); |
273 | 273 | if (StringUtils.isEmpty(roleType)) { |
274 | 274 | roleType = RoleEnum.ROLE_PLATFORM_ADMIN.name(); |
... | ... | @@ -318,14 +318,14 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
318 | 318 | |
319 | 319 | @Override |
320 | 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 | 322 | // 1. 判断是否所有的id都属于此人 |
323 | - if (!isSysadmin) { | |
323 | + if (!isPtSysadmin) { | |
324 | 324 | int notTenantUserCount = |
325 | 325 | baseMapper.selectCount( |
326 | 326 | new QueryWrapper<User>() |
327 | 327 | .lambda() |
328 | - .ne(User::getTenantId, tenantId) | |
328 | + .ne(User::getTenantCode, tenantId) | |
329 | 329 | .in(User::getId, userIds)); |
330 | 330 | if (notTenantUserCount > 0) { |
331 | 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 | 346 | |
347 | 347 | @Override |
348 | 348 | @Transactional |
349 | - public UserDTO saveTenantAdmin(UserDTO userDTO,boolean isSysadmin,String tenantId) { | |
349 | + public UserDTO saveTenantAdmin(UserDTO userDTO,boolean isPtSysadmin,String tenantId) { | |
350 | 350 | if (StringUtils.isNotBlank(userDTO.getId())) { |
351 | - return updateUser(userDTO,isSysadmin,tenantId); | |
351 | + return updateUser(userDTO,isPtSysadmin,tenantId); | |
352 | 352 | } |
353 | 353 | validatePhoneNumberAndEmail(userDTO); |
354 | 354 | User user = new User(); |
... | ... | @@ -379,8 +379,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
379 | 379 | |
380 | 380 | @Override |
381 | 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 | 384 | baseMapper.setPassword2NullAndInsertActiveToken( |
385 | 385 | userId, RandomStringUtils.randomAlphabetic(10)); |
386 | 386 | } else { |
... | ... | @@ -388,7 +388,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
388 | 388 | if (user == null) { |
389 | 389 | return; |
390 | 390 | } |
391 | - if (tenantId.equals(user.getTenantId())) { | |
391 | + if (tenantId.equals(user.getTenantCode())) { | |
392 | 392 | baseMapper.setPassword2NullAndInsertActiveToken( |
393 | 393 | userId, RandomStringUtils.randomAlphabetic(10)); |
394 | 394 | } |
... | ... | @@ -434,7 +434,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> imp |
434 | 434 | public Optional<List<UserDTO>> getOrganizationUserByOrganizationId(String groupId,String tenantId) { |
435 | 435 | Organization group = organizationMapper.selectById(groupId); |
436 | 436 | if (group == null |
437 | - || !group.getTenantId().equals(tenantId)) { | |
437 | + || !group.getTenantCode().equals(tenantId)) { | |
438 | 438 | return Optional.empty(); |
439 | 439 | } |
440 | 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 | 2 | |
3 | 3 | |
4 | 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
5 | +import com.baomidou.mybatisplus.core.enums.SqlMethod; | |
5 | 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
6 | 7 | import com.baomidou.mybatisplus.core.metadata.IPage; |
7 | 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 | 11 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
12 | +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; | |
9 | 13 | import org.apache.commons.lang3.StringUtils; |
14 | +import org.apache.ibatis.session.SqlSession; | |
15 | +import org.mybatis.spring.SqlSessionUtils; | |
10 | 16 | import org.springframework.beans.factory.annotation.Autowired; |
17 | +import org.springframework.transaction.annotation.Transactional; | |
11 | 18 | import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; |
12 | 19 | import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; |
13 | 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 | 22 | import org.thingsboard.server.common.data.yunteng.utils.tools.TBPageData; |
16 | 23 | import org.thingsboard.server.dao.yunteng.entities.BaseEntity; |
17 | 24 | |
25 | +import java.util.Collection; | |
18 | 26 | import java.util.List; |
19 | 27 | import java.util.Map; |
20 | 28 | |
... | ... | @@ -71,4 +79,61 @@ public abstract class AbstractBaseService<M extends BaseMapper<T>, T extends Bas |
71 | 79 | List<D> targetList = ReflectUtils.sourceToTarget(tbPageData.getData(),target); |
72 | 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 | 8 | import java.util.List; |
9 | 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 | 16 | List<OrganizationDTO> getMyOrganizations(); |
17 | 17 | ... | ... |
... | ... | @@ -16,23 +16,23 @@ import java.util.Set; |
16 | 16 | public interface YtUserService { |
17 | 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 | 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 | 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> | ... | ... |