刘力
3 years ago
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