package cn.lili.controller.lmk; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.OperationalJudgment; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.goods.entity.vos.CategoryVO; import cn.lili.modules.goods.service.CategoryService; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.service.ClerkService; import cn.lili.modules.member.service.StoreLogisticsService; import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO; import cn.lili.modules.order.order.entity.dto.SupplierOrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleXcxVO; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.modules.system.entity.vo.StoreLogisticsVO; import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; import java.util.List; import java.util.Objects; @Validated @RequiredArgsConstructor @Api(value = "小程序商户端接口", tags = "小程序商户端接口") @RestController @RequestMapping("/buyer/lmk/supplier") public class SupplierController { /** * 分类 */ @Autowired private CategoryService categoryService; /** * 店铺详情 */ @Autowired private StoreDetailService storeDetailService; /** * 物流公司 */ @Autowired private StoreLogisticsService storeLogisticsService; /** * 订单 */ @Autowired private OrderService orderService; @Autowired private COSUtil cosUtil; @Autowired private ClerkService clerkService; @ApiOperation(value = "获取店铺经营的分类") @GetMapping(value = "/allCategery") public ResultMessage> getListAll() { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); if (StringUtils.isEmpty(storeId)) { Clerk clerk = clerkService.getClerkByMemberId(UserContext.getCurrentUserId()); storeId = clerk.getStoreId(); } //获取店铺经营范围 String goodsManagementCategory = storeDetailService.getStoreDetail(storeId).getGoodsManagementCategory(); return ResultUtil.data(this.categoryService.getStoreCategory(goodsManagementCategory.split(","))); } @ApiOperation(value = "查询会员订单列表") @GetMapping("/orderList") public ResultMessage> orderList(SupplierOrderSearchParams orderSearchParams) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); if (StringUtils.isEmpty(storeId)) { Clerk clerk = clerkService.getClerkByMemberId(UserContext.getCurrentUserId()); orderSearchParams.setStoreId(clerk.getStoreId()); } else { orderSearchParams.setStoreId(storeId); } return ResultUtil.data(orderService.querySupplierOrderParams(orderSearchParams)); } @ApiOperation(value = "订单明细") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path") }) @GetMapping(value = "/orderDetail/{orderSn}") public ResultMessage detail(@NotNull @PathVariable String orderSn) { OperationalJudgment.judgment(orderService.getBySn(orderSn)); OrderDetailVO orderDetailVO = orderService.queryDetail(orderSn); orderDetailVO.getOrderItems().forEach(orderItem -> { String image = orderItem.getImage(); if (StringUtils.isNotBlank(image) && !image.contains("http")) { orderItem.setImage(cosUtil.getPreviewUrl(image)); } }); return ResultUtil.data(orderDetailVO); } @ApiOperation(value = "获取商家已选择物流公司列表") @GetMapping("/getChecked") public ResultMessage> getChecked() { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); return ResultUtil.data(storeLogisticsService.getStoreSelectedLogistics(storeId)); } @ApiOperation(value = "订单包裹发货") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单sn", required = true, dataType = "String", paramType = "path"), @ApiImplicitParam(name = "logisticsNo", value = "发货单号", required = true, dataType = "String", paramType = "query"), @ApiImplicitParam(name = "logisticsId", value = "物流公司", required = true, dataType = "String", paramType = "query") }) @PostMapping(value = "/{orderSn}/partDelivery") public ResultMessage delivery(@RequestBody PartDeliveryParamsDTO partDeliveryParamsDTO) { return ResultUtil.data(orderService.partDelivery(partDeliveryParamsDTO)); } }