package com.java110.common.cmd.machine; import com.alibaba.fastjson.JSONObject; import com.java110.core.annotation.Java110Cmd; import com.java110.core.context.CmdContextUtils; import com.java110.core.context.ICmdDataFlowContext; import com.java110.core.event.cmd.Cmd; import com.java110.core.event.cmd.CmdEvent; import com.java110.dto.IotDataDto; import com.java110.dto.machine.MachineDto; import com.java110.dto.owner.OwnerAppUserDto; import com.java110.dto.owner.OwnerDto; import com.java110.dto.user.UserDto; import com.java110.intf.common.IMachineInnerServiceSMO; import com.java110.intf.common.IMachineV1InnerServiceSMO; import com.java110.intf.job.IDataBusInnerServiceSMO; import com.java110.intf.job.IIotInnerServiceSMO; import com.java110.intf.user.IOwnerAppUserV1InnerServiceSMO; import com.java110.intf.user.IOwnerInnerServiceSMO; import com.java110.intf.user.IUserInnerServiceSMO; import com.java110.intf.user.IUserV1InnerServiceSMO; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.utils.util.ListUtil; import com.java110.vo.ResultVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import java.text.ParseException; import java.util.List; /** * 设备 二维码生成 */ @Java110Cmd(serviceCode = "/machine/getQRcode") public class GetQRcodeCmd extends Cmd { @Autowired IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl; @Autowired private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl; @Autowired private IMachineInnerServiceSMO machineV1InnerServiceSMOImpl; @Autowired private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl; @Autowired private IIotInnerServiceSMO iotInnerServiceSMOImpl; @Autowired private IOwnerAppUserV1InnerServiceSMO ownerAppUserV1InnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息"); Assert.hasKeyAndValue(reqJson, "machineCode", "请求报文中未包含设备信息"); } @Override public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { ResponseEntity responseEntity = null; String userId = CmdContextUtils.getUserId(context); OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto(); ownerAppUserDto.setUserId(userId); List ownerAppUserDtos = ownerAppUserV1InnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto); if(ListUtil.isNull(ownerAppUserDtos)){ throw new CmdException("未认证业主"); } String memberId = ownerAppUserDtos.get(0).getMemberId(); if("-1".equals(memberId)){ throw new CmdException("未认证业主"); } //todo 如果是业主 限制开门次数 OwnerDto ownerDto = new OwnerDto(); ownerDto.setMemberId(memberId); ownerDto.setCommunityId(reqJson.getString("communityId")); List ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto); if (ListUtil.isNull(ownerDtos)) { throw new CmdException("没有权限开门"); } //todo 校验设备到底在不在,不在就报错!!! reqJson.put("link",ownerDtos.get(0).getLink()); ResultVo resultVo = iotInnerServiceSMOImpl.postIotData(new IotDataDto("getAccessControlQrcodeBmoImpl", reqJson)); if (resultVo.getCode() != ResultVo.CODE_OK) { throw new CmdException(resultVo.getMsg()); } context.setResponseEntity(ResultVo.createResponseEntity(resultVo)); } }