package com.xzx.gc.shop.controller; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.xzx.gc.common.constant.CommonEnum; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.dto.log.OperationAppLog; import com.xzx.gc.common.request.BaseController; import com.xzx.gc.entity.ScoreDetails; import com.xzx.gc.entity.ScoreOrder; import com.xzx.gc.model.JsonResult; import com.xzx.gc.shop.dto.*; import com.xzx.gc.shop.mapper.ScoreDetailsMapper; import com.xzx.gc.shop.mapper.ScoreOrderMapper; import com.xzx.gc.shop.service.OrderService; import com.xzx.gc.shop.vo.QueryOrderListVo; import com.xzx.gc.shop.vo.ViewOrderVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import tk.mybatis.mapper.entity.Example; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @RestController @Api(tags = {"积分商城--订单管理"}) @Slf4j public class AdminOrderController extends BaseController { @Resource private OrderService orderService; @Resource private ScoreOrderMapper scoreOrderMapper; @Resource private ScoreDetailsMapper scoreDetailsMapper; /** * 查询订单列表 * xzx_score_order 积分商城订单 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX+"/score/goods/queryOrderList.json") @ApiResponses({@ApiResponse( code = 200, message = "success", response = QueryOrderListVo.class)}) @ApiOperation(value = "订单管理-查询订单列表", notes = "test: 仅0有正确返回") public JsonResult> queryOrderList(@RequestBody QueryOrderListDto model) { Map result = orderService.queryOrderList(model); return JsonResult.success(result); } /** * 查询订单详情 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/viewOrder.json") @ApiResponses({@ApiResponse( code = 200, message = "success", response = ViewOrderVo.class)}) @ApiOperation(value="订单管理-查询订单详情", notes="test: 仅0有正确返回") public JsonResult viewOrder(@RequestBody ViewOrderDto viewOrderDto) { Long id = viewOrderDto.getId(); ScoreOrder scoreOrder = scoreOrderMapper.selectByPrimaryKey(id); if(ObjectUtil.isEmpty(scoreOrder)){ return JsonResult.failMessage("订单不存在!"); } ViewOrderVo viewOrderVo = orderService.viewOrder(id); return JsonResult.success(viewOrderVo); } /** * 发货 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/deliverGoods.json") @ApiOperation(value="订单管理-发货", notes="test: 仅0有正确返回") public JsonResult deliverGoods(@RequestBody DeliverGoodsDto model, HttpServletRequest request) { long id = model.getId(); ScoreOrder scoreOrder = scoreOrderMapper.selectByPrimaryKey(id); if(ObjectUtil.isEmpty(scoreOrder)){ return JsonResult.failMessage("订单不存在!"); } Integer status = scoreOrder.getStatus(); if(ScoreOrder.STATUS_READY != status){ return JsonResult.failMessage("当前订单不是待发货状态!"); } String expressCom = model.getExpressCom(); if(StrUtil.isEmpty(expressCom)){ return JsonResult.failMessage("物流公司不能为空!"); } String expressNo = model.getExpressNo(); if(StrUtil.isEmpty(expressNo)){ return JsonResult.failMessage("快递单号不能为空!"); } Long aLong = orderService.deliverGoods(model); if(aLong > 0){ OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("订单管理-发货-" + id).build(); mqUtil.sendApp(build); return JsonResult.success("操作成功!"); }else{ return JsonResult.success("操作失败!"); } } /** * 确认提货 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/insureOrder.json") @ApiOperation(value="订单管理-确认提货", notes="test: 仅0有正确返回") public JsonResult insureOrder(@RequestBody InsureOrderDto model, HttpServletRequest request) { long id = model.getId(); ScoreOrder scoreOrder = scoreOrderMapper.selectByPrimaryKey(id); if(ObjectUtil.isEmpty(scoreOrder)){ return JsonResult.failMessage("订单不存在!"); } // Integer status = scoreOrder.getStatus(); // if(ScoreOrder.STATUS_DOING != status){ // return JsonResult.failMessage("当前订单不是已收货状态!"); // } List voucherImgs = model.getVoucherImgs(); if(CollUtil.isEmpty(voucherImgs)){ return JsonResult.failMessage("凭证不能为空!"); } Long orderId = orderService.insureOrder(model); if(orderId > 0){ OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("订单管理-确认提货-" + orderId).build(); mqUtil.sendApp(build); return JsonResult.success("操作成功!"); }else{ return JsonResult.success("操作失败!"); } } /** * 取消 */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/cancelOrder.json") @ApiOperation(value="订单管理-取消", notes="test: 仅0有正确返回") public JsonResult cancelOrder(@RequestBody CancelOrderDto model, HttpServletRequest request) { long id = model.getId(); ScoreOrder scoreOrder = scoreOrderMapper.selectByPrimaryKey(id); if(ObjectUtil.isEmpty(scoreOrder)){ return JsonResult.failMessage("订单不存在!"); } Integer status = scoreOrder.getStatus(); if(ScoreOrder.STATUS_READY != status){ return JsonResult.failMessage("当前订单不是待发货状态!"); } ScoreOrder order = scoreOrderMapper.selectByPrimaryKey(model.getId()); Example exampleDetails = new Example(ScoreDetails.class); Example.Criteria criteriaDetails = exampleDetails.createCriteria(); criteriaDetails.andEqualTo("orderNo",order.getOrderNo()); criteriaDetails.andEqualTo("userId",order.getUserId()); criteriaDetails.andEqualTo("type",ScoreDetails.SCORE_TYPE_SHOPPING_RETURN); List scoreDetails = scoreDetailsMapper.selectByExample(exampleDetails); if(CollUtil.isNotEmpty(scoreDetails)){ return JsonResult.failMessage("当前订单已经取消过了!"); } Long aLong = orderService.cancelOrder(model); if(aLong > 0){ OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("订单管理-取消-" + id).build(); mqUtil.sendApp(build); return JsonResult.success("操作成功!"); }else{ return JsonResult.success("操作失败!"); } } }