diff --git a/ncc/pom.xml b/ncc/pom.xml index 0d6d71001..4cbd49091 100644 --- a/ncc/pom.xml +++ b/ncc/pom.xml @@ -32,6 +32,11 @@ jl-ecs 0.1 + + junit + junit + test + diff --git a/ncc/src/main/java/club/joylink/ncc/constants/NccTypeEnum.java b/ncc/src/main/java/club/joylink/ncc/constants/NccTypeEnum.java new file mode 100644 index 000000000..1daf5302a --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/constants/NccTypeEnum.java @@ -0,0 +1,5 @@ +package club.joylink.ncc.constants; + +public class NccTypeEnum { + +} diff --git a/ncc/src/main/java/club/joylink/ncc/controller/NccManageController.java b/ncc/src/main/java/club/joylink/ncc/controller/NccManageController.java new file mode 100644 index 000000000..444cdef42 --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/controller/NccManageController.java @@ -0,0 +1,29 @@ +package club.joylink.ncc.controller; + +import club.joylink.ncc.services.MapDataService; +import club.joylink.ncc.vo.NccMapDataVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/ncc/manage") +public class NccManageController { + @Autowired + private MapDataService mapDataService; + + @PostMapping("saveOrUpdate") + public void saveOrUpdate(@RequestBody NccMapDataVO dataVO){ + this.mapDataService.saveOrUpdate(dataVO); + } + + @GetMapping() + public NccMapDataVO findId(Long id){ + return this.mapDataService.findById(id); + } + + @GetMapping("/{id}/change/{state}") + public void changeState(@PathVariable("id") Long id, @PathVariable("state") NccMapDataVO.MapDataEnum state){ + this.mapDataService.changeState(id,state); + } + +} diff --git a/ncc/src/main/java/club/joylink/ncc/dao/NccMapDataDAO.java b/ncc/src/main/java/club/joylink/ncc/dao/NccMapDataDAO.java new file mode 100644 index 000000000..34f37b7bf --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/dao/NccMapDataDAO.java @@ -0,0 +1,40 @@ +package club.joylink.ncc.dao; + +import club.joylink.ncc.entity.NccMapData; +import club.joylink.ncc.entity.NccMapDataExample; +import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface NccMapDataDAO { + long countByExample(NccMapDataExample example); + + int deleteByExample(NccMapDataExample example); + + int deleteByPrimaryKey(Long id); + + int insert(NccMapData record); + + int insertSelective(NccMapData record); + + List selectByExampleWithBLOBs(NccMapDataExample example); + + List selectByExample(NccMapDataExample example); + + NccMapData selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") NccMapData record, @Param("example") NccMapDataExample example); + + int updateByExampleWithBLOBs(@Param("record") NccMapData record, @Param("example") NccMapDataExample example); + + int updateByExample(@Param("record") NccMapData record, @Param("example") NccMapDataExample example); + + int updateByPrimaryKeySelective(NccMapData record); + + int updateByPrimaryKeyWithBLOBs(NccMapData record); + + int updateByPrimaryKey(NccMapData record); +} diff --git a/ncc/src/main/java/club/joylink/ncc/entity/NccMapData.java b/ncc/src/main/java/club/joylink/ncc/entity/NccMapData.java new file mode 100644 index 000000000..04c6ae9c3 --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/entity/NccMapData.java @@ -0,0 +1,32 @@ +package club.joylink.ncc.entity; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import club.joylink.ncc.vo.NccMapDataVO; +import lombok.Data; + +/** + * @author + * + */ +@Data +public class NccMapData implements Serializable { + private Long id; + + private String name; + + private LocalDateTime createTime; + + private LocalDateTime updateTime; + + /** + * 状态0=发布,1=编辑,2=删除 + */ + private NccMapDataVO.MapDataEnum state; + + private byte[] mapData; + + private static final long serialVersionUID = 1L; +} diff --git a/ncc/src/main/java/club/joylink/ncc/entity/NccMapDataExample.java b/ncc/src/main/java/club/joylink/ncc/entity/NccMapDataExample.java new file mode 100644 index 000000000..146675e4b --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/entity/NccMapDataExample.java @@ -0,0 +1,543 @@ +package club.joylink.ncc.entity; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class NccMapDataExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + private Integer limit; + + private Long offset; + + public NccMapDataExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + public void setLimit(Integer limit) { + this.limit = limit; + } + + public Integer getLimit() { + return limit; + } + + public void setOffset(Long offset) { + this.offset = offset; + } + + public Long getOffset() { + return offset; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("`name` is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("`name` is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("`name` =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("`name` <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("`name` >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("`name` >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("`name` <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("`name` <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("`name` like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("`name` not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("`name` in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("`name` not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("`name` between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("`name` not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Date value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Date value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Date value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Date value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Date value1, Date value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andStateIsNull() { + addCriterion("`state` is null"); + return (Criteria) this; + } + + public Criteria andStateIsNotNull() { + addCriterion("`state` is not null"); + return (Criteria) this; + } + + public Criteria andStateEqualTo(String value) { + addCriterion("`state` =", value, "state"); + return (Criteria) this; + } + + public Criteria andStateNotEqualTo(String value) { + addCriterion("`state` <>", value, "state"); + return (Criteria) this; + } + + public Criteria andStateGreaterThan(String value) { + addCriterion("`state` >", value, "state"); + return (Criteria) this; + } + + public Criteria andStateGreaterThanOrEqualTo(String value) { + addCriterion("`state` >=", value, "state"); + return (Criteria) this; + } + + public Criteria andStateLessThan(String value) { + addCriterion("`state` <", value, "state"); + return (Criteria) this; + } + + public Criteria andStateLessThanOrEqualTo(String value) { + addCriterion("`state` <=", value, "state"); + return (Criteria) this; + } + + public Criteria andStateLike(String value) { + addCriterion("`state` like", value, "state"); + return (Criteria) this; + } + + public Criteria andStateNotLike(String value) { + addCriterion("`state` not like", value, "state"); + return (Criteria) this; + } + + public Criteria andStateIn(List values) { + addCriterion("`state` in", values, "state"); + return (Criteria) this; + } + + public Criteria andStateNotIn(List values) { + addCriterion("`state` not in", values, "state"); + return (Criteria) this; + } + + public Criteria andStateBetween(String value1, String value2) { + addCriterion("`state` between", value1, value2, "state"); + return (Criteria) this; + } + + public Criteria andStateNotBetween(String value1, String value2) { + addCriterion("`state` not between", value1, value2, "state"); + return (Criteria) this; + } + } + + /** + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} diff --git a/ncc/src/main/java/club/joylink/ncc/services/EcsSystem.java b/ncc/src/main/java/club/joylink/ncc/services/EcsSystem.java new file mode 100644 index 000000000..329343f7b --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/services/EcsSystem.java @@ -0,0 +1,9 @@ +package club.joylink.ncc.services; + +import club.joylink.ecs.World; + +public interface EcsSystem { + void addSystem(World world); + Object type(); + +} diff --git a/ncc/src/main/java/club/joylink/ncc/services/MapDataService.java b/ncc/src/main/java/club/joylink/ncc/services/MapDataService.java new file mode 100644 index 000000000..454a2bd8d --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/services/MapDataService.java @@ -0,0 +1,13 @@ +package club.joylink.ncc.services; + +import club.joylink.ncc.entity.NccMapData; +import club.joylink.ncc.vo.NccMapDataVO; + +public interface MapDataService { + NccMapDataVO findById(Long id); + + void saveOrUpdate(NccMapDataVO mapDataVO); + + void changeState(Long id, NccMapDataVO.MapDataEnum state); + +} diff --git a/ncc/src/main/java/club/joylink/ncc/services/impl/MapDataServiceImpl.java b/ncc/src/main/java/club/joylink/ncc/services/impl/MapDataServiceImpl.java new file mode 100644 index 000000000..3486db42b --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/services/impl/MapDataServiceImpl.java @@ -0,0 +1,65 @@ +package club.joylink.ncc.services.impl; + +import club.joylink.exception.BusinessExceptionAssertEnum; +import club.joylink.ncc.dao.NccMapDataDAO; +import club.joylink.ncc.entity.NccMapData; +import club.joylink.ncc.services.MapDataService; +import club.joylink.ncc.vo.NccMapDataVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.Objects; + +@Service +@Slf4j +@Transactional +public class MapDataServiceImpl implements MapDataService { + + @Autowired + private NccMapDataDAO nccMapDataDAO; + + private NccMapData byId(Long id){ + BusinessExceptionAssertEnum.DATA_ERROR.assertTrue(Objects.nonNull(id),"id信息不能为空"); + NccMapData nccMapData = this.nccMapDataDAO.selectByPrimaryKey(id); + BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(Objects.nonNull(nccMapData),"未找到对应的数据"); + return nccMapData; + } + @Override + public NccMapDataVO findById(Long id) { + NccMapData mapData = this.byId(id); + return new NccMapDataVO(mapData); + } + + @Override + public void saveOrUpdate(NccMapDataVO mapDataVO) { + BusinessExceptionAssertEnum.DATA_ERROR.assertTrue(Objects.nonNull(mapDataVO.getName()),"名称信息不能为空"); + NccMapData mapData = mapDataVO.convert(); + + LocalDateTime dateTime = LocalDateTime.now(); + if(Objects.nonNull(mapData.getId())){ + mapData = this.byId(mapData.getId()); + + mapData.setMapData(mapData.getMapData()); + mapData.setUpdateTime(dateTime); + this.nccMapDataDAO.updateByPrimaryKey(mapData); + }else{ + mapData.setState(NccMapDataVO.MapDataEnum.EDIT); + mapData.setCreateTime(dateTime); + mapData.setUpdateTime(dateTime); + this.nccMapDataDAO.insert(mapData); + } + } + + @Override + public void changeState(Long id, NccMapDataVO.MapDataEnum state) { + this.byId(id); + NccMapData newData = new NccMapData(); + newData.setId(id); + newData.setUpdateTime(LocalDateTime.now()); + newData.setState(state); + this.nccMapDataDAO.updateByPrimaryKeySelective(newData); + } +} diff --git a/ncc/src/main/java/club/joylink/ncc/vo/NccMapDataVO.java b/ncc/src/main/java/club/joylink/ncc/vo/NccMapDataVO.java new file mode 100644 index 000000000..d7175b4e0 --- /dev/null +++ b/ncc/src/main/java/club/joylink/ncc/vo/NccMapDataVO.java @@ -0,0 +1,35 @@ +package club.joylink.ncc.vo; + +import club.joylink.ncc.entity.NccMapData; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class NccMapDataVO implements Serializable { + @Serial + private static final long serialVersionUID = 5757927953903823727L; + private Long id; + private String name; + private byte[] data; + private MapDataEnum state; + public NccMapDataVO(NccMapData mapData){ + this.id = mapData.getId(); + this.name = mapData.getName(); + this.data = mapData.getMapData(); + this.state = mapData.getState(); + } + + public NccMapData convert(){ + NccMapData mapData = new NccMapData(); + mapData.setMapData(this.data); + mapData.setId(this.id); + mapData.setName(this.name); + mapData.setState(this.getState()); + return mapData; + } + public enum MapDataEnum{ + PUBLISH,EDIT,DELETE; + } +} diff --git a/ncc/src/main/resources/mybatis/mapper/NccMapDataDAO.xml b/ncc/src/main/resources/mybatis/mapper/NccMapDataDAO.xml new file mode 100644 index 000000000..e2aac72b2 --- /dev/null +++ b/ncc/src/main/resources/mybatis/mapper/NccMapDataDAO.xml @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, `name`, create_time, update_time, `state` + + + map_data + + + + + + delete from ncc_map_data + where id = #{id,jdbcType=BIGINT} + + + delete from ncc_map_data + + + + + + insert into ncc_map_data (`name`, create_time, update_time, + `state`, map_data) + values (#{name,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, + #{state,jdbcType=VARCHAR}, #{mapData,jdbcType=LONGVARBINARY}) + + + insert into ncc_map_data + + + `name`, + + + create_time, + + + update_time, + + + `state`, + + + map_data, + + + + + #{name,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{state,jdbcType=VARCHAR}, + + + #{mapData,jdbcType=LONGVARBINARY}, + + + + + + update ncc_map_data + + + id = #{record.id,jdbcType=BIGINT}, + + + `name` = #{record.name,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + + + `state` = #{record.state,jdbcType=VARCHAR}, + + + map_data = #{record.mapData,jdbcType=LONGVARBINARY}, + + + + + + + + update ncc_map_data + set id = #{record.id,jdbcType=BIGINT}, + `name` = #{record.name,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + `state` = #{record.state,jdbcType=VARCHAR}, + map_data = #{record.mapData,jdbcType=LONGVARBINARY} + + + + + + update ncc_map_data + set id = #{record.id,jdbcType=BIGINT}, + `name` = #{record.name,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + `state` = #{record.state,jdbcType=VARCHAR} + + + + + + update ncc_map_data + + + `name` = #{name,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + `state` = #{state,jdbcType=VARCHAR}, + + + map_data = #{mapData,jdbcType=LONGVARBINARY}, + + + where id = #{id,jdbcType=BIGINT} + + + update ncc_map_data + set `name` = #{name,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + `state` = #{state,jdbcType=VARCHAR}, + map_data = #{mapData,jdbcType=LONGVARBINARY} + where id = #{id,jdbcType=BIGINT} + + + update ncc_map_data + set `name` = #{name,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + `state` = #{state,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + diff --git a/ncc/src/test/java/club/joylink/ncc/Data.java b/ncc/src/test/java/club/joylink/ncc/Data.java new file mode 100644 index 000000000..911bfe904 --- /dev/null +++ b/ncc/src/test/java/club/joylink/ncc/Data.java @@ -0,0 +1,79 @@ +package club.joylink.ncc; + +import club.joylink.ncc.proto.LineProto; +import club.joylink.ncc.proto.RoadSectionProto; +import club.joylink.ncc.proto.StationProto; +import club.joylink.ncc.proto.StorageProto; +import com.google.common.base.Strings; + +public class Data { + public StorageProto.Storage createStorage(){ + StorageProto.Storage.Builder storageBuild = StorageProto.Storage.newBuilder(); + createLine(storageBuild); + this.createStation(storageBuild); + this.createSection(storageBuild); + return storageBuild.build(); + } + + private void createLine(StorageProto.Storage.Builder storageBuild){ + + for(var i = 1 ; i <=1;i++){ + LineProto.Line.Builder lineBuild = LineProto.Line.newBuilder(); + String code = Strings.padStart(i + "",4,'0'); + lineBuild.setCode("line-" + code); + lineBuild.setName("line-" + code); + storageBuild.addLines(lineBuild); + } + + } + private void createStation(StorageProto.Storage.Builder storageBuild){ + for(var d = 1 ; d <= 20;d++){ + StationProto.Station.Builder stationBuild = StationProto.Station.newBuilder(); + String code = Strings.padStart(d + "",4,'0'); + String nameCode = "station-" + code; + stationBuild.setCode(nameCode); + stationBuild.setName(nameCode); + stationBuild.setTransfer(false); + if(d % 2 == 0){ + stationBuild.setTransfer(true); + } + storageBuild.addStations(stationBuild); + } + } + + + private void createSection(StorageProto.Storage.Builder storageBuild){ + String lineCode = "line-001"; + for(var i = 1 ; i <= 19;i++){ + RoadSectionProto.RoadSection.Builder section = RoadSectionProto.RoadSection.newBuilder(); + String code = Strings.padStart(i + "",4,'0'); + String nameCode = "section-" + code; + section.setCode(nameCode); + section.setName(nameCode); + + section.setLeftStationId(this.findStartStation(i)); + section.setRightStationId(this.findEndStation(i,19)); + section.setLineId(lineCode); + storageBuild.addSections(section); + } + } + private String findStartStation(int d){ + int tmpD = d; + if(d <= 1){ + tmpD = 1; + }/*else{ + --tmpD; + }*/ + String code = Strings.padStart(tmpD + "",4,'0'); + return String.format("station-%s",code); + } + + private String findEndStation(int d ,int max){ + int tmpD = d + 1; + if(d > max){ + tmpD = d; + } + String code = Strings.padStart(tmpD + "",4,'0'); + return String.format("station-%s",code); + } +} diff --git a/ncc/src/test/java/club/joylink/ncc/Service.java b/ncc/src/test/java/club/joylink/ncc/Service.java new file mode 100644 index 000000000..a26896141 --- /dev/null +++ b/ncc/src/test/java/club/joylink/ncc/Service.java @@ -0,0 +1,52 @@ +package club.joylink.ncc; + +import club.joylink.ecs.World; +import club.joylink.ecs.WorldManage; +import club.joylink.ncc.proto.LineProto; +import club.joylink.ncc.proto.RoadSectionProto; +import club.joylink.ncc.proto.StationProto; +import club.joylink.ncc.proto.StorageProto; +import com.google.common.base.Strings; +import com.google.common.collect.Lists; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.stream.Collectors; + + +public class Service { + + public static void main(String[] args) { + Service service = new Service(); + StorageProto.Storage storage = service.loadData(); + + } + + public void addTrain(boolean upWay){ + + } + + + private StorageProto.Storage loadData(){ + Data data = new Data(); + StorageProto.Storage storageBuild = data.createStorage(); + Map tmpLineMap = storageBuild.getLinesList().stream().collect(Collectors.toMap(k->k.getCode(), Function.identity())); + lineMap.putAll(tmpLineMap); + Map tmpStationMaper = storageBuild.getStationsList().stream().collect(Collectors.toMap(d->d.getCode(),Function.identity())); + for (RoadSectionProto.RoadSection rs : storageBuild.getSectionsList()) { + List stationList = lineIdStationMap.computeIfAbsent(rs.getLineId(),k-> Lists.newArrayList()); + if(stationList.stream().noneMatch(d-> Objects.equals(d.getCode(),rs.getLeftStationId()))){ + stationList.add(tmpStationMaper.get(rs.getLeftStationId())); + } + if(stationList.stream().noneMatch(d-> Objects.equals(d.getCode(),rs.getRightStationId()))){ + stationList.add(tmpStationMaper.get(rs.getRightStationId())); + } + } + return storageBuild; + } + private static Map lineMap = new ConcurrentHashMap<>(); + private static Map> lineIdStationMap = new ConcurrentHashMap<>(); +}