diff --git a/data/init/thingModel.json b/data/init/thingModel.json index ab51831c..7ae5810c 100755 --- a/data/init/thingModel.json +++ b/data/init/thingModel.json @@ -988,70 +988,76 @@ "productKey": "bGdZt8ffBETtsirm", "model": { "properties": [ - { - "identifier": "temp", - "dataType": { - "type": "int32", - "specs": { - "min": "17", - "max": "32" - } + { + "identifier": "temp", + "dataType": { + "type": "int32", + "specs": { + "min": "17", + "max": "32" + } + }, + "name": "温度", + "accessMode": "rw", + "description": "温度", + "unit": "℃" }, - "name": "温度", - "accessMode": "rw" - }, - { - "identifier": "swing_modes", - "dataType": { - "type": "bool", - "specs": { - "0": "关", - "1": "开" - } + { + "identifier": "swing_modes", + "dataType": { + "type": "enum", + "specs": { + "off": "关", + "on": "开" + } + }, + "name": "扫风开关", + "accessMode": "rw", + "description": "扫风开关" }, - "name": "扫风开关", - "accessMode": "rw" - }, - { - "identifier": "modes", - "dataType": { - "type": "enum", - "specs": { - "0": "制热", - "1": "关闭", - "2": "制冷", - "3": "送风" - } + { + "identifier": "modes", + "dataType": { + "type": "enum", + "specs": { + "heat": "制热", + "off": "关闭", + "cool": "制冷", + "fan_only": "送风" + } + }, + "name": "模式", + "accessMode": "rw", + "description": "模式" }, - "name": "模式", - "accessMode": "rw" - }, - { - "identifier": "fan_modes", - "dataType": { - "type": "enum", - "specs": { - "0": "高", - "1": "中", - "2": "低" - } + { + "identifier": "fan_modes", + "dataType": { + "type": "enum", + "specs": { + "high": "高", + "medium": "中", + "low": "低" + } + }, + "name": "风模式", + "accessMode": "rw", + "description": "风模式" }, - "name": "风模式", - "accessMode": "rw" - }, - { - "identifier": "presets_modes", - "dataType": { - "type": "enum", - "specs": { - "0": "节能", - "1": "睡眠", - "2": "活动" - } - }, - "name": "预设模式", - "accessMode": "rw" - } + { + "identifier": "preset_modes", + "dataType": { + "type": "enum", + "specs": { + "eco": "节能", + "sleep": "睡眠", + "activity": "活动" + } + }, + "name": "预设模式", + "accessMode": "rw", + "description": "预设模式" + } ], "services": [ ], diff --git a/iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java b/iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java index f39ff7fb..3f076a52 100644 --- a/iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java +++ b/iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java @@ -4,7 +4,6 @@ import cc.iotkit.common.api.PageRequest; import cc.iotkit.common.api.Paging; import cc.iotkit.common.utils.MapstructUtils; import cc.iotkit.common.utils.ReflectUtil; -import cc.iotkit.common.utils.StreamUtils; import cc.iotkit.data.dao.*; import cc.iotkit.data.manager.ICategoryData; import cc.iotkit.data.manager.IDeviceInfoData; @@ -17,10 +16,7 @@ import cc.iotkit.model.device.message.DevicePropertyCache; import cc.iotkit.model.product.Category; import cc.iotkit.model.product.Product; import cc.iotkit.model.stats.DataItem; -import cc.iotkit.model.system.SysDept; -import cc.iotkit.model.system.SysUser; import cn.hutool.core.util.ObjectUtil; -import com.querydsl.core.types.Expression; import com.querydsl.core.types.Predicate; import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQuery; @@ -41,8 +37,6 @@ import static cc.iotkit.data.model.QTbDeviceGroupMapping.tbDeviceGroupMapping; import static cc.iotkit.data.model.QTbDeviceInfo.tbDeviceInfo; import static cc.iotkit.data.model.QTbDeviceSubUser.tbDeviceSubUser; import static cc.iotkit.data.model.QTbProduct.tbProduct; -import static cc.iotkit.data.model.QTbSysDept.tbSysDept; -import static cc.iotkit.data.model.QTbSysUser.tbSysUser; @Primary @Service @@ -485,8 +479,10 @@ public class DeviceInfoDataImpl implements IDeviceInfoData, IJPACommData buildQuery(Predicate predicate) { - List devices = jpaQueryFactory.select(Projections.bean(TbDeviceInfo.class, - tbDeviceInfo.deviceId, tbDeviceInfo.deviceName, tbDeviceInfo.state )) + List devices = jpaQueryFactory.select(Projections.bean(TbDeviceInfo.class,tbDeviceInfo.uid, + tbDeviceInfo.deviceId, tbDeviceInfo.productKey,tbDeviceInfo.deviceName, tbDeviceInfo.state,tbDeviceInfo.createAt, + tbDeviceInfo.id,tbDeviceInfo.onlineTime,tbDeviceInfo.parentId,tbDeviceInfo.latitude,tbDeviceInfo.longitude,tbDeviceInfo.model, + tbDeviceInfo.offlineTime,tbDeviceInfo.secret)) .from(tbDeviceInfo) .where(predicate).fetch(); return MapstructUtils.convert(devices, DeviceInfo.class); @@ -495,7 +491,8 @@ public class DeviceInfoDataImpl implements IDeviceInfoData, IJPACommData tbDeviceInfo.id.eq(device.getId())) - .and(ObjectUtil.isNotNull(device.getState().isOnline()), () -> tbDeviceInfo.state.eq(device.getState().isOnline() ? "online" : "offline")) + .and(ObjectUtil.isNotNull(device.getDeviceName()), () -> tbDeviceInfo.deviceName.eq(device.getDeviceName())) + .and(ObjectUtil.isNotNull(device.getState()), () -> tbDeviceInfo.state.eq(device.getState().isOnline() ? "online" : "offline")) .build(); } diff --git a/iot-dao/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java b/iot-dao/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java index d8c005ec..5363d8d5 100644 --- a/iot-dao/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java +++ b/iot-dao/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java @@ -38,7 +38,6 @@ public interface IThingModelMessageData { */ List getDeviceMessageStatsWithUid(String uid, long start, long end); - /** * 按用户统计时间段内上行消息 * @param uid 用户id @@ -56,6 +55,17 @@ public interface IThingModelMessageData { List getDeviceDownMessageStatsWithUid(String uid, Long start, Long end); + /** + * 查询指定设备集类型并按时间倒序 + * + * @param deviceIds 设备ids + * @param type 消息类型 + * @param identifier 标识符 + * @param page 页码 + * @param size 页大小 + */ + Paging findByTypeAndDeviceIds(List deviceIds, String type, + String identifier, int page, int size); void add(ThingModelMessage msg); diff --git a/iot-dao/iot-temporal-serviceImpl-es/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java b/iot-dao/iot-temporal-serviceImpl-es/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java index 4ab7fe3c..ed849533 100644 --- a/iot-dao/iot-temporal-serviceImpl-es/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java +++ b/iot-dao/iot-temporal-serviceImpl-es/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java @@ -69,6 +69,27 @@ public class ThingModelMessageDataImpl implements IThingModelMessageData { .collect(Collectors.toList())); } + @Override + public Paging findByTypeAndDeviceIds(List deviceIds, String type, + String identifier, + int page, int size) { + BoolQueryBuilder builder = QueryBuilders.boolQuery(); + builder.must(QueryBuilders.termQuery("type", type)); + if (deviceIds.size()>0) { + builder.must(QueryBuilders.termsQuery("deviceId", deviceIds)); + } + if (StringUtils.isNotBlank(identifier)) { + builder.must(QueryBuilders.matchPhraseQuery("identifier", identifier)); + } + NativeSearchQuery query = new NativeSearchQueryBuilder().withQuery(builder) + .withPageable(PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("time")))) + .build(); + SearchHits result = template.search(query, DocThingModelMessage.class); + return new Paging<>(result.getTotalHits(), result.getSearchHits().stream() + .map(m -> MapstructUtils.convert(m.getContent(), ThingModelMessage.class)) + .collect(Collectors.toList())); + } + @Override public List getDeviceMessageStatsWithUid(String uid, long start, long end) { BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery() diff --git a/iot-dao/iot-temporal-serviceImpl-iotdb/src/main/java/cc/iotkit/temporal/iotdb/service/ThingModelMessageDataImpl.java b/iot-dao/iot-temporal-serviceImpl-iotdb/src/main/java/cc/iotkit/temporal/iotdb/service/ThingModelMessageDataImpl.java index 29dd1df4..c4afecb9 100644 --- a/iot-dao/iot-temporal-serviceImpl-iotdb/src/main/java/cc/iotkit/temporal/iotdb/service/ThingModelMessageDataImpl.java +++ b/iot-dao/iot-temporal-serviceImpl-iotdb/src/main/java/cc/iotkit/temporal/iotdb/service/ThingModelMessageDataImpl.java @@ -43,6 +43,11 @@ public class ThingModelMessageDataImpl implements IThingModelMessageData { return null; } + @Override + public Paging findByTypeAndDeviceIds(List deviceIds, String type, String identifier, int page, int size) { + return new Paging<>(); + } + @Override public void add(ThingModelMessage msg) { } diff --git a/iot-dao/iot-temporal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/ThingModelMessageDataImpl.java b/iot-dao/iot-temporal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/ThingModelMessageDataImpl.java index d3828a56..153785b2 100644 --- a/iot-dao/iot-temporal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/ThingModelMessageDataImpl.java +++ b/iot-dao/iot-temporal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/ThingModelMessageDataImpl.java @@ -73,6 +73,46 @@ public class ThingModelMessageDataImpl implements IThingModelMessageData { .collect(Collectors.toList())); } + @Override + public Paging findByTypeAndDeviceIds(List deviceIds, String type, + String identifier, + int page, int size) { + String sql = "select time,mid,product_key,device_name,type,identifier,code,data,report_time " + + "from thing_model_message where type=? %s order by time desc limit %d offset %d"; + + //构建动态条件 + List args = new ArrayList<>(); + args.add(type); + StringBuilder sbCond = new StringBuilder(); + if (deviceIds.size()>0) { + sbCond.append(" and deviceIds in (?) "); + args.add(String.join(",",deviceIds)); + } + if (StringUtils.isNotBlank(identifier)) { + sbCond.append("and identifier=? "); + args.add(identifier); + } + + sql = String.format(sql, sbCond.toString(), size, (page - 1) * size); + List ruleLogs = tdTemplate.query(sql, + new BeanPropertyRowMapper<>(TbThingModelMessage.class), + args.toArray() + ); + + sql = String.format("select count(*) from thing_model_message where type=? %s", + sbCond.toString()); + List counts = tdTemplate.queryForList(sql, Long.class, args.toArray()); + long count = !counts.isEmpty() ? counts.get(0) : 0; + + return new Paging<>(count, ruleLogs.stream().map(r -> + new ThingModelMessage(r.getTime().toString(), r.getMid(), + r.getDeviceId(), r.getProductKey(), r.getDeviceName(), + r.getUid(), r.getType(), r.getIdentifier(), r.getCode(), + JsonUtils.parseObject(r.getData(), Map.class), + r.getTime(), r.getReportTime())) + .collect(Collectors.toList())); + } + @Override public List getDeviceMessageStatsWithUid(String uid, long start, long end) { String sql = "select time,count(*) as data from(" + diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java index 6e547a51..8c0cc499 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java @@ -9,21 +9,30 @@ */ package cc.iotkit.manager.controller; +import cc.iotkit.common.api.PageRequest; +import cc.iotkit.common.api.Paging; import cc.iotkit.common.api.Request; import cc.iotkit.common.constant.Constants; import cc.iotkit.common.enums.ErrCode; import cc.iotkit.common.exception.BizException; import cc.iotkit.common.satoken.utils.AuthUtil; import cc.iotkit.common.satoken.utils.LoginHelper; +import cc.iotkit.common.thing.ThingModelMessage; import cc.iotkit.common.utils.JsonUtils; import cc.iotkit.data.manager.ICategoryData; import cc.iotkit.data.manager.IDeviceInfoData; import cc.iotkit.data.manager.IUserInfoData; +import cc.iotkit.manager.dto.bo.device.DeviceLogQueryBo; +import cc.iotkit.manager.dto.bo.device.ServiceInvokeBo; +import cc.iotkit.manager.dto.bo.device.SetDeviceServicePorpertyBo; +import cc.iotkit.manager.dto.bo.ruleinfo.RuleInfoBo; import cc.iotkit.manager.dto.vo.product.ProductVo; +import cc.iotkit.manager.dto.vo.ruleinfo.RuleInfoVo; import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo; import cc.iotkit.manager.model.vo.FindDeviceVo; import cc.iotkit.manager.model.vo.SpaceDeviceVo; import cc.iotkit.manager.service.*; +import cc.iotkit.model.InvokeResult; import cc.iotkit.model.UserInfo; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.product.Category; @@ -67,9 +76,14 @@ public class SpaceDeviceController { @Autowired private DataOwnerService dataOwnerService; @Autowired + private IRuleEngineService ruleEngineService; + @Autowired private IUserInfoData userInfoData; @Autowired private IDeviceManagerService deviceServiceImpl; + //赋予应用端设备的服务和属性设置,关于应用的接口及相关权限设计后续完善,先打通链路 + @Autowired + private DeviceCtrlService deviceCtrlService; /** * 我最近使用的设备列表 @@ -81,6 +95,15 @@ public class SpaceDeviceController { return null; } + @ApiOperation("设备日志") + @PostMapping("/deviceLogs") + public Paging logs(@Validated @RequestBody PageRequest request) { + Home home = homeService.findByUserIdAndCurrent(LoginHelper.getUserId(), true); + List spaceDevices = spaceDeviceService.findByHomeId(home.getId()); + List devIds=spaceDevices.stream().map((spaceDevice->spaceDevice.getDeviceId())).collect(Collectors.toList()); + return spaceDeviceService.findByTypeAndDeviceIds(devIds,request.getData().getType(),"",request.getPageNum(),request.getPageSize()); + } + /** * 获取用户收藏设备列表 */ @@ -91,6 +114,8 @@ public class SpaceDeviceController { return spaceDevices.stream().map((this::parseSpaceDevice)).collect(Collectors.toList()); } + + /** * 收藏/取消收藏设备 */ @@ -140,6 +165,7 @@ public class SpaceDeviceController { .deviceId(sd.getDeviceId()) .deviceName(device.getDeviceName()) .name(sd.getName()) + .createTime(sd.getCreateTime()) .spaceId(sd.getSpaceId()) .spaceName(space.getName()) .productKey(device.getProductKey()) @@ -180,6 +206,7 @@ public class SpaceDeviceController { List findDeviceVos = new ArrayList<>(); DeviceInfo query=new DeviceInfo(); query.setDeviceName(mac); + query.setState(null); List devices = deviceInfoData.findAllByCondition(query); if(devices == null){ return findDeviceVos; @@ -223,6 +250,51 @@ public class SpaceDeviceController { return deviceServiceImpl.getDetail(request.getData()); } + @ApiOperation("保存规则") + @PostMapping("/saveRuleEngine") + public boolean saveRuleEngine(@RequestBody @Validated Request ruleInfoBo) { + return ruleEngineService.saveRule(ruleInfoBo.getData()); + } + + @ApiOperation("删除规则") + @PostMapping("/delRuleEngine") + public boolean delRuleEngine(@Validated @RequestBody Request request) { + String ruleId = request.getData(); + return ruleEngineService.deleteRule(ruleId); + } + + @ApiOperation("停止规则") + @PostMapping("/stopRuleEngine") + public boolean stopRuleEngine(@Validated @RequestBody Request request) { + String ruleId = request.getData(); + return ruleEngineService.pauseRule(ruleId); + } + + @ApiOperation("恢复规则") + @PostMapping("/startRuleEngine") + public boolean startRuleEngine(@Validated @RequestBody Request request) { + String ruleId = request.getData(); + return ruleEngineService.resumeRule(ruleId); + } + + @ApiOperation("规则列表") + @PostMapping("/ruleEngineList") + public Paging ruleEngineList(@Validated @RequestBody PageRequest request) { + return ruleEngineService.selectPageList(request); + } + + @ApiOperation("调用设备服务") + @PostMapping("/invokeService") + public InvokeResult invokeService(@RequestBody @Validated Request request) { + return new InvokeResult(deviceCtrlService.invokeService(request.getData().getDeviceId(), request.getData().getService(), request.getData().getArgs())); + } + + @ApiOperation(value = "设备属性设置") + @PostMapping("/setProperty") + public InvokeResult setProperty(@RequestBody @Validated Request request) { + return new InvokeResult(deviceCtrlService.setProperty(request.getData().getDeviceId(), request.getData().getArgs())); + } + /** * REMOVE_DEVICE * 往指定房间中添加设备 @@ -286,15 +358,15 @@ public class SpaceDeviceController { /** * 移除房间中的设备 */ - @DeleteMapping(Constants.API_SPACE.REMOVE_DEVICE) - public void removeDevice(String deviceId) { - SpaceDevice spaceDevice = spaceDeviceService.findByDeviceId(deviceId); + @PostMapping(Constants.API_SPACE.REMOVE_DEVICE) + public void removeDevice(@RequestBody @Validated Request request) { + SpaceDevice spaceDevice = spaceDeviceService.findByDeviceId(request.getData()); if (spaceDevice == null) { throw new BizException(ErrCode.SPACE_DEVICE_NOT_FOUND); } spaceDeviceService.deleteById(spaceDevice.getId()); - DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(deviceId); + DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(request.getData()); UserInfo userInfo = userInfoData.findById(LoginHelper.getUserId()); if (userInfo == null) { throw new BizException(ErrCode.USER_NOT_FOUND); diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java index 97d2d211..dd7d8e79 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java @@ -13,6 +13,7 @@ import cc.iotkit.common.constant.Constants; import cc.iotkit.common.enums.ErrCode; import cc.iotkit.common.exception.BizException; import cc.iotkit.common.satoken.utils.AuthUtil; +import cc.iotkit.common.satoken.utils.LoginHelper; import cc.iotkit.common.utils.ReflectUtil; import cc.iotkit.data.manager.IHomeData; import cc.iotkit.data.manager.ISpaceData; @@ -128,6 +129,11 @@ public class UserInfoController { userInfoData.deleteById(id); } + @PostMapping("/getUserInfo") + public UserInfo getUserInfo() { + return userInfoData.findById(LoginHelper.getUserId()); + } + @PostMapping("/client/user/save") public void saveClientUser(@RequestBody UserInfo user) { UserInfo oldUser = userInfoData.findById(user.getId()); diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java index 97684427..79c3142a 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java @@ -79,4 +79,7 @@ public class DeviceInfoVo implements Serializable { @ApiModelProperty(value = "所属分组") private Map group; + @ApiModelProperty(value = "位置信息") + private DeviceInfo.Locate locate; + } diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/model/vo/SpaceDeviceVo.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/model/vo/SpaceDeviceVo.java index fd7ce45c..3e30a244 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/model/vo/SpaceDeviceVo.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/model/vo/SpaceDeviceVo.java @@ -14,6 +14,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -85,6 +86,11 @@ public class SpaceDeviceVo { */ private String categoryName; + /** + * 创建时间 + */ + private Date createTime; + /** * 是否收藏 */ diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ISpaceDeviceService.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ISpaceDeviceService.java index 1cd50136..64ac89f6 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ISpaceDeviceService.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ISpaceDeviceService.java @@ -1,5 +1,7 @@ package cc.iotkit.manager.service; +import cc.iotkit.common.api.Paging; +import cc.iotkit.common.thing.ThingModelMessage; import cc.iotkit.model.space.SpaceDevice; import java.util.List; @@ -23,4 +25,8 @@ public interface ISpaceDeviceService { void deleteById (Long id); SpaceDevice findById (Long id); + + Paging findByTypeAndDeviceIds(List deviceIds, String type, + String identifier, + int page, int size); } diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/SpaceDeviceServiceImpl.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/SpaceDeviceServiceImpl.java index 86732691..760cd50d 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/SpaceDeviceServiceImpl.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/SpaceDeviceServiceImpl.java @@ -1,8 +1,14 @@ package cc.iotkit.manager.service.impl; +import cc.iotkit.common.api.Paging; +import cc.iotkit.common.enums.ErrCode; +import cc.iotkit.common.exception.BizException; +import cc.iotkit.common.thing.ThingModelMessage; +import cc.iotkit.common.utils.StringUtils; import cc.iotkit.data.manager.ISpaceDeviceData; import cc.iotkit.manager.service.ISpaceDeviceService; import cc.iotkit.model.space.SpaceDevice; +import cc.iotkit.temporal.IThingModelMessageData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,6 +24,9 @@ public class SpaceDeviceServiceImpl implements ISpaceDeviceService { @Autowired private ISpaceDeviceData spaceDeviceData; + @Autowired + private IThingModelMessageData thingModelMessageData; + @Override public List findByHomeIdAndCollect(Long homeId, boolean collect) { return spaceDeviceData.findByHomeIdAndCollect(homeId,collect); @@ -52,4 +61,12 @@ public class SpaceDeviceServiceImpl implements ISpaceDeviceService { public SpaceDevice findById(Long id) { return spaceDeviceData.findById(id); } + + @Override + public Paging findByTypeAndDeviceIds(List deviceIds, String type, String identifier, int page, int size) { + if(StringUtils.isEmpty(type)){ + throw new BizException(ErrCode.PARAMS_EXCEPTION); + } + return thingModelMessageData.findByTypeAndDeviceIds(deviceIds,type,identifier,page,size); + } } diff --git a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java index 841d6a93..672daa5c 100644 --- a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java +++ b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java @@ -149,9 +149,7 @@ public class SysLoginService { if(sysApp==null){ throw new BizException("该应用未授权注册"); } - String url=authUrl+"?appid="+appId+"&secret="+sysApp.getAppSecret()+"&js_code="+xcxCode+"&grant_type=authorization_code"; - String ret=WeChatUtil.httpRequest(url,"GET",null); - String openid = JsonUtils.parseMap(ret).getStr("openid"); + String openid = WeChatUtil.getOpenId(appId,sysApp.getAppSecret(),xcxCode); UserInfo user = null; LoginHelper.setTenantId(sysApp.getTenantId()); try { @@ -319,6 +317,7 @@ public class SysLoginService { user.setType(UserInfo.USER_TYPE_CLIENT); user.setUid(openid); user.setRoles(Collections.singletonList(Constants.ROLE_CLIENT)); + user.setNickName("微信用户"); user.setSecret(AuthUtil.enCryptPwd(Constants.PWD_CLIENT_USER)); user.setTenantId(tenantId); user = userInfoData.save(user);