xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpWhitelist.java
@@ -1,17 +1,18 @@ package com.xiaopeng.api.model.operation; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import javax.validation.constraints.Min; import java.time.LocalDate; /** * <p> @@ -49,4 +50,18 @@ @ApiModelProperty(value = "来源 1=添加 2=邀请码") private Integer whitelistSource; @ApiModelProperty(value = "有限期") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate expireTime; @ApiModelProperty(value = "最大下单数量") @Min(value = 0, message = "不能为负") private Integer maxOrderNum; public Boolean getStatus() { if (LocalDate.now().isAfter(expireTime)) { return false; } return status; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/map/WeatherVo.java
New file @@ -0,0 +1,33 @@ package com.xiaopeng.api.vo.map; import io.swagger.annotations.ApiModel; import lombok.Data; import java.util.List; @Data @ApiModel("根据ip获取点位") public class WeatherVo { int status; //返回状态说明,10000代表正确 int infocode; List<Lives> lives; static class Lives { String province; String city; String adcode; String weather; String temperature; String winddirection; String windpower; String humidity; String reporttime; } } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/config/AdcPushAsyncConfig.java
@@ -1,5 +1,8 @@ package com.xiaopeng.map.config; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; @@ -26,4 +29,12 @@ executor.initialize(); return executor; } @Bean public ObjectMapper om() { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.registerModule(new JavaTimeModule()); return objectMapper; } } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java
@@ -1,38 +1,42 @@ package com.xiaopeng.map.controller; import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import com.xiaopeng.api.dto.map.HistoryPointDto; import com.xiaopeng.api.dto.map.OrderRouteAndFareDto; import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.feignClient.order.XpOrderClient; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.vo.map.WeatherVo; import com.xiaopeng.api.vo.map.PointByIpVo; import com.xiaopeng.api.vo.map.XpDistanceAndDurationVo; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.map.mangodb.model.GeoPoint; import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService; import com.xiaopeng.map.utils.AmapWalkingRouteUtil; import com.xiaopeng.map.utils.GDMapGeocodingUtil; import com.xiaopeng.map.utils.mangoUtils.MongoGeoFenceUtil; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.bson.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Slf4j @RestController @@ -175,4 +179,32 @@ return R.ok(pointByIpVo); } @Value("${map.urls.weather:https://restapi.amap.com/v3/weather/weatherInfo?key=%s&city=%s}") String WEATHER_URL; @Autowired ObjectMapper om; @Value("${map.apikey:66ae577f63898dae3016d599fda57221}") String key; @ApiOperation(value = "获取天气信息", tags = {"内部-调价"}) @GetMapping("/logan/inner/weatherInfo") public R<WeatherVo> weather(@RequestParam String city) throws IOException { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpGet httpGet = new HttpGet(String.format(WEATHER_URL, key, city)); try (CloseableHttpResponse response = httpClient.execute(httpGet)) { HttpEntity entity = response.getEntity(); if (entity != null) { String resp = EntityUtils.toString(entity, StandardCharsets.UTF_8); System.out.println(resp); return R.ok(om.readValue(resp, WeatherVo.class)); } return R.fail("获取天气信息失败"); } } } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
@@ -6,8 +6,6 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.hutool.core.util.PhoneUtil; import cn.hutool.json.JSONObject; import cn.hutool.core.util.PhoneUtil; import com.xiaopeng.api.model.account.SysUser; import com.xiaopeng.api.model.operation.XpWhitelist; import com.xiaopeng.api.model.operation.XpWhitelistOperlog; @@ -34,7 +32,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType; import org.apache.shardingsphere.transaction.core.TransactionType; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -48,18 +45,10 @@ import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.*; import java.util.stream.Collectors; /** @@ -127,6 +116,11 @@ return R.fail("请输入账号"); } SysUser sysUser = tokenService.getLoginUser().getSysUser(); if (dto.getExpireTime() != null && dto.getExpireTime().isBefore(LocalDate.now())) { return R.fail("有效期不能早于当前日期"); } XpWhitelist xpWhitelist = new XpWhitelist(); BeanUtils.copyProperties(dto, xpWhitelist); xpWhitelist.setUpdateBy(tokenService.getLoginUser().getSysUser().getNickName()); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/WhitelistAddDto.java
@@ -1,11 +1,14 @@ package com.xiaopeng.operation.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.time.LocalDate; @Data @ApiModel(value = "白名单新增DTO") @@ -18,4 +21,13 @@ @ApiModelProperty(value = "优先派单 1=是 0=否", required = true) @NotNull(message = "优先派单不能为空") private Boolean isPriorityDispatch; @ApiModelProperty(value = "有限期") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate expireTime; @ApiModelProperty(value = "最大下单数量") @Min(value = 0, message = "不能为负") private Integer maxOrderNum; } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/WhitelistEditDto.java
@@ -1,11 +1,14 @@ package com.xiaopeng.operation.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.time.LocalDate; @Data @ApiModel(value = "白名单编辑DTO") @@ -28,5 +31,11 @@ @NotNull(message = "状态不能为空") private Boolean status; @ApiModelProperty(value = "有限期") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate expireTime; @ApiModelProperty(value = "最大下单数量") @Min(value = 0, message = "不能为负") private Integer maxOrderNum; } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
@@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -73,6 +74,10 @@ return R.fail("所有帐号添加失败,请检查帐号格式或唯一性"); } if (dto.getExpireTime() != null && dto.getExpireTime().isBefore(LocalDate.now())) { return R.fail("有效期不能早于当前日期"); } int sampleLimitPerReason = 20; int totalCount = accounts.size(); Map<String, Long> reasonCountMap = new HashMap<>(); @@ -116,6 +121,8 @@ xpWhitelist.setIsPriorityDispatch(dto.getIsPriorityDispatch()); xpWhitelist.setWhitelistSource(1); xpWhitelist.setCreateBy(sysUser.getNickName()); xpWhitelist.setExpireTime(dto.getExpireTime()); xpWhitelist.setMaxOrderNum(dto.getMaxOrderNum()); addList.add(xpWhitelist); } xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java
@@ -44,9 +44,9 @@ @PostConstruct void setupObjectMapper() { // 允许对象忽略json中不存在的属性 om = new ObjectMapper(); om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); om.registerModule(new JavaTimeModule()); om = new ObjectMapper(); } // ==================== 连接生命周期 ====================