OrderDetail

该博客展示了如何在Java环境下实现一个简单的在线购物系统。用户通过HTTP请求购买商品,系统首先验证用户余额,然后插入订单信息到数据库,同时更新用户的余额。如果余额不足,则交易失败。涉及到的技术包括Spring、MyBatis、数据库操作和异常处理。
摘要由CSDN通过智能技术生成

com.ssm.dao.user  OrderDetailDao.xml/OrderMasterDao.xml

    <!--新增所有列 OrderMasterDao.xml-->
    <insert id="insert" keyProperty="billcode" >
        insert into dgq.order_master(billCode, createdBy, creationDate, totalPrice, isPayment)
        values (#{billCode}, #{createdby}, #{creationdate}, #{totalprice}, #{ispayment})
    </insert>

com.ssm.dao  OrderDetailDao.java/OrderMasterDao.java

com.ssm.entity OrderDetail.java/OrderMaster.java

Usercount.usercountMoney改为Float类型
// ProviderController
    @Autowired
    private UserSerivce userSerivce;
    @Autowired
    private UsercountService usercountService;
    @Autowired
    private OrderDetailService orderDetailService;
    @Autowired
    private OrderMasterService orderMasterService;

    // 购买=============================================================================================================
    @RequestMapping("/buyproduct")
    @ResponseBody
    public String buyProduct(HttpServletRequest req, HttpServletResponse resp, @RequestParam("proid") Integer id) throws JsonProcessingException {
        Map<String, Object> resultMap = new HashMap<>();

        Integer userId = ((User) req.getSession().getAttribute(Constant.USER_SESSION)).getId();
        // 查商品
        Provider provider = providerService.queryProviderById(id);
        // 扣余额
        Usercount usercountQuery = new Usercount();
        usercountQuery.setUserId(userId);
        Usercount usercount = usercountService.queryAll(usercountQuery).get(0);
        if ( provider.getProductPrice() > usercount.getUsercountMoney() ) {
            resultMap.put("buyResult", "noMoney");
            return new ObjectMapper().writeValueAsString(resultMap);
        }
        // 插入订单 + 扣款
        try {
            OrderMaster orderMaster = new OrderMaster();
            orderMaster.setBillcode(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + (int) ((Math.random() * 9 + 1) * Math.pow(10, 8 - 1)));
            orderMaster.setCreatedby(userId);
            orderMaster.setCreationdate(new Date());
            orderMaster.setIspayment(0);
            orderMaster.setTotalprice(new Double(provider.getProductPrice().toString()));
            OrderMaster one = orderMasterService.insert(orderMaster);

            OrderDetail orderDetail = new OrderDetail();
            orderDetail.setBillcode(orderMaster.getBillcode());
            orderDetail.setProductid(id);
            orderDetail.setProductcount(1);
            OrderDetail two = orderDetailService.insert(orderDetail);

            usercount.setUsercountMoney(usercount.getUsercountMoney() - provider.getProductPrice());
            usercountService.update(usercount);
        } catch (NumberFormatException e) {
            e.printStackTrace();
            resultMap.put("buyResult", "false");
            return new ObjectMapper().writeValueAsString(resultMap);
        }
        resultMap.put("buyResult", "true");
        return new ObjectMapper().writeValueAsString(resultMap);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值