package com.mmall.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.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.mmall.common.Const;
import com.mmall.common.ServerResponse;
import com.mmall.dao.CartMapper;
import com.mmall.dao.OrderItemMapper;
import com.mmall.dao.OrderMapper;
import com.mmall.dao.PayInfoMapper;
import com.mmall.dao.ProductMapper;
import com.mmall.dao.ShippingMapper;
import com.mmall.pojo.Cart;
import com.mmall.pojo.Order;
import com.mmall.pojo.OrderItem;
import com.mmall.pojo.PayInfo;
import com.mmall.pojo.Product;
import com.mmall.pojo.Shipping;
import com.mmall.service.IOrderService;
import com.mmall.util.BigDecimalUtil;
import com.mmall.util.DateTimeUtil;
import com.mmall.util.FTPUtil;
import com.mmall.util.PropertiesUtil;
import com.mmall.vo.OrderItemVo;
import com.mmall.vo.OrderProductVo;
import com.mmall.vo.OrderVo;
import com.mmall.vo.ShippingVo;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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;
import java.util.Random;
/**
* Created by geely
*/
@Service("iOrderService")
public class OrderServiceImpl implements IOrderService {
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 final Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private PayInfoMapper payInfoMapper;
@Autowired
private CartMapper cartMapper;
@Autowired
private ProductMapper productMapper;
@Autowired
private ShippingMapper shippingMapper;
public ServerResponse createOrder(Integer userId,Integer shippingId){
//从购物车中获取数据
List<Cart> cartList = cartMapper.selectCheckedCartByUserId(userId);
//计算这个订单的总价
ServerResponse serverResponse = this.getCartOrderItem(userId,cartList);
if(!serverResponse.isSuccess()){
return serverResponse;
}
List<OrderItem> orderItemList = (List<OrderItem>)serverResponse.getData();
BigDecimal payment = this.getOrderTotalPrice(orderItemList);
//生成订单
Order order = this.assembleOrder(userId,shippingId,payment);
if(order == null){
return ServerResponse.createByErrorMessage("生成订单错误");
}
if(CollectionUtils.isEmpty(orderItemList)){
return ServerResponse.createByErrorMessage("购物车为空");
}
for(OrderItem orderItem : orderItemList){
orderItem.setOrderNo(order.getOrderNo());
}
//mybatis 批量插入
orderItemMapper.batchInsert(orderItemList);
//生成成功,我们要减少我们产品的库存
this.reduceProductStock(orderItemList);
//清空一下购物车
this.cleanCart(cartList);
//返回给前端数据
OrderVo orderVo = assembleOrderVo(order,orderItemList);
return ServerResponse.createBySuccess(orderVo);
}
private OrderVo assembleOrderVo(Order order,List<OrderItem> orderItemList){
OrderVo orderVo = new OrderVo();
orderVo.setOrderNo(order.getOrderNo());
orderVo.setPayment(order.getPayment());
orderVo.setPaymentType(order.getPaymentType());
orderVo.setPaymentTypeDesc(Const.PaymentTypeEnum.codeOf(order.getPaymentType()).getValue());
orderVo.setPostage(order.getPostage());
orderVo.setStatus(order.getStatus());
orderVo.setStatusDesc(Const.OrderStatusEnum.codeOf(order.getStatus()).getValue());
orderVo.setShippingId(order.getShippingId());
Shipping shipping = shippingMapper.selectByPrimaryKey(order.getShippingId());
if(shipping != null){
orderVo.setReceiverName(shipping.getReceiverName());
orderVo.setShippingVo(assembleShippingVo(shipping));
}
orderVo.setPaymentTime(DateTimeUtil.dateToStr(order.getPaymentTime()));
orderVo.setSendTime(DateTimeUtil.dateToStr(order.getSendTime()));
orderVo.setEndTime(DateTimeUtil.dateToStr(order.getEndTime()));
orderVo.setCreateTime(DateTimeUtil.dateToStr(order.getCreateTime()));
orderVo.setCloseTime(DateTimeUtil.dateToStr(order.getCloseTime()));
orderVo.setImageHost(PropertiesUtil.getProperty("ftp.server.http.prefix"));
List<OrderItemVo> orderItemVoList = Lists.newArrayList();
for(OrderItem orderItem : orderItemList){
OrderItemVo orderItemVo = assembleOrderItemVo(orderItem);
orderItemVoList.add(orderItemVo);
}
orderVo.setOrderItemVoList(orderItemVoList);
return orderVo;
}
private OrderItemVo assembleOrderItemVo(OrderItem orderItem){
OrderItemVo orderItemVo = new OrderItemVo();
orderItemVo.setOrderNo(orderItem.getOrderNo());
orderItemVo.setProductId(orderItem.getProductId());
orderItemVo.setProductName(orderItem.getProductName());
orderItemVo.setProductImage(orderItem.getProductImage());
orderItemVo.setCurrentUnitPrice(orderItem.getCurrentUnitPrice());
orderItemVo.setQuantity(orderItem.getQuantity());
orderItemVo.setTotalPrice(orderItem.getTotalPrice());
orderItemVo.setCreateTime(DateTimeUtil.dateToStr(orderItem.getCreateTime()));
return orderItemVo;
}
private ShippingVo assembleShippingVo(Shipping shipping){
ShippingVo shippingVo = new ShippingVo();
shippingVo.setReceiverName(shipping.getReceiverName());
shippingVo.setReceiverAddress(shipping.getReceiverAddress());
shippingVo.setReceiverProvince(shipping.getReceiverProvince());
shippingVo.setReceiverCity(shipping.getReceiverCity());
shippingVo.setReceiverDistrict(shipping.getReceiverDistrict());
shippingVo.setReceiverMobile(shipping.getReceiverMobile());
shippingVo.setReceiverZip(shipping.getReceiverZip());
shippingVo.setReceiverPhone(shippingVo.getReceiverPhone());
return shippingVo;
}
private void cleanCart(List<Cart> cartList){
for(Cart cart : cartList){
cartMapper.deleteByPrimaryKey(cart.getId());
}
}
private void reduceProductStock(List<OrderItem> orderItemList){
for(OrderItem orderItem : orderItemList){
Product product = productMapper.selectByPrimaryKey(orderItem.getProduc
没有合适的资源?快使用搜索试试~ 我知道了~
javaSSM从零到企业级电商后端源码
共88个文件
java:65个
xml:14个
jar:5个
需积分: 14 7 下载量 111 浏览量
2019-05-11
17:14:10
上传
评论 1
收藏 3.89MB ZIP 举报
温馨提示
此项目使用的技术:(注意一下,项目只需要window环境也可进行开发,只要有idea和jdk,tomcat,maven配置FTP的安装,即可进行开发使用)具体教程见本博客: mybatis spring springmvc技术 环境参数 操作系统 CentOS 6.8 64位、Windows7 64位 jdk版本 7u80 64位 git版本 2.8.0 Maven版本 3.0.5 MySQL版本 mysql-server-5.1.73 Nginx版本 nginx-1.10.2.tar.gz vsftpd版本 vsftpd-2.2.2-21.el6.x86_64 开发工具及版本 idea 15.0.6 技术栈 SSM/Guava/Jackson/Joda/注解 开发语言 Java
资源推荐
资源详情
资源评论
收起资源包目录
mmall.zip (88个子文件)
src
test
java
com
mmall
service
test
ShippingServiceTest.java 3KB
ProductServiceTest.java 1KB
dao
test
DaoTest.java 828B
CategoryDaoTest.java 892B
test
TestBase.java 575B
Base64GroupTest.java 1KB
BigDecimalTest.java 700B
main
webapp
WEB-INF
lib
alipay-trade-sdk-20161215-source.jar 124KB
alipay-sdk-java20161213173952.jar 1.93MB
alipay-trade-sdk-20161215.jar 75KB
alipay-sdk-java20161213173952-source.jar 1.76MB
web.xml 2KB
dispatcher-servlet.xml 2KB
index.jsp 616B
tools
mysql-connector-java-5.1.6-bin.jar 687KB
resources
generatorConfig.xml 6KB
applicationContext.xml 1KB
mappers
CartMapper.xml 6KB
OrderMapper.xml 8KB
ShippingMapper.xml 8KB
UserMapper.xml 7KB
OrderItemMapper.xml 7KB
CategoryMapper.xml 4KB
PayInfoMapper.xml 5KB
ProductMapper.xml 7KB
applicationContext-datasource.xml 5KB
datasource.properties 468B
zfbinfo.properties 3KB
mmall.properties 270B
logback.xml 3KB
java
com
mmall
common
ResponseCode.java 481B
TokenCache.java 1KB
ServerResponse.java 2KB
Const.java 3KB
service
IOrderService.java 1KB
impl
UserServiceImpl.java 8KB
OrderServiceImpl.java 25KB
ShippingServiceImpl.java 2KB
CategoryServiceImpl.java 4KB
CartServiceImpl.java 7KB
FileServiceImpl.java 2KB
ProductServiceImpl.java 10KB
ICategoryService.java 511B
ICartService.java 612B
IUserService.java 837B
IProductService.java 845B
IFileService.java 200B
IShippingService.java 547B
pojo
Order.java 3KB
User.java 2KB
PayInfo.java 2KB
Product.java 3KB
Category.java 2KB
Shipping.java 4KB
OrderItem.java 3KB
Cart.java 2KB
controller
backend
UserManageController.java 1KB
OrderManageController.java 4KB
ProductManageController.java 7KB
CategoryManageController.java 4KB
portal
OrderController.java 6KB
ShippingController.java 3KB
UserController.java 5KB
ProductController.java 2KB
CartController.java 5KB
dao
UserMapper.java 1KB
CartMapper.java 1010B
OrderItemMapper.java 683B
CategoryMapper.java 452B
ProductMapper.java 717B
OrderMapper.java 632B
ShippingMapper.java 756B
PayInfoMapper.java 349B
util
BigDecimalUtil.java 1KB
FTPUtil.java 3KB
DateTimeUtil.java 2KB
PropertiesUtil.java 1KB
MD5Util.java 2KB
vo
OrderVo.java 3KB
CartVo.java 1KB
ProductListVo.java 1KB
OrderProductVo.java 849B
OrderItemVo.java 2KB
ShippingVo.java 2KB
ProductDetailVo.java 3KB
CartProductVo.java 3KB
alipay
demo
trade
Main.java 23KB
DemoHbRunner.java 3KB
共 88 条
- 1
资源评论
一曲无痕奈何
- 粉丝: 525
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功