[测试代码](master): v1.0封版测试

完成相关代码通配;
部署于测试环境
master
土豆兄弟 3 years ago
parent 8e40e91e3a
commit d86a19cb21

@ -11,6 +11,9 @@ public class SystemConstant {
*/
public static final String DEFAULT_IP = "0.0.0.0";
/**
* DEBUG
*/
public static final Boolean SYS_DEBUG = true;
}

@ -2,6 +2,7 @@ package com.by.api.common;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@ -15,6 +16,7 @@ import java.io.Serializable;
* @author q
*/
@JsonSerialize
@Getter
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@NoArgsConstructor
public class CommonResponse<T> implements Serializable {

@ -11,10 +11,14 @@ public class RequestInfoConstant {
public static final String CUSTOMER_IP_ADDR_KEY = "customer_ip_addr_key";
/**
*
* -
*/
public static final String LOCAL_SERVER_HOST = "http://s.baiyee.vip/";
public static final String PROD_SERVER_HOST = "http://s.baiyee.vip/";
/**
* -
*/
public static final String DEV_SERVER_HOST = "http://localhost:6666/";
/**
* Http

@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
import com.by.api.vo.ShortChainRequestVO;
import com.by.constants.SymbolConstant;
import com.by.dto.ShortChainDTO;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.HashSet;
@ -33,7 +32,7 @@ public class ShortChainVOToDTOConvert {
String baseUrlAddr = shortChainRequestVO.getBaseUrlAddr();
shortChainRequestVO.getVariableList().forEach(
each -> {
originsUrlSet.add(checkUrlAllowed(baseUrlAddr) + SymbolConstant.SPLIT_VERTICAL + each);
originsUrlSet.add(baseUrlAddr + SymbolConstant.SPLIT_VERTICAL + each);
}
);
@ -47,12 +46,12 @@ public class ShortChainVOToDTOConvert {
return new ShortChainDTO();
}
private static String checkUrlAllowed(String baseUrlAddr) {
/* private static String checkUrlAllowed(String baseUrlAddr) {
if (!StringUtils.endsWith(baseUrlAddr.trim(), URL_END_TAG)) {
return baseUrlAddr.trim() + URL_END_TAG;
}
return baseUrlAddr.trim();
}
}*/
}

@ -1,7 +1,9 @@
package com.by.api.vo;
import com.by.api.constants.RequestDetailConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
@ -14,6 +16,8 @@ import java.util.List;
* @author q
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ShortChainRequestVO {
/**

@ -1,6 +1,8 @@
package com.by.api.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@ -10,6 +12,8 @@ import java.util.List;
* @author q
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ShortChainResponseVO {
/**

@ -33,21 +33,23 @@ public class ShortUrlDAO {
* @param list
* @return
*/
public long batchInsertShortUrls(List<ShortUrl> list){
public long batchInsertShortUrls(List<ShortUrl> list) {
String sql = "INSERT INTO `t_short_url` " +
"(operator_ip,origin_url,short_url,point_tag,expiration_day,valid_tag)" +
"VALUES (?, ?, ?, ?, ?, ?)";
"(gmt_create,gmt_modified,operator_ip,origin_url,short_url,point_tag,expiration_day,valid_tag)" +
"VALUES (?, ? ,? ,? ,? ,? ,? ,? )";
int[] ints = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
preparedStatement.setString(1,list.get(i).getOperatorIp().trim());
preparedStatement.setString(2,list.get(i).getOriginUrl().trim());
preparedStatement.setString(3,list.get(i).getShortUrl().trim());
preparedStatement.setInt(4,list.get(i).getPointTag());
preparedStatement.setInt(5,list.get(i).getExpirationDay());
preparedStatement.setInt(6,list.get(i).getValidTag());
preparedStatement.setTimestamp(1, list.get(i).getGmtCreate());
preparedStatement.setTimestamp(2, list.get(i).getGmtModified());
preparedStatement.setString(3, list.get(i).getOperatorIp().trim());
preparedStatement.setString(4, list.get(i).getOriginUrl().trim());
preparedStatement.setString(5, list.get(i).getShortUrl().trim());
preparedStatement.setInt(6, list.get(i).getPointTag());
preparedStatement.setInt(7, list.get(i).getExpirationDay());
preparedStatement.setInt(8, list.get(i).getValidTag());
}
@Override
@ -56,7 +58,7 @@ public class ShortUrlDAO {
}
});
log.info("=== [ ShortUrlDAO|batchInsertShortUrls 受影响的行数为: {} ] === ", ints.length);
log.info("=== [ ShortUrlDAO|batchInsertShortUrls 受影响的行数为: {} ] === ", ints.length);
// 添加完成后移除保存的ip地址信息
ThreadLocalUtil.remove(CUSTOMER_IP_ADDR_KEY);

@ -100,6 +100,8 @@ public class ShortUrl implements Serializable {
*/
public ShortUrl(String originUrl, String shortUrl,
Integer pointTag, Integer validTag) {
this.gmtCreate = new Timestamp(System.currentTimeMillis());
this.gmtModified = new Timestamp(System.currentTimeMillis());
this.operatorIp = ThreadLocalUtil.get(CUSTOMER_IP_ADDR_KEY);
this.originUrl = originUrl;
this.shortUrl = shortUrl;

@ -25,7 +25,7 @@ public interface ShortServerService {
/**
* -
* -
* @param recId
* @param sucess
* @return

@ -1,6 +1,6 @@
package com.by.service.impl;
import com.by.api.constants.RequestInfoConstant;
import com.by.constants.SymbolConstant;
import com.by.dao.ShortUrlDAO;
import com.by.dao.ShortUrlRepository;
import com.by.dto.ShortChainDTO;
@ -47,9 +47,12 @@ public class ShortServerServiceImpl implements ShortServerService {
Map<String, String> makeShortUrlResult = ShortUrlUtil.makeShortUrl(shortChainDTO.getShortChainOrigins());
// 2. 生成的短链请求批量入库
List<ShortUrl> shortUrls = new ArrayList<>();
List<String> resultShortUrls = new ArrayList<>();
makeShortUrlResult.forEach(
(shortUrl, originUrl) -> {
shortUrls.add(new ShortUrl(originUrl, shortUrl, DBDefaultConstant.ZERO_NUM_TAG, DBDefaultConstant.ZERO_NUM_TAG));
resultShortUrls.add(shortUrl + SymbolConstant.SPLIT_VERTICAL + StringUtils.substringAfterLast(originUrl, SymbolConstant.SPLIT_VERTICAL));
}
);
@ -59,13 +62,13 @@ public class ShortServerServiceImpl implements ShortServerService {
throw BaiyeException.createBaiyeException(CommonErrorCode.DATA_ERROR);
}
// 3. 把短链请求 return 给调用方
return new ShortChainDTO(null, new ArrayList<>(makeShortUrlResult.keySet()));
return new ShortChainDTO(null, new ArrayList<>(resultShortUrls));
}
@Override
public ShortUrl handleOnceShortUrlToRedirectOriginUrlAndRecord(String redeem) {
// 1. 查询库中的短链请求
ShortUrl byshortUrl = shortUrlRepository.findByshortUrl(RequestInfoConstant.LOCAL_SERVER_HOST + redeem);
ShortUrl byshortUrl = shortUrlRepository.findByshortUrl(redeem);
// 2. 拿出真实请求进行跳转
if (Objects.isNull(byshortUrl)) {
return new ShortUrl();
@ -85,9 +88,9 @@ public class ShortServerServiceImpl implements ShortServerService {
return Boolean.FALSE;
}
if (sucess) {
shortUrlRepository.updateSendStatus(1, recId);
shortUrlRepository.updateSendStatus(DBDefaultConstant.ONE_NUM_TAG, recId);
}else {
shortUrlRepository.updateSendStatus(0, recId);
shortUrlRepository.updateSendStatus(DBDefaultConstant.ZERO_NUM_TAG, recId);
}
return Boolean.TRUE;
}

@ -0,0 +1,45 @@
#配置数据源
spring:
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_short_server?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true
username: root
password: root
# 初始连接数
initial-size: 5
# 最小连接数
min-idle: 10
# 最大连接数
max-active: 20
# 获取连接超时时间
max-wait: 5000
# 连接有效性检测时间
time-between-eviction-runs-millis: 60000
# 连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
# 连接在池中最大生存的时间
max-evictable-idle-time-millis: 900000
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 检测连接是否有效
validation-query: select 1
# 配置监控统计
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
filter:
stat:
enabled: true
# 记录慢SQL
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true

@ -2,7 +2,7 @@ server:
port: 6666
spring:
profiles:
active: dev
active: test
jackson:
time-zone: GMT+8
@ -34,4 +34,9 @@ short:
corePoolSize: 4
maxPoolSize: 32
queueCapacity: 100
ThreadNamePrefix: 'shortChainTaskExecutor-'
ThreadNamePrefix: 'shortChainTaskExecutor-'
# 远程调用地址
upload:
platform:
url: '118.178.137.129:8000/api/tbSendSms/url/callback'

@ -17,7 +17,7 @@
<!-- 输出到文件,并按天进行归档 -->
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/log.log</file>
<file>${LOG_DIR}/short-log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天归档,如果按小时后面加-hh -->
@ -77,7 +77,7 @@
<root level="INFO">
<!-- TODO prod 环境去掉std -->
<appender-ref ref="stdAppender"/>
<!-- <appender-ref ref="fileAppender"/>-->
<!-- <appender-ref ref="stdAppender"/>-->
<appender-ref ref="fileAppender"/>
</root>
</configuration>

@ -0,0 +1,105 @@
package com.by;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import javax.persistence.*;
import java.util.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class BatchInsertTest {
@Data
@Table(name = "t_user")
class User {
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
/**
*
*/
@Column(name = "gmt_create", nullable = false)
@CreatedDate
private Date gmtCreate;
/**
*
*/
@Column(name = "gmt_modified", nullable = false)
@LastModifiedDate
private Date gmtModified;
/**
* IP
*/
@Column(name = "operator_ip", nullable = false)
private String operatorIp;
}
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void testTestInsertDate() throws InterruptedException {
List<User> users = new ArrayList<>();
User user = new User();
user.setGmtCreate(new Date());
user.setGmtModified(new Date());
user.setOperatorIp("1111");
User user1 = new User();
user.setGmtCreate(new Date());
user.setGmtModified(new Date());
user.setOperatorIp("1111");
users.add(user);
users.add(user1);
String sql = "INSERT INTO `t_user` " +
"(gmt_create,gmt_modified,operator_ip)" +
"VALUES (?, ? ,?)";
int[] ints = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
preparedStatement.setString(1, users.get(i).getGmtCreate().toString());
preparedStatement.setString(2, users.get(i).getGmtModified().toString());
preparedStatement.setString(3, users.get(i).getOperatorIp().trim());
}
@Override
public int getBatchSize() {
return users.size();
}
});
Thread.currentThread().join();
}
}

@ -1,10 +1,4 @@
-- ----------------------------
-- TODO please create database first
-- ----------------------------
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
@ -21,7 +15,8 @@ CREATE TABLE `t_short_url` (
`short_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '生成短链',
`point_tag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '点击标识 0-未点击 1-点击',
`expiration_day` int(5) NOT NULL COMMENT '失效倒计时时间(day)',
`valid_tag` tinyint(1) NULL DEFAULT NULL COMMENT '有效标识 0-无效 1-有效',
`valid_tag` tinyint(1) NULL DEFAULT NULL COMMENT '有效标识 0-有效 1-无效',
`send_tag` tinyint(1) NULL DEFAULT NULL COMMENT '有效标识 0-成功 1-失败',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

Loading…
Cancel
Save