package com.ming.wowomall.service.impl;
import com.alipay.api.AlipayResponse;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.demo.trade.config.Configs;
import com.alipay.demo.trade.model.ExtendParams;
import com.alipay.demo.trade.model.GoodsDetail;
import com.alipay.demo.trade.model.builder.AlipayTradePrecreateRequestBuilder;
import com.alipay.demo.trade.model.result.AlipayF2FPrecreateResult;
import com.alipay.demo.trade.service.AlipayTradeService;
import com.alipay.demo.trade.service.impl.AlipayTradeServiceImpl;
import com.alipay.demo.trade.utils.ZxingUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.ming.wowomall.common.Const;
import com.ming.wowomall.common.ServerResponse;
import com.ming.wowomall.dao.*;
import com.ming.wowomall.pojo.*;
import com.ming.wowomall.service.OrderService;
import com.ming.wowomall.util.*;
import com.ming.wowomall.vo.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @author m969130721@163.com
* @date 18-9-1 下午4:08
*/
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private PayInfoMapper payInfoMapper;
@Autowired
private ShippingMapper shippingMapper;
@Autowired
private ProductMapper productMapper;
@Autowired
private CartMapper cartMapper;
/**
* 支付宝当面付2.0服务
*/
private static AlipayTradeService tradeService;
static{
/** 一定要在创建AlipayTradeService之前调用Configs.init()设置默认参数
* Configs会读取classpath下的zfbinfo.properties文件配置信息,如果找不到该文件则确认该文件是否在classpath目录
*/
Configs.init("zfbinfo.properties");
/** 使用Configs提供的默认参数
* AlipayTradeService可以使用单例或者为静态成员对象,不需要反复new
*/
tradeService = new AlipayTradeServiceImpl.ClientBuilder().build();
}
private static Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
@Transactional(rollbackFor = Exception.class)
@Override
public ServerResponse insertOrder(Integer userId, Integer shippingId) {
List<Cart> cartList = cartMapper.listCheckedCart(userId);
ServerResponse<List<OrderItem>> response = this.getOrderItemListByCar(userId, cartList);
if (!response.isSuccess()){
return response;
}
List<OrderItem> orderItemList = response.getData();
if (CollectionUtils.isEmpty(orderItemList)) {
return ServerResponse.createByErrorMessage("购物车为空");
}
//订单总价格
BigDecimal totalPrice = new BigDecimal("0");
for (OrderItem orderItem : orderItemList) {
totalPrice = BigDecimalUtil.add(orderItem.getTotalPrice().doubleValue(),totalPrice.doubleValue());
}
Order order = this.assembleOrder(userId, shippingId, totalPrice);
//创建订单
int effectRow = orderMapper.insertSelective(order);
if (effectRow == 0) {
return ServerResponse.createByErrorMessage("创建订单失败");
}
for (OrderItem orderItem : orderItemList) {
orderItem.setOrderNo(order.getOrderNo());
//减少库存
Product product = new Product();
product.setId(orderItem.getProductId());
productMapper.updateStock(product.getId(), -orderItem.getQuantity());
}
//持久化orderItem
orderItemMapper.insertBatch(orderItemList);
//清空购物车
cartMapper.deleteCheckedCartByUserId(userId);
//装配OrderVO
OrderVO orderVO = assembledOrderVO(order, orderItemList);
return ServerResponse.createBySuccess(orderVO);
}
@Override
public ServerResponse<Map> pay(Integer userId, Long orderNo, String path) {
//返回值封装
//"orderNo": "1485158676346",
//"qrPath": "http://img.wowomall.com/qr-1492329044075.png"
Map resultMap = Maps.newHashMap();
Order order = orderMapper.getByUserIdOrderNo(userId, orderNo);
if (order == null) {
return ServerResponse.createByErrorMessage("用户没有该订单");
}
resultMap.put("orderNo",orderNo);
// (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
// 需保证商户系统端不能重复,建议通过数据库sequence生成,
String outTradeNo = orderNo.toString();
// (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
String subject = new StringBuilder().append("wowomall扫码支付,订单号:").append(orderNo).toString();
// (必填) 订单总金额,单位为元,不能超过1亿元
// 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
String totalAmount = order.getPayment().toString();
// (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
// 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
String undiscountableAmount = "0";
// 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
// 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
String sellerId = "";
// 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
String body = new StringBuilder().append("订单").append(outTradeNo).append("购买商品共:").append(totalAmount).append("元").toString();
// 商户操作员编号,添加此参数可以为商户操作员做销售统计
String operatorId = "test_operator_id";
// (必填) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
String storeId = "test_store_id";
// 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),详情请咨询支付宝技术支持
ExtendParams extendParams = new ExtendParams();
extendParams.setSysServiceProviderId("2088100200300400500");
// 支付超时,定义为120分钟
String timeoutExpress = "120m";
// 商品明细列表,需填写购买商品详细信息,
List<GoodsDetail> goodsDetailList = new ArrayList<GoodsDetail>();
// 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
List<OrderItem> orderItems = orderItemMapper.listByUserIdOrderNo(userId, orderNo);
for (OrderItem good : orderItems){
GoodsDetail goods = GoodsDetail.newInstance
没有合适的资源?快使用搜索试试~ 我知道了~
基于springboot框架搭建的B2C商城系统源码+项目说明文档.zip
共99个文件
java:77个
xml:12个
properties:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 25 浏览量
2022-12-26
17:41:03
上传
评论
收藏 158KB ZIP 举报
温馨提示
基于springboot框架搭建的B2C商城系统源码+项目说明文档.zip 前后分离架构,服务器端代码 【环境】 JDK版本:8 数据库:MySQL5.7 技术栈:SpringBoot2.0.2/MyBatis3.4.6/Joda/Guava Nginx版本:1.15.0 Maven版本:3.5.3 Redis版本:4.0.9 【功能模块】 用户模块 分类模块 商品模块 购物车模块 订单模块 支付模块 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、项目说明等,该项目可以直接作为毕设使用。 也可以用来学习参考借鉴!
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot框架搭建的B2C商城系统源码+项目说明文档.zip (99个子文件)
mvnw.cmd 5KB
项目说明.md 1KB
pom.xml 8KB
src
test
java
com
ming
wowomall
WowomallApplicationTests.java 573B
main
resources
wowomall.properties 743B
sql
wowomall.sql 14KB
logback.xml 4KB
zfbinfo.properties 3KB
generatorConfig.xml 6KB
mybatis.config.xml 695B
application.yml 1KB
mappers
OrderItemMapper.xml 7KB
ProductMapper.xml 8KB
ShippingMapper.xml 8KB
PayInfoMapper.xml 5KB
UserMapper.xml 7KB
OrderMapper.xml 9KB
CategoryMapper.xml 5KB
CartMapper.xml 6KB
java
com
alipay
demo
trade
DemoHbRunner.java 3KB
Main.java 23KB
ming
wowomall
controller
backend
UserManageController.java 2KB
CategoryManageController.java 2KB
ProductManageController.java 5KB
OrderManageController.java 2KB
portal
ProductController.java 1KB
ShippingController.java 5KB
UserController.java 8KB
OrderController.java 9KB
CartController.java 9KB
task
ClosedOrderTask.java 4KB
cache
TokenCache.java 1KB
dao
OrderMapper.java 1012B
UserMapper.java 941B
PayInfoMapper.java 365B
ProductMapper.java 1KB
ShippingMapper.java 802B
OrderItemMapper.java 760B
CartMapper.java 1KB
CategoryMapper.java 686B
pojo
Cart.java 2KB
Product.java 3KB
PayInfo.java 2KB
Shipping.java 4KB
Order.java 3KB
Category.java 2KB
User.java 3KB
OrderItem.java 3KB
service
PayInfoService.java 137B
CartService.java 869B
OrderService.java 1KB
UserService.java 2KB
CategoryService.java 687B
ProductService.java 1KB
impl
CartServiceImpl.java 7KB
FileServiceImpl.java 2KB
UserServiceImpl.java 7KB
PayInfoServiceImpl.java 365B
ShippingServiceImpl.java 3KB
ProductServiceImpl.java 8KB
CategoryServiceImpl.java 4KB
OrderServiceImpl.java 26KB
ShippingService.java 601B
FileService.java 407B
framework
RequestControllerAop.java 2KB
filter
SessionExpireFilter.java 2KB
interceptor
AuthorityInterceptor.java 3KB
common
Const.java 5KB
ServerResponse.java 3KB
RedisPool.java 2KB
ResponseCode.java 525B
RedisShardedPool.java 3KB
RedissonManager.java 1KB
WowomallApplication.java 1KB
util
RedisShardedPoolUtil.java 4KB
PropertiesUtil.java 3KB
CookieUtil.java 2KB
UUIDUtil.java 1KB
DateUtil.java 4KB
DateTimeUtil.java 2KB
RedisPoolUtil.java 4KB
BigDecimalUtil.java 1KB
JsonUtil.java 4KB
MD5Util.java 2KB
FTPUtil.java 4KB
vo
CartProductVO.java 4KB
OrderItemVO.java 2KB
ProductListVO.java 2KB
CartVO.java 1KB
ShippingVO.java 3KB
ProductDetailVO.java 4KB
OrderProductVO.java 1KB
OrderVO.java 4KB
config
WebMvcConfig.java 795B
GlobalExceptionConfig.java 1KB
.mvn
wrapper
maven-wrapper.properties 110B
maven-wrapper.jar 46KB
mvnw 6KB
.gitignore 407B
共 99 条
- 1
资源评论
onnx
- 粉丝: 9617
- 资源: 5597
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功