Commit 67d7fdc4 authored by sunyuhua's avatar sunyuhua

自动打卡的代码

parent c7c39d7e
...@@ -248,6 +248,7 @@ ...@@ -248,6 +248,7 @@
<artifactId>aspectjweaver</artifactId> <artifactId>aspectjweaver</artifactId>
<version>1.9.4</version> <version>1.9.4</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>redis.clients</groupId> <groupId>redis.clients</groupId>
<artifactId>jedis</artifactId> <artifactId>jedis</artifactId>
......
...@@ -14,6 +14,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; ...@@ -14,6 +14,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix; import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
......
package com.dlbridge.jadp.plugins.cmpt.bean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
@Getter
@Setter
@Accessors(chain = true)
@ApiModel(value = "打卡点和GPS坐标的关系", description = "打卡点和GPS坐标的关系表")
public class RoadsGpsCheckpointMap {
private int id;
@ApiModelProperty(value = "赛事id", notes = "赛事id")
private int cmptId;
@ApiModelProperty(value = "项目id", notes = "项目id")
private int roadId;
@ApiModelProperty(value = "打卡点id", notes = "打卡点id")
private int checkpointId;
@ApiModelProperty(value = "计时打卡点名字", notes = "计时打卡点名字")
private String checkpointName;
@ApiModelProperty(value = "GPS轨迹上标注的打卡点名字", notes = "GPS轨迹上标注的打卡点名字")
private String checkpointGpsName;
@ApiModelProperty(value = "打卡点的纬度", notes = "打卡点的纬度")
private String checkpointLatitude;
@ApiModelProperty(value = "打卡点的经度", notes = "打卡点的经度")
private String checkpointLongitude;
private int isDelete;
}
package com.dlbridge.jadp.plugins.cmpt.dao.mapper;
import com.dlbridge.jadp.plugins.cmpt.bean.RoadsGpsCheckpointMap;
import java.util.List;
public interface RoadsGpsCheckpointMapper {
/**
* 获取携带经纬度坐标的打卡点信息
* @param cmptId
* @param roadId
* @return
*/
public List<RoadsGpsCheckpointMap> getRoadsGpsCheckpoint(int cmptId, int roadId);
/**
* 更新经纬度坐标信息
* @param roadsGpsCheckpointMap
* @return
*/
public int update(RoadsGpsCheckpointMap roadsGpsCheckpointMap);
/**
* 保存经纬度坐标信息
* @param roadsGpsCheckpointMap
* @return
*/
public int save(RoadsGpsCheckpointMap roadsGpsCheckpointMap);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dlbridge.jadp.plugins.cmpt.dao.mapper.RoadsGpsCheckpointMapper">
<select id="getRoadsGpsCheckpoint" resultType="com.dlbridge.jadp.plugins.cmpt.bean.RoadsGpsCheckpointMap">
select id as Id,cmpt_id as cmptId, road_id as roadId,checkpoint_id as checkpointId,checkpoint_name as checkpointName,checkpoint_gps_name as checkpointGpsName,checkpoint_latitude as checkpointLatitude,checkpoint_longitude as checkpointLongitude from gk_roads_gps_checkpoint_map where cmpt_id=#{cmptId} and road_id=#{roadId} and is_delete=0 order by Id
</select>
<update id="update">
update gk_roads_gps_checkpoint_map
<set>
<if test="checkpointName != null">
checkpoint_name = #{checkpointName},
</if>
<if test="checkpointGpsName!=null">
checkpoint_gps_name = #{checkpointGpsName},
</if>
<if test="checkpointLatitude !=0">
checkpoint_latitude = #{checkpointLatitude},
</if>
<if test="checkpointLongitude != 0">
checkpoint_longitude = #{checkpointLongitude}
</if>
</set>
where road_id = #{roadId}
</update>
<insert id="save" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
insert into gk_roads_gps_checkpoint_map(cmpt_id,road_id ,checkpoint_name,checkpoint_gps_name ,checkpoint_latitude,checkpoint_longitude,is_delete)
values (#{cmptId},#{roadId},#{checkpointName},#{checkpointGpsName},#{checkpointLatitude},#{checkpointLongitude},0)
</insert>
</mapper>
\ No newline at end of file
...@@ -16,6 +16,7 @@ import org.springframework.web.client.RestTemplate; ...@@ -16,6 +16,7 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
@Service @Service
...@@ -141,6 +142,11 @@ public class RemoteService { ...@@ -141,6 +142,11 @@ public class RemoteService {
} }
} }
/**
* 根据赛事Id获取项目信息
* @param cmptId
* @return
*/
public List<Road> getRoads(Integer cmptId) { public List<Road> getRoads(Integer cmptId) {
ResponseEntity<String> forEntity = restTemplate.getForEntity(timerURL + ResponseEntity<String> forEntity = restTemplate.getForEntity(timerURL +
"getCmptItemList.do?cmptId=" + cmptId, String.class); "getCmptItemList.do?cmptId=" + cmptId, String.class);
...@@ -312,4 +318,72 @@ public class RemoteService { ...@@ -312,4 +318,72 @@ public class RemoteService {
return null; return null;
} }
} }
/**
* 上传有经纬度坐标的打卡点的成绩
* @param cmptId
* @param records
* @return
*/
public HashMap<String,String> uploadGpsCheckpointScore(int cmptId, String records){
HashMap<String,String> resultMap=new HashMap<String,String>();
ResponseEntity<String> forEntity = restTemplate.getForEntity(timerURL + "/cmpt/recordUpload.do?cmptId="+ cmptId + "&records="+records, String.class);
if (forEntity.getStatusCode() == HttpStatus.OK) {
List<RoadStatistic> users = new ArrayList<>();
String resultString = forEntity.getBody();
log.info("报名的信息:" + resultString);
/**
* 返回值:
* {"message":"00011230001122000000","status":"success"}
* {"message":"0","status":"success"}
* {"message":"1","messageContent":"具体错误原因","status":"failure"}
* 返回说明status 始终返回success-成功
* message: 每一条记录处理的状态码,其中0-成功/其他-失败,为调试方便如果只一条非成功的记录,message就显示错误的明细
*/
JSONObject object = JSONObject.parseObject(resultString);
String message=object.getString("message");
String status=object.getString("status");
if("0".equals(message)){
resultMap.put("message",message);
resultMap.put("status",status);
resultMap.put("messageContent","success");
}else {
resultMap.put("message",message);
resultMap.put("status",status);
String messageContent=object.getString("messageContent");
resultMap.put("messageContent",messageContent);
}
}
return resultMap;
}
/**
* 根据赛事Id,项目Id获取计时系统中的打卡点
* @param cmptId
* @return
*/
public List<RoadsGpsCheckpointMap> getTimeCheckpointByRoadId(Integer cmptId,Integer roadId) {
ResponseEntity<String> forEntity = restTemplate.getForEntity(timerURL + "getRoad.do?cmptId="+ cmptId + "&roadId="+roadId, String.class);
if (forEntity.getStatusCode() == HttpStatus.OK) {
List<RoadsGpsCheckpointMap> roadsGpsCheckpointMapList = new ArrayList<>();
String resultString = forEntity.getBody();
log.info("计时打卡点:" + resultString);
JSONObject object = JSONObject.parseObject(resultString);
JSONArray result = object.getJSONArray("segCps");
if (result == null || result.isEmpty()) return null;
//获取每个打卡点的信息
for (int i = 0; i < result.size(); i++) {
RoadsGpsCheckpointMap roadsGpsCheckpointMap = new RoadsGpsCheckpointMap();
JSONObject o = (JSONObject) result.get(i);
String checkpointId = o.getString("id");
String checkpointName = o.getString("name");
roadsGpsCheckpointMap.setCmptId(cmptId).setRoadId(roadId).setCheckpointId(Integer.parseInt(checkpointId)).setCheckpointName(checkpointName);
roadsGpsCheckpointMapList.add(roadsGpsCheckpointMap);
}
return roadsGpsCheckpointMapList;
} else {
return null;
}
}
} }
...@@ -80,6 +80,11 @@ public class RoadService { ...@@ -80,6 +80,11 @@ public class RoadService {
return localRoads; return localRoads;
} }
/**
* 将gps文件转化为json文件
* @param url
* @return
*/
public String loadGpsFromNet(String url) { public String loadGpsFromNet(String url) {
ResponseEntity<org.springframework.core.io.Resource> entity = restTemplate.getForEntity(url, org.springframework.core.io.Resource.class); ResponseEntity<org.springframework.core.io.Resource> entity = restTemplate.getForEntity(url, org.springframework.core.io.Resource.class);
InputStream inputStream = null; InputStream inputStream = null;
......
package com.dlbridge.jadp.plugins.cmpt.service;
import com.dlbridge.jadp.plugins.cmpt.bean.Equipment;
import com.dlbridge.jadp.plugins.cmpt.bean.RoadsGpsCheckpointMap;
import com.dlbridge.jadp.plugins.cmpt.dao.mapper.RoadsGpsCheckpointMapper;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
@Log4j2
public class RoadsGpsCheckpointService {
@Resource
RoadsGpsCheckpointMapper roadsGpsCheckpointMapper;
/**
* 根据cmptId和roadId获取配置好经纬度的打卡点列表
* @param cmptId
* @param roadId
* @return
*/
public List<RoadsGpsCheckpointMap> getRoadsGpsCheckpoint(int cmptId,int roadId){
List<RoadsGpsCheckpointMap> roadsGpsCheckpointMapList= roadsGpsCheckpointMapper.getRoadsGpsCheckpoint(cmptId,roadId);
return roadsGpsCheckpointMapList;
}
/**
* 批量保存或者更新打卡点携带gps的配置信息
* @param roadsGpsCheckpointMapList
* @return
*/
public int batchSaveOrUpdate(List<RoadsGpsCheckpointMap> roadsGpsCheckpointMapList){
int count=0;
for (RoadsGpsCheckpointMap roadsGpsCheckpointMap : roadsGpsCheckpointMapList) {
if (roadsGpsCheckpointMap.getId() != 0) {
count= roadsGpsCheckpointMapper.update(roadsGpsCheckpointMap);
} else {
count=roadsGpsCheckpointMapper.save(roadsGpsCheckpointMap);
}
}
return 1;
}
}
...@@ -18,6 +18,11 @@ import java.util.Map; ...@@ -18,6 +18,11 @@ import java.util.Map;
public class GpxParserUtil { public class GpxParserUtil {
static Logger logger = Logger.getLogger(GpxParserUtil.class.getName()); static Logger logger = Logger.getLogger(GpxParserUtil.class.getName());
/**
* 解析GPX格式的文件
* @param input
* @return
*/
public static String parseGpx(InputStream input) { public static String parseGpx(InputStream input) {
Route route = new Route(); Route route = new Route();
SAXReader reader = new SAXReader(); SAXReader reader = new SAXReader();
...@@ -34,7 +39,7 @@ public class GpxParserUtil { ...@@ -34,7 +39,7 @@ public class GpxParserUtil {
} catch (Exception e) { } catch (Exception e) {
} }
route.setName(routeName); route.setName(routeName);
//分析gpx文件的轨迹信息
TracePoint trace; TracePoint trace;
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
List trackPoint = doc.selectNodes("//default:trk/default:trkseg/default:trkpt"); List trackPoint = doc.selectNodes("//default:trk/default:trkseg/default:trkpt");
...@@ -53,7 +58,7 @@ public class GpxParserUtil { ...@@ -53,7 +58,7 @@ public class GpxParserUtil {
route.getTracePoint().add(trace); route.getTracePoint().add(trace);
} }
//分析GPX轨迹中的打卡点信息
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
List placemark = doc.selectNodes("//default:wpt"); List placemark = doc.selectNodes("//default:wpt");
PlaceMark place; PlaceMark place;
...@@ -73,7 +78,6 @@ public class GpxParserUtil { ...@@ -73,7 +78,6 @@ public class GpxParserUtil {
place.setAltitude(Float.parseFloat(altitude)); place.setAltitude(Float.parseFloat(altitude));
route.getPlaceMark().add(place); route.getPlaceMark().add(place);
} }
// 轨迹点转换百度坐标系 // 轨迹点转换百度坐标系
route.setTracePoint(Gps2Baidu.tracePoint2Baidu(route.getTracePoint())); route.setTracePoint(Gps2Baidu.tracePoint2Baidu(route.getTracePoint()));
// 路标转百度坐标 // 路标转百度坐标
...@@ -87,7 +91,7 @@ public class GpxParserUtil { ...@@ -87,7 +91,7 @@ public class GpxParserUtil {
public static void main(String[] args) { public static void main(String[] args) {
// File file = new File("C:\\Users\\Administrator\\Desktop\\戈十一路线轨迹0412.gpx"); // File file = new File("C:\\Users\\Administrator\\Desktop\\戈十一路线轨迹0412.gpx");
File file = new File("C:\\Users\\shuxing\\Desktop\\戈十一路线轨迹0412_100m.gpx"); File file = new File("E:\\赛事GPS轨迹\\贡嘎百公里.gpx");
try { try {
InputStream in = new FileInputStream(file); InputStream in = new FileInputStream(file);
System.out.println(GpxParserUtil.parseGpx(in)); System.out.println(GpxParserUtil.parseGpx(in));
......
package com.dlbridge.jadp.plugins.cmpt.web; package com.dlbridge.jadp.plugins.cmpt.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dlbridge.feign.NewsService; import com.dlbridge.feign.NewsService;
import com.dlbridge.feign.ScoreService; import com.dlbridge.feign.ScoreService;
...@@ -35,7 +34,6 @@ import org.springframework.web.client.RestTemplate; ...@@ -35,7 +34,6 @@ import org.springframework.web.client.RestTemplate;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.*; import java.io.*;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
...@@ -120,7 +118,8 @@ public class MicroApiController { ...@@ -120,7 +118,8 @@ public class MicroApiController {
private BannerService bannerService; private BannerService bannerService;
@Resource @Resource
private FuncSettingService funcSettingService; private FuncSettingService funcSettingService;
@Resource
private RoadsGpsCheckpointService roadsGpsCheckpointService;
/** /**
* @return * @return
*/ */
...@@ -941,4 +940,47 @@ public class MicroApiController { ...@@ -941,4 +940,47 @@ public class MicroApiController {
return Result.fail().setMsg("网络异常"); return Result.fail().setMsg("网络异常");
} }
} }
/**
* 获取携带gps坐标的打卡点
* @param cmptId
* @param roadId
* @return
*/
@GetMapping(value = "/getRoadsGpsCheckpoint/{cmptId}/{roadId}")
@ApiResponses({
@ApiResponse(code = -1, message = "失败", response = ObjectUtils.Null.class),
@ApiResponse(code = 200, message = "成功", response = Result.class, responseContainer = "List")})
@ApiOperation(value = "获取携带gps坐标的打卡点", notes = "获取携带gps坐标的打卡点", tags = "获取携带gps坐标的打卡点")
public Result getRoadsGpsCheckpoint(@PathVariable("cmptId") int cmptId,@PathVariable("roadId") int roadId){
List<RoadsGpsCheckpointMap> roadsGpsCheckpointMapList=roadsGpsCheckpointService.getRoadsGpsCheckpoint(cmptId,roadId);
return Result.success().setContent(roadsGpsCheckpointMapList);
}
/**
* 带经纬度坐标的打卡点上传成绩
* @param cmptId
* @param markNo
* @param checkPointId
* @param scoreTime
* @return
*/
@PostMapping(value = "/uploadGpsCheckPointScore/{cmptId}/{markNo}/{checkPointId}/{scoreTime}")
@ApiResponses({
@ApiResponse(code = -1, message = "失败"),
@ApiResponse(code = 200, message = "成功", response = Result.class)})
@ApiOperation(value = "带经纬度坐标的打卡点上传成绩", notes = "带经纬度坐标的打卡点上传成绩", response = Result.class, tags = "带经纬度坐标的打卡点上传成绩")
public Result uploadGpsCheckPointScore(@PathVariable("cmptId") int cmptId,@PathVariable("markNo") String markNo,@PathVariable("checkPointId") int checkPointId,@PathVariable("scoreTime") String scoreTime ){
String records=markNo+","+scoreTime+",2,"+checkPointId;
HashMap<String,String> results=remoteService.uploadGpsCheckpointScore(cmptId,records);
if(results.isEmpty()) {
return Result.fail().setContent(results);
}
if("0".equals(results.get("message"))){
return Result.success().setContent(results);
}
return Result.fail().setContent(results);
}
} }
...@@ -66,7 +66,13 @@ public class RoadController { ...@@ -66,7 +66,13 @@ public class RoadController {
return Result.success(); return Result.success();
} }
/**
* 上传轨迹的接口,针对不同的项目,上传不同的gpx,kml轨迹文件
* @param url
* @param roadId
* @param cmptId
* @return
*/
@RequestMapping("gps") @RequestMapping("gps")
@ResponseBody @ResponseBody
public Result gps(String url, Integer roadId, Integer cmptId) { public Result gps(String url, Integer roadId, Integer cmptId) {
......
package com.dlbridge.jadp.plugins.cmpt.web;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dlbridge.jadp.plugins.cmpt.bean.Road;
import com.dlbridge.jadp.plugins.cmpt.bean.RoadGpsPoint;
import com.dlbridge.jadp.plugins.cmpt.bean.RoadsGpsCheckpointMap;
import com.dlbridge.jadp.plugins.cmpt.service.RemoteService;
import com.dlbridge.jadp.plugins.cmpt.service.RoadService;
import com.dlbridge.jadp.plugins.cmpt.service.RoadsGpsCheckpointService;
import com.neusoft.www.utils.web.Result;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 自动打卡,使用手机gps定位,到达指定坐标点范围完成自动打卡
*/
@Log4j2
@Controller
@RequestMapping("gk/roadGpsCheckpoint/")
@ApiIgnore
public class RoadsGpsCheckpointController {
@Resource
RemoteService remoteService;
@Resource
RoadService roadService;
@Resource
RoadsGpsCheckpointService roadsGpsCheckpointService;
/**
* 根据赛事Id获取项目信息
* @param cmptId
* @return
*/
@RequestMapping("getRoadsByCmptId/{cmptId}")
@ResponseBody
public Result getRoadsByCmptId(@PathVariable("cmptId") Integer cmptId) {
List<Road> Roads = remoteService.getRoads(cmptId);
return Result.success().setContent(Roads);
}
/**
* 根据赛事和项目Id获取计时系统打卡点的坐标
* @param cmptId
* @param roadId
* @return
*/
@RequestMapping("getTimeCheckpointByRoadId/{cmptId}/{roadId}")
@ResponseBody
public Result getTimeCheckpointByRoadId(@PathVariable("cmptId") Integer cmptId,@PathVariable("roadId") Integer roadId){
List<RoadsGpsCheckpointMap> remoteServiceRoadsGpsCheckpoints = remoteService.getTimeCheckpointByRoadId(cmptId,roadId);
return Result.success().setContent(remoteServiceRoadsGpsCheckpoints);
}
/**
* 获取轨迹路线中的打卡点信息
* @param cmptId
* @param roadId
* @return
*/
@RequestMapping("getGpsCheckPointByRoadId/{cmptId}/{roadId}")
public Result getGpsCheckPointByRoadId(@PathVariable("cmptId") Integer cmptId,@PathVariable("roadId") Integer roadId){
RoadGpsPoint roadGpsPoint=roadService.getGps(roadId);
String points=roadGpsPoint.getPoints();
List<RoadsGpsCheckpointMap> roadsGpsCheckpointMapList = new ArrayList<>();
JSONObject object = JSONObject.parseObject(points);
JSONArray result = object.getJSONArray("placeMark");
if (result == null || result.isEmpty()) return null;
for (int i = 0; i < result.size(); i++) {
RoadsGpsCheckpointMap roadsGpsCheckpointMap = new RoadsGpsCheckpointMap();
JSONObject o = (JSONObject) result.get(i);
String checkpointGpsName = o.getString("checkpointGpsName");
String checkpointLatitude=o.getString("checkpointLatitude");
String checkpointLongitude=o.getString("checkpointLongitude");
roadsGpsCheckpointMap.setCmptId(cmptId).setRoadId(roadId).setCheckpointGpsName(checkpointGpsName).setCheckpointLatitude(checkpointLatitude).setCheckpointLongitude(checkpointLongitude);
roadsGpsCheckpointMapList.add(roadsGpsCheckpointMap);
}
return Result.success().setContent(roadsGpsCheckpointMapList);
}
/**
* 批量保存或者更新打卡点和轨迹坐标点的对应关系
* @param roadsGpsCheckpointMapList
* @return
*/
@RequestMapping("save")
@ResponseBody
public Result save(List<RoadsGpsCheckpointMap> roadsGpsCheckpointMapList) {
int count = roadsGpsCheckpointService.batchSaveOrUpdate(roadsGpsCheckpointMapList);
return Result.success().setContent(count);
}
}
jdbc.ds.type=com.alibaba.druid.pool.DruidDataSource jdbc.ds.type=com.alibaba.druid.pool.DruidDataSource
jdbc.type=mysql jdbc.type=mysql
jdbc.ds.url=jdbc:mysql://47.111.166.211:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true jdbc.ds.url=jdbc:mysql://47.111.166.211:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
jdbc.ds.username=geexek jdbc.ds.username=geexek
jdbc.ds.password=geexekNewPass4! jdbc.ds.password=geexekNewPass4!
jdbc.ds.driver-class-name=com.mysql.jdbc.Driver jdbc.ds.driver-class-name=com.mysql.jdbc.Driver
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment