14 changed files with 242 additions and 17 deletions
-
9storeroom/pom.xml
-
21storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/websoket/NettyConfig.java
-
2storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/websoket/NettyServer.java
-
50storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/websoket/ServerChannelCache.java
-
14storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/websoket/WebSocketHandler.java
-
3storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java
-
39storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java
-
68storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/SecurityDoor.java
-
9storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/SecurityDoorRepository.java
-
2storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/AlarmInfoService.java
-
8storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/SecurityDoorService.java
-
7storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java
-
23storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/SecurityDoorServiceImpl.java
-
4storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/ThirdApiServiceImpl.java
@ -0,0 +1,50 @@ |
|||||
|
package com.storeroom.modules.storeroom3d.config.websoket; |
||||
|
|
||||
|
import org.springframework.stereotype.Component; |
||||
|
import io.netty.channel.Channel; |
||||
|
import io.netty.util.AttributeKey; |
||||
|
|
||||
|
import java.util.HashMap; |
||||
|
import java.util.concurrent.ConcurrentHashMap; |
||||
|
|
||||
|
@Component |
||||
|
public class ServerChannelCache { |
||||
|
|
||||
|
|
||||
|
private static final ConcurrentHashMap<String, HashMap<String, Channel>> CACHE_MAP = new ConcurrentHashMap<>(); |
||||
|
private static final AttributeKey<String> CHANNEL_ATTR_KEY = AttributeKey.valueOf("test"); |
||||
|
|
||||
|
public String getCacheId(Channel channel) { |
||||
|
return channel.attr(CHANNEL_ATTR_KEY).get(); |
||||
|
} |
||||
|
|
||||
|
public void add(String cacheId, Channel channel) { |
||||
|
channel.attr(CHANNEL_ATTR_KEY).set(cacheId); |
||||
|
HashMap<String, Channel> hashMap = CACHE_MAP.get(cacheId); |
||||
|
if (hashMap == null) { |
||||
|
hashMap = new HashMap<>(); |
||||
|
} |
||||
|
hashMap.put(channel.id().asShortText(), channel); |
||||
|
CACHE_MAP.put(cacheId, hashMap); |
||||
|
} |
||||
|
|
||||
|
public HashMap<String, Channel> get(String cacheId) { |
||||
|
if (cacheId == null) { |
||||
|
return null; |
||||
|
} |
||||
|
return CACHE_MAP.get(cacheId); |
||||
|
} |
||||
|
|
||||
|
public void remove(Channel channel) { |
||||
|
String cacheId = getCacheId(channel); |
||||
|
if (cacheId == null) { |
||||
|
return; |
||||
|
} |
||||
|
HashMap<String, Channel> hashMap = CACHE_MAP.get(cacheId); |
||||
|
if (hashMap == null) { |
||||
|
hashMap = new HashMap<>(); |
||||
|
} |
||||
|
hashMap.remove(channel.id().asShortText()); |
||||
|
CACHE_MAP.put(cacheId, hashMap); |
||||
|
} |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
package com.storeroom.modules.storeroom3d.controller; |
||||
|
|
||||
|
|
||||
|
import com.storeroom.annotaion.rest.AnonymousPostMapping; |
||||
|
import com.storeroom.exception.BaseException; |
||||
|
import com.storeroom.modules.storeroom3d.domain.SecurityDoor; |
||||
|
import com.storeroom.modules.storeroom3d.service.SecurityDoorService; |
||||
|
import com.storeroom.utils.ApiResponse; |
||||
|
import com.storeroom.utils.StringUtils; |
||||
|
import com.storeroom.utils.enums.ResponseStatus; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import org.springframework.util.ObjectUtils; |
||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
@RestController |
||||
|
@RequestMapping("/api/securitydoor/") |
||||
|
@Api(tags = "门禁日志管理") |
||||
|
@RequiredArgsConstructor |
||||
|
public class SecurityDoorController { |
||||
|
|
||||
|
private final SecurityDoorService securityDoorService; |
||||
|
|
||||
|
@ApiOperation("创建记录") |
||||
|
@AnonymousPostMapping("create") |
||||
|
public ApiResponse<Object> create(@RequestBody SecurityDoor securityDoor) { |
||||
|
if (StringUtils.isEmpty(securityDoor.getDeviceId()) |
||||
|
&& StringUtils.isEmpty(securityDoor.getTid()) |
||||
|
&& StringUtils.isEmpty(securityDoor.getAlarmMsg()) |
||||
|
&& ObjectUtils.isEmpty(securityDoor.getAlarmLevel())) { |
||||
|
throw new BaseException("必填字段不能为空"); |
||||
|
} |
||||
|
securityDoorService.create(securityDoor); |
||||
|
return ApiResponse.success(ResponseStatus.SUCCESS); |
||||
|
} |
||||
|
} |
@ -0,0 +1,68 @@ |
|||||
|
package com.storeroom.modules.storeroom3d.domain; |
||||
|
|
||||
|
|
||||
|
import com.storeroom.base.BaseEntity; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Getter; |
||||
|
import lombok.Setter; |
||||
|
|
||||
|
import javax.persistence.Column; |
||||
|
import javax.persistence.Entity; |
||||
|
import javax.persistence.Id; |
||||
|
import javax.persistence.Table; |
||||
|
import javax.validation.constraints.NotNull; |
||||
|
import java.io.Serializable; |
||||
|
import java.util.Objects; |
||||
|
|
||||
|
@Entity |
||||
|
@Getter |
||||
|
@Setter |
||||
|
@Table(name = "security_door") |
||||
|
public class SecurityDoor extends BaseEntity implements Serializable { |
||||
|
|
||||
|
|
||||
|
@Id |
||||
|
@Column(name = "id") |
||||
|
@NotNull(groups = BaseEntity.Update.class) |
||||
|
@ApiModelProperty(value = "id", hidden = true) |
||||
|
private String id; |
||||
|
|
||||
|
|
||||
|
@Column(name = "device_id") |
||||
|
@ApiModelProperty(value = "设备id",hidden = true) |
||||
|
private String deviceId; |
||||
|
|
||||
|
@Column(name = "tid") |
||||
|
@ApiModelProperty(value = "标签id",hidden = true) |
||||
|
private String tid; |
||||
|
|
||||
|
@Column(name = "alarm_event") |
||||
|
@ApiModelProperty(value = "0:出门;1:进门",hidden = true) |
||||
|
private Integer alarmEvent; |
||||
|
|
||||
|
@Column(name = "user_id") |
||||
|
@ApiModelProperty(value = "用户id",hidden = true) |
||||
|
private Integer userId; |
||||
|
|
||||
|
|
||||
|
@Column(name = "alarm_level") |
||||
|
@ApiModelProperty(value = "0:异常;1:正常",hidden = true) |
||||
|
private Integer alarmLevel; |
||||
|
|
||||
|
@Column(name = "alarm_msg") |
||||
|
@ApiModelProperty(value = "描述",hidden = true) |
||||
|
private String alarmMsg; |
||||
|
|
||||
|
@Override |
||||
|
public boolean equals(Object o) { |
||||
|
if (this == o) return true; |
||||
|
if (o == null || getClass() != o.getClass()) return false; |
||||
|
SecurityDoor that = (SecurityDoor) o; |
||||
|
return Objects.equals(id, that.id) && Objects.equals(deviceId, that.deviceId) && Objects.equals(tid, that.tid) && Objects.equals(alarmEvent, that.alarmEvent) && Objects.equals(userId, that.userId) && Objects.equals(alarmLevel, that.alarmLevel) && Objects.equals(alarmMsg, that.alarmMsg); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public int hashCode() { |
||||
|
return Objects.hash(id, deviceId, tid, alarmEvent, userId, alarmLevel, alarmMsg); |
||||
|
} |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
package com.storeroom.modules.storeroom3d.repository; |
||||
|
|
||||
|
|
||||
|
import com.storeroom.modules.storeroom3d.domain.SecurityDoor; |
||||
|
import org.springframework.data.jpa.repository.JpaRepository; |
||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; |
||||
|
|
||||
|
public interface SecurityDoorRepository extends JpaRepository<SecurityDoor, String>, JpaSpecificationExecutor<SecurityDoor> { |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
package com.storeroom.modules.storeroom3d.service; |
||||
|
|
||||
|
import com.storeroom.modules.storeroom3d.domain.SecurityDoor; |
||||
|
|
||||
|
public interface SecurityDoorService { |
||||
|
|
||||
|
void create(SecurityDoor securityDoor); |
||||
|
} |
@ -0,0 +1,23 @@ |
|||||
|
package com.storeroom.modules.storeroom3d.service.impl; |
||||
|
|
||||
|
import com.storeroom.modules.storeroom3d.domain.SecurityDoor; |
||||
|
import com.storeroom.modules.storeroom3d.repository.SecurityDoorRepository; |
||||
|
import com.storeroom.modules.storeroom3d.service.SecurityDoorService; |
||||
|
import com.storeroom.utils.NanoIdUtils; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
|
||||
|
@Service |
||||
|
@RequiredArgsConstructor |
||||
|
public class SecurityDoorServiceImpl implements SecurityDoorService { |
||||
|
|
||||
|
|
||||
|
private final SecurityDoorRepository securityDoorRepository; |
||||
|
|
||||
|
@Override |
||||
|
public void create(SecurityDoor securityDoor) { |
||||
|
securityDoor.setId(NanoIdUtils.randomNanoId()); |
||||
|
securityDoorRepository.save(securityDoor); |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue