前台订单接口完善
This commit is contained in:
parent
5f4a378347
commit
68160615cb
@ -1,15 +1,19 @@
|
||||
package com.macro.mall.portal.controller;
|
||||
|
||||
import com.macro.mall.common.api.CommonPage;
|
||||
import com.macro.mall.common.api.CommonResult;
|
||||
import com.macro.mall.portal.domain.ConfirmOrderResult;
|
||||
import com.macro.mall.portal.domain.OmsOrderDetail;
|
||||
import com.macro.mall.portal.domain.OrderParam;
|
||||
import com.macro.mall.portal.service.OmsPortalOrderService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -26,8 +30,8 @@ public class OmsPortalOrderController {
|
||||
@ApiOperation("根据购物车信息生成确认单信息")
|
||||
@RequestMapping(value = "/generateConfirmOrder", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public CommonResult<ConfirmOrderResult> generateConfirmOrder() {
|
||||
ConfirmOrderResult confirmOrderResult = portalOrderService.generateConfirmOrder();
|
||||
public CommonResult<ConfirmOrderResult> generateConfirmOrder(@RequestBody List<Long> cartIds) {
|
||||
ConfirmOrderResult confirmOrderResult = portalOrderService.generateConfirmOrder(cartIds);
|
||||
return CommonResult.success(confirmOrderResult);
|
||||
}
|
||||
|
||||
@ -39,11 +43,11 @@ public class OmsPortalOrderController {
|
||||
return CommonResult.success(result, "下单成功");
|
||||
}
|
||||
|
||||
@ApiOperation("支付成功的回调")
|
||||
@ApiOperation("用户支付成功的回调")
|
||||
@RequestMapping(value = "/paySuccess", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public CommonResult paySuccess(@RequestParam Long orderId) {
|
||||
Integer count = portalOrderService.paySuccess(orderId);
|
||||
public CommonResult paySuccess(@RequestParam Long orderId,@RequestParam Integer payType) {
|
||||
Integer count = portalOrderService.paySuccess(orderId,payType);
|
||||
return CommonResult.success(count, "支付成功");
|
||||
}
|
||||
|
||||
@ -62,4 +66,48 @@ public class OmsPortalOrderController {
|
||||
portalOrderService.sendDelayMessageCancelOrder(orderId);
|
||||
return CommonResult.success(null);
|
||||
}
|
||||
|
||||
@ApiOperation("按状态分页获取用户订单列表")
|
||||
@ApiImplicitParam(name = "status", value = "订单状态:-1->全部;0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭",
|
||||
defaultValue = "-1", allowableValues = "-1,0,1,2,3,4", paramType = "query", dataType = "int")
|
||||
@RequestMapping(value = "/list", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public CommonResult<CommonPage<OmsOrderDetail>> list(@RequestParam Integer status,
|
||||
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(required = false, defaultValue = "5") Integer pageSize) {
|
||||
CommonPage<OmsOrderDetail> orderPage = portalOrderService.list(status,pageNum,pageSize);
|
||||
return CommonResult.success(orderPage);
|
||||
}
|
||||
|
||||
@ApiOperation("根据ID获取订单详情")
|
||||
@RequestMapping(value = "/detail/{orderId}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public CommonResult<OmsOrderDetail> detail(@PathVariable Long orderId) {
|
||||
OmsOrderDetail orderDetail = portalOrderService.detail(orderId);
|
||||
return CommonResult.success(orderDetail);
|
||||
}
|
||||
|
||||
@ApiOperation("用户取消订单")
|
||||
@RequestMapping(value = "/cancelUserOrder", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public CommonResult cancelUserOrder(Long orderId) {
|
||||
portalOrderService.cancelOrder(orderId);
|
||||
return CommonResult.success(null);
|
||||
}
|
||||
|
||||
@ApiOperation("用户确认收货")
|
||||
@RequestMapping(value = "/confirmReceiveOrder", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public CommonResult confirmReceiveOrder(Long orderId) {
|
||||
portalOrderService.confirmReceiveOrder(orderId);
|
||||
return CommonResult.success(null);
|
||||
}
|
||||
|
||||
@ApiOperation("用户删除订单")
|
||||
@RequestMapping(value = "/deleteOrder", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public CommonResult deleteOrder(Long orderId) {
|
||||
portalOrderService.deleteOrder(orderId);
|
||||
return CommonResult.success(null);
|
||||
}
|
||||
}
|
||||
|
@ -1,48 +1,26 @@
|
||||
package com.macro.mall.portal.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 生成订单时传入的参数
|
||||
* Created by macro on 2018/8/30.
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class OrderParam {
|
||||
//收货地址id
|
||||
@ApiModelProperty("收货地址ID")
|
||||
private Long memberReceiveAddressId;
|
||||
//优惠券id
|
||||
@ApiModelProperty("优惠券ID")
|
||||
private Long couponId;
|
||||
//使用的积分数
|
||||
@ApiModelProperty("使用的积分数")
|
||||
private Integer useIntegration;
|
||||
//支付方式
|
||||
@ApiModelProperty("支付方式")
|
||||
private Integer payType;
|
||||
|
||||
public Long getMemberReceiveAddressId() {
|
||||
return memberReceiveAddressId;
|
||||
}
|
||||
|
||||
public void setMemberReceiveAddressId(Long memberReceiveAddressId) {
|
||||
this.memberReceiveAddressId = memberReceiveAddressId;
|
||||
}
|
||||
|
||||
public Long getCouponId() {
|
||||
return couponId;
|
||||
}
|
||||
|
||||
public void setCouponId(Long couponId) {
|
||||
this.couponId = couponId;
|
||||
}
|
||||
|
||||
public Integer getPayType() {
|
||||
return payType;
|
||||
}
|
||||
|
||||
public void setPayType(Integer payType) {
|
||||
this.payType = payType;
|
||||
}
|
||||
|
||||
public Integer getUseIntegration() {
|
||||
return useIntegration;
|
||||
}
|
||||
|
||||
public void setUseIntegration(Integer useIntegration) {
|
||||
this.useIntegration = useIntegration;
|
||||
}
|
||||
@ApiModelProperty("被选中的购物车商品ID")
|
||||
private List<Long> cartIds;
|
||||
}
|
||||
|
@ -1,9 +1,12 @@
|
||||
package com.macro.mall.portal.service;
|
||||
|
||||
import com.macro.mall.common.api.CommonPage;
|
||||
import com.macro.mall.portal.domain.ConfirmOrderResult;
|
||||
import com.macro.mall.portal.domain.OmsOrderDetail;
|
||||
import com.macro.mall.portal.domain.OrderParam;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -13,8 +16,9 @@ import java.util.Map;
|
||||
public interface OmsPortalOrderService {
|
||||
/**
|
||||
* 根据用户购物车信息生成确认单信息
|
||||
* @param cartIds
|
||||
*/
|
||||
ConfirmOrderResult generateConfirmOrder();
|
||||
ConfirmOrderResult generateConfirmOrder(List<Long> cartIds);
|
||||
|
||||
/**
|
||||
* 根据提交信息生成订单
|
||||
@ -26,7 +30,7 @@ public interface OmsPortalOrderService {
|
||||
* 支付成功后的回调
|
||||
*/
|
||||
@Transactional
|
||||
Integer paySuccess(Long orderId);
|
||||
Integer paySuccess(Long orderId, Integer payType);
|
||||
|
||||
/**
|
||||
* 自动取消超时订单
|
||||
@ -44,4 +48,24 @@ public interface OmsPortalOrderService {
|
||||
* 发送延迟消息取消订单
|
||||
*/
|
||||
void sendDelayMessageCancelOrder(Long orderId);
|
||||
|
||||
/**
|
||||
* 确认收货
|
||||
*/
|
||||
void confirmReceiveOrder(Long orderId);
|
||||
|
||||
/**
|
||||
* 分页获取用户订单
|
||||
*/
|
||||
CommonPage<OmsOrderDetail> list(Integer status, Integer pageNum, Integer pageSize);
|
||||
|
||||
/**
|
||||
* 根据订单ID获取订单详情
|
||||
*/
|
||||
OmsOrderDetail detail(Long orderId);
|
||||
|
||||
/**
|
||||
* 用户根据订单ID删除订单
|
||||
*/
|
||||
void deleteOrder(Long orderId);
|
||||
}
|
||||
|
@ -1,5 +1,9 @@
|
||||
package com.macro.mall.portal.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.macro.mall.common.api.CommonPage;
|
||||
import com.macro.mall.common.exception.Asserts;
|
||||
import com.macro.mall.mapper.*;
|
||||
import com.macro.mall.model.*;
|
||||
@ -19,6 +23,7 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 前台订单管理Service
|
||||
@ -62,11 +67,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
private CancelOrderSender cancelOrderSender;
|
||||
|
||||
@Override
|
||||
public ConfirmOrderResult generateConfirmOrder() {
|
||||
public ConfirmOrderResult generateConfirmOrder(List<Long> cartIds) {
|
||||
ConfirmOrderResult result = new ConfirmOrderResult();
|
||||
//获取购物车信息
|
||||
UmsMember currentMember = memberService.getCurrentMember();
|
||||
List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId());
|
||||
List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(),cartIds);
|
||||
result.setCartPromotionItemList(cartPromotionItemList);
|
||||
//获取用户收货地址列表
|
||||
List<UmsMemberReceiveAddress> memberReceiveAddressList = memberReceiveAddressService.list();
|
||||
@ -90,7 +95,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
List<OmsOrderItem> orderItemList = new ArrayList<>();
|
||||
//获取购物车及优惠信息
|
||||
UmsMember currentMember = memberService.getCurrentMember();
|
||||
List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId());
|
||||
List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), orderParam.getCartIds());
|
||||
for (CartPromotionItem cartPromotionItem : cartPromotionItemList) {
|
||||
//生成下单商品信息
|
||||
OmsOrderItem orderItem = new OmsOrderItem();
|
||||
@ -131,7 +136,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
handleCouponAmount(orderItemList, couponHistoryDetail);
|
||||
}
|
||||
//判断是否使用积分
|
||||
if (orderParam.getUseIntegration() == null) {
|
||||
if (orderParam.getUseIntegration() == null||orderParam.getUseIntegration().equals(0)) {
|
||||
//不使用积分
|
||||
for (OmsOrderItem orderItem : orderItemList) {
|
||||
orderItem.setIntegrationAmount(new BigDecimal(0));
|
||||
@ -205,6 +210,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
order.setGrowth(calcGiftGrowth(orderItemList));
|
||||
//生成订单号
|
||||
order.setOrderSn(generateOrderSn(order));
|
||||
//设置自动收货天数
|
||||
List<OmsOrderSetting> orderSettings = orderSettingMapper.selectByExample(new OmsOrderSettingExample());
|
||||
if(CollUtil.isNotEmpty(orderSettings)){
|
||||
order.setAutoConfirmDay(orderSettings.get(0).getConfirmOvertime());
|
||||
}
|
||||
// TODO: 2018/9/3 bill_*,delivery_*
|
||||
//插入order表和order_item表
|
||||
orderMapper.insert(order);
|
||||
@ -233,12 +243,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer paySuccess(Long orderId) {
|
||||
public Integer paySuccess(Long orderId, Integer payType) {
|
||||
//修改订单支付状态
|
||||
OmsOrder order = new OmsOrder();
|
||||
order.setId(orderId);
|
||||
order.setStatus(1);
|
||||
order.setPaymentTime(new Date());
|
||||
order.setPayType(payType);
|
||||
orderMapper.updateByPrimaryKeySelective(order);
|
||||
//恢复所有下单商品的锁定库存,扣减真实库存
|
||||
OmsOrderDetail orderDetail = portalOrderDao.getDetail(orderId);
|
||||
@ -277,7 +288,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
|
||||
@Override
|
||||
public void cancelOrder(Long orderId) {
|
||||
//查询为付款的取消订单
|
||||
//查询未付款的取消订单
|
||||
OmsOrderExample example = new OmsOrderExample();
|
||||
example.createCriteria().andIdEqualTo(orderId).andStatusEqualTo(0).andDeleteStatusEqualTo(0);
|
||||
List<OmsOrder> cancelOrderList = orderMapper.selectByExample(example);
|
||||
@ -315,6 +326,92 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
cancelOrderSender.sendMessage(orderId, delayTimes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmReceiveOrder(Long orderId) {
|
||||
UmsMember member = memberService.getCurrentMember();
|
||||
OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
|
||||
if(!member.getId().equals(order.getMemberId())){
|
||||
Asserts.fail("不能确认他人订单!");
|
||||
}
|
||||
if(order.getStatus()!=2){
|
||||
Asserts.fail("该订单还未发货!");
|
||||
}
|
||||
order.setStatus(3);
|
||||
order.setConfirmStatus(1);
|
||||
order.setReceiveTime(new Date());
|
||||
orderMapper.updateByPrimaryKey(order);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonPage<OmsOrderDetail> list(Integer status, Integer pageNum, Integer pageSize) {
|
||||
if(status==-1){
|
||||
status = null;
|
||||
}
|
||||
UmsMember member = memberService.getCurrentMember();
|
||||
PageHelper.startPage(pageNum,pageSize);
|
||||
OmsOrderExample orderExample = new OmsOrderExample();
|
||||
OmsOrderExample.Criteria criteria = orderExample.createCriteria();
|
||||
criteria.andDeleteStatusEqualTo(0)
|
||||
.andMemberIdEqualTo(member.getId());
|
||||
if(status!=null){
|
||||
criteria.andStatusEqualTo(status);
|
||||
}
|
||||
orderExample.setOrderByClause("create_time desc");
|
||||
List<OmsOrder> orderList = orderMapper.selectByExample(orderExample);
|
||||
CommonPage<OmsOrder> orderPage = CommonPage.restPage(orderList);
|
||||
//设置分页信息
|
||||
CommonPage<OmsOrderDetail> resultPage = new CommonPage<>();
|
||||
resultPage.setPageNum(orderPage.getPageNum());
|
||||
resultPage.setPageSize(orderPage.getPageSize());
|
||||
resultPage.setTotal(orderPage.getTotal());
|
||||
resultPage.setTotalPage(orderPage.getTotalPage());
|
||||
if(CollUtil.isEmpty(orderList)){
|
||||
return resultPage;
|
||||
}
|
||||
//设置数据信息
|
||||
List<Long> orderIds = orderList.stream().map(OmsOrder::getId).collect(Collectors.toList());
|
||||
OmsOrderItemExample orderItemExample = new OmsOrderItemExample();
|
||||
orderItemExample.createCriteria().andOrderIdIn(orderIds);
|
||||
List<OmsOrderItem> orderItemList = orderItemMapper.selectByExample(orderItemExample);
|
||||
List<OmsOrderDetail> orderDetailList = new ArrayList<>();
|
||||
for (OmsOrder omsOrder : orderList) {
|
||||
OmsOrderDetail orderDetail = new OmsOrderDetail();
|
||||
BeanUtil.copyProperties(omsOrder,orderDetail);
|
||||
List<OmsOrderItem> relatedItemList = orderItemList.stream().filter(item -> item.getOrderId().equals(orderDetail.getId())).collect(Collectors.toList());
|
||||
orderDetail.setOrderItemList(relatedItemList);
|
||||
orderDetailList.add(orderDetail);
|
||||
}
|
||||
resultPage.setList(orderDetailList);
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OmsOrderDetail detail(Long orderId) {
|
||||
OmsOrder omsOrder = orderMapper.selectByPrimaryKey(orderId);
|
||||
OmsOrderItemExample example = new OmsOrderItemExample();
|
||||
example.createCriteria().andOrderIdEqualTo(orderId);
|
||||
List<OmsOrderItem> orderItemList = orderItemMapper.selectByExample(example);
|
||||
OmsOrderDetail orderDetail = new OmsOrderDetail();
|
||||
BeanUtil.copyProperties(omsOrder,orderDetail);
|
||||
orderDetail.setOrderItemList(orderItemList);
|
||||
return orderDetail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteOrder(Long orderId) {
|
||||
UmsMember member = memberService.getCurrentMember();
|
||||
OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
|
||||
if(!member.getId().equals(order.getMemberId())){
|
||||
Asserts.fail("不能删除他人订单!");
|
||||
}
|
||||
if(order.getStatus()==3||order.getStatus()==4){
|
||||
order.setDeleteStatus(1);
|
||||
orderMapper.updateByPrimaryKey(order);
|
||||
}else{
|
||||
Asserts.fail("只能删除已完成或已关闭的订单!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成18位订单编号:8位日期+2位平台号码+2位支付方式+6位以上自增id
|
||||
*/
|
||||
@ -408,10 +505,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (OmsOrderItem orderItem : orderItemList) {
|
||||
sb.append(orderItem.getPromotionName());
|
||||
sb.append(",");
|
||||
sb.append(";");
|
||||
}
|
||||
String result = sb.toString();
|
||||
if (result.endsWith(",")) {
|
||||
if (result.endsWith(";")) {
|
||||
result = result.substring(0, result.length() - 1);
|
||||
}
|
||||
return result;
|
||||
|
Loading…
x
Reference in New Issue
Block a user