diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/cabinet/CabinetCellController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/cabinet/CabinetCellController.java index 6ae88fd..67de650 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/cabinet/CabinetCellController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/cabinet/CabinetCellController.java @@ -105,4 +105,12 @@ public class CabinetCellController extends BaseController { cabinetCellApplicationService.clearGoodsCells(cellId); return ResponseDTO.ok(); } + + @Operation(summary = "重置格口状态") + @AccessLog(title = "格口管理", businessType = BusinessTypeEnum.MODIFY) + @PutMapping("/reset/{cellId}") + public ResponseDTO resetCellById(@PathVariable Long cellId) { + cabinetCellApplicationService.resetCellById(cellId); + return ResponseDTO.ok(); + } } \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/CabinetCellApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/CabinetCellApplicationService.java index f569f52..c38cedb 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/CabinetCellApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/CabinetCellApplicationService.java @@ -231,16 +231,21 @@ public class CabinetCellApplicationService { throw new RuntimeException("密码错误或格口不存在"); } - // 加载格口模型并重置状态 - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("password", null) - .set("usage_status", 1) // 空闲 - .eq("cell_id", cell.getCellId()); - cabinetCellService.update(updateWrapper); + // 调用resetCellById方法重置格口 + cabinetCellService.resetCellById(cell.getCellId()); log.info("格口重置成功:cellId={}, cabinetId={}", cell.getCellId(), cell.getCabinetId()); } + /** + * 管理端根据cellId直接重置格口状态 + * @param cellId 格口ID + */ + public void resetCellById(Long cellId) { + cabinetCellService.resetCellById(cellId); + log.info("管理端重置格口成功:cellId={}", cellId); + } + @Transactional public CabinetCellDTO storeItemToCell(StoreItemToCellCommand command) { // 根据shopId获取该店铺下的所有柜子ID列表 diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellService.java b/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellService.java index fec87c3..8e69b6b 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellService.java @@ -42,4 +42,6 @@ public interface CabinetCellService extends IService { List selectLatestOrderInfoByCell(List cellIds); List selectRentedCellsByAb98UserIdAndCorpid(Long ab98UserId, String corpid); + + void resetCellById(Long cellId); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellServiceImpl.java b/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellServiceImpl.java index 67c0f42..5a66be0 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellServiceImpl.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/cabinet/cell/db/CabinetCellServiceImpl.java @@ -6,6 +6,7 @@ import com.agileboot.domain.cabinet.cell.dto.CabinetCellWithOrderCountDTO; import com.agileboot.domain.cabinet.smartCabinet.dto.CabinetDetailDTO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.List; @@ -91,4 +92,17 @@ public class CabinetCellServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("password", null) + .set("usage_status", 1) // 空闲 + .eq("cell_id", cellId) + .eq("deleted", 0); + boolean success = update(updateWrapper); + if (!success) { + throw new RuntimeException("格口不存在或已删除"); + } + } }