| | |
| | | import com.java110.core.event.cmd.Cmd; |
| | | import com.java110.core.event.cmd.CmdEvent; |
| | | import com.java110.doc.annotation.*; |
| | | import com.java110.dto.community.CommunityLocationDto; |
| | | import com.java110.dto.machine.MachineDto; |
| | | import com.java110.dto.owner.OwnerDto; |
| | | import com.java110.dto.owner.OwnerRoomRelDto; |
| | | import com.java110.dto.room.RoomDto; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.intf.common.IMachineV1InnerServiceSMO; |
| | | import com.java110.intf.community.IRoomV1InnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerV1InnerServiceSMO; |
| | | import com.java110.intf.user.IUserV1InnerServiceSMO; |
| | | import com.java110.utils.exception.CmdException; |
| | | import com.java110.utils.util.Assert; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import java.text.ParseException; |
| | | |
| | | import java.util.List; |
| | | |
| | | |
| | | @Java110CmdDoc(title = "门禁二维码核验接口", |
| | |
| | | |
| | | @Java110ParamsDoc( |
| | | headers = { |
| | | @Java110HeaderDoc(name="APP-ID",defaultValue = "通过dev账户分配应用",description = "应用APP-ID"), |
| | | @Java110HeaderDoc(name="TRANSACTION-ID",defaultValue = "uuid",description = "交易流水号"), |
| | | @Java110HeaderDoc(name="REQ-TIME",defaultValue = "20220917120915",description = "请求时间 YYYYMMDDhhmmss"), |
| | | @Java110HeaderDoc(name="JAVA110-LANG",defaultValue = "zh-cn",description = "语言中文"), |
| | | @Java110HeaderDoc(name="USER-ID",defaultValue = "-1",description = "调用用户ID 一般写-1"), |
| | | @Java110HeaderDoc(name = "APP-ID", defaultValue = "通过dev账户分配应用", description = "应用APP-ID"), |
| | | @Java110HeaderDoc(name = "TRANSACTION-ID", defaultValue = "uuid", description = "交易流水号"), |
| | | @Java110HeaderDoc(name = "REQ-TIME", defaultValue = "20220917120915", description = "请求时间 YYYYMMDDhhmmss"), |
| | | @Java110HeaderDoc(name = "JAVA110-LANG", defaultValue = "zh-cn", description = "语言中文"), |
| | | @Java110HeaderDoc(name = "USER-ID", defaultValue = "-1", description = "调用用户ID 一般写-1"), |
| | | }, |
| | | params = { |
| | | @Java110ParamDoc(name = "qrCode", length = 30, remark = "二维码"), |
| | |
| | | @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "返回编号,0 成功 其他失败"), |
| | | @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "成功", remark = "描述"), |
| | | @Java110ParamDoc(name = "data", type = "Object", remark = "有效数据"), |
| | | @Java110ParamDoc(parentNodeName = "data",name = "userName", type = "String", remark = "用户名称"), |
| | | @Java110ParamDoc(parentNodeName = "data", name = "userName", type = "String", remark = "用户名称"), |
| | | } |
| | | ) |
| | | |
| | | @Java110ExampleDoc( |
| | | reqBody="{'qrCode':'wuxw','machineCode':'admin'}", |
| | | resBody="{'code':0,'msg':'成功','data':{'userName':'123123'}}" |
| | | reqBody = "{'qrCode':'wuxw','machineCode':'admin'}", |
| | | resBody = "{'code':0,'msg':'成功','data':{'userName':'123123'}}" |
| | | ) |
| | | /** |
| | | * 门禁二维码核验接口 |
| | | */ |
| | | @Java110Cmd(serviceCode = "machine.accessControlQrcodeVerification") |
| | | public class AccessControlQrcodeVerificationCmd extends Cmd { |
| | | |
| | | @Autowired |
| | | private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IMachineV1InnerServiceSMO machineV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl; |
| | | |
| | | |
| | | @Autowired |
| | | private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { |
| | | |
| | |
| | | @Override |
| | | public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { |
| | | |
| | | //todo 查询设备信息 |
| | | MachineDto machineDto = new MachineDto(); |
| | | machineDto.setMachineCode(reqJson.getString("machineCode")); |
| | | List<MachineDto> machineDtos = machineV1InnerServiceSMOImpl.queryMachines(machineDto); |
| | | if (machineDtos == null || machineDtos.size() < 1) { |
| | | throw new IllegalArgumentException("设备不存在"); |
| | | } |
| | | |
| | | String userId = userV1InnerServiceSMOImpl.getUserIdByQrCode(reqJson.getString("qrCode")); |
| | | |
| | | Assert.hasLength(userId, "二维码错误"); |
| | | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(userId); |
| | | List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); |
| | | |
| | | Assert.listOnlyOne(userDtos, "用户不存在"); |
| | | |
| | | |
| | | boolean openDoor = false; |
| | | //todo 判断是否为业主 |
| | | openDoor = hasOwnerRole(machineDtos.get(0), userDtos.get(0)); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 判断是否是业主角色 |
| | | * |
| | | * @param machineDto |
| | | * @param userDto |
| | | * @return |
| | | */ |
| | | private boolean hasOwnerRole(MachineDto machineDto, UserDto userDto) { |
| | | OwnerDto ownerDto = new OwnerDto(); |
| | | ownerDto.setLink(userDto.getTel()); |
| | | ownerDto.setCommunityId(machineDto.getMachineCode()); |
| | | List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto); |
| | | if (ownerDtos == null || ownerDtos.size() < 1) {//todo 是业主 |
| | | return false; |
| | | } |
| | | |
| | | //在小区位置 |
| | | if (CommunityLocationDto.LOCAL_TYPE_COMMUNITY.equals(machineDto.getLocationType())) { |
| | | return true; |
| | | } |
| | | |
| | | //todo 在单元门位置 |
| | | if (!CommunityLocationDto.LOCAL_TYPE_UNIT.equals(machineDto.getMachineTypeCd())) { |
| | | return false; |
| | | } |
| | | |
| | | |
| | | OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); |
| | | ownerRoomRelDto.setOwnerId(ownerDtos.get(0).getOwnerId()); |
| | | ownerRoomRelDto.setCommunityId(ownerDtos.get(0).getCommunityId()); |
| | | List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); |
| | | |
| | | if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) { |
| | | return false; |
| | | } |
| | | RoomDto roomDto = null; |
| | | int count = 0; |
| | | for (OwnerRoomRelDto tmpOwnerRoomRelDto : ownerRoomRelDtos) { |
| | | roomDto = new RoomDto(); |
| | | roomDto.setRoomId(tmpOwnerRoomRelDto.getRoomId()); |
| | | roomDto.setUnitId(machineDto.getLocationObjId()); |
| | | count = roomV1InnerServiceSMOImpl.queryRoomsCount(roomDto); |
| | | if (count > 0) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | } |