|
@@ -3,7 +3,10 @@ package com.qlm.service.impl;
|
|
|
import java.io.BufferedWriter;
|
|
import java.io.BufferedWriter;
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
|
import java.io.FileWriter;
|
|
import java.io.FileWriter;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Calendar;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -57,9 +60,6 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
logger.info("method getZipFilePath addNum=" + addNum);
|
|
logger.info("method getZipFilePath addNum=" + addNum);
|
|
|
logger.info("method getZipFilePath area=" + area);
|
|
logger.info("method getZipFilePath area=" + area);
|
|
|
// 判断传入参数是否正确
|
|
// 判断传入参数是否正确
|
|
|
- if (!Common.isEmptyString(url)) {
|
|
|
|
|
- return "网络连接错误";
|
|
|
|
|
- }
|
|
|
|
|
if (!Common.isEmptyString(code)) {
|
|
if (!Common.isEmptyString(code)) {
|
|
|
return "网络连接错误";
|
|
return "网络连接错误";
|
|
|
}
|
|
}
|
|
@@ -102,9 +102,9 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
String createTime = DateUtils.getStringFullDate();// 产码时间
|
|
String createTime = DateUtils.getStringFullDate();// 产码时间
|
|
|
|
|
|
|
|
String sql = "select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='" + dbname + "' and TABLE_NAME= ? ";
|
|
String sql = "select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='" + dbname + "' and TABLE_NAME= ? ";
|
|
|
- String qrcodeSql = "create table "+tablename+" (`id` char(20) NOT NULL COMMENT '第一位是分表',`type_` int(11) NOT NULL DEFAULT '0',`config_id` int(11) DEFAULT NULL,`master_code` varchar(20) DEFAULT NULL,`active_time` datetime DEFAULT NULL COMMENT '激活时间',`num_` int(11),`area` varchar(255) DEFAULT NULL DEFAULT NULL,PRIMARY KEY (`id`),KEY `num_` (`num_`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
|
|
|
|
- String hbSql = "create table "+hbtable+" (`id` char(20) NOT NULL, `openid` varchar(64) DEFAULT NULL, `send_time` datetime DEFAULT NULL COMMENT '首次扫码时间', `amount` int(11) DEFAULT NULL, `send_state` smallint(6) DEFAULT NULL, `no_` varchar(50) DEFAULT NULL,`nick_name` varchar(100) DEFAULT NULL,`type_` int(11) DEFAULT NULL, PRIMARY KEY (`id`),UNIQUE KEY `no_` (`no_`) USING BTREE,KEY `send_time` (`send_time`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
|
|
|
|
- String scanSql = "create table "+scantable+" (`id` char(20) NOT NULL, `openid` varchar(64) DEFAULT NULL, `scan_time` datetime DEFAULT NULL COMMENT '首次扫码时间', `nick_name` varchar(255) DEFAULT NULL COMMENT '首次扫码人昵称', `scan_count` int(11) DEFAULT NULL COMMENT '被扫次数', `amount` int(11) DEFAULT NULL, `type_` int(11) DEFAULT NULL,`head_pic` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
|
|
|
|
|
|
+ String qrcodeSql = "create table "+tablename+" (`id` char(50) NOT NULL COMMENT '第一位是分表',`type_` int(11) NOT NULL DEFAULT '0',`config_id` int(11) DEFAULT NULL,`master_code` varchar(20) DEFAULT NULL,`active_time` datetime DEFAULT NULL COMMENT '激活时间',`num_` int(11),`area` varchar(255) DEFAULT NULL DEFAULT NULL,PRIMARY KEY (`id`),KEY `num_` (`num_`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
|
|
|
|
+ String hbSql = "create table "+hbtable+" (`id` char(50) NOT NULL, `openid` varchar(64) DEFAULT NULL, `send_time` datetime DEFAULT NULL COMMENT '首次扫码时间', `amount` int(11) DEFAULT NULL, `send_state` smallint(6) DEFAULT NULL, `no_` varchar(50) DEFAULT NULL,`nick_name` varchar(100) DEFAULT NULL,`type_` int(11) DEFAULT NULL, PRIMARY KEY (`id`),UNIQUE KEY `no_` (`no_`) USING BTREE,KEY `send_time` (`send_time`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
|
|
|
|
+ String scanSql = "create table "+scantable+" (`id` char(50) NOT NULL, `openid` varchar(64) DEFAULT NULL, `scan_time` datetime DEFAULT NULL COMMENT '首次扫码时间', `nick_name` varchar(255) DEFAULT NULL COMMENT '首次扫码人昵称', `scan_count` int(11) DEFAULT NULL COMMENT '被扫次数', `amount` int(11) DEFAULT NULL, `type_` int(11) DEFAULT NULL,`head_pic` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
|
|
// String activateSql = "CREATE TABLE "+activatetable+" ( `id` char(16) NOT NULL,`config_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
|
|
// String activateSql = "CREATE TABLE "+activatetable+" ( `id` char(16) NOT NULL,`config_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
|
|
|
if( Db.queryLong(sql,tablename) <= 0){
|
|
if( Db.queryLong(sql,tablename) <= 0){
|
|
|
Db.update(qrcodeSql);
|
|
Db.update(qrcodeSql);
|
|
@@ -126,8 +126,7 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
long startNum = maxNum;
|
|
long startNum = maxNum;
|
|
|
int insertCount = 0;// 已生成二维码数量
|
|
int insertCount = 0;// 已生成二维码数量
|
|
|
put(map, id, insertCount);
|
|
put(map, id, insertCount);
|
|
|
-
|
|
|
|
|
- Record product = productService.getProductInfoByType(type);
|
|
|
|
|
|
|
+ Integer code_length = Db.queryInt("select code_length from t_jz_item where id = ?",type);
|
|
|
//主码
|
|
//主码
|
|
|
String masterCode = getMasterCode();
|
|
String masterCode = getMasterCode();
|
|
|
Boolean isUpload = true;
|
|
Boolean isUpload = true;
|
|
@@ -139,6 +138,7 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
r.set("prefix", code).set("id_begin", startNum+1).set("id_end", startNum+num).set("uid", uid)
|
|
r.set("prefix", code).set("id_begin", startNum+1).set("id_end", startNum+num).set("uid", uid)
|
|
|
.set("number", num).set("create_time", createTime).set("area", area).set("type_", type).save();
|
|
.set("number", num).set("create_time", createTime).set("area", area).set("type_", type).save();
|
|
|
int recordid = WxUtil.getInt("id", r);
|
|
int recordid = WxUtil.getInt("id", r);
|
|
|
|
|
+ Map<String,String> timeMap = new HashMap<String, String>();
|
|
|
// 生成数量大于分包数量
|
|
// 生成数量大于分包数量
|
|
|
long countNum = 0;
|
|
long countNum = 0;
|
|
|
if (num > Define.ADD_QRCODE_SINGLE) {
|
|
if (num > Define.ADD_QRCODE_SINGLE) {
|
|
@@ -149,17 +149,16 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
sb.append("insert into " + tablename +" (id,type_,num_,area,record_id,random_,uid) values ");
|
|
sb.append("insert into " + tablename +" (id,type_,num_,area,record_id,random_,uid) values ");
|
|
|
for (int k = 0; k < num - 1; k++) {// 拼接sql
|
|
for (int k = 0; k < num - 1; k++) {// 拼接sql
|
|
|
String randomNumber = getRandomNumber(4);
|
|
String randomNumber = getRandomNumber(4);
|
|
|
- status = getRandomString(code);
|
|
|
|
|
|
|
+ status = getRandomString(code,code_length,timeMap);
|
|
|
sb.append("('").append(status).append("',").append(type).append(",").append(countNum).append(",'").append(area).append("',"+recordid+",'"+randomNumber+"',"+uid+"),");
|
|
sb.append("('").append(status).append("',").append(type).append(",").append(countNum).append(",'").append(area).append("',"+recordid+",'"+randomNumber+"',"+uid+"),");
|
|
|
insertCount = k + 1;
|
|
insertCount = k + 1;
|
|
|
put(map, id, insertCount);
|
|
put(map, id, insertCount);
|
|
|
countNum++;
|
|
countNum++;
|
|
|
}
|
|
}
|
|
|
String randomNumber = getRandomNumber(4);
|
|
String randomNumber = getRandomNumber(4);
|
|
|
- status = getRandomString(code);
|
|
|
|
|
|
|
+ status = getRandomString(code,code_length,timeMap);
|
|
|
sb.append("('").append(status).append("',").append(type).append(",").append(countNum).append(",'").append(area).append("',"+recordid+",'"+randomNumber+"',"+uid+")");
|
|
sb.append("('").append(status).append("',").append(type).append(",").append(countNum).append(",'").append(area).append("',"+recordid+",'"+randomNumber+"',"+uid+")");
|
|
|
Db.update(sb.toString());
|
|
Db.update(sb.toString());
|
|
|
- System.out.println(sb);
|
|
|
|
|
insertCount = num;
|
|
insertCount = num;
|
|
|
put(map, id, insertCount);
|
|
put(map, id, insertCount);
|
|
|
sourceFilePath = getTxtPath(num, filePath, maxNum, tablename,code,
|
|
sourceFilePath = getTxtPath(num, filePath, maxNum, tablename,code,
|
|
@@ -170,7 +169,7 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
|
|
|
|
|
|
|
|
|
|
map.remove(id);
|
|
map.remove(id);
|
|
|
- String productName = Db.queryStr("select name_ from t_product where type_ = ?",type);
|
|
|
|
|
|
|
+ String productName = Db.queryStr("select item_name name_ from t_jz_item where id = ?",type);
|
|
|
return getFilePath(filePath, sourceFilePath,num,productName);
|
|
return getFilePath(filePath, sourceFilePath,num,productName);
|
|
|
}catch (Exception e) {
|
|
}catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
@@ -246,6 +245,7 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
String tablename,String code, Integer addNum, String createTime, String url,Integer type ) {
|
|
String tablename,String code, Integer addNum, String createTime, String url,Integer type ) {
|
|
|
// 查询新插入二维码集合
|
|
// 查询新插入二维码集合
|
|
|
String sql1 = "select id,num_,random_ from " + tablename + " where num_ > " + maxNum+" order by num_ asc";
|
|
String sql1 = "select id,num_,random_ from " + tablename + " where num_ > " + maxNum+" order by num_ asc";
|
|
|
|
|
+ url = "";
|
|
|
List<Record> idList = Db.find(sql1);
|
|
List<Record> idList = Db.find(sql1);
|
|
|
if (idList.size() > 0) {// 集合不为空,生成txt文件
|
|
if (idList.size() > 0) {// 集合不为空,生成txt文件
|
|
|
|
|
|
|
@@ -274,13 +274,13 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
String suffix = JFinalUtil.getInt("num_", idList.get(j)).toString();
|
|
String suffix = JFinalUtil.getInt("num_", idList.get(j)).toString();
|
|
|
String random_ = JFinalUtil.getStr("random_", idList.get(j)).toString();
|
|
String random_ = JFinalUtil.getStr("random_", idList.get(j)).toString();
|
|
|
if (addNum == 0) {// 判断是否生成编号
|
|
if (addNum == 0) {// 判断是否生成编号
|
|
|
- s1 = url + "/" + strId + "\r\n";
|
|
|
|
|
|
|
+ s1 = url + strId + "\r\n";
|
|
|
} else {
|
|
} else {
|
|
|
int length = 8 - suffix.length();
|
|
int length = 8 - suffix.length();
|
|
|
for (int k = 0; k < length; k++) {
|
|
for (int k = 0; k < length; k++) {
|
|
|
suffix = "0" + suffix;
|
|
suffix = "0" + suffix;
|
|
|
}
|
|
}
|
|
|
- s1 = url + "/" + strId + "," + code.toLowerCase()+suffix +","+random_+"\r\n";
|
|
|
|
|
|
|
+ s1 = url + strId + "," + code.toLowerCase()+suffix +","+random_+"\r\n";
|
|
|
}
|
|
}
|
|
|
output.write(s1.toLowerCase());
|
|
output.write(s1.toLowerCase());
|
|
|
}
|
|
}
|
|
@@ -327,15 +327,96 @@ public class QrcodeAddServiceImpl implements IQrcodeAddService {
|
|
|
return urlList;
|
|
return urlList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
|
+ long decimalNumber = 511082359;
|
|
|
|
|
+
|
|
|
|
|
+ String base36Number = Long.toString(decimalNumber, 36);
|
|
|
|
|
+ System.out.println("十进制数 " + decimalNumber + " 转换为 36 进制是: " + base36Number);
|
|
|
|
|
+ }
|
|
|
/**
|
|
/**
|
|
|
* 随机生成字符串
|
|
* 随机生成字符串
|
|
|
* @param flg 分表明前缀(a,b,c,d,........z)
|
|
* @param flg 分表明前缀(a,b,c,d,........z)
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- private static String getRandomString(String flg){
|
|
|
|
|
- String str = Common.getUUID();
|
|
|
|
|
- str = str.substring(0, Define.QRCODE_LENGTH);
|
|
|
|
|
- return flg+str;
|
|
|
|
|
|
|
+ private static String getRandomString(String flg,int code_length,Map<String,String> timeMap){
|
|
|
|
|
+ String start = "j";
|
|
|
|
|
+ String nowTime = getNowTime();
|
|
|
|
|
+ String integer = timeMap.get(nowTime);
|
|
|
|
|
+ integer =generateRandomString(integer);
|
|
|
|
|
+ if("*".equals(integer)){
|
|
|
|
|
+ try {
|
|
|
|
|
+ Thread.sleep(1);
|
|
|
|
|
+ nowTime = getNowTime();
|
|
|
|
|
+ integer = timeMap.get(nowTime);
|
|
|
|
|
+ integer =generateRandomString(integer);
|
|
|
|
|
+ } catch (InterruptedException e) {
|
|
|
|
|
+ // TODO Auto-generated catch block
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ timeMap.put(nowTime, integer);
|
|
|
|
|
+ int len = nowTime.length()+1+1;
|
|
|
|
|
+ int left = code_length-len;
|
|
|
|
|
+ String random = "";
|
|
|
|
|
+ if(left>0){
|
|
|
|
|
+ for (int i = 0; i <left; i++) {
|
|
|
|
|
+ random+="0";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return start+nowTime+random+integer;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public static String generateRandomString(String start) {
|
|
|
|
|
+ String now = "0";
|
|
|
|
|
+ if(start == null){
|
|
|
|
|
+ now = "0";
|
|
|
|
|
+ }else{
|
|
|
|
|
+ now = incrementString(start+"");
|
|
|
|
|
+ }
|
|
|
|
|
+ return now;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String incrementString(String input) {
|
|
|
|
|
+ // 检查输入字符串的长度是否为 1
|
|
|
|
|
+ if (input.length() != 1) {
|
|
|
|
|
+ throw new IllegalArgumentException("输入必须是长度为 1 的字符串。");
|
|
|
|
|
+ }
|
|
|
|
|
+ // 获取输入字符串的第一个字符
|
|
|
|
|
+ char ch = input.charAt(0);
|
|
|
|
|
+
|
|
|
|
|
+ // 处理 0 - 9 的情况
|
|
|
|
|
+ if (ch >= '0' && ch < '9') {
|
|
|
|
|
+ // 字符 ASCII 码值加 1 并转换为字符串返回
|
|
|
|
|
+ return String.valueOf((char) (ch + 1));
|
|
|
|
|
+ }
|
|
|
|
|
+ // 处理 9 到 a 的转换
|
|
|
|
|
+ else if (ch == '9') {
|
|
|
|
|
+ return "a";
|
|
|
|
|
+ }
|
|
|
|
|
+ // 处理 a - y 的情况
|
|
|
|
|
+ else if (ch >= 'a' && ch < 'y') {
|
|
|
|
|
+ // 字符 ASCII 码值加 1 并转换为字符串返回
|
|
|
|
|
+ return String.valueOf((char) (ch + 1));
|
|
|
|
|
+ }
|
|
|
|
|
+ // 处理 y 到 z 的转换
|
|
|
|
|
+ else if (ch == 'y') {
|
|
|
|
|
+ return "z";
|
|
|
|
|
+ }
|
|
|
|
|
+ // 输入字符不在有效范围内,抛出异常
|
|
|
|
|
+ else {
|
|
|
|
|
+ return "*";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ private static String getNowTime(){
|
|
|
|
|
+ Calendar instance = Calendar.getInstance();
|
|
|
|
|
+ int i = instance.get(Calendar.YEAR);
|
|
|
|
|
+ String yearStr = i+"";
|
|
|
|
|
+ String yea = yearStr.charAt(yearStr.length()-1)+"";
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmssSSS");
|
|
|
|
|
+ String format = yea+sdf.format(new Date());
|
|
|
|
|
+ String string = Long.toString(Long.valueOf(format), 36);
|
|
|
|
|
+ return string;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
}
|
|
}
|