Compare commits
No commits in common. "a28f47cebeb55ffdeed8b401d01969a8c7973b90" and "e795b348e8f5c70ed664a9e8eb24cd4bfe1bee57" have entirely different histories.
a28f47cebe
...
e795b348e8
29
.drone.yml
29
.drone.yml
@ -161,36 +161,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
|
|||||||
- cd /ludu/maven/build/ludu-job-admin/
|
- cd /ludu/maven/build/ludu-job-admin/
|
||||||
- chmod +x ./run.sh # 更改为可执行脚本
|
- chmod +x ./run.sh # 更改为可执行脚本
|
||||||
- ./run.sh || echo "ludu-job-admin build failed" # 运行脚本打包应用镜像并运行
|
- ./run.sh || echo "ludu-job-admin build failed" # 运行脚本打包应用镜像并运行
|
||||||
- name: build-new-service
|
|
||||||
|
|
||||||
image: appleboy/drone-ssh # SSH工具镜像
|
|
||||||
|
|
||||||
settings:
|
|
||||||
|
|
||||||
host: 121.36.203.133 # 远程连接地址
|
|
||||||
|
|
||||||
username: root # 远程连接账号
|
|
||||||
|
|
||||||
password:
|
|
||||||
|
|
||||||
from_secret: ssh_password3 # 从Secret中读取SSH密码
|
|
||||||
|
|
||||||
port: 22 # 远程连接端口
|
|
||||||
|
|
||||||
command_timeout: 10m # 远程执行命令超时时间
|
|
||||||
|
|
||||||
script: |
|
|
||||||
cd /root/ludu-cloud
|
|
||||||
git pull origin master
|
|
||||||
rm -f ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/framework/nacos/config/BeanInit.java
|
|
||||||
/root/apache-maven-3.9.4/bin/mvn clean package -Dmaven.test.skip=true
|
|
||||||
port=48092 # 指定端口号
|
|
||||||
pid=$(lsof -t -i:$port) # 获取占用指定端口的进程号
|
|
||||||
if [ -n "$pid" ]; then
|
|
||||||
echo "Killing process $pid"
|
|
||||||
kill -9 $pid
|
|
||||||
fi
|
|
||||||
nohup java -Xms512m -Xmx512m -jar ludu-module-datacenter/ludu-module-datacenter-biz/target/ludu-module-datacenter-biz.jar --spring.profiles.active=dev > api.log &
|
|
||||||
volumes: # 定义流水线挂载目录,用于共享数据
|
volumes: # 定义流水线挂载目录,用于共享数据
|
||||||
|
|
||||||
- name: maven-build
|
- name: maven-build
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.infra.controller.admin.ticketing;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
||||||
import cn.iocoder.yudao.framework.common.util.date.TickingDateUtils;
|
|
||||||
import cn.iocoder.yudao.module.infra.job.ticketing.TicketDataMigration;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description 测试抽数接口
|
|
||||||
*/
|
|
||||||
@Tag(name = "管理后台 - 抽数接口")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/infra/ticketing")
|
|
||||||
@Validated
|
|
||||||
public class TicketingController {
|
|
||||||
@Resource
|
|
||||||
TicketDataMigration ticketDataMigration;
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
public CommonResult<String> testTicketing(@RequestParam("startDate") String startDate, @RequestParam("endDate")String endDate, @RequestParam("method") String method) throws Exception {
|
|
||||||
Calendar startCalendar = Calendar.getInstance();
|
|
||||||
Calendar endCalendar = Calendar.getInstance();
|
|
||||||
startCalendar.setTime(TickingDateUtils.parse(startDate));
|
|
||||||
endCalendar.setTime(TickingDateUtils.parse(endDate));
|
|
||||||
return CommonResult.success(ticketDataMigration.getTicketDataByTimeZonesToMongo(startCalendar, endCalendar, method));
|
|
||||||
}
|
|
||||||
}
|
|
@ -36,7 +36,6 @@ public class SecurityConfiguration {
|
|||||||
.antMatchers(adminSeverContextPath + "/**").anonymous();
|
.antMatchers(adminSeverContextPath + "/**").anonymous();
|
||||||
// 文件读取
|
// 文件读取
|
||||||
registry.antMatchers(buildAdminApi("/infra/file/*/get/**")).permitAll();
|
registry.antMatchers(buildAdminApi("/infra/file/*/get/**")).permitAll();
|
||||||
registry.antMatchers("/**/infra/ticketing/**").permitAll();
|
|
||||||
|
|
||||||
// TODO 芋艿:这个每个项目都需要重复配置,得捉摸有没通用的方案
|
// TODO 芋艿:这个每个项目都需要重复配置,得捉摸有没通用的方案
|
||||||
// RPC 服务的安全配置
|
// RPC 服务的安全配置
|
||||||
|
@ -28,7 +28,10 @@ import org.springframework.stereotype.Component;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description 票务抽数服务
|
* @Description 票务抽数服务
|
||||||
@ -61,7 +64,7 @@ public class TicketDataMigration {
|
|||||||
int failedCount = 0;
|
int failedCount = 0;
|
||||||
int pageNumber = 1;
|
int pageNumber = 1;
|
||||||
XxlJobHelper.log("抽数服务:mysql销售数据开始抽数...");
|
XxlJobHelper.log("抽数服务:mysql销售数据开始抽数...");
|
||||||
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
||||||
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
||||||
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
||||||
@ -76,7 +79,7 @@ public class TicketDataMigration {
|
|||||||
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
||||||
// 处理剩余页的数据
|
// 处理剩余页的数据
|
||||||
for (; pageNumber <= totalPages; pageNumber++) {
|
for (; pageNumber <= totalPages; pageNumber++) {
|
||||||
ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
||||||
|
|
||||||
mapList = ticketingSamplingRespVO.getDataMapList();
|
mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 对最后一页进行处理,得到最后一页的实际条数
|
// 对最后一页进行处理,得到最后一页的实际条数
|
||||||
@ -100,7 +103,7 @@ public class TicketDataMigration {
|
|||||||
int failedCount = 0;
|
int failedCount = 0;
|
||||||
int pageNumber = 1;
|
int pageNumber = 1;
|
||||||
XxlJobHelper.log("抽数服务:mysql检票数据开始抽数...");
|
XxlJobHelper.log("抽数服务:mysql检票数据开始抽数...");
|
||||||
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
||||||
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
||||||
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
||||||
@ -115,7 +118,7 @@ public class TicketDataMigration {
|
|||||||
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
||||||
// 处理剩余页的数据
|
// 处理剩余页的数据
|
||||||
for (; pageNumber <= totalPages; pageNumber++) {
|
for (; pageNumber <= totalPages; pageNumber++) {
|
||||||
ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
||||||
mapList = ticketingSamplingRespVO.getDataMapList();
|
mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 对最后一页进行处理,得到最后一页的实际条数
|
// 对最后一页进行处理,得到最后一页的实际条数
|
||||||
if (pageNumber != totalPages) {
|
if (pageNumber != totalPages) {
|
||||||
@ -245,7 +248,6 @@ public class TicketDataMigration {
|
|||||||
}
|
}
|
||||||
XxlJobHelper.log("抽数结束!!!");
|
XxlJobHelper.log("抽数结束!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@XxlJob("getSaleDataByMongoDBLastMonthToNow")
|
@XxlJob("getSaleDataByMongoDBLastMonthToNow")
|
||||||
public void getSaleDataByMongoDBLastMonthToNow() throws Exception {
|
public void getSaleDataByMongoDBLastMonthToNow() throws Exception {
|
||||||
XxlJobHelper.log("抽数服务:mongodb售票数据开始抽数...");
|
XxlJobHelper.log("抽数服务:mongodb售票数据开始抽数...");
|
||||||
@ -300,86 +302,6 @@ public class TicketDataMigration {
|
|||||||
}
|
}
|
||||||
XxlJobHelper.log("抽数结束!!!");
|
XxlJobHelper.log("抽数结束!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用于更新指定日期的检票或售票数据(mongodb)
|
|
||||||
*
|
|
||||||
* @param startDate
|
|
||||||
* @param endDate
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public String getTicketDataByTimeZonesToMongo(Calendar startDate, Calendar endDate, String method) throws Exception {
|
|
||||||
String methodName;
|
|
||||||
String respService;
|
|
||||||
String respMethod;
|
|
||||||
if ("checkTicket".equals(method)) {
|
|
||||||
methodName = "检票";
|
|
||||||
respService = CHECK_TICKET_SERVICE;
|
|
||||||
respMethod = CHECK_TICKET_METHOD;
|
|
||||||
} else if ("saleData".equals(method)) {
|
|
||||||
methodName = "售票";
|
|
||||||
respService = SALE_DATA_SERVICE;
|
|
||||||
respMethod = SALE_DATA_METHOD;
|
|
||||||
} else {
|
|
||||||
XxlJobHelper.log("服务名错误");
|
|
||||||
logger.error("服务名错误");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
StringJoiner result = new StringJoiner("\n");
|
|
||||||
XxlJobHelper.log("抽数服务:mongodb{}数据开始抽数...", methodName);
|
|
||||||
result.add("抽数服务:mongodb" + methodName + "数据开始抽数...");
|
|
||||||
int successCount;
|
|
||||||
int duplicatesCount;
|
|
||||||
int pageNumber;
|
|
||||||
|
|
||||||
// 循环从开始日期到结束日期
|
|
||||||
while (!startDate.after(endDate)) {
|
|
||||||
successCount = 0;
|
|
||||||
duplicatesCount = 0;
|
|
||||||
String dateString = TickingDateUtils.format(startDate.getTime());
|
|
||||||
pageNumber = 1;
|
|
||||||
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(respService, respMethod, dateString, pageNumber);
|
|
||||||
if (ticketingSamplingRespVO == null) {
|
|
||||||
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
|
||||||
List<Map<String, Object>> mapList;
|
|
||||||
|
|
||||||
// 获得总页数
|
|
||||||
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
|
||||||
|
|
||||||
// 处理剩余页的数据
|
|
||||||
for (; pageNumber <= totalPages; pageNumber++) {
|
|
||||||
ticketingSamplingRespVO = this.getUrlResponseData(respService, respMethod, dateString, pageNumber);
|
|
||||||
mapList = ticketingSamplingRespVO.getDataMapList();
|
|
||||||
List<Integer> resultNum = null;
|
|
||||||
if ("checkTicket".equals(method)) {
|
|
||||||
resultNum = checkTicketService.insertByMongoDB(BeanUtils.toBean(mapList, CheckTicket.class));
|
|
||||||
} else if ("saleData".equals(method)) {
|
|
||||||
resultNum = saleDataService.insertByMongoDB(BeanUtils.toBean(mapList, SaleData.class));
|
|
||||||
}
|
|
||||||
if (resultNum == null) {
|
|
||||||
result.add("数据批量插入异常!");
|
|
||||||
} else {
|
|
||||||
successCount += resultNum.get(0);
|
|
||||||
duplicatesCount += resultNum.get(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int currentYear = startDate.get(Calendar.YEAR);
|
|
||||||
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
|
|
||||||
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
|
|
||||||
result.add(String.format("抽数服务:%d年%d月%d日:" + methodName + "数据抽数正常结束!总共:%d条数据,%d条数据重复,%d条数据插入成功!", currentYear, currentMonth, currentDay, totalRows, duplicatesCount, successCount));
|
|
||||||
XxlJobHelper.log("抽数服务:{}年{}月{}日:{}数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!", currentYear, currentMonth, currentDay, methodName, totalRows, duplicatesCount, successCount);
|
|
||||||
// 日期递增一天
|
|
||||||
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
|
||||||
}
|
|
||||||
result.add("抽数结束!!!");
|
|
||||||
logger.info(result.toString());
|
|
||||||
return result.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插入销售数据的方法(mysql)
|
* 插入销售数据的方法(mysql)
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user