Change-Id: I98d4f79a83a5fa612b3edd777f64d38d3e910ba8

This commit is contained in:
lixiangrong 2016-04-14 13:10:59 +08:00
parent b1c4e54d93
commit 5794fa2aef
15 changed files with 1240 additions and 194 deletions

17
pom.xml
View File

@ -21,6 +21,11 @@
</properties>
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
@ -175,12 +180,12 @@
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
</plugin>
<!-- 指定JDK编译版本 -->

View File

@ -0,0 +1,202 @@
package osc.git.eh3.pack;
import java.awt.Component;
import java.awt.Point;
import java.awt.Rectangle;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FileUtil {
private static int sumError = 0;
private static int sumExistError = 0;
private static int sumNotFoundError = 0;
private static int sumSuccess = 0;
private static int sumNum = 1;
private static String getDate(Date date) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sd.format(date).toString();
}
private static BufferedReader getBufferedReader(String path) throws FileNotFoundException {
return new BufferedReader(new InputStreamReader(new FileInputStream(path)));
}
public static void setInfo(String info, JFrame root) {
sumError += 1;
info.equals("");
Component[] components = root.getRootPane().getContentPane().getComponents();
for (int i = 0; i < components.length; i++) {
if (components[i].getClass().toString().equals("class javax.swing.JScrollPane")) {
JTextArea textarea = (JTextArea) ((JScrollPane) components[i]).getViewport().getView();
if (info.equals("")) {
sumError = 0;
sumExistError = 0;
sumNotFoundError = 0;
sumSuccess = 0;
sumNum = 1;
textarea.setText("");
} else if ((textarea.getText().equals("")) || (textarea.getText() == null)) {
textarea.setText(sumNum + ". " + info);
} else {
textarea.setText(textarea.getText() + "\n" + sumNum + ". " + info);
}
}
}
}
private static boolean copy(String from, String dirPath, JFrame root) {
boolean isCommon = true;
File fromFile = new File(from);
if (!fromFile.exists()) {
sumExistError += 1;
setInfo(from + "-------未找到!", root);
System.out.println(from + "---------------未找到!");
return false;
}
makeDirs(dirPath);
try {
File toFile = new File(dirPath + File.separatorChar + fromFile.getName());
if (toFile.exists()) {
sumNotFoundError += 1;
int k = checkFileVersion(fromFile, toFile);
if (k == -1) {
setInfo(fromFile.getAbsolutePath() + "--输出失败(已存在!)", root);
System.out.println(
"文件版本在目标版本之前,处理为不覆盖!若要处理请人工处理!\n原文件:" + fromFile.getAbsolutePath() + "\n目标文件:" + toFile.getAbsolutePath());
JOptionPane jp = new JOptionPane();
jp.setBounds(new Rectangle(new Point(400, 400)));
int isYes = JOptionPane.showConfirmDialog(root, "发现相同的文件,文件版本在目标版本之前!是否要进行覆盖?\n当前文件" +
fromFile.getAbsolutePath() + ",修改日期:" + getDate(new Date(fromFile.lastModified())) + "\n目标文件"
+ toFile.getAbsolutePath() + ",修改日期:" + getDate(new Date(toFile.lastModified())));
if (isYes == 0) {
isCommon = false;
System.out.println("您选择了是!");
} else {
return false;
}
}
if (k == 0) {
setInfo(fromFile.getAbsolutePath() + "--输出失败(已存在)", root);
System.out
.println("相同文件重复,处理为不覆盖!若要处理请人工处理!\n原文件:" + fromFile.getAbsolutePath() + "\n目标文件:" + toFile.getAbsolutePath());
return true;
}
if (k == 1) {
isCommon = false;
}
} else if (!toFile.exists()) {
toFile.createNewFile();
isCommon = false;
}
if (!isCommon) {
InputStream is = new FileInputStream(fromFile);
OutputStream out = new FileOutputStream(toFile);
byte[] b = new byte[1024];
int len = -1;
while ((len = is.read(b)) != -1) {
out.write(b, 0, len);
}
out.flush();
out.close();
is.close();
toFile.setLastModified(fromFile.lastModified());
sumSuccess += 1;
return true;
}
} catch (Exception e) {
System.out.println("Copy Error!");
}
return false;
}
private static void makeDirs(String path) {
File f = new File(path);
if (!f.exists()) {
f.mkdirs();
}
}
private static int checkFileVersion(File file1, File file2) {
long file1LastTime = file1.lastModified();
long file2LastTime = file2.lastModified();
if (file1LastTime > file2LastTime) {
return 1;
}
if (file1LastTime < file2LastTime) {
return -1;
}
return 0;
}
public static boolean becomePackage(String fileList, String cutStr, String dir, JFrame root) throws Exception {
dir = dir + "\\";
String filePath = null;
String addStr = null;
String fromFile = null;
String toFile = null;
boolean flag = false;
try {
BufferedReader br = getBufferedReader(fileList);
addStr = br.readLine();
addStr = addStr.trim();
setInfo("", root);
while ((filePath = br.readLine()) != null) {
sumNum += 1;
if (!"".equals(filePath.trim())) {
filePath = filePath.replaceAll("/", "\\\\");
System.out.println(filePath.replaceAll("\\\\", "/"));
if (filePath.startsWith(cutStr)) {
fromFile = filePath.trim();
toFile = dir + addStr + File.separatorChar + getCenter(cutStr, fromFile);
flag = copy(fromFile, toFile, root);
} else {
fromFile = cutStr + File.separatorChar + filePath.trim();
toFile = dir + addStr + File.separatorChar + filePath.substring(0, filePath.trim().lastIndexOf("\\"));
flag = copy(fromFile, toFile, root);
}
}
}
br.close();
setInfo("----成功:" + sumSuccess + "\n" + "----失败:" + sumError + "\n" + "--------未找到:" + sumNotFoundError + "\n" + "--------已存在:"
+ sumExistError, root);
return flag;
} catch (FileNotFoundException e) {
System.out.println("列表文件没有找到!");
throw new Exception("列表文件没有找到!");
} catch (IOException e) {
System.out.println("列表文件读取出错!");
throw new Exception("列表文件读取出错!");
}
}
private static String getCenter(String flag, String message) {
int k1 = message.trim().indexOf(flag);
int k2 = message.trim().lastIndexOf("\\");
if ((k1 != -1) && (k2 != -1)) {
return message.substring(flag.length() + 1, k2 + 1);
}
return null;
}
}

View File

@ -0,0 +1,270 @@
package osc.git.eh3.pack;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileSystemView;
@SuppressWarnings("serial")
public class PackView extends JFrame {
private JButton jb = new JButton();
private JButton jb1 = new JButton();
private JButton jb2 = new JButton();
private String inputPath = "D:\\wins-dsp";
private String outputPath = "D:";
private JLabel jl0 = new JLabel();
private JButton cancel = new JButton("退出");
private JTextPane jText1 = new JTextPane();
private JTextPane jText2 = new JTextPane();
public JTextArea jArea = new JTextArea();
public JScrollPane p = new JScrollPane(this.jArea);
private PackView() {
setTitle("打包工具By:Henry");
setBounds(400, 400, 500, 300);
setLayout(null);
setResizable(false);
this.jb.setText("打包清单");
this.jb1.setText("打包根目录");
this.jb2.setText("输出目录");
this.jText1.setText(this.inputPath);
this.jText2.setText(this.outputPath);
this.jb.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {
if (PackView.this.packs()) {
PackView.this.jl0.setText("成功打包!");
PackView.this.jb.setText("...继续");
} else {
PackView.this.jl0.setText("打包失败!");
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
});
this.jb1.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {
PackView.this.choosePath(1);
PackView.this.jText1.setText(PackView.this.inputPath);
}
public void mousePressed(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
});
this.jb2.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {
PackView.this.choosePath(2);
PackView.this.jText2.setText(PackView.this.outputPath);
}
public void mousePressed(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
});
this.cancel.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {
PackView.this.close();
}
public void mousePressed(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
});
this.jb1.setBounds(10, 5, 100, 30);
this.jText1.setBounds(120, 5, 250, 30);
this.jb2.setBounds(10, 40, 100, 30);
this.jText2.setBounds(120, 40, 250, 30);
this.jb.setBounds(10, 100, 100, 30);
this.cancel.setBounds(120, 100, 100, 30);
this.jl0.setBounds(230, 100, 100, 30);
this.jArea.setLineWrap(true);
this.jArea.setForeground(Color.red);
this.jArea.setEditable(false);
this.p.setBounds(10, 130, 480, 130);
this.p.setVerticalScrollBarPolicy(22);
this.p.setHorizontalScrollBarPolicy(32);
add(this.jb1);
add(this.jText1);
add(this.jb2);
add(this.jText2);
add(this.jb);
add(this.cancel);
add(this.jl0);
add(this.p);
setVisible(true);
setDefaultCloseOperation(3);
}
private List<String> chooseFile(int chooseMode) {
try {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setMultiSelectionEnabled(true);
fileChooser.setDialogTitle("文件打包");
fileChooser.setDragEnabled(true);
fileChooser.setAutoscrolls(true);
fileChooser.setFileFilter(new FileFilter() {
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
if ((f.getName().endsWith(".TXT")) || (f.getName().endsWith(".txt"))) {
return true;
}
return false;
}
public String getDescription() {
return ".txt";
}
});
fileChooser.setCurrentDirectory(FileSystemView.getFileSystemView().getHomeDirectory());
fileChooser.setOpaque(true);
fileChooser.setDoubleBuffered(true);
int returnVal = -1;
switch (chooseMode) {
case 1:
returnVal = fileChooser.showOpenDialog(this);
break;
case 2:
returnVal = fileChooser.showSaveDialog(this);
}
File[] fileName;
if (returnVal == 0) {
fileName = fileChooser.getSelectedFiles();
} else {
fileName = (File[]) null;
}
List<String> list = new ArrayList<String>();
System.out.println("打包文件路径列表:");
String filePath = null;
for (int i = 0; i < fileName.length; i++) {
filePath = fileName[i].getAbsolutePath();
if (filePath.toUpperCase().endsWith("TXT")) {
list.add(filePath);
System.out.println("序号 " + i + " " + filePath);
} else {
System.out.println("序号 " + i + " " + filePath + " >>该文件不能作为打包文件! ");
}
}
return list;
} catch (Exception e) {
}
return null;
}
private boolean choosePath(int id) {
try {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setMultiSelectionEnabled(true);
switch (id) {
case 1:
fileChooser.setDialogTitle("打包文件根目录");
fileChooser.setCurrentDirectory(new File(this.inputPath));
break;
case 2:
fileChooser.setDialogTitle("输出文件目录");
fileChooser.setCurrentDirectory(new File(this.outputPath));
}
fileChooser.setDragEnabled(true);
fileChooser.setAutoscrolls(true);
fileChooser.setAcceptAllFileFilterUsed(true);
fileChooser.setOpaque(true);
fileChooser.setDoubleBuffered(true);
fileChooser.setFileSelectionMode(1);
fileChooser.showOpenDialog(this);
switch (id) {
case 1:
this.inputPath = fileChooser.getSelectedFile().toString();
break;
case 2:
this.outputPath = fileChooser.getSelectedFile().toString();
}
return true;
} catch (Exception e) {
}
return false;
}
private void close() {
dispose();
}
private boolean packs() {
boolean flag = true;
List<String> fileName = chooseFile(1);
if ((fileName == null) || (fileName.size() <= 0)) {
System.out.println("打包原始文件没有找到");
flag = false;
} else {
for (int i = 0; i < fileName.size(); i++) {
try {
flag = FileUtil.becomePackage((String) fileName.get(i), this.inputPath, this.outputPath, this);
} catch (Exception e) {
return false;
}
}
}
return flag;
}
public static void main(String[] args) {
new PackView();
}
}

View File

@ -3,7 +3,7 @@ redis.pool.maxIdle=200
redis.pool.maxWait=1000
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true
#redis.ip=192.168.3.166
redis.ip=111.235.158.31
redis.ip=192.168.3.166
#redis.ip=111.235.158.31
redis.port=7379
redis.password=

View File

@ -0,0 +1,77 @@
package osc.git.eh3.test;
import java.io.IOException;
import java.math.BigDecimal;
import osc.git.eh3.redis.JedisUtil;
public class OperateKPIBudgetRedisData {
public static void main(String[] args) throws IOException {
showSom("022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
// delete("c46b8885-4c1d-48f9-befb-3ba3a0f33d4a");
}
public static void showSom(String groupid){
String[] keys = JedisUtil.getKeys("dsp_budget_*_"+groupid);
BigDecimal totals = new BigDecimal(0);
for (String key : keys) {
System.out.println(key+"-----------:"+JedisUtil.getStr(key));
totals = totals.add(new BigDecimal(JedisUtil.getStr(key)));
}
System.out.println("budget_balance_"+groupid+"----------:"+JedisUtil.getStr("budget_balance_"+groupid));
totals = totals.add(new BigDecimal(JedisUtil.getStr("budget_balance_"+groupid)));
System.out.println("-------------------------------------------------------------:"+totals.toPlainString());
System.out.println();
totals = new BigDecimal(0);
keys = JedisUtil.getKeys("dsp_counter_*_"+groupid);
for (String key : keys) {
System.out.println(key+"-----------:"+JedisUtil.getStr(key));
String[] split = JedisUtil.getStr(key).split(",");
if(split.length>1){
totals = totals.add(new BigDecimal(split[1]));
}else{
totals = totals.add(new BigDecimal(split[0]));
}
}
System.out.println("counter_balance_"+groupid+"---------:"+JedisUtil.getStr("counter_balance_"+groupid));
String[] split = JedisUtil.getStr("counter_balance_"+groupid).split(",");
if(split.length>1){
totals = totals.add(new BigDecimal(split[1]));
}else{
totals = totals.add(new BigDecimal(split[0]));
}
System.out.println("-------------------------------------------------------------:"+totals.toPlainString());
}
public static void delete(String groupid){
String[] keys ={"d012aa41-35b8-4ef9-a3ee-9bc918d0da82",
"f26701ea-3bfc-4b4f-ae88-f39bff59c77c",
"a4e14ee1-1ae3-4e04-8850-c1345c5af200",
"d3ca7a1a-7a8d-4e43-be28-46f450a84d99",
"f9fdd963-558c-4d5a-b18f-c7d8386fac2d",
"a4dbe6b6-bd69-4bab-aa84-d5459860ad7b",
"6d3508d8-c978-4446-ba4c-895196af5021",
"033d5820-2ca8-4304-87ab-aaad6a0d0652",
"b4572eae-3f4f-46e2-95be-78ec3cb47b75",
"8c6f32fc-450d-4912-a7e3-7bbc7e4341a9",
"7275405b-b12d-4f8b-95a4-7274cbf3f942",
"6f1d947b-bc03-4560-b3ff-1200725f352c",
"52a9558d-bada-4e2b-8e71-d83ee40e804f",
"92b8bd98-6698-48b7-b402-5ccf49e9c674",
"b605daa7-6a85-40dc-8c5e-d9022e8fc3d2",
"853aad03-a2f5-4665-aaac-26aadd42be84",
"5f3668bf-ebb9-4db7-ac29-62216fd86f2d"};
for (String key : keys) {
JedisUtil.delete("dsp_mapid_"+key);
}
}
}

View File

@ -8,6 +8,9 @@ import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import osc.git.eh3.utils.AESTool;
import osc.git.eh3.utils.Base64;
public class TestCode {
public static void main(String[] args) throws Exception {
@ -169,12 +172,12 @@ public class TestCode {
// System.out.println(Integer.valueOf("11", 2));
// System.out.println(AESEncrypter.encrypt("lixiangrong"));
// System.out.println(AESEncrypter.decrypt(AESEncrypter.encrypt("lixiangrong")));
// System.out.println(AESTool.encrypt("lixiangrong"));
// System.out.println(AESTool.decrypt(AESEncrypter.encrypt("lixiangrong")));
// System.out.println(AESEncrypter.encrypt("fa4d7d90618dcba5fa1d969cffc04def","002020202"));
// System.out.println(AESEncrypter.decrypt(AESEncrypter.encrypt("lixiangrong","0"),"0"));
// System.out.println(Base64.encodeToString(AESEncrypter.encrypt("fa4d7d90618dcba5fa1d969cffc04def","002020202").getBytes(), false));
System.out.println(AESTool.encrypt("liixangrong","adjdjfjfjfjdkdkd"));
System.out.println(AESTool.decrypt("bfb0c038342ffead45511879853279bf","adjdjfjfjfjdkdkd"));
// System.out.println(Base64.encodeToString(AESTool.encrypt("fa4d7d90618dcba5fa1d969cffc04def","002020202").getBytes(), false));
// byte[] bytes = "lixiangrong".getBytes();
// for (int i = 0; i < bytes.length; i++) {
@ -232,15 +235,15 @@ public class TestCode {
// double budgets = 10000;
// System.out.println((budgets/100));
String str = null;
BigDecimal budget = new BigDecimal(str);
budget = budget.subtract(new BigDecimal(10));
if (budget.compareTo(new BigDecimal(0)) <= 0) {
System.out.println("1");
} else {
System.out.println("2");
}
System.out.println(budget.doubleValue());
// String str = null;
// BigDecimal budget = new BigDecimal(str);
// budget = budget.subtract(new BigDecimal(10));
// if (budget.compareTo(new BigDecimal(0)) <= 0) {
// System.out.println("1");
// } else {
// System.out.println("2");
// }
// System.out.println(budget.doubleValue());
}

View File

@ -10,7 +10,7 @@ import java.util.UUID;
public class TestJdbc143 {
private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://115.182.33.143:3306/wins-dsp-new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&connectTimeout=60000&socketTimeout=60000";
String url = "jdbc:mysql://111.235.158.31:3306/wins-dsp-new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&connectTimeout=60000&socketTimeout=60000";
String username = "root";
String password = "pxene";
Connection conn = null;
@ -33,8 +33,9 @@ public class TestJdbc143 {
private static void insertData(){
Connection conn = getConn();
System.out.println(new Date());
for (int i = 0; i > -1; i++) {
String cid = UUID.randomUUID().toString();
for (int i = 0; i < 1; i++) {
// String cid = UUID.randomUUID().toString();
String cid = "0123456789";
String sql = "INSERT INTO `dsp_t_statis_by_day` (`time`, `creativeid`, `category`, `imprs`, `clks`, `cost`, `downloads`, `regists`, `flag`, `createtime`) VALUES ('2014-12-06 00:00:00', '"+cid+"', '2', '961', '9', '201860.7000', '0', '0', '0', '2015-09-14 15:07:42');";
PreparedStatement pstmt;
try {

View File

@ -1,32 +0,0 @@
package osc.git.eh3.test;
import java.io.IOException;
import java.math.BigDecimal;
import osc.git.eh3.redis.JedisUtil;
public class TestRedisData {
public static void main(String[] args) throws IOException {
showSom("b8093670-ceb0-4c1d-9413-8bb23a1217f2");
}
public static void showSom(String groupid){
String[] keys = JedisUtil.getKeys("dsp_budget_*_"+groupid);
BigDecimal totals = new BigDecimal(0);
for (String key : keys) {
System.out.println(key+"-----------:"+JedisUtil.getStr(key));
totals = totals.add(new BigDecimal(JedisUtil.getStr(key)));
}
System.out.println("budget_balance_"+groupid+"-----------:"+JedisUtil.getStr("budget_balance_"+groupid));
totals = totals.add(new BigDecimal(JedisUtil.getStr("budget_balance_"+groupid)));
System.out.println(totals.toPlainString());
keys = JedisUtil.getKeys("dsp_counter_*_"+groupid);
for (String key : keys) {
System.out.println(key+"-----------:"+JedisUtil.getStr(key));
}
System.out.println("counter_balance_"+groupid+"-----------:"+JedisUtil.getStr("counter_balance_"+groupid));
}
}

View File

@ -0,0 +1,127 @@
package osc.git.eh3.test;
import java.math.BigInteger;
import java.util.Date;
import java.util.Random;
import java.util.zip.CRC32;
/**
* IntelliJ IDEA 14.0.1 注册机
*
* @author lixiangrong
*
*/
public class keygen {
/**
* @param s
* @param i
* @param bytes
* @return
*/
public static short getCRC(String s, int i, byte bytes[]) {
CRC32 crc32 = new CRC32();
if (s != null) {
for (int j = 0; j < s.length(); j++) {
char c = s.charAt(j);
crc32.update(c);
}
}
crc32.update(i);
crc32.update(i >> 8);
crc32.update(i >> 16);
crc32.update(i >> 24);
for (int k = 0; k < bytes.length - 2; k++) {
byte byte0 = bytes[k];
crc32.update(byte0);
}
return (short) (int) crc32.getValue();
}
/**
* @param biginteger
* @return String
*/
public static String encodeGroups(BigInteger biginteger) {
BigInteger beginner1 = BigInteger.valueOf(0x39aa400L);
StringBuilder sb = new StringBuilder();
for (int i = 0; biginteger.compareTo(BigInteger.ZERO) != 0; i++) {
int j = biginteger.mod(beginner1).intValue();
String s1 = encodeGroup(j);
if (i > 0) {
sb.append("-");
}
sb.append(s1);
biginteger = biginteger.divide(beginner1);
}
return sb.toString();
}
/**
* @param i
* @return
*/
public static String encodeGroup(int i) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < 5; j++) {
int k = i % 36;
char c;
if (k < 10) {
c = (char) (48 + k);
} else {
c = (char) ((65 + k) - 10);
}
sb.append(c);
i /= 36;
}
return sb.toString();
}
/**
* @param name
* @param days
* @param id
* @param prtype
* @return
*/
public static String MakeKey(String name, int days, int id) {
id %= 100000;
byte bkey[] = new byte[12];
bkey[0] = (byte) 1; // Product type: IntelliJ IDEA is 1
bkey[1] = 14; // version
Date d = new Date();
long ld = (d.getTime() >> 16);
bkey[2] = (byte) (ld & 255);
bkey[3] = (byte) ((ld >> 8) & 255);
bkey[4] = (byte) ((ld >> 16) & 255);
bkey[5] = (byte) ((ld >> 24) & 255);
days &= 0xffff;
bkey[6] = (byte) (days & 255);
bkey[7] = (byte) ((days >> 8) & 255);
bkey[8] = 105;
bkey[9] = -59;
bkey[10] = 0;
bkey[11] = 0;
int w = getCRC(name, id % 100000, bkey);
bkey[10] = (byte) (w & 255);
bkey[11] = (byte) ((w >> 8) & 255);
BigInteger pow = new BigInteger("89126272330128007543578052027888001981", 10);
BigInteger mod = new BigInteger("86f71688cdd2612ca117d1f54bdae029", 16);
BigInteger k0 = new BigInteger(bkey);
BigInteger k1 = k0.modPow(pow, mod);
String s0 = Integer.toString(id);
String sz = "0";
while (s0.length() != 5) {
s0 = sz.concat(s0);
}
s0 = s0.concat("-");
String s1 = encodeGroups(k1);
s0 = s0.concat(s1);
return s0;
}
public static void main(String[] args) {
Random r = new Random();
String userid = "elvin";
System.out.println(userid+":"+MakeKey(userid, 0, r.nextInt(100000)));
}
}

View File

@ -0,0 +1,146 @@
package osc.git.eh3.testopen;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang.StringUtils;
/**
* 签名工具类
*
*/
public class SignatureUtil {
private static final char[] hexArray = "0123456789ABCDEF".toCharArray();
private static String encryptionAlgorithm = "SHA-1";
public static String bytesToHexString(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
public static byte[] hexStringToBytes(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));
}
return data;
}
/**
* 使用指定算法生成消息摘要默认是md5
*
* @param strSrc
* , a string will be encrypted; <br/>
* @param encName
* , the algorithm name will be used, dafault to "MD5"; <br/>
* @return
*/
public static String digest(String strSrc, String encName) {
MessageDigest md = null;
String strDes = null;
byte[] bt = strSrc.getBytes();
try {
if (encName == null || encName.equals("")) {
encName = "MD5";
}
md = MessageDigest.getInstance(encName);
md.update(bt);
strDes = bytesToHexString(md.digest()); // to HexString
} catch (NoSuchAlgorithmException e) {
return null;
}
return strDes;
}
/**
* 根据appidtokenlol以及时间戳来生成签名
*
* @param appid
* @param token
* @param lol
* @param millis
* @return
*/
public static String generateSignature(String appid, String token, String lol, long millis) {
String timestamp = String.valueOf(millis);
String signature = null;
if (StringUtils.isNotBlank(token) && StringUtils.isNotBlank(timestamp) && StringUtils.isNotBlank(appid)) {
List<String> srcList = new ArrayList<String>();
srcList.add(timestamp);
srcList.add(appid);
srcList.add(token);
srcList.add(lol);
// 按照字典序逆序拼接参数
Collections.sort(srcList);
Collections.reverse(srcList);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < srcList.size(); i++) {
sb.append(srcList.get(i));
}
signature = digest(sb.toString(), encryptionAlgorithm);
srcList.clear();
srcList = null;
}
return signature;
}
/**
* 验证签名: <br/>
* 1.根据appid获取该渠道的token;<br/>
* 2.根据appidtokenlol以及时间戳计算一次签名;<br/>
* 3.比较传过来的签名以及计算出的签名是否一致;
*
* @param signature
* @param appid
* @param lol
* @param millis
* @return
*/
public static boolean isValid(String signature, String appid,String token, String lol, long millis) {
String calculatedSignature = generateSignature(appid, token, lol, millis);
if (StringUtils.equals(calculatedSignature, signature)) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
String xmlString = "<root><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name><name>test</name></root>";
System.out.println(xmlString.getBytes().length);
//消息
String digest = SignatureUtil.digest(xmlString, "MD5");
System.out.println("----" + digest);
System.out.println(digest.getBytes().length);
String appid = "canairport001";
String token = "111ddff";
long millis = System.currentTimeMillis();
//生成签名
String signature = SignatureUtil.generateSignature(appid, token, digest, millis);
System.out.println(signature);
//验证签名
boolean isValid = SignatureUtil.isValid(signature, appid,token, digest, millis);
System.out.println(isValid);
}
}

View File

@ -0,0 +1,232 @@
package osc.git.eh3.testopen;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import osc.git.eh3.utils.AESTool;
import osc.git.eh3.utils.Base64;
import osc.git.eh3.utils.HttpClientUtil;
public class TestOpenPuton {
public static String URL = "http://127.0.0.1:3/dsp-open/opendsp.do";
private static String key = "adjdjfjfjfjdkdkd";//
private static String appid = "t123456";// 用户
private static String token = "cst123456";// 令牌
public static void main(String[] args) throws Exception {
String sendPostParam = HttpClientUtil.sendPostParam(URL, getPostParam("getKpiByCampaignIds"));// 获得数据并且发送请求
String data = getData(sendPostParam);
System.out.println(JSONObject.fromObject(data));
}
// 解密
public static String getData(String encryptString) throws Exception {
byte[] decode = Base64.decode(encryptString.getBytes());
String aString = new String(decode, "utf-8");
String decrypt = AESTool.decrypt(aString, key);
return decrypt;
}
public static Map<String, String> getPostParam(String content) throws Exception {
Map<String, String> postParam = new HashMap<String, String>();
content = getContent(content);
// 业务数据
long millis = System.currentTimeMillis();// 时间戳j
content = AESTool.encrypt(content, key);// 使用aes加密
String lol = SignatureUtil.digest(content, "MD5");// 摘要
String signature = SignatureUtil.generateSignature(appid, token, lol, millis);// 签名
// 准备提交数据
postParam.put("appid", appid);
postParam.put("content", content);
postParam.put("lol", lol);
postParam.put("signature", signature);
postParam.put("millis", millis + "");
return postParam;
}
// 在这里写请求数据
public static String getContent(String contentName) {
JSONObject content = new JSONObject();
JSONObject param = new JSONObject();
content.put("servicename", "putonServiceCall");
switch (contentName) {
case "putOnByCreative":
param.put("campaignid", "26861f62-5cd7-4073-9186-676f8f5d7b24");
param.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
param.put("adxid", "1fed4171-9925-4834-aa7b-9b4d3a58841b");
JSONArray mapIds = new JSONArray();
mapIds.add("28f13909-dbbe-42e4-b9fd-edd97a31d6ce");
mapIds.add("8b7b1b4a-eb3a-4be0-809b-b497c58a14f6");
mapIds.add("b7f39e0c-3025-4fa3-8e83-ef1f492fe358");
param.put("mapids", mapIds);
content.put("funcname", "putOnByCreative");
content.put("methodparam", param);
break;
case "pauseByCreative":
param.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
param.put("adxid", "1fed4171-9925-4834-aa7b-9b4d3a58841b");
mapIds = new JSONArray();
mapIds.add("28f13909-dbbe-42e4-b9fd-edd97a31d6ce");
mapIds.add("8b7b1b4a-eb3a-4be0-809b-b497c58a14f6");
mapIds.add("b7f39e0c-3025-4fa3-8e83-ef1f492fe358");
param.put("mapids", mapIds);
content.put("funcname", "pauseByCreative");
content.put("methodparam", param);
break;
case "putOnByAdx":
param.put("campaignid", "26861f62-5cd7-4073-9186-676f8f5d7b24");
JSONArray groupAdxs = new JSONArray();
JSONObject groupAdx = new JSONObject();
groupAdx.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
groupAdx.put("adxid", "1fed4171-9925-4834-aa7b-9b4d3a58841b");
groupAdxs.add(groupAdx);
groupAdx = new JSONObject();
groupAdx.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
groupAdx.put("adxid", "6246ae47-d24b-4afa-88ba-57417ccab6aa");
groupAdxs.add(groupAdx);
groupAdx = new JSONObject();
groupAdx.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
groupAdx.put("adxid", "ce579246-e707-4cb9-b982-88cad7944b92");
groupAdxs.add(groupAdx);
param.put("groupadxs", groupAdxs);
content.put("funcname", "putOnByAdx");
content.put("methodparam", param);
break;
case "pauseByAdx":
groupAdxs = new JSONArray();
groupAdx = new JSONObject();
groupAdx.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
groupAdx.put("adxid", "1fed4171-9925-4834-aa7b-9b4d3a58841b");
groupAdxs.add(groupAdx);
groupAdx = new JSONObject();
groupAdx.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
groupAdx.put("adxid", "6246ae47-d24b-4afa-88ba-57417ccab6aa");
groupAdxs.add(groupAdx);
groupAdx = new JSONObject();
groupAdx.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
groupAdx.put("adxid", "ce579246-e707-4cb9-b982-88cad7944b92");
groupAdxs.add(groupAdx);
param.put("groupadxs", groupAdxs);
content.put("funcname", "pauseByAdx");
content.put("methodparam", param);
break;
case "putOnByGroup":
param.put("campaignid", "26861f62-5cd7-4073-9186-676f8f5d7b24");
JSONArray groupids = new JSONArray();
groupids.add("022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
param.put("groupids", groupids);
content.put("funcname", "putOnByGroup");
content.put("methodparam", param);
break;
case "pauseByGroup":
groupids = new JSONArray();
groupids.add("022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
param.put("groupids", groupids);
content.put("funcname", "pauseByGroup");
content.put("methodparam", param);
break;
case "putOnByCampaign":
JSONArray campaignids = new JSONArray();
campaignids.add("26861f62-5cd7-4073-9186-676f8f5d7b24");
param.put("campaignids", campaignids);
content.put("funcname", "putOnByCampaign");
content.put("methodparam", param);
break;
case "pauseByCampaign":
campaignids = new JSONArray();
campaignids.add("26861f62-5cd7-4073-9186-676f8f5d7b24");
param.put("campaignids", campaignids);
content.put("funcname", "pauseByCampaign");
content.put("methodparam", param);
break;
case "setAdxProp":
JSONArray propdatas = new JSONArray();
JSONObject propdata = new JSONObject();
JSONObject adxprop = new JSONObject();
JSONArray adxprops = new JSONArray();
adxprop.put("adxid", "1fed4171-9925-4834-aa7b-9b4d3a58841b");
adxprop.put("prop", 40);
adxprops.add(adxprop);
adxprop = new JSONObject();
adxprop.put("adxid", "6246ae47-d24b-4afa-88ba-57417ccab6aa");
adxprop.put("prop", 30);
adxprops.add(adxprop);
adxprop = new JSONObject();
adxprop.put("adxid", "ce579246-e707-4cb9-b982-88cad7944b92");
adxprop.put("prop", 30);
adxprops.add(adxprop);
propdata.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
propdata.put("adxprops", adxprops);
propdatas.add(propdata);
param.put("propdatas", propdatas);
content.put("funcname", "setAdxProp");
content.put("methodparam", param);
break;
case "setCreateivePrice":
JSONArray createiveprices = new JSONArray();
JSONObject createiveprice = new JSONObject();
createiveprice.put("mapid", "28f13909-dbbe-42e4-b9fd-edd97a31d6ce");
createiveprice.put("price", 10);
createiveprices.add(createiveprice);
createiveprice = new JSONObject();
createiveprice.put("mapid", "8b7b1b4a-eb3a-4be0-809b-b497c58a14f6");
createiveprice.put("price", 6);
createiveprices.add(createiveprice);
createiveprice = new JSONObject();
createiveprice.put("mapid", "b7f39e0c-3025-4fa3-8e83-ef1f492fe358");
createiveprice.put("price", 8);
createiveprices.add(createiveprice);
param.put("groupid", "022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
param.put("adxid", "1fed4171-9925-4834-aa7b-9b4d3a58841b");
param.put("createiveprices", createiveprices);
content.put("funcname", "setCreateivePrice");
content.put("methodparam", param);
break;
case "getKpiByCampaignIds":
campaignids = new JSONArray();
campaignids.add("26861f62-5cd7-4073-9186-676f8f5d7b24");
param.put("campaignids", campaignids);
content.put("funcname", "getKpiByCampaignIds");
content.put("methodparam", param);
break;
default:
break;
}
System.out.println(content.toString());
return content.toString();
}
}

View File

@ -1,135 +0,0 @@
package osc.git.eh3.utils;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
public class AESEncrypter {
private static byte[] iv = new byte[] { 21, 22, 50, 44, -16, 124, -40, -114, -11, -40, 37, 23, -33, 23, -33, 75 };
private static String defalut_key = "defalut_keydefalut_key";
/**
* 加密
*
* @param content
* 要加密的内容
* @return 加密后的32位字符串
*/
public static String encrypt(String content) {
return encrypt(content, defalut_key);
}
/**
* 解密
*
* @param content
* AES密文
* @return 解密后的内容
*/
public static String decrypt(String content) {
return decrypt(content, defalut_key);
}
/**
* 加密
*
* @param content
* 要加密的内容
* @param key
* 秘钥
* @return 加密后的32位字符串
*/
public static String encrypt(String content, String key) {
String str = "";
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(key.getBytes()));
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
SecretKey skey = kgen.generateKey();
Cipher ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
ecipher.init(Cipher.ENCRYPT_MODE, skey, paramSpec);
str = asHex(ecipher.doFinal(content.getBytes()));
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
return str;
}
/**
* 解密
*
* @param content
* AES密文
* @param key
* 秘钥
* @return 解密后的内容
*/
public static String decrypt(String content, String key) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(key.getBytes()));
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
SecretKey skey = kgen.generateKey();
Cipher dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
dcipher.init(Cipher.DECRYPT_MODE, skey, paramSpec);
return new String(dcipher.doFinal(asBin(content)));
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
return "";
}
private static String asHex(byte buf[]) {
StringBuffer strbuf = new StringBuffer(buf.length * 2);
int i;
for (i = 0; i < buf.length; i++) {
if (((int) buf[i] & 0xff) < 0x10)
strbuf.append("0");
strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
}
return strbuf.toString();
}
private static byte[] asBin(String src) {
if (src.length() < 1)
return null;
byte[] encrypted = new byte[src.length() / 2];
for (int i = 0; i < src.length() / 2; i++) {
int high = Integer.parseInt(src.substring(i * 2, i * 2 + 1), 16);
int low = Integer.parseInt(src.substring(i * 2 + 1, i * 2 + 2), 16);
encrypted[i] = (byte) (high * 16 + low);
}
return encrypted;
}
}

File diff suppressed because one or more lines are too long

View File

@ -42,7 +42,7 @@ import org.apache.http.protocol.HttpContext;
@SuppressWarnings("deprecation")
public class HttpClientUtil {
private static Log log = LogFactory.getLog(HttpClientUtil.class);
private static final int timeOut = 30000;// timeOut(Millisecond)
private static final int timeOut = 300000;// timeOut(Millisecond)
private static final int BUFFERSIZE = 2048;
private static Registry<CookieSpecProvider> getRegistry() {

View File

@ -24,6 +24,6 @@
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="dsp_t_geohash_precision" domainObjectName="GeohashPrecisionModel" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"></table>
<table tableName="dsp_t_statis_by_hour" domainObjectName="StatisByHourModel" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"></table>
</context>
</generatorConfiguration>