Commit 3f48464f by liyanlin

ebay交易接口接入;

parent 592fc817
package com.bailuntec.application;
import com.bailuntec.domain.DcBaseEbayTransaction;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in 2021-05-20
* @Modified by:
*/
public interface IDcBaseEbayTransactionService extends IService<DcBaseEbayTransaction> {
}
package com.bailuntec.application.impl;
import com.bailuntec.application.IDcBaseEbayTransactionService;
import com.bailuntec.domain.DcBaseEbayTransaction;
import com.bailuntec.infrastructure.mapper.DcBaseEbayTransactionMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in 2021-05-20
* @Modified by:
*/
@Service
public class DcBaseEbayTransactionService extends ServiceImpl<DcBaseEbayTransactionMapper, DcBaseEbayTransaction> implements IDcBaseEbayTransactionService {
}
package com.bailuntec.domain;
import com.alibaba.fastjson.annotation.JSONField;
import com.bailuntec.api.ebay.seller.response.transaction.Amount;
import com.bailuntec.api.ebay.seller.response.transaction.Reference;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in 2021-05-20
* @Modified by:
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="DcBaseEbayTransaction对象", description="")
public class DcBaseEbayTransaction implements Serializable {
private String id;
private String value;
private String currency;
@ApiModelProperty("在此字段中返回的枚举值指示货币交易金额是卖方帐户的(CREDIT)还是(DEBIT)。 通常,SALE和CREDIT交易类型记入卖方帐户,而REFUND,DISPUTE,SHIPPING_LABEL和TRANSFER交易类型记入卖方帐户的借方。")
private String bookingEntry;
private String username;
private String feeType;
private String orderId;
//private List<OrderLineItem> orderLineItems;
@ApiModelProperty("此字符串值指示正在处理付款的实体。")
private String paymentsEntity;
private String payoutId;
private String referencesJson;
private String itemId;
@ApiModelProperty("与销售订单关联的销售记录号。销售记录号是在结帐时创建的Selling Manager / Selling Manager Pro标识符。")
private String salesRecordReference;
@JSONField(format = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private LocalDateTime transactionDate;
private LocalDate transactionDateShort;
private String transactionId;
private String transactionMemo;
private String transactionStatus;
private String transactionType;
private Integer accountId;
@TableField(exist = false)
private List<Reference> references;
@TableField(exist = false)
@ApiModelProperty("该金额是在从与订单相关的卖方付款中扣除销售费用之前的订单总金额。要确定将通过卖方付款支付的订单的实际金额,请从basePayoutAmount中减去totalFeeAmount。")
private Amount totalFeeBasisAmount;
@TableField(exist = false)
private Amount totalFeeAmount;
}
package com.bailuntec.infrastructure.mapper;
import com.bailuntec.domain.DcBaseEbayTransaction;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in 2021-05-20
* @Modified by:
*/
public interface DcBaseEbayTransactionMapper extends BaseMapper<DcBaseEbayTransaction> {
void insertIgnoreExist(List<DcBaseEbayTransaction> dcBaseEbayTransactionList);
}
......@@ -17,12 +17,12 @@ import java.util.List;
public interface DcBaseFinanceEbayMapper extends BaseMapper<DcBaseFinanceEbay> {
@Insert("<script>" +
"insert IGNORE into dc_base_finance_ebay(bj_create ,bj_modified ,account_entry_type ,description ,gmt_date " +
"insert IGNORE into dc_base_finance_ebay(bj_modified ,account_entry_type ,description ,gmt_date " +
",bj_date ,gross_amount ,item_id ,memo ,net_amount ,ref_number ,vat_percent ,title ,order_line_id " +
",transaction_id ,company_id ,received_top_rated_discount ,account_id ,currency ,exchange_rate " +
",exchange_rate_usd ,report_date) values" +
"<foreach collection='list' item='item' index='index' separator=','>" +
"(#{item.bjCreate},#{item.bjModified},#{item.accountEntryType},#{item.description},#{item.gmtDate}" +
"(#{item.bjModified},#{item.accountEntryType},#{item.description},#{item.gmtDate}" +
",#{item.bjDate},#{item.grossAmount},#{item.itemId},#{item.memo},#{item.netAmount},#{item.refNumber}" +
",#{item.vatPercent},#{item.title},#{item.orderLineId},#{item.transactionId},#{item.companyId}" +
",#{item.receivedTopRatedDiscount},#{item.accountId},#{item.currency},#{item.exchangeRate}" +
......
<?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.bailuntec.infrastructure.mapper.DcBaseEbayTransactionMapper">
<insert id="insertIgnoreExist" parameterType="arraylist">
insert ignore into dc_base_ebay_transaction (value,currency,booking_entry,username,fee_type,order_id,payments_entity,
payout_id,references_json,item_id,sales_record_reference,transaction_date,transaction_date_short,transaction_id,
transaction_memo,transaction_status,transaction_type,account_id) values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.value},#{item.currency},#{item.bookingEntry},#{item.username},#{item.feeType},#{item.orderId},
#{item.paymentsEntity},#{item.payoutId},#{item.referencesJson},#{item.itemId},#{item.salesRecordReference},
#{item.transactionDate},#{item.transactionDateShort},#{item.transactionId},#{item.transactionMemo},
#{item.transactionStatus},#{item.transactionType},#{item.accountId})
</foreach>
</insert>
</mapper>
\ No newline at end of file
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>datacenter-base</artifactId>
<groupId>com.bailuntec</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version>
<maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
</properties>
<artifactId>base-sync-ebay-transaction</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.3.RELEASE</version>
<configuration>
<mainClass>com.bailuntec.job.EbayTransactionApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<skipDockerBuild>false</skipDockerBuild>
<imageName>ccr.ccs.tencentyun.com/blt.data.job/base-sync-ebay-transaction:${maven.build.timestamp}
</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>bailuntec-docker</serverId>
</configuration>
</plugin>
</plugins>
</build>
</project>
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD base-sync-ebay-transaction-1.0-SNAPSHOT.jar app.jar
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-Xms300m","-Xmx600m","-jar","-Dspring.profiles.active=prod","/app.jar"]
EXPOSE 8080
package com.bailuntec.job;
import com.bailuntec.job.service.SyncEbayFeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in 2021-05-20
* @Modified by:
*/
@Component
@Slf4j
public class EbayFeeJob {
@Resource
private SyncEbayFeeService service;
@Scheduled(cron = "* 16 * * * ?")
public void SyncEbayTransaction(){
service.SyncEbayTransaction();
}
}
package com.bailuntec.job;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
@ComponentScan("com.bailuntec")
@EnableFeignClients(basePackages = {"com.bailuntec.api", "com.bailuntec.*.api"})
public class EbayTransactionApplication {
public static void main(String[] args) {
SpringApplication.run(EbayTransactionApplication.class, args);
}
}
package com.bailuntec.job.service;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in 2021-05-20
* @Modified by:
*/
public interface SyncEbayFeeService {
void SyncEbayTransaction();
}
package com.bailuntec.job.service.impl;
import com.alibaba.fastjson.JSON;
import com.bailuntec.api.ebay.seller.EbayTransactionApi;
import com.bailuntec.api.ebay.seller.response.transaction.EbayTransactionRes;
import com.bailuntec.api.ebay.seller.response.transaction.Reference;
import com.bailuntec.api.ebay.seller.response.transaction.Transaction;
import com.bailuntec.application.IDcBaseCompanyAccountService;
import com.bailuntec.application.IEbayAccountReportTaskService;
import com.bailuntec.domain.DcBaseCompanyAccount;
import com.bailuntec.domain.DcBaseEbayTransaction;
import com.bailuntec.domain.EbayAccountReportTask;
import com.bailuntec.infrastructure.mapper.DcBaseEbayTransactionMapper;
import com.bailuntec.job.service.SyncEbayFeeService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in 2021-05-20
* @Modified by:
*/
@Service
@Slf4j
public class SyncEbayFeeServiceImpl implements SyncEbayFeeService {
@Resource
private IEbayAccountReportTaskService ebayAccountReportTaskService;
@Resource
private IDcBaseCompanyAccountService dcBaseCompanyAccountService;
@Resource
private DcBaseEbayTransactionMapper dcBaseEbayTransactionMapper;
@Resource
private EbayTransactionApi ebayTransactionApi;
@Override
public void SyncEbayTransaction() {
//获取未跑或失败的任务
List<EbayAccountReportTask> ebayAccountReportTaskList = ebayAccountReportTaskService.list(new LambdaQueryWrapper<EbayAccountReportTask>()
.ne(EbayAccountReportTask::getStatus, 1));
/*List<EbayAccountReportTask> ebayAccountReportTaskList = ebayAccountReportTaskService.list(new LambdaQueryWrapper<EbayAccountReportTask>()
.ge(EbayAccountReportTask::getStartTime, LocalDateTime.of(2021, 4, 16, 0, 0, 0))
.lt(EbayAccountReportTask::getStartTime, LocalDateTime.of(2021, 5, 1, 0, 0, 0)));*/
//获取账号信息
List<Integer> accountIdList = ebayAccountReportTaskList.stream().map(x -> x.getAccountId()).distinct().collect(Collectors.toList());
List<DcBaseCompanyAccount> accountList = dcBaseCompanyAccountService.list(new LambdaQueryWrapper<DcBaseCompanyAccount>().in(DcBaseCompanyAccount::getAccountId, accountIdList));
//循环跑任务
ebayAccountReportTaskList.forEach(x -> {
//获取token
Integer pageNum = 1;
StringBuffer accessToken = new StringBuffer("Bearer ");
DcBaseCompanyAccount currentAccount = accountList.stream().filter(account -> account.getAccountId().equals(x.getAccountId())).findFirst().get();
try {
//禁用账号直接跳过
if(!currentAccount.getStatus()){
return;
}
accessToken.append(JSON.parseObject(currentAccount.getAuthJson()).get("access_token"));
} catch (Exception ex) {
String msg = String.format("请求ebay广告服务异常,当前账号:%s,当前页码:%s", currentAccount.getAccountName(), pageNum);
log.error(msg);
x.setStatus(2);
x.setErrorMsg(msg);
return;
}
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String sTime = x.getStartTime().format(pattern);
String eTime = x.getEndTime().format(pattern);
String filter = String.format("transactionDate:[%s..%s]", sTime, eTime);//"transactionDate:[2021-05-18T00:00:01.000Z..2021-05-19T00:00:01.000Z]"
List<Transaction> transactions = new ArrayList<>();
boolean isSuccess = doGet(accessToken.toString(), filter, 1000, pageNum, transactions);
if (isSuccess) {
x.setStatus(1);
save(transactions,currentAccount.getAccountId());
} else {
String msg = String.format("请求ebay广告服务异常,当前账号:%s,当前页码:%s", currentAccount.getAccountName(), pageNum);
log.error(msg);
x.setStatus(2);
x.setErrorMsg(msg);
}
});
//ebayAccountReportTaskService.updateBatchById(ebayAccountReportTaskList);
}
private boolean doGet(String accessToken, String filter, Integer limit, Integer pageNum, List<Transaction> transactions) {
try {
EbayTransactionRes ebayTransactionRes = ebayTransactionApi.getTransactions(accessToken, filter, limit, (pageNum - 1) * limit);
if (ebayTransactionRes != null && !ebayTransactionRes.getTransactions().isEmpty()) {
List<Transaction> feeTransactionList = ebayTransactionRes.getTransactions()
.stream()
.filter(item -> item.getTransactionId().startsWith("FEE")).collect(Collectors.toList());
if (Optional.ofNullable(feeTransactionList).isPresent()) {
transactions.addAll(feeTransactionList);
}
pageNum++;
return doGet(accessToken, filter, limit, pageNum, transactions);
}
} catch (Exception ex) {
log.error(ex.toString());
return false;
}
return true;
}
private void save(List<Transaction> transactions,Integer accountId) {
if (transactions == null || transactions.isEmpty()) {
return;
}
List<DcBaseEbayTransaction> dcBaseEbayTransactionList = JSON.parseArray(JSON.toJSONString(transactions), DcBaseEbayTransaction.class);
dcBaseEbayTransactionList.forEach(x -> {
Transaction transaction = transactions.stream().filter(item -> item.getTransactionId().equals(x.getTransactionId())).findFirst().get();
if (transaction.getReferences() != null) {
Reference reference = Optional.ofNullable(
transaction
.getReferences()
.stream()
.filter(item -> item.getReferenceType().equals("ITEM_ID"))
.findFirst()
).get().orElseGet(() -> null);
x.setItemId(reference == null ? "" : reference.getReferenceId());
x.setReferencesJson(JSON.toJSONString(transaction.getReferences()));
}
if (x.getTransactionDate() != null) {
x.setTransactionDateShort(x.getTransactionDate().toLocalDate());
}
x.setValue(transaction.getAmount().getValue());
x.setCurrency(transaction.getAmount().getCurrency());
x.setUsername(transaction.getBuyer() == null ? "" : transaction.getBuyer().getUsername());
x.setAccountId(accountId);
});
dcBaseEbayTransactionMapper.insertIgnoreExist(dcBaseEbayTransactionList);
}
}
spring:
# 服务名称
application:
name: base-sync-ebay-transaction
# 数据配置
datasource:
url: jdbc:mysql://10.0.8.15:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8&rewriteBatchedStatements=true
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
dataflow-datasource:
url: jdbc:mysql://10.0.8.15:3306/dataflow?passwordCharacterEncoding=utf-8
username: root
password: '#7kfnymAM$Y9-Ntf'
driverClassName: org.mariadb.jdbc.Driver
testOnBorrow: true
validationQuery: "SELECT 1"
main:
allow-bean-definition-overriding: true
batch:
initialize-schema: always
cloud:
task:
closecontext-enabled: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 8080
spring:
# 服务名称
application:
name: base-sync-ebay-transaction
# 数据配置
datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8&rewriteBatchedStatements=true
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
dataflow-datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8&rewriteBatchedStatements=true
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
main:
allow-bean-definition-overriding: true
batch:
initialize-schema: always
cloud:
task:
closecontext-enabled: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 1224
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="true">
<property name="contextName" value="bailuntec"/>
<property name="LOG_HOME" value="log"/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%X{traceId}) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<contextName>${contextName}</contextName>
   
<!-- info日志 appender -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志回滚策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${LOG_HOME}/${contextName}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 30天 -->
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<!-- 只打印错误日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--warn日志appender-->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${contextName}-warn.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--error日志appender-->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${contextName}-error.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--控制台日志输出-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<!-- 开发环境日志级别为DEBUG -->
<springProfile name="dev">
<logger name="com.ebay.sdk" level="ERROR"/>
<logger name="com.bailuntec" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<!--日志打印的包的范围,及分类日志文件存储 -->
<logger name="com.bailuntec" additivity="false">
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
</logger>
<root level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<!-- 测试环境日志级别为INFO -->
<springProfile name="test">
<logger name="com.ebay.sdk" level="ERROR"/>
<logger name="com.bailuntec" level="DEBUG"/>
<logger name="org.springframework" level="INFO"/>
<!--日志打印的包的范围,及分类日志文件存储 -->
<logger name="com.bailuntec" additivity="false">
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="WARN"/>
<appender-ref ref="INFO"/>
</logger>
<root level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<!-- 正式环境日志级别为INFO -->
<springProfile name="prod">
<logger name="com.ebay.sdk" level="ERROR"/>
<logger name="com.bailuntec" level="DEBUG"/>
<logger name="org.springframework" level="DEBUG"/>
<!--日志打印的包的范围,及分类日志文件存储 -->
<logger name="com.bailuntec" additivity="false">
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="WARN"/>
<appender-ref ref="INFO"/>
</logger>
<root level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
</configuration>
package com.bailuntec.job;
import com.bailuntec.job.service.SyncEbayFeeService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ActiveProfiles;
import javax.annotation.Resource;
@SpringBootTest
@ActiveProfiles("test")
class EbayTransactionApplicationTests {
@Resource
private SyncEbayFeeService service;
@Test
void contextLoads() {
}
@Test
@Rollback
public void testSyncEbayFeeJob(){
service.SyncEbayTransaction();
}
}
spring:
# 服务名称
application:
name: base-sync-ebay-transaction
# 数据配置
datasource:
url: jdbc:mysql://10.0.8.15:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8&rewriteBatchedStatements=true
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
dataflow-datasource:
url: jdbc:mysql://10.0.8.15:3306/dataflow?passwordCharacterEncoding=utf-8
username: root
password: '#7kfnymAM$Y9-Ntf'
driverClassName: org.mariadb.jdbc.Driver
testOnBorrow: true
validationQuery: "SELECT 1"
main:
allow-bean-definition-overriding: true
batch:
initialize-schema: always
cloud:
task:
closecontext-enabled: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 8080
spring:
# 服务名称
application:
name: base-sync-ebay-transaction
# 数据配置
datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8&rewriteBatchedStatements=true
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
dataflow-datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8&rewriteBatchedStatements=true
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
main:
allow-bean-definition-overriding: true
batch:
initialize-schema: always
cloud:
task:
closecontext-enabled: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 1224
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="true">
<property name="contextName" value="bailuntec"/>
<property name="LOG_HOME" value="log"/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%X{traceId}) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<contextName>${contextName}</contextName>
   
<!-- info日志 appender -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志回滚策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${LOG_HOME}/${contextName}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 30天 -->
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<!-- 只打印错误日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--warn日志appender-->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${contextName}-warn.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--error日志appender-->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${contextName}-error.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--控制台日志输出-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<!-- 开发环境日志级别为DEBUG -->
<springProfile name="dev">
<logger name="com.ebay.sdk" level="ERROR"/>
<logger name="com.bailuntec" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<!--日志打印的包的范围,及分类日志文件存储 -->
<logger name="com.bailuntec" additivity="false">
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
</logger>
<root level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<!-- 测试环境日志级别为INFO -->
<springProfile name="test">
<logger name="com.ebay.sdk" level="ERROR"/>
<logger name="com.bailuntec" level="DEBUG"/>
<logger name="org.springframework" level="INFO"/>
<!--日志打印的包的范围,及分类日志文件存储 -->
<logger name="com.bailuntec" additivity="false">
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="WARN"/>
<appender-ref ref="INFO"/>
</logger>
<root level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<!-- 正式环境日志级别为INFO -->
<springProfile name="prod">
<logger name="com.ebay.sdk" level="ERROR"/>
<logger name="com.bailuntec" level="DEBUG"/>
<logger name="org.springframework" level="DEBUG"/>
<!--日志打印的包的范围,及分类日志文件存储 -->
<logger name="com.bailuntec" additivity="false">
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="WARN"/>
<appender-ref ref="INFO"/>
</logger>
<root level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
</configuration>
......@@ -24,6 +24,7 @@
<!-- <module>base-sync-purchase-details</module>-->
<module>base-sync-ebay</module>
<module>base-sync-sku</module>
<module>base-sync-ebay-transaction</module>
</modules>
</project>
......@@ -101,6 +101,22 @@ public class BalanceSheetJob {
}
/**
* <p>
* 每天生成半成品数据
* </p>
*/
@Scheduled(cron = "0 0 1 * * ?")
public void syncSemiInventoryBalance() {
try {
log.info("每天 生成半成品数据 开始");
balanceSheetService.syncSemiInventoryBalance();
log.info("每天 生成半成品数据 结束");
} catch (Exception ex) {
log.error("每天 生成半成品数据 异常:", ex);
}
}
/**
* 每天 生成资产负债表
* companyValue 0
* companyName 百伦供应链
......
......@@ -30,7 +30,6 @@ import java.math.BigDecimal;
import java.text.ParseException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
......@@ -56,6 +55,7 @@ public class BalanceSheetService {
private static final String financeGenerateBalanceSheet = "finance-generate-balance-sheet";
private static final String financeGenerateBalanceSheetNewResult = "finance-generate-balance-sheet-new-result";
private static final String financeSyncPayPal = "finance-sync-pay-pal";
private static final String baseSyncSemiStock = "base_sync_semi_stock";
@Resource
DcJobConfigMapper dcJobConfigMapper;
......@@ -487,7 +487,6 @@ public class BalanceSheetService {
LocalDate date = dcJobConfig.getStartTime().toLocalDate();
getSemiInventoryBalance(dcJobConfig);
DcBalanceSheet dcBalanceSheet = dcBalanceSheetMapper.selectOne(new LambdaQueryWrapper<DcBalanceSheet>()
.eq(DcBalanceSheet::getCompanyValue, companyValue)
......@@ -668,9 +667,10 @@ public class BalanceSheetService {
* <p>
* 获取半成品存货
* </p>
* @param dcJobConfig
*/
public void getSemiInventoryBalance(DcJobConfig dcJobConfig){
@Transactional(rollbackFor = Exception.class)
public void syncSemiInventoryBalance(){
DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(baseSyncSemiStock);
boolean isOk = true;
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String startDate = dcJobConfig.getStartTime().toLocalDate().format(dtf);
......@@ -717,6 +717,7 @@ public class BalanceSheetService {
Date lastDay = java.sql.Date.valueOf(dcJobConfig.getStartTime().toLocalDate());
dcSemiDailyStockMapper.insertSemiDailyStock(lastDay);
}
dcJobConfigMapper.updateById(dcJobConfig.refresh());
}
@Resource
......
......@@ -9,9 +9,9 @@ spring:
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
dataflow-datasource:
url: jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT}/mysql?passwordCharacterEncoding=utf-8
url: jdbc:mysql://10.0.8.15:3306/dataflow?passwordCharacterEncoding=utf-8
username: root
password: ${mysql-root-password}
password: '#7kfnymAM$Y9-Ntf'
driverClassName: org.mariadb.jdbc.Driver
testOnBorrow: true
validationQuery: "SELECT 1"
......
......@@ -9,9 +9,9 @@ spring:
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
dataflow-datasource:
url: jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT}/mysql?passwordCharacterEncoding=utf-8
url: jdbc:mysql://10.0.8.15:3306/dataflow?passwordCharacterEncoding=utf-8
username: root
password: ${mysql-root-password}
password: '#7kfnymAM$Y9-Ntf'
driverClassName: org.mariadb.jdbc.Driver
testOnBorrow: true
validationQuery: "SELECT 1"
......
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