package com.oying.modules.pc.store.rest; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.ListUtil; import com.oying.annotation.Log; import com.oying.modules.pc.store.converter.StoreQualificationAssembler; import com.oying.modules.pc.store.domain.StoreQualification; import com.oying.modules.pc.store.domain.dto.StoreQualificationCreateRequest; import com.oying.modules.pc.store.domain.dto.StoreQualificationQueryCriteria; import com.oying.modules.pc.store.domain.dto.StoreQualificationUpdateRequest; import com.oying.modules.pc.store.service.StoreQualificationService; import com.oying.modules.pc.store.view.StoreQualificationMerchantView; import com.oying.utils.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; /** * @author lzp * @date 2025-04-23 **/ @RestController @RequiredArgsConstructor @Api(tags = "店铺资质(商户端)") @RequestMapping("/api/pc/merchant/store/{storeId}/qualification") public class StoreQualificationMerchantController { private final StoreQualificationService storeQualificationService; @GetMapping("/list") @ApiOperation("查询店铺资质") //@PreAuthorize("@el.check('merchant:storeQualification:list') " + // "and @storeMerchantOwnershipService.check(#storeId)") public ResponseEntity getList(@PathVariable Long storeId) { StoreQualificationQueryCriteria criteria = new StoreQualificationQueryCriteria(); criteria.setStoreId(storeId); List storeQualificationList = storeQualificationService.queryAll(criteria); List viewList = Optional.ofNullable(storeQualificationList).orElse(ListUtil.empty()).stream().map(i -> { StoreQualificationMerchantView view = new StoreQualificationMerchantView(); BeanUtil.copyProperties(i, view, CopyOptions.create().setIgnoreNullValue(true)); view.setId(i.getQualificationId()); view.setType(i.getQualificationType()); view.setName(i.getQualificationName()); view.setImageUrl(i.getQualificationImageUrl()); return view; }).collect(Collectors.toList()); return ResponseEntity.ok(R.success(viewList)); } @PostMapping @Log("新增店铺资质") @ApiOperation("新增店铺资质") //@PreAuthorize("@el.check('merchant:storeQualification:add') " + // "and @storeMerchantOwnershipService.check(#storeId)") public ResponseEntity create(@PathVariable Long storeId, @Validated @RequestBody StoreQualificationCreateRequest request) { request.setStoreId(Optional.ofNullable(request.getStoreId()).orElse(storeId)); storeQualificationService.create(StoreQualificationAssembler.to(request)); return ResponseEntity.status(HttpStatus.CREATED).build(); } @PutMapping("/{qualificationId}") @Log("修改店铺资质") @ApiOperation("修改店铺资质") //@PreAuthorize("@el.check('merchant:storeQualification:edit') " + // "and @storeMerchantOwnershipService.check(#storeId)") public ResponseEntity update(@PathVariable Long storeId, @PathVariable Long qualificationId, @Validated @RequestBody StoreQualificationUpdateRequest request) { request.setQualificationId(Optional.ofNullable(request.getQualificationId()).orElse(qualificationId)); storeQualificationService.update(request); return ResponseEntity.noContent().build(); } @DeleteMapping @Log("删除店铺资质") @ApiOperation("删除店铺资质") //@PreAuthorize("@el.check('merchant:storeQualification:batchDel') " + // "and @storeMerchantOwnershipService.check(#storeId)") public ResponseEntity batchDel(@ApiParam(value = "传ID数组[]") @RequestBody List ids) { storeQualificationService.deleteAll(ids); return ResponseEntity.noContent().build(); } }