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 bac480fd..e69ac7fc 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 @@ -421,8 +421,35 @@ public class WorkerController extends BaseController { // 入驻商品区域信息持久化(类型2) workerAreaService.updateWorkerAreaByType(request.getWorkerId(), request.getWorkerGoodsAreas(), 2); - // 入驻服务品类信息持久化 - workerGoodsCategoryService.updateWorkerGoodsCategory(request.getWorkerId(), request.getGoodsCategories()); + // 入驻服务类目信息持久化(类型1) + if (request.getServiceCategories() != null && !request.getServiceCategories().isEmpty()) { + // 使用对象数组方式 + workerGoodsCategoryService.updateWorkerGoodsCategoryByType(request.getWorkerId(), request.getServiceCategories(), 1); + } else if (request.getServiceCategoryIds() != null && !request.getServiceCategoryIds().isEmpty()) { + // 使用ID数组方式(兼容旧版本) + List serviceCategories = request.getServiceCategoryIds().stream() + .map(id -> { + WorkerGoodsCategory category = new WorkerGoodsCategory(); + category.setGoodsCategoryId(id); + return category; + }).collect(Collectors.toList()); + workerGoodsCategoryService.updateWorkerGoodsCategoryByType(request.getWorkerId(), serviceCategories, 1); + } + + // 入驻商品类目信息持久化(类型2) + if (request.getGoodsCategories() != null && !request.getGoodsCategories().isEmpty()) { + // 使用对象数组方式 + workerGoodsCategoryService.updateWorkerGoodsCategoryByType(request.getWorkerId(), request.getGoodsCategories(), 2); + } else if (request.getGoodsCategoryIds() != null && !request.getGoodsCategoryIds().isEmpty()) { + // 使用ID数组方式(兼容旧版本) + List goodsCategories = request.getGoodsCategoryIds().stream() + .map(id -> { + WorkerGoodsCategory category = new WorkerGoodsCategory(); + category.setGoodsCategoryId(id); + return category; + }).collect(Collectors.toList()); + workerGoodsCategoryService.updateWorkerGoodsCategoryByType(request.getWorkerId(), goodsCategories, 2); + } // 更新师傅入驻类型为服务商 Worker worker = new Worker(); diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerGoodsCategoryController.java b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerGoodsCategoryController.java index 51282844..9a06475f 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerGoodsCategoryController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerGoodsCategoryController.java @@ -71,11 +71,20 @@ public class WorkerGoodsCategoryController extends BaseController { * 查询某个师傅的所有服务类目 * * @param workerId 师傅ID + * @param serviceType 服务类型:1=服务, 2=商品,不传则查询所有 */ @GetMapping("worker") @ResponseBody - public AjaxResult getByWorker(Long workerId) { - List list = workerGoodsCategoryService.getByWorker(workerId); + public AjaxResult getByWorker(Long workerId, Integer serviceType) { + List list; + if (serviceType != null) { + // 根据服务类型查询 + list = workerGoodsCategoryService.getByWorkerIdAndType(workerId, serviceType); + } else { + // 查询所有类目(保持向后兼容) + list = workerGoodsCategoryService.getByWorker(workerId); + } + for (WorkerGoodsCategory item: list) { List nameList = new ArrayList(); // 查询所有父级服务类目,拼接服务名称 @@ -89,6 +98,53 @@ public class WorkerGoodsCategoryController extends BaseController { } return AjaxResult.success(list); } + + /** + * 查询某个师傅的服务类目(类型1) + * + * @param workerId 师傅ID + */ + @GetMapping("worker/service") + @ResponseBody + public AjaxResult getServiceCategoriesByWorker(Long workerId) { + List list = workerGoodsCategoryService.getByWorkerIdAndType(workerId, 1); + for (WorkerGoodsCategory item: list) { + List nameList = new ArrayList(); + // 查询所有父级服务类目,拼接服务名称 + GoodsCategory goodsCategory = goodsCategoryService.selectById(item.getGoodsCategoryId()); + while (goodsCategory.getParentCategoryId() != null) { + nameList.add(goodsCategory.getGoodsCategoryName()); + goodsCategory = goodsCategoryService.selectById(goodsCategory.getParentCategoryId()); + } + Collections.reverse(nameList); + item.setMergeName(StringUtils.join(nameList, Constants.JOIN_SYMBOL)); + } + return AjaxResult.success(list); + } + + /** + * 查询某个师傅的商品类目(类型2) + * + * @param workerId 师傅ID + */ + @GetMapping("worker/goods") + @ResponseBody + public AjaxResult getGoodsCategoriesByWorker(Long workerId) { + List list = workerGoodsCategoryService.getByWorkerIdAndType(workerId, 2); + for (WorkerGoodsCategory item: list) { + List nameList = new ArrayList(); + // 查询所有父级服务类目,拼接服务名称 + GoodsCategory goodsCategory = goodsCategoryService.selectById(item.getGoodsCategoryId()); + while (goodsCategory.getParentCategoryId() != null) { + nameList.add(goodsCategory.getGoodsCategoryName()); + goodsCategory = goodsCategoryService.selectById(goodsCategory.getParentCategoryId()); + } + Collections.reverse(nameList); + item.setMergeName(StringUtils.join(nameList, Constants.JOIN_SYMBOL)); + } + return AjaxResult.success(list); + } + @GetMapping("worker/edit") @ResponseBody public AjaxResult getEditWorker(Long workerId) { diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerSettledRequest.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerSettledRequest.java index e2f81440..08f1a308 100644 --- a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerSettledRequest.java +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerSettledRequest.java @@ -24,9 +24,18 @@ public class WorkerSettledRequest { // 入驻商品区域 private List workerGoodsAreas; - // 服务品类 + // 入驻服务类目 + private List serviceCategories; + + // 入驻商品类目 private List goodsCategories; + // 入驻服务类目ID列表(兼容旧版本) + private List serviceCategoryIds; + + // 入驻商品类目ID列表(兼容旧版本) + private List goodsCategoryIds; + // 特殊技能 // private List specialSkills; } diff --git a/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerGoodsCategory.java b/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerGoodsCategory.java index b56c535f..7dd56fb0 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerGoodsCategory.java +++ b/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerGoodsCategory.java @@ -40,4 +40,9 @@ public class WorkerGoodsCategory extends BaseEntity { private String mergeName; private List goodsCategoryIds; + + /** + * 服务类型:1=服务, 2=商品 + */ + private Integer serviceType; } diff --git a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java index 9927c775..70ff150a 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java +++ b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java @@ -22,5 +22,15 @@ public interface WorkerGoodsCategoryMapper { List getByWorker(Long workerId); + /** + * 根据师傅ID和服务类型删除服务类目 + */ + int deleteByWorkerIdAndType(@Param("workerId") Long workerId, @Param("serviceType") Integer serviceType); + + /** + * 根据师傅ID和服务类型查询服务类目 + */ + List getByWorkerIdAndType(@Param("workerId") Long workerId, @Param("serviceType") Integer serviceType); + List getWorkerGoodsCategory(WorkerGoodsCategory workerGoodsCategory); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java index 1e5b930f..278170dd 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java @@ -21,5 +21,21 @@ public interface WorkerGoodsCategoryService { void updateWorkerGoodsCategory(Long workerId, List categories); + /** + * 根据服务类型更新师傅服务类目 + * @param workerId 师傅ID + * @param categories 类目列表 + * @param serviceType 服务类型:1=服务, 2=商品 + */ + void updateWorkerGoodsCategoryByType(Long workerId, List categories, Integer serviceType); + + /** + * 根据师傅ID和服务类型查询服务类目 + * @param workerId 师傅ID + * @param serviceType 服务类型:1=服务, 2=商品 + * @return 服务类目列表 + */ + List getByWorkerIdAndType(Long workerId, Integer serviceType); + List getWorkerGoodsCategory(WorkerGoodsCategory workerGoodsCategory); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java index 942a4182..bcd299da 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java @@ -72,4 +72,42 @@ public class WorkerGoodsCategoryServiceImpl implements WorkerGoodsCategoryServic public List getWorkerGoodsCategory(WorkerGoodsCategory workerGoodsCategory) { return workerGoodsCategoryMapper.getWorkerGoodsCategory(workerGoodsCategory); } + + @Override + public void updateWorkerGoodsCategoryByType(Long workerId, List categories, Integer serviceType) { + if (categories == null || categories.isEmpty()) { + return; + } + + // 获取该师傅该类型的已存在类目 + List existCategories = workerGoodsCategoryMapper.getByWorkerIdAndType(workerId, serviceType); + Set existCategoryIds = existCategories.stream().map(WorkerGoodsCategory::getGoodsCategoryId).collect(Collectors.toSet()); + Set categoryIds = categories.stream().map(WorkerGoodsCategory::getGoodsCategoryId).collect(Collectors.toSet()); + + // 新的类目-已存在类目的差集,为需要新加入的类目 + List categories2Insert = CollectionUtils.subtract(categoryIds, existCategoryIds).stream().map(x -> { + WorkerGoodsCategory obj = new WorkerGoodsCategory(); + obj.setWorkerId(workerId); + obj.setGoodsCategoryId(x); + obj.setServiceType(serviceType); // 设置类型:1=服务, 2=商品 + return obj; + }).collect(Collectors.toList()); + + // 已存在类目-新的类目的差集,为需要删除的类目 + List id2DelList = existCategories.stream().filter(x -> !categoryIds.contains(x.getGoodsCategoryId())) + .map(WorkerGoodsCategory::getWorkerGoodsCategoryId).collect(Collectors.toList()); + + if (!CollectionUtils.isEmpty(categories2Insert)) { + workerGoodsCategoryMapper.batchInsert(categories2Insert); + } + if (!CollectionUtils.isEmpty(id2DelList)) { + Long[] id2Del = new Long[]{}; + workerGoodsCategoryMapper.delete(id2DelList.toArray(id2Del)); + } + } + + @Override + public List getByWorkerIdAndType(Long workerId, Integer serviceType) { + return workerGoodsCategoryMapper.getByWorkerIdAndType(workerId, serviceType); + } } diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml index 35fb20e8..4f70ab9e 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml @@ -6,6 +6,7 @@ + @@ -15,7 +16,7 @@ - SELECT wgc.worker_goods_category_id, wgc.worker_id, wgc.goods_category_id, wgc.create_by, wgc.create_time, wgc.update_by, + SELECT wgc.worker_goods_category_id, wgc.worker_id, wgc.goods_category_id, wgc.service_type, wgc.create_by, wgc.create_time, wgc.update_by, wgc.update_time, wgc.remark, gc.goods_category_name FROM worker_goods_category wgc LEFT JOIN goods_category gc on gc.goods_category_id = wgc.goods_category_id @@ -25,12 +26,14 @@ INSERT INTO worker_goods_category( worker_id, goods_category_id, + service_type, create_by, remark, create_time )VALUES( #{workerId}, #{goodsCategoryId}, + #{serviceType}, #{createBy}, #{remark}, sysdate() @@ -38,10 +41,10 @@ - INSERT INTO worker_goods_category ( worker_id, goods_category_id, create_by, create_time) + INSERT INTO worker_goods_category ( worker_id, goods_category_id, service_type, create_by, create_time) VALUES - (#{item.workerId}, #{item.goodsCategoryId}, #{item.workerId}, sysdate()) + (#{item.workerId}, #{item.goodsCategoryId}, #{item.serviceType}, #{item.workerId}, sysdate()) @@ -50,6 +53,11 @@ WHERE wgc.worker_id = #{workerId} + +