package com.example.xiaoshiweixinback.controller; import com.example.xiaoshiweixinback.business.common.Constants; import com.example.xiaoshiweixinback.business.common.Response; import com.example.xiaoshiweixinback.business.common.base.Records; import com.example.xiaoshiweixinback.business.exception.BusinessException; import com.example.xiaoshiweixinback.checkLogin.checkLogin; import com.example.xiaoshiweixinback.domain.AssoPersonProduct; import com.example.xiaoshiweixinback.entity.dto.AssoPersonProductDTO; import com.example.xiaoshiweixinback.entity.product.ProductAddDTO; import com.example.xiaoshiweixinback.entity.product.ProductDTO; import com.example.xiaoshiweixinback.service.AssoPersonProductService; import com.example.xiaoshiweixinback.service.ProductService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.models.security.SecurityScheme; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @Slf4j @RequestMapping(Constants.XIAOSHI_WEIXINBACK + "/product") @RestController @RequiredArgsConstructor public class ProductController { private final ProductService productService; private final AssoPersonProductService assoPersonProductService; @Operation(summary = "查询爆款产品") @PostMapping("/queryHotProduct") public Response queryHotProduct(@RequestBody ProductDTO productDTO) { Records records = productService.queryHotProduct(productDTO); return Response.success(records); } @Operation(summary = "添加或更新产品") @PostMapping("/addOrUpdateProduct") public Response addOrUpdateProduct(@RequestBody ProductAddDTO productAddDTO) { Records records = new Records(); try { Integer id = productService.addOrUpdateProduct(productAddDTO); records.setData(id); } catch (BusinessException e){ return Response.error(e.getErrorCode(),e.getMessage()); } return Response.success(records); } @checkLogin @Operation(summary = "关注产品") @PostMapping("/follow") public Response follow(@RequestBody AssoPersonProductDTO assoPersonProductDTO){ Records records = new Records(); Integer id = assoPersonProductService.add(assoPersonProductDTO); if(id ==null){ return Response.noPermissions("已超过可关注数量"); } if(id.equals(-2)){ return Response.noPermissions("无关注产品的权益"); } records.setData(id); return Response.success(records); } @Operation(summary = "取消关注产品") @GetMapping("/unFollow") public Response unFollow(Integer productId){ Records records = new Records(); Integer id = assoPersonProductService.cancel(productId); if (id.equals(-1)) { return Response.error("取消失败"); } else if (id.equals(0)) { return Response.error("没有权限"); } records.setData(id); return Response.success(records); } @checkLogin @Operation(summary = "查询关注的产品") @PostMapping("/queryConcernProduct") public Response queryConcernProduct(@RequestBody ProductDTO productDTO) { Records records = productService.queryConcernProduct(productDTO); return Response.success(records); } }