@Transactional
public synchronized int addPiaojuOrder(WlcOrder wlcOrder, WlcPiaoju wlcPiaoju,
Double buyMoney) {
try {
//支付成功和下单未支付的总额
Double amount = wlcPiaojuService.getAllOrderAmountByPJId(wlcPiaoju.getId());
BigDecimal b1 = new BigDecimal(Double.toString(buyMoney));
b1 = b1.setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal b2 = new BigDecimal(Double.toString(wlcPiaoju.getTotal()));
b2 = b2.setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal b3 = new BigDecimal(Double.toString(amount));
b3 = b3.setScale(2, BigDecimal.ROUND_HALF_UP);
//购买时间已超过放款时间
if (wlcPiaoju.getLoansTime().getTime() - new Date().getTime() < 0) {
return 3;
}
//票据状态不在发售中
if (!"2".equals(wlcPiaoju.getProductStatus())) {
return 1;
}
//购买金额大于剩余金额 buyMoney > (wlcPiaoju.getTotal()-amount)
if (b1.compareTo(b2.subtract(b3)) > 0) {
return 2;
}
//订单满额锁定状态buyMoney == (wlcPiaoju.getTotal()-amount)
if (b1.compareTo(b2.subtract(b3)) == 0) {
wlcPiaoju.setProductStatus("6");
wlcPiaojuService.saveOrUpdate(wlcPiaoju);
}
wlcPiaojuService.saveOrder(wlcOrder);
//this.saveOrUpdate(wlcOrder);
return -1;
} catch (Exception e) {
e.printStackTrace();
logger.info("WlcOrderServiceImpl-------------------------addPiaojuOrder()出现异常======================" + e.getMessage());
return 2;
}
}
在以上的红色代码中,两个方法开始分别使用了hibernate机制,来查询订单总额和保存新的订单。
查询订单总额主要用于用于比较新的订单是否超过可买余额。但是在使用hibernate时间,由于取得的数据都是从缓存里面获取的,所以,出现了“冒顶”的情况。
开始以为bug的产生是由于同步没成功,最后经过几天的奋战,用JDBC来操作这两个方法。获得了成功。
相关推荐
3. `lib`目录:项目依赖的第三方库,如Struts、Hibernate、JDBC驱动等。 4. `config`目录:配置文件,如Struts配置文件(`struts-config.xml`)、Hibernate配置文件(`hibernate.cfg.xml`)、Web应用配置(`web.xml`)等。...
在IT行业中,开发Web应用程序时,常常会使用到框架来简化开发流程,提高效率。"hibernate+struts2"就是一个经典的Java Web开发组合,主要用于实现数据持久化和业务逻辑控制。本项目是一个基于这个组合实现的登录注册...
spring+hibernate+struts教程
Struts2、Hibernate和Spring是Java Web开发中的三大主流框架,它们各司其职,协同工作,能够构建出高效、可维护的Web应用程序。在这个整合的小例子中,我们将深入理解这三个框架如何相互配合,实现一个基础的“增删...
Hibernate框架是一个开放源代码的持久层框架,旨在解决Java应用程序中的数据访问问题。Hibernate框架提供了强大的ORM(Object-Relational Mapping,对象关系映射)功能,可以将Java对象与关系数据库进行映射。 知识...
在Java的Hibernate框架中,一对多关联映射是一种常见的数据模型关系,用于表示一个实体(如班级)可以与多个其他实体(如学生)相关联。这种关系映射可以帮助简化数据库操作,使得在Java代码中处理这些关系变得更加...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,为构建可维护性和可扩展性高的企业级应用程序提供了坚实的基础。在"struts2 课程设计"中,我们将深入探讨如何利用Struts2框架来实现...
这是分卷压缩后的资源的第二部分,请先下载本人资源的第一部分后再解压。