diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineGoodsController.java b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineGoodsController.java new file mode 100644 index 00000000..1ae703f7 --- /dev/null +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineGoodsController.java @@ -0,0 +1,85 @@ +package cn.qihangerp.oms.controller.offline; + + +import cn.qihangerp.common.AjaxResult; +import cn.qihangerp.common.PageQuery; +import cn.qihangerp.common.ResultVo; +import cn.qihangerp.common.TableDataInfo; +import cn.qihangerp.module.order.domain.OfflineGoodsSku; +import cn.qihangerp.module.order.service.OfflineGoodsSkuService; +import cn.qihangerp.security.common.BaseController; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +/** + * 商品管理Controller + * + * @author qihang + * @date 2023-12-29 + */ +@AllArgsConstructor +@RestController +@RequestMapping("/offline_goods") +public class OfflineGoodsController extends BaseController +{ + private final OfflineGoodsSkuService skuService; + + /** + * 搜索商品SKU + * 条件:商品编码、SKU、商品名称 + */ + @GetMapping("/searchSku") + public TableDataInfo searchSkuBy(String keyword) + { + logger.info("========SKU搜索=========",keyword); + List list = skuService.searchGoodsSpec(keyword); + return getDataTable(list); + } + + @GetMapping("/sku_list") + public TableDataInfo skuList(OfflineGoodsSku bo, PageQuery pageQuery) + { + var pageList = skuService.querySkuPageList(bo,pageQuery); + return getDataTable(pageList); + } + + + /** + * 获取商品管理详细信息 + */ + @GetMapping(value = "/sku/{id}") + public AjaxResult getSkuInfo(@PathVariable("id") Long id) + { + return success(skuService.getById(id)); + } + + + + @PostMapping("/sku") + public AjaxResult addSku(@RequestBody OfflineGoodsSku goodsSku) + { + ResultVo result = skuService.insertGoodsSku(goodsSku); + if(result.getCode() != 0) return AjaxResult.error(result.getMsg()); + else return AjaxResult.success(); + + } + + @PutMapping("/sku") + public AjaxResult editSku(@RequestBody OfflineGoodsSku sku) + { + return toAjax(skuService.updateById(sku)); + } + + /** + * 删除商品管理 + */ + @DeleteMapping("/sku/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(skuService.removeBatchByIds(Arrays.stream(ids).toList())); + } + +} diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineOrderController.java b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineOrderController.java new file mode 100644 index 00000000..9f8e3f26 --- /dev/null +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineOrderController.java @@ -0,0 +1,107 @@ +package cn.qihangerp.oms.controller.offline; + + +import cn.qihangerp.common.AjaxResult; +import cn.qihangerp.common.PageQuery; +import cn.qihangerp.common.TableDataInfo; +import cn.qihangerp.common.enums.EnumShopType; +import cn.qihangerp.common.mq.MqMessage; +import cn.qihangerp.common.mq.MqType; +import cn.qihangerp.common.mq.MqUtils; +import cn.qihangerp.module.order.domain.bo.OfflineOrderCreateBo; +import cn.qihangerp.module.order.domain.bo.OfflineOrderPushBo; +import cn.qihangerp.module.order.service.OfflineOrderService; +import cn.qihangerp.request.OrderSearchRequest; +import cn.qihangerp.security.common.BaseController; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@AllArgsConstructor +@RestController +@RequestMapping("/offline_order") +public class OfflineOrderController extends BaseController { + private final OfflineOrderService orderService; + private final MqUtils mqUtils; + /** + * 查询店铺订单列表 + */ + @GetMapping("/list") + public TableDataInfo list(OrderSearchRequest bo, PageQuery pageQuery) + { + var pageList = orderService.queryPageList(bo,pageQuery); + return getDataTable(pageList); + } + + + /** + * 获取店铺订单详细信息 + */ + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(orderService.queryDetailById(id)); + } + +// @PostMapping("/pushErp/{ids}") +// public AjaxResult remove(@PathVariable Long[] ids) { +// for (Long id : ids) { +// OOrder oOrder = orderService.getById(id); +// if (oOrder != null) { +// oOrder.setItemList(orderItemService.getOrderItemListByOrderId(id)); +// ResultVo resultVo = erpPushHelper.pushOrderSingle(oOrder); +// OOrder pushUpdate = new OOrder(); +// if (oOrder.getOrderStatus() == 1 || oOrder.getOrderStatus() == 2 || oOrder.getOrderStatus() == 3) { +// // 待发货、已发货、已完成 订单推送 +// pushUpdate.setErpPushStatus(resultVo.getCode() == 0 ? 200 : resultVo.getCode()); +// +// } else if (oOrder.getOrderStatus() == 11) { +// pushUpdate.setErpPushStatus(resultVo.getCode() == 0 ? 100 : resultVo.getCode());//推送状态200 订单推送成功 100 取消订单推送成功 +// } +// pushUpdate.setErpPushResult(resultVo.getMsg()); +// pushUpdate.setErpPushTime(new Date()); +// pushUpdate.setUpdateBy("手动推送到ERP"); +// pushUpdate.setUpdateTime(new Date()); +// pushUpdate.setId(id.toString()); +// orderService.updateById(pushUpdate); +// } +// } +// +// return success(); +// } + + + @PostMapping("/create") + public AjaxResult add(@RequestBody OfflineOrderCreateBo order) + { + if(order.getGoodsAmount()==null)return new AjaxResult(1503,"请填写商品价格!"); + + Long result = orderService.insertOfflineOrder(order,getUsername()); + if(result>0) { + logger.info("渠道訂單添加成功"); + mqUtils.sendApiMessage(MqMessage.build(EnumShopType.OFFLINE, MqType.ORDER_MESSAGE, order.getOrderNum())); + } + else if(result == -1) return new AjaxResult(501,"订单号已存在!"); + else if(result == -2) return new AjaxResult(502,"请添加订单商品!"); + else if(result == -3) return new AjaxResult(503,"请完善订单商品明细!"); + else if(result == -4) return new AjaxResult(504,"请选择店铺!"); + return toAjax(1); + } + + /** + * 手动推送到系统 + * @param bo + * @return + */ + @PostMapping("/push_oms") + @ResponseBody + public AjaxResult pushOms(@RequestBody OfflineOrderPushBo bo) { + // TODO:需要优化消息格式 + if(bo!=null && bo.getIds()!=null) { + for(String id: bo.getIds()) { + mqUtils.sendApiMessage(MqMessage.build(EnumShopType.OFFLINE, MqType.ORDER_MESSAGE, id)); + } + } + return success(); + } +} + diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineRefundController.java b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineRefundController.java new file mode 100644 index 00000000..5d741e47 --- /dev/null +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineRefundController.java @@ -0,0 +1,29 @@ +package cn.qihangerp.oms.controller.offline; + + +import cn.qihangerp.common.PageQuery; +import cn.qihangerp.common.TableDataInfo; +import cn.qihangerp.module.order.service.OfflineRefundService; +import cn.qihangerp.request.RefundSearchRequest; +import cn.qihangerp.security.common.BaseController; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@AllArgsConstructor +@RestController +@RequestMapping("/offline_refund") +public class OfflineRefundController extends BaseController { + + private final OfflineRefundService refundService; + /** + * 查询店铺订单列表 + */ + @GetMapping("/list") + public TableDataInfo list(RefundSearchRequest bo, PageQuery pageQuery) + { + var pageList = refundService.queryPageList(bo,pageQuery); + return getDataTable(pageList); + } +} diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineShipController.java b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineShipController.java new file mode 100644 index 00000000..153d7259 --- /dev/null +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/offline/OfflineShipController.java @@ -0,0 +1,77 @@ +package cn.qihangerp.oms.controller.offline; + + +import cn.qihangerp.common.AjaxResult; +import cn.qihangerp.common.enums.EnumShopType; +import cn.qihangerp.common.mq.MqMessage; +import cn.qihangerp.common.mq.MqType; +import cn.qihangerp.common.mq.MqUtils; +import cn.qihangerp.module.order.domain.OfflineOrder; +import cn.qihangerp.module.order.domain.bo.OfflineOrderShipBo; +import cn.qihangerp.module.order.domain.bo.OrderShipSendBo; +import cn.qihangerp.module.order.service.OfflineOrderService; +import cn.qihangerp.security.common.BaseController; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +@AllArgsConstructor +@RestController +@RequestMapping("/offline_ship") +public class OfflineShipController extends BaseController { + private final OfflineOrderService orderService; + private final MqUtils mqUtils; + /** + * 手动填写物流单号() + * @param bo + * @return + */ + @PostMapping("/order_logistics") + public AjaxResult add(@RequestBody OfflineOrderShipBo bo) + { + int result = orderService.orderLogistics(bo,getUsername()); + if(result==-1) return AjaxResult.error("参数错误:orderNum不能为空"); + else if(result==-2) return AjaxResult.error("参数错误:快递信息不能为空"); + else if(result==-3) return AjaxResult.error("参数错误:找不到订单"); + else if(result==-4) return AjaxResult.error("数据错误:订单状态不是待发货的状态"); + else if(result==-5) return AjaxResult.error("数据错误:订单正在售后中"); + + return toAjax(1); + } + + /** + * 批量发货 + * @param bo + * @return + */ + @PostMapping("/order_batch_send") + @ResponseBody + public AjaxResult orderSend(@RequestBody OrderShipSendBo bo) { + // TODO:需要优化消息格式 + if(bo!=null && bo.getOrderNums()!=null) { + for(String sn: bo.getOrderNums()) { + List orders = orderService.list(new LambdaQueryWrapper().eq(OfflineOrder::getOrderNum,sn)); + if(orders!=null&& orders.size()>0) { + if (orders.get(0).getOrderStatus() == 1 && orders.get(0).getRefundStatus() == 1 && StringUtils.hasText(orders.get(0).getShippingNumber())) { + OfflineOrder update = new OfflineOrder(); + update.setId(orders.get(0).getId()); + update.setOrderStatus(2); + update.setUpdateTime(new Date()); + update.setUpdateBy("批量发货"); + update.setShippingTime(new Date()); + update.setShippingMan(getUsername()); + orderService.updateById(update); + // 通知已发货 + mqUtils.sendApiMessage(MqMessage.build(EnumShopType.OFFLINE, MqType.SHIP_SEND_MESSAGE, sn, orders.get(0).getShippingCompany(), orders.get(0).getShippingNumber())); + } + } + } + } + return success(); + } +} + diff --git a/vue/src/views/offline/order/create.vue b/vue/src/views/order/private/create.vue similarity index 100% rename from vue/src/views/offline/order/create.vue rename to vue/src/views/order/private/create.vue diff --git a/vue/src/views/offline/order/index.vue b/vue/src/views/order/private/index.vue similarity index 100% rename from vue/src/views/offline/order/index.vue rename to vue/src/views/order/private/index.vue diff --git a/vue/src/views/order/shopOrder/index.vue b/vue/src/views/order/shopOrder/index.vue index bee43ca0..69f736b6 100644 --- a/vue/src/views/order/shopOrder/index.vue +++ b/vue/src/views/order/shopOrder/index.vue @@ -38,7 +38,7 @@ import OrderDou from "@/views/dou/order/index"; import OrderPdd from "@/views/pdd/order/index"; import OrderWei from "@/views/wei/order/index"; -import OrderOffline from "@/views/offline/order/index"; +import OrderOffline from "@/views/order/private/index"; import {listPlatform} from "@/api/shop/shop"; export default { name: "Order",