From eced56a427c210e97a2df85045c9a3b33fe45a2c Mon Sep 17 00:00:00 2001 From: cb <275647614@qq.com> Date: Fri, 26 Sep 2025 18:06:05 +0800 Subject: [PATCH] no message --- .../web/controller/goods/GoodsController.java | 3 +- .../web/controller/order/OrderController.java | 40 ++++++- .../order/OrderDetailController.java | 4 +- .../controller/worker/WorkerController.java | 44 ++++++- .../resources/templates/worker/worker.html | 33 +++++- .../java/com/ghy/worker/domain/Worker.java | 3 + .../resources/mapper/worker/WorkerMapper.xml | 112 +++++++++++------- 7 files changed, 184 insertions(+), 55 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java b/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java index e7419538..512b005e 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java @@ -514,12 +514,13 @@ public class GoodsController extends BaseController { .filter(goods -> goods.getStatus() != null && goods.getStatus() == 0) .collect(Collectors.toList()); } + logger.info("获取到的服务类目id{} 取到的商品列表:{}", serviceCategoryId,goodsList); // 3. 提取所有店铺ID(去重) Set shopIds = goodsList.stream() .filter(g -> g.getShopId() != null) .map(Goods::getShopId) .collect(Collectors.toSet()); - + logger.info("取到的店铺列表:{}", shopIds); if (!shopIds.isEmpty()) { // 找到最近的店铺 Shop nearestShop = null; 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 072e1635..5a8cd4f0 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 @@ -489,10 +489,41 @@ public class OrderController extends BaseController { orderGoods.setGoodsName(goodsStandard.getGoodsStandardName()); orderGoods.setOrderDetailId(od.getId()); - // 立即发货时,设置已发货数量为商品数量;否则设置为0 + // 立即发货时,计算可发货数量(主单商品数量减去已分配给其他子单的数量);否则设置为0 if (request.getIsQuicklyDelivery() != null && request.getIsQuicklyDelivery() == 1) { - orderGoods.setServerGoodsNum(goods.getNum()); - logger.info("立即发货订单[{}]商品[{}]设置已发货数量:{}", od.getCode(), goodsStandard.getGoodsStandardName(), goods.getNum()); + // 获取主单中该商品的总数量 + List masterOrderGoodsList = orderGoodsService.selectByOrderMasterId(om.getId()); + Integer masterGoodsNum = 0; + for (OrderGoods masterGoods : masterOrderGoodsList) { + if (Objects.equals(masterGoods.getGoodsStandardId(), goods.getGoodsStandardId())) { + masterGoodsNum = masterGoods.getGoodsNum(); + break; + } + } + + // 获取该商品已经分配给其他子单的数量 + List existingOrderDetails = orderDetailService.selectByOrderMasterId(om.getId()); + Integer allocatedGoodsNum = 0; + for (OrderDetail existingDetail : existingOrderDetails) { + // 排除当前正在创建的子单 + if (!existingDetail.getId().equals(od.getId())) { + List existingOrderGoods = orderGoodsService.selectByOrderDetailId(existingDetail.getId()); + for (OrderGoods existingGoods : existingOrderGoods) { + if (Objects.equals(existingGoods.getGoodsStandardId(), goods.getGoodsStandardId())) { + allocatedGoodsNum += existingGoods.getGoodsNum(); + } + } + } + } + + // 计算剩余可发货数量 = 主单商品数量 - 已分配给其他子单的数量 + Integer availableGoodsNum = masterGoodsNum - allocatedGoodsNum; + // 取当前子单商品数量和剩余可发货数量的最小值 + Integer serverGoodsNum = Math.min(goods.getNum(), Math.max(0, availableGoodsNum)); + + orderGoods.setServerGoodsNum(serverGoodsNum); + logger.info("立即发货订单[{}]商品[{}]主单总数量:{},已分配数量:{},当前子单数量:{},设置已发货数量:{}", + od.getCode(), goodsStandard.getGoodsStandardName(), masterGoodsNum, allocatedGoodsNum, goods.getNum(), serverGoodsNum); } else { orderGoods.setServerGoodsNum(0); } @@ -2170,7 +2201,8 @@ public class OrderController extends BaseController { return AjaxResult.error("该配件订单已经派发过服务订单,不能重复操作"); } - Shop goodsShop=shopService.getShop(accessoryOrderMaster.getGoods().getShopId()); + Goods goods=goodsService.selectById(accessoryOrderMaster.getGoodsId()); + Shop goodsShop=shopService.getShop(goods.getShopId()); String phone= goodsShop.getPhone(); // 获取服务店铺信息 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 index 72bc89c8..2470e25a 100644 --- 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 @@ -520,7 +520,9 @@ public class OrderDetailController extends BaseController { // 计算主单地址与店铺的距离 shop = calculateShopDistance(orderMaster, shop); - + Shop serviceShop = shopService.getShop(orderMaster.getServiceShopId()); + serviceShop=calculateShopDistance(orderMaster, serviceShop); + orderListResponse.setServiceShop(serviceShop); orderListResponse.setShop(shop); // 编辑返回属性 orderListResponse.setTrackingNumber(detail.getTrackingNumber()); 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 412a6dd1..f2b61f82 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 @@ -90,8 +90,9 @@ public class WorkerController extends BaseController { if(loginWorker.getStatus() == WorkerStatus.DELETED.getCode()){ return AjaxResult.error("账户已被删除,无法登录!"); } - if(loginWorker.getStatus() == WorkerStatus.DISABLE.getCode()){ - return AjaxResult.error("账户已被冻结,无法登录!"); + // 检查登录状态:0=允许登录,1=禁止登录 + if(loginWorker.getLoginStatus() != null && loginWorker.getLoginStatus() == 1){ + return AjaxResult.error("账户登录已被禁用,无法登录!"); } return AjaxResult.success(loginWorker); }else { @@ -420,6 +421,18 @@ public class WorkerController extends BaseController { } } + @PostMapping("/changeLoginStatus") + @ResponseBody + public AjaxResult changeLoginStatus(Worker worker){ + try { + workerService.updateWorker(worker); + return AjaxResult.success("登录状态修改成功"); + }catch (Exception e){ + logger.error(ExceptionUtil.getExceptionMessage(e)); + return AjaxResult.error(e.getMessage()); + } + } + @PostMapping("/settled") @ResponseBody @Transactional(rollbackFor = Exception.class) @@ -469,6 +482,33 @@ public class WorkerController extends BaseController { return AjaxResult.success("保存成功"); } + /** + * 通过师傅ID获取师傅详情 + * @param workerId 师傅ID + * @return 师傅实体对象 + */ + @GetMapping("/detail/{workerId}") + @ResponseBody + public AjaxResult getWorkerDetailById(@PathVariable("workerId") Long workerId) { + try { + // 参数校验 + if (workerId == null) { + return AjaxResult.error("师傅ID不能为空"); + } + + // 查询师傅基本信息 + Worker worker = workerService.selectById(workerId); + if (worker == null) { + return AjaxResult.error("师傅不存在"); + } + + return AjaxResult.success(worker); + } 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 caa4a364..02bb0f88 100644 --- a/ghy-admin/src/main/resources/templates/worker/worker.html +++ b/ghy-admin/src/main/resources/templates/worker/worker.html @@ -232,6 +232,14 @@ return statusTools(row); } }, + { + visible: editFlag == 'hidden' ? false : true, + title: '登录状态', + align: 'center', + formatter: function (value, row, index) { + return loginStatusTools(row); + } + }, { field: 'createTime', title: '创建时间', @@ -284,7 +292,7 @@ /* 用户管理-停用 */ function disable(workerId) { - $.modal.confirm("确认关闭,前端不再显示师傅/商家信息", function() { + $.modal.confirm("确认要停用用户吗?", function() { $.operate.post(prefix + "/changeStatus", { "workerId": workerId, "status": 1 }); }) } @@ -296,6 +304,29 @@ }) } + /* 登录状态显示 */ + function loginStatusTools(row) { + if (row.loginStatus == null || row.loginStatus == 0) { + return ' '; + } else { + return ' '; + } + } + + /* 禁用登录 */ + function disableLogin(workerId) { + $.modal.confirm("确认要禁用该师傅的登录权限吗?", function() { + $.operate.post(prefix + "/changeLoginStatus", { "workerId": workerId, "loginStatus": 1 }); + }) + } + + /* 启用登录 */ + function enableLogin(workerId) { + $.modal.confirm("确认要启用该师傅的登录权限吗?", function() { + $.operate.post(prefix + "/changeLoginStatus", { "workerId": workerId, "loginStatus": 0 }); + }) + } + // 区域联动处理 function areaChange(obj, nextId) { var parentCode = $(obj).val(); diff --git a/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java b/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java index 86392d3e..7fdfa1b8 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java +++ b/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java @@ -59,6 +59,9 @@ public class Worker extends BaseEntity { @Excel(name = "用户状态 0生效 1冻结 2删除", readConverterExp = "0=生效,1=冻结,2=删除") private Integer status; + @Excel(name = "登录状态 0允许登录 1禁止登录", readConverterExp = "0=允许登录,1=禁止登录") + private Integer loginStatus; + @Excel(name = "店铺状态") private Integer storeStatus; diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml index e12afebc..e513d45c 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml @@ -14,6 +14,7 @@ + @@ -31,7 +32,7 @@ SELECT - w.worker_id, w.name, w.account, w.phone, w.password, w.open_id, w.wx_open_id, w.dept_id, w.status, w.worker_logo_url, + w.worker_id, w.name, w.account, w.phone, w.password, w.open_id, w.wx_open_id, w.dept_id, w.status, w.login_status, w.worker_logo_url, w.leader_team_rate, w.leader_team_money, w.create_by, w.create_time, w.update_by, w.update_time, w.remark, w.type, w.store_status, w.alipay_account, w.alipay_name, sd.dept_name, sdc.banner_url @@ -42,7 +43,7 @@ SELECT - w.worker_id, w.name, w.account, w.phone, w.password, w.open_id, w.wx_open_id, w.dept_id, w.status, w.worker_logo_url, + w.worker_id, w.name, w.account, w.phone, w.password, w.open_id, w.wx_open_id, w.dept_id, w.status, w.login_status, w.worker_logo_url, w.leader_team_rate, w.leader_team_money, w.create_by, w.create_time, w.update_by, w.update_time, w.remark, w.type, w.store_status, w.alipay_account, w.alipay_name FROM worker w @@ -50,7 +51,7 @@ - insert into worker( - name, - account, - phone, - password, - open_id, - alipay_account, - alipay_name, - dept_id, - status, - worker_logo_url, - remark, - create_by, - create_time - )values( - #{name}, - #{account}, - #{phone}, - #{password}, - #{openId}, - #{deptId}, - #{alipayAccount}, - #{alipayName}, - #{status}, - #{workerLogoUrl}, - #{remark}, - #{createBy}, - sysdate() - ) + insert into worker + + name, + account, + phone, + password, + open_id, + wx_open_id, + dept_id, + status, + login_status, + worker_logo_url, + leader_team_rate, + leader_team_money, + create_by, + remark, + type, + store_status, + alipay_account, + alipay_name, + create_time, + + + #{name}, + #{account}, + #{phone}, + #{password}, + #{openId}, + #{wxOpenId}, + #{deptId}, + #{status}, + #{loginStatus}, + #{workerLogoUrl}, + #{leaderTeamRate}, + #{leaderTeamMoney}, + #{createBy}, + #{remark}, + #{type}, + #{storeStatus}, + #{alipayAccount}, + #{alipayName}, + sysdate(), + - + update worker - - type = #{type}, - remark = #{remark}, - status = #{status}, - wx_open_id = #{wxOpenId}, - store_status = #{storeStatus}, - account = #{account}, - phone = #{phone}, - password = #{password}, - name = #{name}, + + name = #{name}, + account = #{account}, + phone = #{phone}, + password = #{password}, + open_id = #{openId}, + wx_open_id = #{wxOpenId}, + dept_id = #{deptId}, + status = #{status}, + login_status = #{loginStatus}, worker_logo_url = #{workerLogoUrl}, - leader_team_rate = #{leaderTeamRate}, - leader_team_money = #{leaderTeamMoney}, + leader_team_rate = #{leaderTeamRate}, + leader_team_money = #{leaderTeamMoney}, + update_by = #{updateBy}, + remark = #{remark}, + type = #{type}, + store_status = #{storeStatus}, alipay_account = #{alipayAccount}, alipay_name = #{alipayName}, - + update_time = sysdate() + where worker_id = #{workerId}