private int getCustomerAwardNormal2(OracleClient ado) {
String qry = "SELECT SUM(AWARD_WEIGHT) FROM wx_customer_activity_draw WHERE is_use= 1 AND activity_id= ? ";
Integer sumW = ado.getInt(qry, new Object[]{1});
int random = -2;
try {
double sumWeight = sumW;
double randomNumber;
randomNumber = Math.random();
// System.out.println("randomNumber是:" + randomNumber);
double d1 = 0;
double d2 = 0;
qry = "SELECT AWARD_WEIGHT,AWARD_COUNT FROM wx_customer_activity_draw WHERE is_use= 1 AND activity_id=1 ORDER BY order_id";
ResultRow[] rows = ado.getResultRows(qry);
List<Double> prizes = new ArrayList<Double>();
if(rows.length>0){
for (int i = 0; i < rows.length; i++) {
prizes.add(Double.valueOf(rows[i].getString(0)));
}
}
for (int i = 0; i < prizes.size(); i++) {
d2 += (prizes.get(i)) / sumWeight;
if (i == 0) {
d1 = 0;
} else {
d1 += (prizes.get(i)) / sumWeight;
}
if (randomNumber >= d1 && randomNumber <= d2) {
random = i;
this.amount = Double.valueOf(rows[i].getString(1));
// System.err.println(this.amount);
break;
}
}
} catch (Exception e) {
logger.error(e.getMessage());
logger.error("生成抽奖随机数出错,出错原因:" + e.getMessage());
random = -1;
}
if(random<0){
getCustomerAwardNormal2(ado);
}
return random;
}
String qry = "SELECT SUM(AWARD_WEIGHT) FROM wx_customer_activity_draw WHERE is_use= 1 AND activity_id= ? ";
Integer sumW = ado.getInt(qry, new Object[]{1});
int random = -2;
try {
double sumWeight = sumW;
double randomNumber;
randomNumber = Math.random();
// System.out.println("randomNumber是:" + randomNumber);
double d1 = 0;
double d2 = 0;
qry = "SELECT AWARD_WEIGHT,AWARD_COUNT FROM wx_customer_activity_draw WHERE is_use= 1 AND activity_id=1 ORDER BY order_id";
ResultRow[] rows = ado.getResultRows(qry);
List<Double> prizes = new ArrayList<Double>();
if(rows.length>0){
for (int i = 0; i < rows.length; i++) {
prizes.add(Double.valueOf(rows[i].getString(0)));
}
}
for (int i = 0; i < prizes.size(); i++) {
d2 += (prizes.get(i)) / sumWeight;
if (i == 0) {
d1 = 0;
} else {
d1 += (prizes.get(i)) / sumWeight;
}
if (randomNumber >= d1 && randomNumber <= d2) {
random = i;
this.amount = Double.valueOf(rows[i].getString(1));
// System.err.println(this.amount);
break;
}
}
} catch (Exception e) {
logger.error(e.getMessage());
logger.error("生成抽奖随机数出错,出错原因:" + e.getMessage());
random = -1;
}
if(random<0){
getCustomerAwardNormal2(ado);
}
return random;
}