|
@@ -0,0 +1,153 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
|
|
|
+ *
|
|
|
+ * https://www.mall4j.com/
|
|
|
+ *
|
|
|
+ * 未经允许,不可做商业用途!
|
|
|
+ *
|
|
|
+ * 版权所有,侵权必究!
|
|
|
+ */
|
|
|
+
|
|
|
+package com.qs.mp.web.controller.api.channel.mall;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.qs.mp.admin.domain.TicketBox;
|
|
|
+import com.qs.mp.admin.service.ITicketBoxService;
|
|
|
+import com.qs.mp.channel.domain.ChannelAddr;
|
|
|
+import com.qs.mp.channel.domain.ChannelCart;
|
|
|
+import com.qs.mp.channel.domain.ChannelOrder;
|
|
|
+import com.qs.mp.channel.domain.ChannelOrderItem;
|
|
|
+import com.qs.mp.channel.domain.param.ChannelCartParam;
|
|
|
+import com.qs.mp.channel.domain.param.ChannelOrderParam;
|
|
|
+import com.qs.mp.channel.domain.vo.ChannelCartVO;
|
|
|
+import com.qs.mp.channel.domain.vo.ChannelOrderSettleVO;
|
|
|
+import com.qs.mp.channel.domain.vo.ChannelOrderVO;
|
|
|
+import com.qs.mp.channel.service.IChannelAddrService;
|
|
|
+import com.qs.mp.channel.service.IChannelCartService;
|
|
|
+import com.qs.mp.channel.service.IChannelOrderItemService;
|
|
|
+import com.qs.mp.channel.service.IChannelOrderService;
|
|
|
+import com.qs.mp.common.core.domain.AjaxResult;
|
|
|
+import com.qs.mp.common.domain.param.BatchLongIdsParam;
|
|
|
+import com.qs.mp.utils.SecurityUtils;
|
|
|
+import com.qs.mp.web.controller.common.BaseApiController;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.List;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import ma.glasnost.orika.MapperFacade;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/api/v1/mp/channel/mall")
|
|
|
+@Api(tags = "渠道盲票商城订单接口")
|
|
|
+@AllArgsConstructor
|
|
|
+public class ChannelOrderController extends BaseApiController {
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IChannelCartService channelCartService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IChannelOrderService channelOrderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IChannelOrderItemService channelOrderItemService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITicketBoxService ticketBoxService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IChannelAddrService channelAddrService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MapperFacade mapperFacade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单列表
|
|
|
+ */
|
|
|
+ @PostMapping("/order/list")
|
|
|
+ @ApiOperation(value = "订单列表" , notes = "获取所有订单信息")
|
|
|
+ public AjaxResult list(@RequestBody ChannelOrder param) {
|
|
|
+ Long channelId = SecurityUtils.getLoginUser().getChannelId();
|
|
|
+ startPage();
|
|
|
+ List<ChannelOrder> channelOrders = channelOrderService.list(
|
|
|
+ new LambdaQueryWrapper<ChannelOrder>().eq(ChannelOrder::getChannelId, channelId)
|
|
|
+ .eq(null != param.getStatus(), ChannelOrder::getStatus, param.getStatus())
|
|
|
+ .orderByDesc(ChannelOrder::getCreatedTime));
|
|
|
+ List<ChannelOrderVO> channelOrderVOList = mapperFacade.mapAsList(channelOrders, ChannelOrderVO.class);
|
|
|
+ for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
|
|
|
+ channelOrderVO.setItems(channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
|
|
|
+ .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId())));
|
|
|
+ }
|
|
|
+ return AjaxResult.success(channelOrderVOList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单结算,每次更换地址或优惠券时需重新请求此接口
|
|
|
+ */
|
|
|
+ @PostMapping("/order/settle")
|
|
|
+ @ApiOperation(value = "订单结算" , notes = "购物车里点结算或者单个盲票组商品上点立即购买")
|
|
|
+ public AjaxResult settle(@RequestBody ChannelOrderParam param) {
|
|
|
+ Long channelId = SecurityUtils.getLoginUser().getChannelId();
|
|
|
+ ChannelOrderSettleVO orderSettleVO = new ChannelOrderSettleVO();
|
|
|
+
|
|
|
+ // 收货地址,如果用户选了地址,则此处不做处理
|
|
|
+ if (null == param.getAddrId() || 0 == param.getAddrId()) {
|
|
|
+ //读取默认地址
|
|
|
+ ChannelAddr addr = channelAddrService.getDefaultChannelAddr(channelId);
|
|
|
+ if (null != addr) {
|
|
|
+ orderSettleVO.setAddr(addr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 订单金额计算
|
|
|
+ Integer orderAmt = 0;
|
|
|
+ if (!CollectionUtils.isEmpty(param.getCartIds())){
|
|
|
+ // 购物车里下单的
|
|
|
+ List<ChannelCart> channelCarts = channelCartService.listByIds(param.getCartIds());
|
|
|
+ for (ChannelCart channelCart : channelCarts) {
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(channelCart.getBoxId());
|
|
|
+ orderAmt += ticketBox.getBoxSalePrice() * channelCart.getOrderNum();
|
|
|
+ ChannelCartVO cartVO = mapperFacade.map(ticketBox, ChannelCartVO.class);
|
|
|
+ cartVO.setCartId(channelCart.getCartId());
|
|
|
+ cartVO.setOrderNum(channelCart.getOrderNum());
|
|
|
+ orderSettleVO.getItems().add(cartVO);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(param.getBoxId());
|
|
|
+ orderAmt += ticketBox.getBoxSalePrice() * param.getOrderNum();
|
|
|
+ ChannelCartVO cartVO = mapperFacade.map(ticketBox, ChannelCartVO.class);
|
|
|
+ cartVO.setOrderNum(param.getOrderNum());
|
|
|
+ orderSettleVO.getItems().add(cartVO);
|
|
|
+ }
|
|
|
+ orderSettleVO.setOrderAmt(orderAmt);
|
|
|
+ // 当前没有运费和优惠,实付金额=订单金额
|
|
|
+ orderSettleVO.setPayAmt(orderAmt);
|
|
|
+
|
|
|
+ // 缓存订单结算对象
|
|
|
+
|
|
|
+ return AjaxResult.success(orderSettleVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除购物清单项
|
|
|
+ */
|
|
|
+ @PostMapping("/cart/remove")
|
|
|
+ @ApiOperation(value = "删除购物清单" , notes = "购物车里点删除")
|
|
|
+ public AjaxResult remove(@RequestBody BatchLongIdsParam param) {
|
|
|
+ boolean rtn = channelCartService.removeByIds(param.getIds());
|
|
|
+ if (!rtn) {
|
|
|
+ return AjaxResult.success("操作失败");
|
|
|
+ }
|
|
|
+ return AjaxResult.error("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+}
|