package com.matrix.system.app.action; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.WebUtil; import com.matrix.system.app.dto.CreateOderItemDto; import com.matrix.system.app.dto.CreateOrderDto; import com.matrix.system.app.dto.OrderListDto; import com.matrix.system.app.dto.ShoppingGoodsListDto; import com.matrix.system.app.vo.OrderDetailVo; import com.matrix.system.app.vo.ShoppingGoodsDetailVo; import com.matrix.system.app.vo.ShoppingGoodsListVo; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.tools.DataAuthUtil; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.SysShopInfoDao; import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.hive.pojo.ShoppingCarItem; import com.matrix.system.hive.pojo.ShoppingCarItemsVo; import com.matrix.system.hive.service.ShoppingGoodsCategoryService; import com.matrix.system.hive.service.ShoppingGoodsService; import com.matrix.system.hive.service.SysOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author wzy * @date 2020-12-21 **/ @Api(value = "ApiOrderAction", tags = "订单接口类") @RestController @RequestMapping(value = "/api/order") public class ApiOrderAction { @Autowired private ShoppingGoodsCategoryService shoppingGoodsCategoryService; @Autowired private ShoppingGoodsService shoppingGoodsService; @Autowired private SysOrderService sysOrderService; @Autowired private SysShopInfoDao shopInfoDao; @ApiOperation(value = "获取商品类型列表", notes = "获取商品类型列表") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = ShoppingGoodsCategory.class) }) @GetMapping(value = "/findShoppingGoodsType") public AjaxResult findShoppingGoodsType() { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); SysShopInfo zbShop = shopInfoDao.selectZbShop(user.getCompanyId()); ShoppingGoodsCategory category = new ShoppingGoodsCategory(); category.setShopId(zbShop.getId()); List list = new ArrayList<>(); List byModel = shoppingGoodsCategoryService.findByModel(category); ShoppingGoodsCategory type = new ShoppingGoodsCategory(); type.setName("全部"); type.setParentId(0L); list.add(type); list.addAll(byModel); return AjaxResult.buildSuccessInstance(list); } @ApiOperation(value = "获取商品列表", notes = "获取商品列表") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = ShoppingGoodsListVo.class) }) @PostMapping(value = "/findShoppingGoods") public AjaxResult findShoppingGoods(@RequestBody @Validated ShoppingGoodsListDto shoppingGoodsListDto) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); if (!DataAuthUtil.hasAllShopAuth()) { shoppingGoodsListDto.setShopId(user.getShopId()); } QueryUtil.setQueryLimitCom(shoppingGoodsListDto); return AjaxResult.buildSuccessInstance(shoppingGoodsService.findShoppingGoodsListForApi(shoppingGoodsListDto), shoppingGoodsService.findShoppingGoodsListTotalForApi(shoppingGoodsListDto)); } @ApiOperation(value = "获取商品详情", notes = "获取商品详情") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = ShoppingGoodsDetailVo.class) }) @GetMapping(value = "/findGoodsDetailById/{goodsId}") public AjaxResult findGoodsDetailById(@PathVariable("goodsId") Long goodsId) { ShoppingGoodsDetailVo goodsDetail = shoppingGoodsService.findApiShoppingGoodsDetailById(goodsId); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); ajaxResult.putInMap("goods", goodsDetail); return ajaxResult; } @ApiOperation(value = "创建订单", notes = "创建订单") @PostMapping(value = "/createOrder") public AjaxResult createOrder(@RequestBody @Validated CreateOrderDto createOrderDto) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); ShoppingCarItemsVo car = new ShoppingCarItemsVo(); car.setVipId(createOrderDto.getVipId()); if (CollectionUtils.isNotEmpty(createOrderDto.getItems())) { List list = new ArrayList<>(); for (CreateOderItemDto item : createOrderDto.getItems()) { ShoppingCarItem carItem = new ShoppingCarItem(); carItem.setCount(item.getCount()); carItem.setGoodsId(item.getGoodsId()); carItem.setIsFree(item.getIsFree()); carItem.setType(item.getGoodsType()); carItem.setShoppingGoods(shoppingGoodsService.findById(item.getGoodsId())); list.add(carItem); } car.setCarItems(list); } int i = sysOrderService.createOrder(WebUtil.getSession(), car); if (i > 0) { return AjaxResult.buildSuccessInstance("下单成功"); } return AjaxResult.buildFailInstance("下单失败"); } @ApiOperation(value = "获取订单列表", notes = "获取订单列表") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = OrderDetailVo.class) }) @PostMapping(value = "/findOrderList") public AjaxResult findOrderList(@RequestBody @Validated OrderListDto orderListDto) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); int offset = (orderListDto.getPageNum() - 1) * orderListDto.getPageSize(); int limit = orderListDto.getPageSize(); PaginationVO pageVo = new PaginationVO(); pageVo.setOffset(offset); pageVo.setLimit(limit); if (!DataAuthUtil.hasAllShopAuth()) { orderListDto.setShopId(user.getShopId()); } QueryUtil.setQueryLimitCom(orderListDto); return AjaxResult.buildSuccessInstance(sysOrderService.findApiOrderListInPage(orderListDto, pageVo), sysOrderService.findApiOrderListTotal(orderListDto)); } @ApiOperation(value = "获取订单详情", notes = "获取订单详情") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = OrderDetailVo.class) }) @GetMapping(value = "/findOrderDetail/{orderId}") public AjaxResult findOrderDetail(@PathVariable("orderId") Long orderId) { OrderDetailVo orderDetail = sysOrderService.findApiOrderDetailByOrderId(orderId); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); ajaxResult.putInMap("orderDetail", orderDetail); return ajaxResult; } @ApiOperation(value = "取消订单", notes = "取消订单") @GetMapping(value = "/cancelOrder/{orderId}") public AjaxResult cancelOrder(@PathVariable("orderId") Long orderId) { SysOrder order = sysOrderService.findById(orderId); if (order == null) { throw new GlobleException("订单不存在"); } int i = sysOrderService.cancelOrder(orderId); if (i > 0) { return AjaxResult.buildSuccessInstance("取消成功"); } return AjaxResult.buildFailInstance("取消失败"); } }