diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index ba719a29..072e1635 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -488,7 +488,15 @@ public class OrderController extends BaseController { orderGoods.setGoodsNum(goods.getNum()); orderGoods.setGoodsName(goodsStandard.getGoodsStandardName()); orderGoods.setOrderDetailId(od.getId()); - orderGoods.setServerGoodsNum(0); + + // 立即发货时,设置已发货数量为商品数量;否则设置为0 + if (request.getIsQuicklyDelivery() != null && request.getIsQuicklyDelivery() == 1) { + orderGoods.setServerGoodsNum(goods.getNum()); + logger.info("立即发货订单[{}]商品[{}]设置已发货数量:{}", od.getCode(), goodsStandard.getGoodsStandardName(), goods.getNum()); + } else { + orderGoods.setServerGoodsNum(0); + } + // orderGoods.setOrderId(om.getId()); orderGoodsService.insertOrderGoods(orderGoods); }); @@ -568,6 +576,50 @@ public class OrderController extends BaseController { return AjaxResult.success(); } + /** + * 更新订单商品的已发货数量 + * @param orderDetailId 子订单ID + * @param isIncrement 是否增加数量(true:增加,false:重置为0) + */ + @Transactional(rollbackFor = Exception.class) + public void updateOrderGoodsServerNum(Long orderDetailId, boolean isIncrement) { + try { + // 获取子订单商品列表 + List orderGoodsList = orderGoodsService.selectByOrderDetailId(orderDetailId); + + if (CollectionUtils.isEmpty(orderGoodsList)) { + logger.warn("订单详情[{}]未找到关联商品", orderDetailId); + return; + } + + // 更新每个商品的已发货数量 + for (OrderGoods orderGoods : orderGoodsList) { + if (isIncrement) { + // 增加已发货数量(设置为商品总数量) + orderGoods.setServerGoodsNum(orderGoods.getGoodsNum()); + logger.info("订单商品[{}]已发货数量更新为:{}", orderGoods.getGoodsName(), orderGoods.getGoodsNum()); + } else { + // 重置已发货数量为0 + orderGoods.setServerGoodsNum(0); + logger.info("订单商品[{}]已发货数量重置为:0", orderGoods.getGoodsName()); + } + + // 更新数据库 + int updateResult = orderGoodsService.updateOrderGoods(orderGoods); + if (updateResult <= 0) { + logger.error("更新订单商品[{}]已发货数量失败", orderGoods.getGoodsName()); + throw new RuntimeException("更新订单商品已发货数量失败"); + } + } + + logger.info("订单详情[{}]商品已发货数量更新完成,共更新{}个商品", orderDetailId, orderGoodsList.size()); + + } catch (Exception e) { + logger.error("更新订单详情[{}]商品已发货数量异常:{}", orderDetailId, e.getMessage(), e); + throw new RuntimeException("更新商品已发货数量失败:" + e.getMessage()); + } + } + @PostMapping("/server/app") @ResponseBody @Transactional(rollbackFor = Exception.class) @@ -1371,7 +1423,35 @@ public class OrderController extends BaseController { // GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); Goods goods = goodsService.selectById(master.getGoodsId()); - + if (goods.getDeptGoodsCategoryId() != null) { + Long categoryId = null; + // 前端发单和后台派单 + if (com.ghy.common.utils.StringUtils.isEmpty(orderMaster.getOrderMode())) { + DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.selectOneByGoodsCategoryId(goods.getDeptGoodsCategoryId()); + if (deptGoodsCategory != null) { + categoryId = deptGoodsCategory.getGoodsCategoryId(); + } + } else { + DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.get(goods.getDeptGoodsCategoryId()); + if (deptGoodsCategory != null) { + categoryId = deptGoodsCategory.getGoodsCategoryId(); + } + } + if (categoryId != null) { + GoodsCategory one = goodsCategoryService.selectById(categoryId); + if (one != null && one.getParentCategoryId() != null) { + GoodsCategory two = goodsCategoryService.selectById(one.getParentCategoryId()); + if (two != null && two.getParentCategoryId() != null) { + GoodsCategory three = goodsCategoryService.selectById(two.getParentCategoryId()); + if (three != null) { + goods.setGoodsName(three.getGoodsCategoryName() + + "-" + two.getGoodsCategoryName() + + "-" + one.getGoodsCategoryName()); + } + } + } + } + } // 财务信息 FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(master.getId()); BigDecimal totalPayMoney = financialMaster.getPayMoney(); @@ -1509,7 +1589,35 @@ public class OrderController extends BaseController { // GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); Goods goods = goodsService.selectById(orderMaster.getGoodsId()); - + if (goods.getDeptGoodsCategoryId() != null) { + Long categoryId = null; + // 前端发单和后台派单 + if (com.ghy.common.utils.StringUtils.isEmpty(orderMaster.getOrderMode())) { + DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.selectOneByGoodsCategoryId(goods.getDeptGoodsCategoryId()); + if (deptGoodsCategory != null) { + categoryId = deptGoodsCategory.getGoodsCategoryId(); + } + } else { + DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.get(goods.getDeptGoodsCategoryId()); + if (deptGoodsCategory != null) { + categoryId = deptGoodsCategory.getGoodsCategoryId(); + } + } + if (categoryId != null) { + GoodsCategory one = goodsCategoryService.selectById(categoryId); + if (one != null && one.getParentCategoryId() != null) { + GoodsCategory two = goodsCategoryService.selectById(one.getParentCategoryId()); + if (two != null && two.getParentCategoryId() != null) { + GoodsCategory three = goodsCategoryService.selectById(two.getParentCategoryId()); + if (three != null) { + goods.setGoodsName(three.getGoodsCategoryName() + + "-" + two.getGoodsCategoryName() + + "-" + one.getGoodsCategoryName()); + } + } + } + } + } // 财务信息 FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(detail.getId()); BigDecimal detailPayMoney = financialDetail.getPayMoney(); @@ -2062,6 +2170,9 @@ public class OrderController extends BaseController { return AjaxResult.error("该配件订单已经派发过服务订单,不能重复操作"); } + Shop goodsShop=shopService.getShop(accessoryOrderMaster.getGoods().getShopId()); + String phone= goodsShop.getPhone(); + // 获取服务店铺信息 Shop serviceShop = shopService.getShop(serviceShopId); if (serviceShop == null) { @@ -2097,7 +2208,7 @@ public class OrderController extends BaseController { serviceOrderMaster.setCreateTime(new Date()); serviceOrderMaster.setWorkerId(serviceWorker.getWorkerId()); // 使用服务店铺的师傅ID serviceOrderMaster.setServiceShopId(serviceShopId); // 设置服务店铺ID - serviceOrderMaster.setRemark("由配件订单[" + accessoryOrderMaster.getCode() + "]自动生成的服务订单,服务金额:" + serviceMoney); + serviceOrderMaster.setRemark("由配件订单[" + accessoryOrderMaster.getCode() + "]自动生成的服务订单,接单后请约客户上门服务,服务费用已在订单内,完单后会自行结算,请勿重复向客户收取。服务时不要讲产品负面话题,不要生硬推销!杜绝一切不合常理的行为!服务客户过程中有任何问题可致电商品/配件店铺"+phone+"【致电时按商品信息说明是该商品安装服务方】" ); serviceOrderMaster.setExpectTimeStart(accessoryOrderMaster.getExpectTimeStart()); serviceOrderMaster.setExpectTimeEnd(accessoryOrderMaster.getExpectTimeEnd()); serviceOrderMaster.setInsuranceId(accessoryOrderMaster.getInsuranceId()); diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java index 8f3f146c..412a6dd1 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java @@ -85,7 +85,15 @@ public class WorkerController extends BaseController { Assert.notNull(worker.getPhone(), "手机号码为空"); List workerList = workerService.getWorkByPhoneAndPwd(worker); if(workerList.size() > 0){ - return AjaxResult.success(workerList.get(0)); + Worker loginWorker = workerList.get(0); + // 检查师傅状态:0=生效,1=冻结,2=删除 + if(loginWorker.getStatus() == WorkerStatus.DELETED.getCode()){ + return AjaxResult.error("账户已被删除,无法登录!"); + } + if(loginWorker.getStatus() == WorkerStatus.DISABLE.getCode()){ + return AjaxResult.error("账户已被冻结,无法登录!"); + } + return AjaxResult.success(loginWorker); }else { return AjaxResult.error("用户名或密码错误!"); } @@ -460,4 +468,19 @@ public class WorkerController extends BaseController { return AjaxResult.success("保存成功"); } + + /** + * 删除师傅(软删除) + */ + @RequiresPermissions("worker:worker:remove") + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) { + try { + return toAjax(workerService.deleteWorkerByIds(ids)); + } catch (Exception e) { + logger.error(ExceptionUtil.getExceptionMessage(e)); + return AjaxResult.error("删除失败: " + e.getMessage()); + } + } } diff --git a/ghy-admin/src/main/resources/templates/worker/worker.html b/ghy-admin/src/main/resources/templates/worker/worker.html index efc8225d..caa4a364 100644 --- a/ghy-admin/src/main/resources/templates/worker/worker.html +++ b/ghy-admin/src/main/resources/templates/worker/worker.html @@ -72,9 +72,9 @@
- - 删除 - + 导入 @@ -245,7 +245,7 @@ var actions = []; actions.push('服务区域 '); actions.push('服务技能 '); - actions.push('删除 '); + // actions.push('禁止登录 '); return actions.join(''); } else { return ""; @@ -276,15 +276,15 @@ /* 用户状态显示 */ function statusTools(row) { if (row.status == 0) { - return ' '; + return ' '; } else { - return ' '; + return ' '; } } /* 用户管理-停用 */ function disable(workerId) { - $.modal.confirm("确认要停用用户吗?", function() { + $.modal.confirm("确认关闭,前端不再显示师傅/商家信息", function() { $.operate.post(prefix + "/changeStatus", { "workerId": workerId, "status": 1 }); }) } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerService.java b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerService.java index 6ce48e8f..862e8da9 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerService.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerService.java @@ -59,4 +59,12 @@ public interface WorkerService { Map byWorkUserIdInMap(List workUserIdList); List selectByIds(Set workerIds); + + /** + * 删除师傅(软删除) + * + * @param ids 师傅ID字符串,多个ID用逗号分隔 + * @return 删除成功条数 + */ + int deleteWorkerByIds(String ids); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerServiceImpl.java b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerServiceImpl.java index 0e70295f..abafa2df 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerServiceImpl.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerServiceImpl.java @@ -1,5 +1,7 @@ package com.ghy.worker.service.impl; +import com.ghy.common.core.text.Convert; +import com.ghy.common.enums.WorkerStatus; import com.ghy.common.utils.StringUtils; import com.ghy.worker.domain.Worker; import com.ghy.worker.domain.WorkerTeam; @@ -85,4 +87,17 @@ public class WorkerServiceImpl implements WorkerService { } return workerMapper.selectByIds(workerIds); } + + @Override + public int deleteWorkerByIds(String ids) { + Long[] workerIds = Convert.toLongArray(ids); + int result = 0; + for (Long workerId : workerIds) { + Worker worker = new Worker(); + worker.setWorkerId(workerId); + worker.setStatus(WorkerStatus.DELETED.getCode()); + result += workerMapper.updateWorker(worker); + } + return result; + } } diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml index 7065c768..e12afebc 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml @@ -64,6 +64,8 @@ LEFT JOIN worker_goods_category wgc ON wgc.worker_id = w.worker_id LEFT JOIN worker_certification wc on w.worker_id = wc.worker_id + + AND w.status != 2 AND w.status = #{status} @@ -194,6 +196,8 @@