SpringBoot+微信小程序的B2C商城

GitHub:https://github.com/nimblepeanut/wx-mall.git

项目简介

项目使用前后台分离的设计方式、RESTful的设计风格开发。
后台采用Layui框架搭建页面,Ajax 异步请求、Thymeleaf 模板引擎搭配使用。
前台为微信小程序

后台管理系统

1. 登录

请添加图片描述

2. 主页

请添加图片描述

3. 管理员账号

请添加图片描述

4. 用户列表

请添加图片描述

5. 用户注册

请添加图片描述
请添加图片描述

6. 商品列表

请添加图片描述

7. 商品分页和查询

请添加图片描述

8. 添加商品

请添加图片描述

9. 修改商品

请添加图片描述

10. 分类列表

请添加图片描述

11. 分类信息统计

请添加图片描述
请添加图片描述

前台微信小程序

1. 登录

请添加图片描述

2. 注册

请添加图片描述

3. 首页

请添加图片描述
请添加图片描述

4. 搜索中心

请添加图片描述

5. 商品分类

请添加图片描述
请添加图片描述

6. 我的账号

请添加图片描述

7. 充值中心

请添加图片描述
请添加图片描述

8. 商品详情

请添加图片描述
请添加图片描述

9. 收获地址

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

10. 购物车

请添加图片描述
请添加图片描述
请添加图片描述

	/**
	 * 	付款
	 * 
	 * 	为防止超买超卖并且涉及到金钱,
	 * 	数据库事物的隔离级别调到串行化,
	 * 	使用表级共享锁:sql语句执行一句就加一个锁,
	 * 	报错就回滚
	 */
	@Override
	@Transactional(
		isolation = Isolation.SERIALIZABLE, 
		rollbackFor = Exception.class
	)
	public Integer payment(Integer userId) {

		// 购物车
		List<Cart> cartList = cartMapper.all(userId);
	
		// 总金额,初始值为0
		BigDecimal totalPrice = new BigDecimal("0");
		
		// 遍历修改每个商品的数量
		for (Cart cart : cartList) {
			// 减少对应商品的库存	 
			goodsMapper.updateCount(cart.getGoods().getId(), cart.getCount());
			
			// 注意:BigDecimal不能用 "*"、"+"等运算,必须用方法
			// multiply:乘,
			// 需要用 new BigDecimal() 方法把数量从Integer转为BigDecimal
			BigDecimal newNum = cart.getGoods().getPrice().multiply(new BigDecimal(cart.getCount()));
			// add:加
			totalPrice = totalPrice.add(newNum);
		}
		
		// 修改用户余额
		Integer userMoney = userMapper.updateMoney(userId, totalPrice);
		
		// 清空购物车,
		// 修改状态 state = 1
		Integer emptyCart = cartMapper.updateState(userId);
		
		// 判断是否成功
		if (userMoney > 0 && emptyCart > 0) {
			return 1;
		} else {
			return 0;
		}
		
	}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值