package com.fzk.exercise.manage.service.impl;
import com.fzk.exercise.manage.common.Const;
import com.fzk.exercise.manage.common.ServerResponse;
import com.fzk.exercise.manage.dao.OrderItemMapper;
import com.fzk.exercise.manage.dao.OrderMapper;
import com.fzk.exercise.manage.dto.OrderCartDto;
import com.fzk.exercise.manage.dto.OrderDto;
import com.fzk.exercise.manage.model.Order;
import com.fzk.exercise.manage.model.OrderItem;
import com.fzk.exercise.manage.service.IOrderItemService;
import com.fzk.exercise.manage.service.IOrderService;
import com.fzk.exercise.manage.utils.BigDecimalUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;
/**
* @Author: Amrir
* @Description:
* @Date: Created in 10:07 2018/4/12
*/
@Service("iOrderService")
public class OrderServiceImpl implements IOrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private IOrderItemService iOrderItemService;
@Transactional
public ServerResponse<Object> createOrder(Integer userId,BigInteger orderNo,Integer paymentType,String remark){
//获取数据
OrderCartDto orderCartDto = iOrderItemService.listByOrderNo(orderNo);
//计算这个订单的总价
List<OrderItem> orderItemList = orderCartDto.getOrderItemDtoList();
BigDecimal payment = orderCartDto.getCartTotalPrice();
//生成订单
Order order = this.assembleOrder(userId,orderItemList,payment,paymentType,remark);
if (order ==null){
return ServerResponse.createByErrorMessage("生成订单错误");
}
if (CollectionUtils.isEmpty(orderItemList)){
return ServerResponse.createByErrorMessage("没有选择课程,无法生成订单");
}
//mybatis 批量插入
orderItemMapper.batchInsert(orderItemList);
//清空一个购物车
this.cleatOrderCart(orderItemList);
return ServerResponse.createBySuccess("生成订单成功",order);
}
//根据orderNo和userId查询订单详情
public ServerResponse<OrderDto> getOrderDetail(Integer userId,BigInteger orderNo){
Order order = orderMapper.selectByUserIdAndOrderNo(userId,orderNo);
if (order !=null){
List<OrderItem> orderItemList = orderItemMapper.getByOrderNoUserId(orderNo,userId);
OrderDto orderDto = assembleOrderDto(order, orderItemList);
if (orderDto==null){
return ServerResponse.createByErrorMessage("查询失败");
}
return ServerResponse.createBySuccess("查询成功",orderDto);
}
return ServerResponse.createByErrorMessage("没有找到该订单");
}
public ServerResponse<String> cancel(Integer userId,BigInteger orderNo){
Order order = orderMapper.selectByUserIdAndOrderNo(userId,orderNo);
if (order == null){
return ServerResponse.createByErrorMessage("该用户此订单不存在");
}
if (order.getStatus() != Const.OrderStatusEnum.NO_PAY.getCode()){
return ServerResponse.createByErrorMessage("已付款,无法取消订单");
}
Order updateOrder = new Order();
updateOrder.setId(order.getId());
updateOrder.setStatus(Const.OrderStatusEnum.CANCELED.getCode());
int rowCount = orderMapper.updateByPrimaryKeySelective(updateOrder);
if (rowCount>0){
return ServerResponse.createBySuccess();
}
return ServerResponse.createByError();
}
//分页查询订单
public ServerResponse<PageInfo> getOrderList(Integer userId, int pageNum, int pageSize){
PageHelper.startPage(pageNum,pageSize);
List<Order> orderList = orderMapper.selectByUserId(userId);
List<OrderDto> orderDtoList = assembleOrderDtoList(orderList,userId);
PageInfo pageResult = new PageInfo(orderList);
pageResult.setList(orderDtoList);
return ServerResponse.createBySuccess(pageResult);
}
//付款后修改状态为:已付款
public ServerResponse queryOrderPayStatus(Integer userId,BigInteger orderNo){
Order order = orderMapper.selectByUserIdAndOrderNo(userId,orderNo);
if (order==null){
return ServerResponse.createByErrorMessage("用户没有该订单");
}
if (order.getStatus() >= Const.OrderStatusEnum.PAID.getCode()){
return ServerResponse.createBySuccess();
}
return ServerResponse.createByError();
}
//--------------------------------------------------------------
//backend
public ServerResponse<PageInfo> managerList(Order order,int pageNum,int pageSize){
PageHelper.startPage(pageNum,pageSize);
List<Order> orderList = orderMapper.search(order);
List<OrderDto> orderDtoList = this.assembleOrderDtoList(orderList,null);
PageInfo pageResult = new PageInfo(orderList);
pageResult.setList(orderDtoList);
return ServerResponse.createBySuccess(pageResult);
}
public ServerResponse<OrderDto> managerDetail(BigInteger orderNo){
Order order = orderMapper.selectByOrderNo(orderNo);
if (order != null){
List<OrderItem> orderItemList = orderItemMapper.getByOrderNo(orderNo);
OrderDto orderDto = assembleOrderDto(order,orderItemList);
return ServerResponse.createBySuccess(orderDto);
}
return ServerResponse.createByErrorMessage("订单不存在");
}
public ServerResponse<PageInfo> managerSearch(Order order,int pageNum,int pageSize){
PageHelper.startPage(pageNum,pageSize);
List<Order> orderList = orderMapper.search(order);
if (CollectionUtils.isNotEmpty(orderList)){
List<OrderDto> orderDtoList = Lists.newArrayList();
for (int i = 0; i < orderList.size(); i++) {
List<OrderItem> orderItemList = orderItemMapper.getByOrderNo(orderList.get(i).getOrderNo());
OrderDto orderDto = assembleOrderDto(order,orderItemList);
orderDtoList.add(orderDto);
}
PageInfo pageResult = new PageInfo(orderList);
pageResult.setList(orderDtoList);
return ServerResponse.createBySuccess(pageResult);
}
return ServerResponse.createByErrorMessage("订单不存在");
}
public ServerResponse<String> pay(BigInteger orderNo){
Order order = orderMapper.selectByOrderNo(orderNo);
if (order != null){
if (order.getStatus()==Const.OrderStatusEnum.NO_PAY.getCode()){
order.setStatus(Const.OrderStatusEnum.PAID.getCode());
order.setPaymentTime(new Date());
orderMapper.updateByPrimaryKeySelective(order);
return ServerResponse.createBySuccessMessage("订单完成");
}
}
return ServerResponse.createByErrorMessage("订单不存在");
}
public ServerResponse<String> manageSuccess(BigInteger orderNo){
Order order = orderMapper.selectByOrderNo(orderNo);
if (order != null){
if (order.getStatus()==Const.OrderStatusEnum.PAID.getCode()){
order.setStatus(Const.OrderStatusEnum.ORDER_SUCCESS.getCode());
orderMapper.updateByPrimaryKeySelective(order);
return ServerResponse.createBySuccessMessage("订单完成");
}
}
return ServerResponse.createByErrorMessage("订单不存在");
}
/*---------------------------------------
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
健身俱乐部信息管理系统.zip (1068个子文件)
build.bat 1014B
build.bat 1014B
OrderServiceImpl.class 11KB
OrderServiceImpl.class 11KB
UserServiceImpl.class 9KB
UserServiceImpl.class 9KB
UserController.class 8KB
UserController.class 8KB
OrderItemServiceImpl.class 8KB
OrderItemServiceImpl.class 8KB
CourseManageController.class 7KB
CourseManageController.class 7KB
CourseServiceImpl.class 6KB
CourseServiceImpl.class 6KB
OrderManageController.class 6KB
OrderManageController.class 6KB
OrderController.class 6KB
OrderController.class 6KB
SendEmailUtils.class 6KB
SendEmailUtils.class 6KB
Course.class 5KB
Course.class 5KB
UserCardServiceImpl.class 5KB
UserCardServiceImpl.class 5KB
PlaceManageController.class 5KB
PlaceManageController.class 5KB
CourseProjectDto.class 4KB
CourseProjectDto.class 4KB
UserCardManageController.class 4KB
UserCardManageController.class 4KB
UserManageController.class 4KB
UserManageController.class 4KB
OrderItemController.class 4KB
OrderItemController.class 4KB
ProjectManageController.class 4KB
ProjectManageController.class 4KB
Order.class 4KB
Order.class 4KB
PlaceReserveManageController.class 4KB
PlaceReserveManageController.class 4KB
ServerResponse.class 4KB
ServerResponse.class 4KB
PlaceServiceImpl.class 4KB
PlaceServiceImpl.class 4KB
PlaceReserveServiceImpl.class 4KB
PlaceReserveServiceImpl.class 4KB
ProjectServiceImpl.class 3KB
ProjectServiceImpl.class 3KB
OrderItem.class 3KB
OrderItem.class 3KB
UserCard.class 3KB
UserCard.class 3KB
PlaceReserve.class 3KB
PlaceReserve.class 3KB
User.class 3KB
User.class 3KB
Project.class 2KB
Project.class 2KB
Place.class 2KB
Place.class 2KB
Const$OrderStatusEnum.class 2KB
Const$OrderStatusEnum.class 2KB
OrderItemDto.class 2KB
OrderItemDto.class 2KB
Const$PaymentTypeEnum.class 2KB
Const$PaymentTypeEnum.class 2KB
ProjectController.class 2KB
ProjectController.class 2KB
CourseController.class 2KB
CourseController.class 2KB
OrderItemMapper.class 2KB
IOrderService.class 2KB
OrderItemMapper.class 2KB
IOrderService.class 2KB
PlaceController.class 2KB
PlaceController.class 2KB
DateTimeUtil.class 2KB
DateTimeUtil.class 2KB
CustomObjectMapper$1.class 2KB
CustomObjectMapper$1.class 2KB
IUserService.class 2KB
IUserService.class 2KB
ResponseCode.class 2KB
ResponseCode.class 2KB
UserManageControllerTest.class 2KB
Const$ProductStatusEnum.class 2KB
Const$ProductStatusEnum.class 2KB
Const$PayPlatformEnum.class 1KB
Const$PayPlatformEnum.class 1KB
OrderCartDto.class 1KB
OrderCartDto.class 1KB
UserMapper.class 1KB
UserMapper.class 1KB
Const.class 1KB
Const.class 1KB
BigDecimalUtil.class 1KB
BigDecimalUtil.class 1KB
OrderMapper.class 1KB
OrderMapper.class 1KB
OrderDto.class 1KB
共 1068 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
博士僧小星
- 粉丝: 1931
- 资源: 5897
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于ARM的指令调度和延迟分支
- 基于Vue和TypeScript的极简聊天应用设计源码 - HasChat
- 基于Vue2全家桶和Zcool数据的图片收集网站设计源码 - cool-picture
- 基于C和C++的二维绘制工具设计源码 - DrawPro
- Object.defineProperty 的 IE 补丁object-defineproperty-ie-master.zip
- 整卷预览.mhtml
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- 基于Javascript的结婚请帖设计源码 - Invitation
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功