package cn.test.logan.day04;
10年建站经验, 成都网站建设、做网站客户的见证与正确选择。创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
import java.util.ArrayList;
/**
* 订单类
* 包含:订单ID、订单所属用户、订单所包含的商品、订单总金额、订单应付金额
* 500-1000 ------- 8.5折
* 1000-1500 ------- 8折
* 1500-2000 ------- 7折
* 2000以上 ------- 6.5折
* 如果是会员,那么可以基于以上折扣继续折扣
* 一般会员:9.5折
* 中级会员:9折
* 高级会员:8折
* @author QIN
*
*/
public class Order {undefined
// 订单ID
public String ordId;
// 订单所属用户
public User user;
// 订单所包含的商品(多个商品,使用ArrayList)
public ArrayList pds;
// 订单总金额
public float ordAllAmt;
// 订单应付金额
public float payAmt;
// 计算总金额的方法
public void setAllAmt() {undefined
float sum = 0;
for(int i=0;i
sum +=this.pds.get(i).price * this.pds.get(i).number;
}
this.ordAllAmt = sum;
}
// 计算实付金额
public void setPayAmt() {undefined
float tmp = this.ordAllAmt;
// 根据总金额进行折扣
if(this.ordAllAmt = 500 this.ordAllAmt
tmp = this.ordAllAmt * 0.85f;
}
if(this.ordAllAmt = 1000 this.ordAllAmt
tmp = this.ordAllAmt * 0.8f;
}
if(this.ordAllAmt = 1500 this.ordAllAmt
tmp = this.ordAllAmt * 0.7f;
}
if(this.ordAllAmt = 2000) {undefined
tmp = this.ordAllAmt * 0.65f;
}
// 根据会员等级折扣
if(user.CustLevel.equals("一般会员")) {undefined
tmp = tmp * 0.95f;
}
if(user.CustLevel.equals("中级会员")) {undefined
tmp = tmp * 0.9f;
}
if(user.CustLevel.equals("高级会员")) {undefined
tmp = tmp * 0.8f;
}
//计算结果赋值给对象上的payAmt变量
this.payAmt = tmp;
}
}
参考资料来源:百度贴吧CSDN博主「公子京」
第一个不就是一对多吗? 我给你看看已订单号进行关联
订单号,订单日期,用户姓名,送货地址
1 2015/9/1 kill 北京
订单项id,订单号,商品名称,商品价格,商品数量)
123 1 泡面 10 100
223 1 纯净水 11 111
省,市,区,街道 订单号
1 1 1 1 1
2 2 2 2 1
strust2 (我没有用过不过我一般是这样做的)
直接用用后台进行校验
/**
* 得到一个新的订单代码
* 说明,此函数还没有进行过多线程测试,更新数据库时未加锁
* @return 新的订单代码
*/
public String getOrderCode(){
//getParameter这个方法就是从数据库取2个参数的值 ORDER_CODE_DATE 和
//ORDER_CODE_NO是数据库字段名
BasParameters orderCodeDate = getParameter(ORDER_CODE_DATE);
BasParameters orderCodeNo = getParameter(ORDER_CODE_NO);
//当前日期
String currDate=new SimpleDateFormat("yyyyMMdd").format(new Date(System.currentTimeMillis()));
//每天的起始数
int orderNo = 100;
//表里存的日期和当前日期相同,顺序号累加
if (currDate.equals(orderCodeDate.getValue())){
orderCodeNo.setValue(""+(Integer.parseInt(orderCodeNo.getValue())+1));
orderNo = (Integer.parseInt(orderCodeNo.getValue()));
//save 就是保存ORDER_CODE_DATE 和 ORDER_CODE_NO当前值到数据库
save(orderCodeNo);
} else {
//表里存的日期和当前日期不同,顺序号重新开始,更新参数表的日期
orderCodeDate.setValue(currDate);
save(orderCodeDate);
orderCodeNo.setValue(orderNo);
save(orderCodeNo);
}
return currDate + new DecimalFormat("000000").format(orderNo);
}