diff --git a/.gitignore b/.gitignore index cf60db23..4b15277e 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ build/ ### VS Code ### .vscode/ +/logs/ \ No newline at end of file diff --git a/ghy-admin/pom.xml b/ghy-admin/pom.xml index e8fa3c1f..00c4b5f2 100644 --- a/ghy-admin/pom.xml +++ b/ghy-admin/pom.xml @@ -73,6 +73,12 @@ ghy-goods + + + com.ghy + ghy-order + + diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java new file mode 100644 index 00000000..1f12c4cc --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java @@ -0,0 +1,105 @@ +package com.ghy.web.controller.order; + +import com.ghy.common.annotation.Log; +import com.ghy.common.constant.UserConstants; +import com.ghy.common.core.controller.BaseController; +import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.core.page.TableDataInfo; +import com.ghy.common.enums.BusinessType; +import com.ghy.common.utils.poi.ExcelUtil; +import com.ghy.order.domain.OrderDetail; +import com.ghy.order.service.OrderDetailService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 详细订单API + * + * @author HH 2022/4/25 + */ +@Controller +@RequestMapping("/order/detail") +public class OrderDetailController extends BaseController { + + private final String prefix = "order/detail"; + + @Resource + private OrderDetailService orderDetailService; + + @RequiresPermissions("order:master:view") + @GetMapping() + public String orderDetail() { + return prefix; + } + + @RequiresPermissions("order:master:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(OrderDetail orderDetail) { + startPage(); + List list = orderDetailService.selectOrderDetailList(orderDetail); + return getDataTable(list); + } + + @Log(title = "详细订单管理", businessType = BusinessType.EXPORT) + @RequiresPermissions("order:master:export") + @PostMapping("/export") + @ResponseBody + public AjaxResult export(OrderDetail orderDetail) { + List list = orderDetailService.selectOrderDetailList(orderDetail); + ExcelUtil util = new ExcelUtil<>(OrderDetail.class); + return util.exportExcel(list, "详细订单数据"); + } + + @RequiresPermissions("order:master:remove") + @Log(title = "详细订单管理", businessType = BusinessType.DELETE) + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) { + try { + return toAjax(orderDetailService.deleteOrderDetailByIds(ids)); + } catch (Exception e) { + return error(e.getMessage()); + } + } + + /** + * 修改详细订单 + */ + @RequiresPermissions("order:master:edit") + @GetMapping("/edit/{orderDetailId}") + public String edit(@PathVariable("orderDetailId") Long orderDetailId, ModelMap mmap) { + mmap.put("orderDetail", orderDetailService.selectById(orderDetailId)); + return prefix + "/edit"; + } + + /** + * 修改保存详细订单 + */ + @RequiresPermissions("order:master:edit") + @Log(title = "详细订单管理", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(@Validated OrderDetail orderDetail) { + if (UserConstants.ORDER_CODE_NOT_UNIQUE.equals(orderDetailService.checkOrderDetailCodeUnique(orderDetail))) { + return error("修改详细订单'" + orderDetail.getCode() + "'失败,详细订单编码已存在"); + } + orderDetail.setUpdateBy(getLoginName()); + return toAjax(orderDetailService.updateOrderDetail(orderDetail)); + } + + /** + * 校验详细订单编码 + */ + @PostMapping("/checkOrderDetailCodeUnique") + @ResponseBody + public String checkOrderDetailCodeUnique(OrderDetail orderDetail) { + return orderDetailService.checkOrderDetailCodeUnique(orderDetail); + } +} diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java new file mode 100644 index 00000000..13f081b5 --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -0,0 +1,105 @@ +package com.ghy.web.controller.order; + +import com.ghy.common.annotation.Log; +import com.ghy.common.constant.UserConstants; +import com.ghy.common.core.controller.BaseController; +import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.core.page.TableDataInfo; +import com.ghy.common.enums.BusinessType; +import com.ghy.common.utils.poi.ExcelUtil; +import com.ghy.order.domain.OrderMaster; +import com.ghy.order.service.OrderMasterService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 主订单API + * + * @author HH 2022/4/25 + */ +@Controller +@RequestMapping("/order/master") +public class OrderMasterController extends BaseController { + + private final String prefix = "order/master"; + + @Resource + private OrderMasterService orderMasterService; + + @RequiresPermissions("order:master:view") + @GetMapping() + public String orderMaster() { + return prefix; + } + + @RequiresPermissions("order:master:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(OrderMaster orderMaster) { + startPage(); + List list = orderMasterService.selectOrderMasterList(orderMaster); + return getDataTable(list); + } + + @Log(title = "主订单管理", businessType = BusinessType.EXPORT) + @RequiresPermissions("order:master:export") + @PostMapping("/export") + @ResponseBody + public AjaxResult export(OrderMaster orderMaster) { + List list = orderMasterService.selectOrderMasterList(orderMaster); + ExcelUtil util = new ExcelUtil<>(OrderMaster.class); + return util.exportExcel(list, "主订单数据"); + } + + @RequiresPermissions("order:master:remove") + @Log(title = "主订单管理", businessType = BusinessType.DELETE) + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) { + try { + return toAjax(orderMasterService.deleteOrderMasterByIds(ids)); + } catch (Exception e) { + return error(e.getMessage()); + } + } + + /** + * 修改主订单 + */ + @RequiresPermissions("order:master:edit") + @GetMapping("/edit/{orderMasterId}") + public String edit(@PathVariable("orderMasterId") Long orderMasterId, ModelMap mmap) { + mmap.put("orderMaster", orderMasterService.selectById(orderMasterId)); + return prefix + "/edit"; + } + + /** + * 修改保存主订单 + */ + @RequiresPermissions("order:master:edit") + @Log(title = "主订单管理", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(@Validated OrderMaster orderMaster) { + if (UserConstants.ORDER_CODE_NOT_UNIQUE.equals(orderMasterService.checkOrderMasterCodeUnique(orderMaster))) { + return error("修改主订单'" + orderMaster.getCode() + "'失败,主订单编码已存在"); + } + orderMaster.setUpdateBy(getLoginName()); + return toAjax(orderMasterService.updateOrderMaster(orderMaster)); + } + + /** + * 校验主订单编码 + */ + @PostMapping("/checkOrderMasterCodeUnique") + @ResponseBody + public String checkOrderMasterCodeUnique(OrderMaster orderMaster) { + return orderMasterService.checkOrderMasterCodeUnique(orderMaster); + } +} diff --git a/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java b/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java index d2e199a5..779b51e4 100644 --- a/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java +++ b/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java @@ -109,6 +109,10 @@ public class UserConstants public final static String CONFIG_KEY_UNIQUE = "0"; public final static String CONFIG_KEY_NOT_UNIQUE = "1"; + /** 订单编码是否唯一的返回结果 */ + public final static String ORDER_CODE_UNIQUE = "0"; + public final static String ORDER_CODE_NOT_UNIQUE = "1"; + /** * 密码长度限制 */ diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java new file mode 100644 index 00000000..7a173f51 --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java @@ -0,0 +1,51 @@ +package com.ghy.order.mapper; + +import com.ghy.order.domain.OrderDetail; + +import java.util.List; + +/** + * 细单表(转派后产生的订单)的mapper层 + * + * @author HH 2022/4/25 + */ +public interface OrderDetailMapper { + + /** + * @param orderDetail 细单表属性 + * @return 成功条数 + */ + int insertOrderDetail(OrderDetail orderDetail); + + /** + * @param orderDetail 细单表属性 + * @return 成功条数 + */ + int updateOrderDetail(OrderDetail orderDetail); + + /** + * @param orderDetail 细单表入参 + * @return 细单表集合 + */ + List selectOrderDetailList(OrderDetail orderDetail); + + /** + * @param orderDetailId 细单表id + * @return 细单表 + */ + OrderDetail selectById(Long orderDetailId); + + /** + * 批量删除细单表信息 + * + * @param orderDetailIds 需要删除的数据ID + * @return 结果 + */ + int deleteOrderDetailByIds(Long[] orderDetailIds); + + /** + * @param orderDetailCode 细单表编码 + * @return 细单表信息 + */ + OrderDetail checkOrderDetailCodeUnique(String orderDetailCode); +} diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java new file mode 100644 index 00000000..6825bf1d --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java @@ -0,0 +1,52 @@ +package com.ghy.order.mapper; + +import com.ghy.order.domain.OrderMaster; + +import java.util.List; + +/** + * 主订单的mapper层 + * + * @author HH 2022/4/24 + */ +public interface OrderMasterMapper { + + /** + * @param orderMaster 主订单属性 + * @return 成功条数 + */ + int insertOrderMaster(OrderMaster orderMaster); + + /** + * @param orderMaster 主订单属性 + * @return 成功条数 + */ + int updateOrderMaster(OrderMaster orderMaster); + + /** + * @param orderMaster 主订单入参 + * @return 主订单集合 + */ + List selectOrderMasterList(OrderMaster orderMaster); + + /** + * @param orderMasterId 主订单id + * @return 主订单 + */ + OrderMaster selectById(Long orderMasterId); + + /** + * 批量删除主订单信息 + * + * @param orderMasterIds 需要删除的数据ID + * @return 结果 + */ + int deleteOrderMasterByIds(Long[] orderMasterIds); + + /** + * @param orderMasterCode 主订单编码 + * @return 主订单信息 + */ + OrderMaster checkOrderMasterCodeUnique(String orderMasterCode); + +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java new file mode 100644 index 00000000..429d6854 --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java @@ -0,0 +1,52 @@ +package com.ghy.order.service; + +import com.ghy.order.domain.OrderDetail; + +import java.util.List; + +/** + * 详细订单接口 + * + * @author HH 2022/4/25 + */ +public interface OrderDetailService { + + /** + * @param orderDetail 详细订单属性 + * @return 成功条数 + */ + int insertOrderDetail(OrderDetail orderDetail); + + /** + * @param orderDetail 详细订单属性 + * @return 成功条数 + */ + int updateOrderDetail(OrderDetail orderDetail); + + /** + * @param orderDetail 详细订单入参 + * @return 详细订单集合 + */ + List selectOrderDetailList(OrderDetail orderDetail); + + + /** + * @param orderDetailId 详细订单id + * @return 详细订单 + */ + OrderDetail selectById(Long orderDetailId); + + /** + * @param ids 详细订单ids + * @return 删除结果 + */ + int deleteOrderDetailByIds(String ids); + + /** + * 校验详细订单编码是否重复 + * + * @param orderDetail 详细订单属性 + * @return 校验结果 1存在 0不存在 + */ + String checkOrderDetailCodeUnique(OrderDetail orderDetail); +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java new file mode 100644 index 00000000..3c64b78b --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java @@ -0,0 +1,53 @@ +package com.ghy.order.service; + +import com.ghy.order.domain.OrderMaster; + +import java.util.List; + +/** + * 主订单接口 + * + * @author clunt + */ +public interface OrderMasterService { + + /** + * @param orderMaster 主订单属性 + * @return 成功条数 + */ + int insertOrderMaster(OrderMaster orderMaster); + + /** + * @param orderMaster 主订单属性 + * @return 成功条数 + */ + int updateOrderMaster(OrderMaster orderMaster); + + /** + * @param orderMaster 主订单入参 + * @return 主订单集合 + */ + List selectOrderMasterList(OrderMaster orderMaster); + + + /** + * @param orderMasterId 主订单id + * @return 主订单 + */ + OrderMaster selectById(Long orderMasterId); + + /** + * @param ids 主订单ids + * @return 删除结果 + */ + int deleteOrderMasterByIds(String ids); + + /** + * 校验主订单编码是否重复 + * + * @param orderMaster 主订单属性 + * @return 校验结果 1存在 0不存在 + */ + String checkOrderMasterCodeUnique(OrderMaster orderMaster); + +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java new file mode 100644 index 00000000..d336115b --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -0,0 +1,54 @@ +package com.ghy.order.service.impl; + +import com.ghy.common.constant.UserConstants; +import com.ghy.common.core.text.Convert; +import com.ghy.order.domain.OrderDetail; +import com.ghy.order.mapper.OrderDetailMapper; +import com.ghy.order.service.OrderDetailService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class OrderDetailServiceImpl implements OrderDetailService { + + @Resource + private OrderDetailMapper orderDetailMapper; + + @Override + public int insertOrderDetail(OrderDetail orderDetail) { + return orderDetailMapper.insertOrderDetail(orderDetail); + } + + @Override + public int updateOrderDetail(OrderDetail orderDetail) { + return orderDetailMapper.updateOrderDetail(orderDetail); + } + + @Override + public List selectOrderDetailList(OrderDetail orderDetail) { + return orderDetailMapper.selectOrderDetailList(orderDetail); + } + + @Override + public OrderDetail selectById(Long orderDetailId) { + return orderDetailMapper.selectById(orderDetailId); + } + + @Override + public int deleteOrderDetailByIds(String ids) { + Long[] orderDetailIds = Convert.toLongArray(ids); + return orderDetailMapper.deleteOrderDetailByIds(orderDetailIds); + } + + @Override + public String checkOrderDetailCodeUnique(OrderDetail orderDetail) { + long orderDetailId = orderDetail.getId() == null ? -1L : orderDetail.getId(); + OrderDetail info = orderDetailMapper.checkOrderDetailCodeUnique(orderDetail.getCode()); + if (info != null && info.getId() != orderDetailId) { + return UserConstants.ORDER_CODE_NOT_UNIQUE; + } + return UserConstants.ORDER_CODE_UNIQUE; + } +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java new file mode 100644 index 00000000..3252b917 --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java @@ -0,0 +1,60 @@ +package com.ghy.order.service.impl; + +import com.ghy.common.constant.UserConstants; +import com.ghy.common.core.text.Convert; +import com.ghy.order.domain.OrderMaster; +import com.ghy.order.mapper.OrderMasterMapper; +import com.ghy.order.service.OrderMasterService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品模块实现类 + * + * @author clunt + */ +@Service +public class OrderMasterServiceImpl implements OrderMasterService { + + @Resource + private OrderMasterMapper orderMasterMapper; + + @Override + public int insertOrderMaster(OrderMaster orderMaster) { + return orderMasterMapper.insertOrderMaster(orderMaster); + } + + @Override + public int updateOrderMaster(OrderMaster orderMaster) { + return orderMasterMapper.updateOrderMaster(orderMaster); + } + + @Override + public List selectOrderMasterList(OrderMaster orderMaster) { + return orderMasterMapper.selectOrderMasterList(orderMaster); + } + + @Override + public OrderMaster selectById(Long orderMasterId) { + return orderMasterMapper.selectById(orderMasterId); + } + + @Override + public int deleteOrderMasterByIds(String ids) { + Long[] orderMasterIds = Convert.toLongArray(ids); + return orderMasterMapper.deleteOrderMasterByIds(orderMasterIds); + } + + @Override + public String checkOrderMasterCodeUnique(OrderMaster orderMaster) { + long orderMasterId = orderMaster.getId() == null ? -1L : orderMaster.getId(); + OrderMaster info = orderMasterMapper.checkOrderMasterCodeUnique(orderMaster.getCode()); + if (info != null && info.getId() != orderMasterId) { + return UserConstants.ORDER_CODE_NOT_UNIQUE; + } + return UserConstants.ORDER_CODE_UNIQUE; + } + +} diff --git a/ghy-order/src/main/resources/mapper/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/OrderDetailMapper.xml new file mode 100644 index 00000000..800578f6 --- /dev/null +++ b/ghy-order/src/main/resources/mapper/OrderDetailMapper.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT id, + code, + order_master_code, + customer_id, + order_type, + order_status, + worker_id, + pay_time, + rev_time, + work_begin_time, + work_finish_time, + create_by, + create_time, + remark + FROM order_detail + + + + + + + + DELETE FROM order_detail WHERE id IN + + #{orderDetailId} + + + + + UPDATE order_detail + + code = #{code}, + order_master_id = #{orderMasterId}, + order_master_code = #{orderMasterCode}, + customer_id = #{customerId}, + order_type = #{orderType}, + order_status = #{orderStatus}, + worker_id = #{workerId}, + pay_time = #{payTime}, + rev_time = #{revTime}, + work_begin_time = #{workBeginTime}, + work_finish_time = #{workFinishTime}, + update_by = #{updateBy}, + update_time = SYSDATE() + + WHERE id = #{id} + + + + INSERT INTO order_detail( + code, + order_master_id, + order_master_code, + customer_id, + order_type, + order_status, + worker_id, + pay_time, + rev_time, + work_begin_time, + work_finish_time, + create_by, + create_time + )VALUES( + #{code}, + o#{orderMasterId}, + #{orderMasterCode}, + #{customerId}, + #{orderType}, + #{orderStatus}, + #{workerId}, + #{payTime}, + #{revTime}, + #{workBeginTime}, + #{workFinishTime}, + #{createBy}, + SYSDATE() + ) + + + + + \ No newline at end of file diff --git a/ghy-order/src/main/resources/mapper/OrderMasterMapper.xml b/ghy-order/src/main/resources/mapper/OrderMasterMapper.xml new file mode 100644 index 00000000..f2f895f8 --- /dev/null +++ b/ghy-order/src/main/resources/mapper/OrderMasterMapper.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + SELECT id, + code, + customer_id, + order_type, + order_status, + pay_type, + pay_status, + worker_id, + pay_time, + rev_time, + create_by, + create_time, + remark + FROM order_master + + + + + + + + DELETE FROM order_master WHERE id IN + + #{orderMasterId} + + + + + UPDATE order_master + + code = #{code}, + customer_id = #{customerId}, + order_type = #{orderType}, + order_status = #{orderStatus}, + pay_type = #{payType}, + pay_status = #{payStatus}, + worker_id = #{workerId}, + pay_time = #{payTime}, + rev_time = #{revTime}, + update_by = #{updateBy}, + update_time = SYSDATE() + + WHERE id = #{id} + + + + INSERT INTO order_master( + code, + customer_id, + order_type, + order_status, + pay_type, + pay_status, + worker_id, + pay_time, + rev_time, + create_by, + create_time + )VALUES( + #{code}, + #{customerId}, + #{orderType}, + #{orderStatus}, + #{payType}, + #{payStatus}, + #{workerId}, + #{payTime}, + #{revTime}, + #{createBy}, + SYSDATE() + ) + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 855ff8ce..300ff155 100644 --- a/pom.xml +++ b/pom.xml @@ -275,6 +275,12 @@ ${ghy.version} + + + com.ghy + ghy-order + ${ghy.version} +