模拟网商订单生成器

来源:互联网 发布:c语言用函数判断闰年 编辑:程序博客网 时间:2024/04/29 15:29

1.订单数据格式:
orderNumber: XX | orderDate: XX | paymentNumber: XX | paymentDate: XX | merchantName: XX | sku: [ skuName: XX skuNum: XX skuCode: XX skuPrice: XX totalSkuPrice: XX;skuName: XX skuNum: XX skuCode: XX skuPrice: XX totalSkuPrice: XX;] | price: [ totalPrice: XX discount: XX paymentPrice: XX ]

2.maven工程的pom.xml

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>


<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
</dependencies>

3. 产生的订单日志

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<RollingFile name="MYFILE" fileName="d:/order_logs/app.log"
filePattern="d:/order_logs/app-%d{yyyy-MM-dd-HH}.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>
     
<Loggers>
<Root level="info">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="MYFILE" />
</Root>
</Loggers>
</Configuration>


4.订单日志产生生成处理类

package com.yc.hadoop;


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;


import org.apache.logging.log4j.LogManager;


public class OrderLogGenerator {


public enum PaymentWays {
Wechat, Alipay, Paypal;
}


public enum MerchantNames {
优衣库, 天猫, 淘宝, 咕噜大大, 快乐宝贝, 守望先峰, 哈毒妇, Storm, Oracle, Java, CSDN, 跑男, 路易斯威登, 
暴雪公司, Apple, Sumsam, Nissan, Benz, BMW, Maserati;
}


public enum ProductNames {
黑色连衣裙, 灰色连衣裙, 棕色衬衫, 性感牛仔裤, 圆脚牛仔裤, 塑身牛仔裤, 朋克卫衣, 高腰阔腿休闲裤, 人字拖鞋, 沙滩拖鞋
}


float[] skuPriceGroup = { 299, 399, 699, 899, 1000, 2000 };
float[] discountGroup = { 10, 20, 50, 100 };
float totalPrice;


public String generatorOrderLog() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String orderNumber = randNum(5) + date.getTime();
String orderDate = sdf.format(date);
String paymentNumber = randPayment() + "-" + randNum(8);
String paymentDate = sdf.format(date);
String merchantName = randMerchantName();
String sku = randSkuInfo();
String price = randPrice();
return String.format("orderNumber: %s | orderDate: %s | paymentNumber: %s | paymentDate: %s | merchantName: %s | sku: %s | price: %s",
orderNumber, orderDate, paymentNumber, paymentDate, merchantName, sku, price);
}


private String randPrice() {
float discount = discountGroup[(int) (Math.random() * discountGroup.length)];
return String.format("[ totalPrice: %.2f discount: %.2f paymentPrice: %.2f ]", totalPrice, discount,
totalPrice - discount);
}


private String randSkuInfo() {
Random rand = new Random();
int skuCatagoryNum = rand.nextInt(5) + 1;
StringBuilder sb = new StringBuilder("[ ");
for (int i = 0; i < skuCatagoryNum; i++) {
String skuName = randProductName();
int skuNum = rand.nextInt(10) + 1;
String skuCode = randSkuCode(10);
float skuPrice = skuPriceGroup[rand.nextInt(skuPriceGroup.length)];
float totalSkuPrice = skuPrice * skuNum;
sb.append(String.format("skuName: %s skuNum: %d skuCode: %s skuPrice: %.2f totalSkuPrice: %.2f;", skuName,
skuNum, skuCode, skuPrice, totalSkuPrice));
totalPrice += totalSkuPrice;
}
sb.append(sb.replace(sb.length() - 1, sb.length(), " ]"));
return sb.toString();
}


private String randSkuCode(int len) {
String str = "abcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder sb = new StringBuilder();
for (int j = 0; j < len; j++) {
sb.append(str.charAt((int) (Math.random() * str.length())));
}
return sb.toString();
}


private String randProductName() {
ProductNames[] pns = ProductNames.values();
return pns[(int) (Math.random() * pns.length)].name();
}


private String randMerchantName() {
MerchantNames[] mns = MerchantNames.values();
return mns[(int) (Math.random() * mns.length)].name();
}


private String randPayment() {
PaymentWays[] pws = PaymentWays.values();
return pws[(int) (Math.random() * pws.length)].name();
}


private String randNum(int len) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
sb.append((int) (Math.random() * 10));
}
return sb.toString();
}

public void generator(){
for (int i = 0; i < 1000; i++) {
LogManager.getLogger().info(generatorOrderLog());
}
}
}


5.测试

public class OrderLogGeneratorTest {


@Test
public void testGeneratorOrderLog() {
OrderLogGenerator olg = new OrderLogGenerator();
String logStr = olg.generatorOrderLog();
System.out.println(logStr);
}


@Test
public void testGenerator() {
OrderLogGenerator olg = new OrderLogGenerator();
olg.generator();
}


}

原创粉丝点击