整合nacos
This commit is contained in:
		@@ -50,16 +50,16 @@
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- 服务注册 -->
 | 
			
		||||
        <!--        <dependency>-->
 | 
			
		||||
        <!--            <groupId>com.alibaba.cloud</groupId>-->
 | 
			
		||||
        <!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
 | 
			
		||||
        <!--        </dependency>-->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.alibaba.cloud</groupId>
 | 
			
		||||
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- 服务调用feign -->
 | 
			
		||||
        <!--        <dependency>-->
 | 
			
		||||
        <!--            <groupId>org.springframework.cloud</groupId>-->
 | 
			
		||||
        <!--            <artifactId>spring-cloud-starter-openfeign</artifactId>-->
 | 
			
		||||
        <!--        </dependency>-->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.cloud</groupId>
 | 
			
		||||
            <artifactId>spring-cloud-starter-openfeign</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- 流量控制 -->
 | 
			
		||||
        <!--        <dependency>-->
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package com.atguigu.ssyx;
 | 
			
		||||
 | 
			
		||||
import org.springframework.boot.SpringApplication;
 | 
			
		||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ClassName: ServiceAclApplication
 | 
			
		||||
@@ -12,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
 * @Create 2023/9/13 17:38
 | 
			
		||||
 */
 | 
			
		||||
@SpringBootApplication
 | 
			
		||||
@EnableDiscoveryClient
 | 
			
		||||
public class ServiceAclApplication {
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,3 +3,9 @@ spring:
 | 
			
		||||
    name: service-acl
 | 
			
		||||
  profiles:
 | 
			
		||||
    active: dev
 | 
			
		||||
  cloud:
 | 
			
		||||
    nacos:
 | 
			
		||||
      discovery:
 | 
			
		||||
        server-addr: localhost:8848
 | 
			
		||||
      username: nacos
 | 
			
		||||
      password: nacos
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,20 @@
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <artifactId>service-product</artifactId>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <!-- 阿里云oss依赖 -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.aliyun.oss</groupId>
 | 
			
		||||
            <artifactId>aliyun-sdk-oss</artifactId>
 | 
			
		||||
            <version>3.9.1</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- 日期工具栏依赖 -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>joda-time</groupId>
 | 
			
		||||
            <artifactId>joda-time</artifactId>
 | 
			
		||||
            <version>2.10.1</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
    <properties>
 | 
			
		||||
        <maven.compiler.source>8</maven.compiler.source>
 | 
			
		||||
        <maven.compiler.target>8</maven.compiler.target>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package com.atguigu.ssyx;
 | 
			
		||||
 | 
			
		||||
import org.springframework.boot.SpringApplication;
 | 
			
		||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ClassName: ServiceProductApplication
 | 
			
		||||
@@ -11,6 +12,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
 * @Create 2023/9/15 09:47
 | 
			
		||||
 */
 | 
			
		||||
@SpringBootApplication
 | 
			
		||||
@EnableDiscoveryClient
 | 
			
		||||
public class ServiceProductApplication {
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,46 @@
 | 
			
		||||
package com.atguigu.ssyx.product.controller;
 | 
			
		||||
 | 
			
		||||
import com.atguigu.ssyx.common.result.Result;
 | 
			
		||||
import com.atguigu.ssyx.product.service.FileUploadService;
 | 
			
		||||
import io.swagger.annotations.Api;
 | 
			
		||||
import io.swagger.annotations.ApiOperation;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.web.bind.annotation.CrossOrigin;
 | 
			
		||||
import org.springframework.web.bind.annotation.PostMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ClassName: FileUploadController
 | 
			
		||||
 * Package: com.atguigu.ssyx.product.controller
 | 
			
		||||
 *
 | 
			
		||||
 * @author yovinchen
 | 
			
		||||
 * @Create 2023/9/15 13:56
 | 
			
		||||
 */
 | 
			
		||||
@Api(tags = "文件上传接口")
 | 
			
		||||
@RestController
 | 
			
		||||
@CrossOrigin
 | 
			
		||||
@RequestMapping("admin/product")
 | 
			
		||||
public class FileUploadController {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private FileUploadService fileUploadService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 文件上传
 | 
			
		||||
     *
 | 
			
		||||
     * @param file
 | 
			
		||||
     * @return
 | 
			
		||||
     * @throws Exception
 | 
			
		||||
     */
 | 
			
		||||
    @ApiOperation("文件上传接口")
 | 
			
		||||
    @PostMapping("fileUpload")
 | 
			
		||||
    public Result fileUpload(MultipartFile file) throws Exception {
 | 
			
		||||
        try {
 | 
			
		||||
            return Result.ok(fileUploadService.fileUpload(file));
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("文件上传接口异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +1,20 @@
 | 
			
		||||
package com.atguigu.ssyx.product.controller;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import com.atguigu.ssyx.common.result.Result;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuInfo;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuInfoService;
 | 
			
		||||
import com.atguigu.ssyx.vo.product.SkuInfoQueryVo;
 | 
			
		||||
import com.atguigu.ssyx.vo.product.SkuInfoVo;
 | 
			
		||||
import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import io.swagger.annotations.Api;
 | 
			
		||||
import io.swagger.annotations.ApiOperation;
 | 
			
		||||
import io.swagger.annotations.ApiParam;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
@@ -12,9 +24,118 @@ import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
 * @author atguigu
 | 
			
		||||
 * @since 2023-09-15
 | 
			
		||||
 */
 | 
			
		||||
@Api(value = "SkuInfo管理", tags = "商品Sku管理")
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/product/sku-info")
 | 
			
		||||
@CrossOrigin
 | 
			
		||||
@RequestMapping(value = "/admin/product/skuInfo")
 | 
			
		||||
public class SkuInfoController {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private SkuInfoService skuInfoService;
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "获取sku分页列表")
 | 
			
		||||
    @GetMapping("{page}/{limit}")
 | 
			
		||||
    public Result<IPage<SkuInfo>> index(
 | 
			
		||||
            @ApiParam(name = "page", value = "当前页码", required = true) @PathVariable Long page,
 | 
			
		||||
            @ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable Long limit,
 | 
			
		||||
            @ApiParam(name = "skuInfoQueryVo", value = "查询对象", required = false) SkuInfoQueryVo skuInfoQueryVo) {
 | 
			
		||||
        try {
 | 
			
		||||
            Page<SkuInfo> pageParam = new Page<>(page, limit);
 | 
			
		||||
            IPage<SkuInfo> pageModel = skuInfoService.selectPage(pageParam, skuInfoQueryVo);
 | 
			
		||||
            return Result.ok(pageModel);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("获取sku分页列表异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "新增商品sku信息")
 | 
			
		||||
    @PostMapping("save")
 | 
			
		||||
    public Result save(@RequestBody SkuInfoVo skuInfoVo) {
 | 
			
		||||
        try {
 | 
			
		||||
            skuInfoService.saveSkuInfo(skuInfoVo);
 | 
			
		||||
            return Result.ok(null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("新增商品sku信息异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "获取商品sku信息")
 | 
			
		||||
    @GetMapping("get/{id}")
 | 
			
		||||
    public Result<SkuInfoVo> get(@PathVariable Long id) {
 | 
			
		||||
        try {
 | 
			
		||||
            SkuInfoVo skuInfoVo = skuInfoService.getSkuInfoVo(id);
 | 
			
		||||
            return Result.ok(skuInfoVo);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("新增商品sku信息异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "修改商品sku信息")
 | 
			
		||||
    @PutMapping("update")
 | 
			
		||||
    public Result updateById(@RequestBody SkuInfoVo skuInfoVo) {
 | 
			
		||||
        try {
 | 
			
		||||
            skuInfoService.updateSkuInfo(skuInfoVo);
 | 
			
		||||
            return Result.ok(null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("修改商品sku信息异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "删除商品sku信息")
 | 
			
		||||
    @DeleteMapping("remove/{id}")
 | 
			
		||||
    public Result remove(@PathVariable Long id) {
 | 
			
		||||
        try {
 | 
			
		||||
            skuInfoService.removeById(id);
 | 
			
		||||
            return Result.ok(null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("删除商品sku信息异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "根据id列表删除商品sku信息")
 | 
			
		||||
    @DeleteMapping("batchRemove")
 | 
			
		||||
    public Result batchRemove(@RequestBody List<Long> idList) {
 | 
			
		||||
        try {
 | 
			
		||||
            skuInfoService.removeByIds(idList);
 | 
			
		||||
            return Result.ok(null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("根据id列表删除商品sku信息异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "商品审核")
 | 
			
		||||
    @GetMapping("check/{skuId}/{status}")
 | 
			
		||||
    public Result check(@PathVariable("skuId") Long skuId, @PathVariable("status") Integer status) {
 | 
			
		||||
        try {
 | 
			
		||||
            skuInfoService.check(skuId, status);
 | 
			
		||||
            return Result.ok(null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("商品审核异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "商品上/下架")
 | 
			
		||||
    @GetMapping("publish/{skuId}/{status}")
 | 
			
		||||
    public Result publish(@PathVariable("skuId") Long skuId,
 | 
			
		||||
                          @PathVariable("status") Integer status) {
 | 
			
		||||
        try {
 | 
			
		||||
            skuInfoService.publish(skuId, status);
 | 
			
		||||
            return Result.ok(null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("商品上/下架异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "新人专享")
 | 
			
		||||
    @GetMapping("isNewPerson/{skuId}/{status}")
 | 
			
		||||
    public Result isNewPerson(@PathVariable("skuId") Long skuId,
 | 
			
		||||
                              @PathVariable("status") Integer status) {
 | 
			
		||||
        try {
 | 
			
		||||
            skuInfoService.isNewPerson(skuId, status);
 | 
			
		||||
            return Result.ok(null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("新人专享异常", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,14 @@
 | 
			
		||||
package com.atguigu.ssyx.product.service;
 | 
			
		||||
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ClassName: FileUploadService
 | 
			
		||||
 * Package: com.atguigu.ssyx.product.service
 | 
			
		||||
 *
 | 
			
		||||
 * @author yovinchen
 | 
			
		||||
 * @Create 2023/9/15 13:57
 | 
			
		||||
 */
 | 
			
		||||
public interface FileUploadService {
 | 
			
		||||
    String fileUpload(MultipartFile file) throws Exception;
 | 
			
		||||
}
 | 
			
		||||
@@ -3,6 +3,8 @@ package com.atguigu.ssyx.product.service;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuAttrValue;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * spu属性值 服务类
 | 
			
		||||
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 */
 | 
			
		||||
public interface SkuAttrValueService extends IService<SkuAttrValue> {
 | 
			
		||||
 | 
			
		||||
    List<SkuAttrValue> findBySkuId(Long skuId);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,8 @@ package com.atguigu.ssyx.product.service;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuImage;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 商品图片 服务类
 | 
			
		||||
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 */
 | 
			
		||||
public interface SkuImageService extends IService<SkuImage> {
 | 
			
		||||
 | 
			
		||||
    List<SkuImage> findBySkuId(Long skuId);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,10 @@
 | 
			
		||||
package com.atguigu.ssyx.product.service;
 | 
			
		||||
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuInfo;
 | 
			
		||||
import com.atguigu.ssyx.vo.product.SkuInfoQueryVo;
 | 
			
		||||
import com.atguigu.ssyx.vo.product.SkuInfoVo;
 | 
			
		||||
import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -13,4 +17,17 @@ import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 */
 | 
			
		||||
public interface SkuInfoService extends IService<SkuInfo> {
 | 
			
		||||
 | 
			
		||||
    IPage<SkuInfo> selectPage(Page<SkuInfo> pageParam, SkuInfoQueryVo skuInfoQueryVo);
 | 
			
		||||
 | 
			
		||||
    void saveSkuInfo(SkuInfoVo skuInfoVo);
 | 
			
		||||
 | 
			
		||||
    SkuInfoVo getSkuInfoVo(Long id);
 | 
			
		||||
 | 
			
		||||
    void updateSkuInfo(SkuInfoVo skuInfoVo);
 | 
			
		||||
 | 
			
		||||
    void check(Long skuId, Integer status);
 | 
			
		||||
 | 
			
		||||
    void publish(Long skuId, Integer status);
 | 
			
		||||
 | 
			
		||||
    void isNewPerson(Long skuId, Integer status);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,8 @@ package com.atguigu.ssyx.product.service;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuPoster;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 商品海报表 服务类
 | 
			
		||||
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
 */
 | 
			
		||||
public interface SkuPosterService extends IService<SkuPoster> {
 | 
			
		||||
 | 
			
		||||
    List<SkuPoster> findBySkuId(Long skuId);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,65 @@
 | 
			
		||||
package com.atguigu.ssyx.product.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.aliyun.oss.OSS;
 | 
			
		||||
import com.aliyun.oss.OSSClientBuilder;
 | 
			
		||||
import com.atguigu.ssyx.product.service.FileUploadService;
 | 
			
		||||
import org.joda.time.DateTime;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.InputStream;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ClassName: FileUploadServiceImpl
 | 
			
		||||
 * Package: com.atguigu.ssyx.product.service.impl
 | 
			
		||||
 *
 | 
			
		||||
 * @author yovinchen
 | 
			
		||||
 * @Create 2023/9/15 13:57
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class FileUploadServiceImpl implements FileUploadService {
 | 
			
		||||
 | 
			
		||||
    @Value("${aliyun.endpoint}")
 | 
			
		||||
    private String endPoint;
 | 
			
		||||
    @Value("${aliyun.keyid}")
 | 
			
		||||
    private String accessKey;
 | 
			
		||||
    @Value("${aliyun.keysecret}")
 | 
			
		||||
    private String secreKey;
 | 
			
		||||
    @Value("${aliyun.bucketname}")
 | 
			
		||||
    private String bucketName;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String fileUpload(MultipartFile file) throws Exception {
 | 
			
		||||
        try {
 | 
			
		||||
            // 创建OSSClient实例。
 | 
			
		||||
            OSS ossClient = new OSSClientBuilder().build(endPoint, accessKey, secreKey);
 | 
			
		||||
            // 上传文件流。
 | 
			
		||||
            InputStream inputStream = file.getInputStream();
 | 
			
		||||
            String fileName = file.getOriginalFilename();
 | 
			
		||||
            //生成随机唯一值,使用uuid,添加到文件名称里面
 | 
			
		||||
            String uuid = UUID
 | 
			
		||||
                    .randomUUID()
 | 
			
		||||
                    .toString()
 | 
			
		||||
                    .replaceAll("-", "");
 | 
			
		||||
            fileName = uuid + fileName;
 | 
			
		||||
            //按照当前日期,创建文件夹,上传到创建文件夹里面
 | 
			
		||||
            //  2021/02/02/01.jpg
 | 
			
		||||
            String timeUrl = new DateTime().toString("yyyy/MM/dd");
 | 
			
		||||
            fileName = timeUrl + "/" + fileName;
 | 
			
		||||
            //调用方法实现上传
 | 
			
		||||
            ossClient.putObject(bucketName, fileName, inputStream);
 | 
			
		||||
            // 关闭OSSClient。
 | 
			
		||||
            ossClient.shutdown();
 | 
			
		||||
            //上传之后文件路径
 | 
			
		||||
            String url = "https://" + bucketName + "." + endPoint + "/" + fileName;
 | 
			
		||||
            //返回
 | 
			
		||||
            return url;
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -3,9 +3,12 @@ package com.atguigu.ssyx.product.service.impl;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuAttrValue;
 | 
			
		||||
import com.atguigu.ssyx.product.mapper.SkuAttrValueMapper;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuAttrValueService;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * spu属性值 服务实现类
 | 
			
		||||
@@ -17,4 +20,14 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
@Service
 | 
			
		||||
public class SkuAttrValueServiceImpl extends ServiceImpl<SkuAttrValueMapper, SkuAttrValue> implements SkuAttrValueService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据id查询商品属性信息列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuId
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SkuAttrValue> findBySkuId(Long skuId) {
 | 
			
		||||
        return baseMapper.selectList(new LambdaQueryWrapper<SkuAttrValue>().eq(SkuAttrValue::getSkuId, skuId));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,12 @@ package com.atguigu.ssyx.product.service.impl;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuImage;
 | 
			
		||||
import com.atguigu.ssyx.product.mapper.SkuImageMapper;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuImageService;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 商品图片 服务实现类
 | 
			
		||||
@@ -17,4 +20,14 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
@Service
 | 
			
		||||
public class SkuImageServiceImpl extends ServiceImpl<SkuImageMapper, SkuImage> implements SkuImageService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据id查询商品图片列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuId
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SkuImage> findBySkuId(Long skuId) {
 | 
			
		||||
        return baseMapper.selectList(new LambdaQueryWrapper<SkuImage>().eq(SkuImage::getSkuId, skuId));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,28 @@
 | 
			
		||||
package com.atguigu.ssyx.product.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuAttrValue;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuImage;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuInfo;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuPoster;
 | 
			
		||||
import com.atguigu.ssyx.product.mapper.SkuInfoMapper;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuAttrValueService;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuImageService;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuInfoService;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuPosterService;
 | 
			
		||||
import com.atguigu.ssyx.vo.product.SkuInfoQueryVo;
 | 
			
		||||
import com.atguigu.ssyx.vo.product.SkuInfoVo;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import org.springframework.beans.BeanUtils;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
import org.springframework.util.CollectionUtils;
 | 
			
		||||
import org.springframework.util.StringUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
@@ -17,4 +35,215 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
@Service
 | 
			
		||||
public class SkuInfoServiceImpl extends ServiceImpl<SkuInfoMapper, SkuInfo> implements SkuInfoService {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private SkuPosterService skuPosterService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private SkuImageService skuImagesService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private SkuAttrValueService skuAttrValueService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取sku分页列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param pageParam
 | 
			
		||||
     * @param skuInfoQueryVo
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public IPage<SkuInfo> selectPage(Page<SkuInfo> pageParam, SkuInfoQueryVo skuInfoQueryVo) {
 | 
			
		||||
        //获取条件值
 | 
			
		||||
        String keyword = skuInfoQueryVo.getKeyword();
 | 
			
		||||
        String skuType = skuInfoQueryVo.getSkuType();
 | 
			
		||||
        Long categoryId = skuInfoQueryVo.getCategoryId();
 | 
			
		||||
        //封装条件
 | 
			
		||||
        LambdaQueryWrapper<SkuInfo> wrapper = new LambdaQueryWrapper<>();
 | 
			
		||||
        if (!StringUtils.isEmpty(keyword)) {
 | 
			
		||||
            wrapper.like(SkuInfo::getSkuName, keyword);
 | 
			
		||||
        }
 | 
			
		||||
        if (!StringUtils.isEmpty(skuType)) {
 | 
			
		||||
            wrapper.eq(SkuInfo::getSkuType, skuType);
 | 
			
		||||
        }
 | 
			
		||||
        if (!StringUtils.isEmpty(categoryId)) {
 | 
			
		||||
            wrapper.eq(SkuInfo::getCategoryId, categoryId);
 | 
			
		||||
        }
 | 
			
		||||
        //调用方法查询
 | 
			
		||||
        return baseMapper.selectPage(pageParam, wrapper);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增商品sku信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuInfoVo
 | 
			
		||||
     */
 | 
			
		||||
    @Transactional(rollbackFor = {Exception.class})
 | 
			
		||||
    @Override
 | 
			
		||||
    public void saveSkuInfo(SkuInfoVo skuInfoVo) {
 | 
			
		||||
        //保存sku信息
 | 
			
		||||
        SkuInfo skuInfo = new SkuInfo();
 | 
			
		||||
        BeanUtils.copyProperties(skuInfoVo, skuInfo);
 | 
			
		||||
        baseMapper.insert(skuInfo);
 | 
			
		||||
 | 
			
		||||
        //保存sku海报
 | 
			
		||||
        List<SkuPoster> skuPosterList = skuInfoVo.getSkuPosterList();
 | 
			
		||||
        if (!CollectionUtils.isEmpty(skuPosterList)) {
 | 
			
		||||
            for (SkuPoster skuPoster : skuPosterList) {
 | 
			
		||||
                skuPoster.setSkuId(skuInfo.getId());
 | 
			
		||||
            }
 | 
			
		||||
            skuPosterService.saveBatch(skuPosterList);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //保存sku图片
 | 
			
		||||
        List<SkuImage> skuImagesList = skuInfoVo.getSkuImagesList();
 | 
			
		||||
        if (!CollectionUtils.isEmpty(skuImagesList)) {
 | 
			
		||||
            int sort = 1;
 | 
			
		||||
            for (SkuImage skuImages : skuImagesList) {
 | 
			
		||||
                skuImages.setSkuId(skuInfo.getId());
 | 
			
		||||
                skuImages.setSort(sort);
 | 
			
		||||
                sort++;
 | 
			
		||||
            }
 | 
			
		||||
            skuImagesService.saveBatch(skuImagesList);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //保存sku平台属性
 | 
			
		||||
        List<SkuAttrValue> skuAttrValueList = skuInfoVo.getSkuAttrValueList();
 | 
			
		||||
        if (!CollectionUtils.isEmpty(skuAttrValueList)) {
 | 
			
		||||
            int sort = 1;
 | 
			
		||||
            for (SkuAttrValue skuAttrValue : skuAttrValueList) {
 | 
			
		||||
                skuAttrValue.setSkuId(skuInfo.getId());
 | 
			
		||||
                skuAttrValue.setSort(sort);
 | 
			
		||||
                sort++;
 | 
			
		||||
            }
 | 
			
		||||
            skuAttrValueService.saveBatch(skuAttrValueList);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 商品sku信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param id
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public SkuInfoVo getSkuInfoVo(Long id) {
 | 
			
		||||
        return getSkuInfoDB(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改商品sku信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuInfoVo
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateSkuInfo(SkuInfoVo skuInfoVo) {
 | 
			
		||||
        Long id = skuInfoVo.getId();
 | 
			
		||||
        //更新sku信息
 | 
			
		||||
        baseMapper.updateById(skuInfoVo);
 | 
			
		||||
 | 
			
		||||
        //保存sku详情
 | 
			
		||||
        skuPosterService.remove(new LambdaQueryWrapper<SkuPoster>().eq(SkuPoster::getSkuId, id));
 | 
			
		||||
        //保存sku海报
 | 
			
		||||
        List<SkuPoster> skuPosterList = skuInfoVo.getSkuPosterList();
 | 
			
		||||
        if (!CollectionUtils.isEmpty(skuPosterList)) {
 | 
			
		||||
            for (SkuPoster skuPoster : skuPosterList) {
 | 
			
		||||
                skuPoster.setSkuId(id);
 | 
			
		||||
            }
 | 
			
		||||
            skuPosterService.saveBatch(skuPosterList);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //删除sku图片
 | 
			
		||||
        skuImagesService.remove(new LambdaQueryWrapper<SkuImage>().eq(SkuImage::getSkuId, id));
 | 
			
		||||
        //保存sku图片
 | 
			
		||||
        List<SkuImage> skuImagesList = skuInfoVo.getSkuImagesList();
 | 
			
		||||
        if (!CollectionUtils.isEmpty(skuImagesList)) {
 | 
			
		||||
            int sort = 1;
 | 
			
		||||
            for (SkuImage skuImages : skuImagesList) {
 | 
			
		||||
                skuImages.setSkuId(id);
 | 
			
		||||
                skuImages.setSort(sort);
 | 
			
		||||
                sort++;
 | 
			
		||||
            }
 | 
			
		||||
            skuImagesService.saveBatch(skuImagesList);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //删除sku平台属性
 | 
			
		||||
        skuAttrValueService.remove(new LambdaQueryWrapper<SkuAttrValue>().eq(SkuAttrValue::getSkuId, id));
 | 
			
		||||
        //保存sku平台属性
 | 
			
		||||
        List<SkuAttrValue> skuAttrValueList = skuInfoVo.getSkuAttrValueList();
 | 
			
		||||
        if (!CollectionUtils.isEmpty(skuAttrValueList)) {
 | 
			
		||||
            int sort = 1;
 | 
			
		||||
            for (SkuAttrValue skuAttrValue : skuAttrValueList) {
 | 
			
		||||
                skuAttrValue.setSkuId(id);
 | 
			
		||||
                skuAttrValue.setSort(sort);
 | 
			
		||||
                sort++;
 | 
			
		||||
            }
 | 
			
		||||
            skuAttrValueService.saveBatch(skuAttrValueList);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 商品审核
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuId
 | 
			
		||||
     * @param status
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void check(Long skuId, Integer status) {
 | 
			
		||||
        SkuInfo skuInfo = baseMapper.selectById(skuId);
 | 
			
		||||
        skuInfo.setCheckStatus(status);
 | 
			
		||||
        baseMapper.updateById(skuInfo);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 商品上/下架
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuId
 | 
			
		||||
     * @param status
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void publish(Long skuId, Integer status) {
 | 
			
		||||
        // 更改发布状态
 | 
			
		||||
        if (status == 1) {
 | 
			
		||||
            SkuInfo skuInfo = baseMapper.selectById(skuId);
 | 
			
		||||
            skuInfo.setPublishStatus(status);
 | 
			
		||||
            baseMapper.updateById(skuInfo);
 | 
			
		||||
            //TODO 商品上架 后续会完善:发送mq消息更新es数据
 | 
			
		||||
        } else {
 | 
			
		||||
            SkuInfo skuInfo = baseMapper.selectById(skuId);
 | 
			
		||||
            skuInfo.setPublishStatus(status);
 | 
			
		||||
            baseMapper.updateById(skuInfo);
 | 
			
		||||
            //TODO 商品下架 后续会完善:发送mq消息更新es数据
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新人专享
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuId
 | 
			
		||||
     * @param status
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void isNewPerson(Long skuId, Integer status) {
 | 
			
		||||
        SkuInfo skuInfo = baseMapper.selectById(skuId);
 | 
			
		||||
        skuInfo.setIsNewPerson(status);
 | 
			
		||||
        baseMapper.updateById(skuInfo);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SkuInfoVo getSkuInfoDB(Long skuId) {
 | 
			
		||||
        SkuInfoVo skuInfoVo = new SkuInfoVo();
 | 
			
		||||
 | 
			
		||||
        SkuInfo skuInfo = baseMapper.selectById(skuId);
 | 
			
		||||
        //根据id查询商品图片列表
 | 
			
		||||
        List<SkuImage> skuImageList = skuImagesService.findBySkuId(skuId);
 | 
			
		||||
        //根据id查询商品海报列表
 | 
			
		||||
        List<SkuPoster> skuPosterList = skuPosterService.findBySkuId(skuId);
 | 
			
		||||
        //根据id查询商品属性信息列表
 | 
			
		||||
        List<SkuAttrValue> skuAttrValueList = skuAttrValueService.findBySkuId(skuId);
 | 
			
		||||
 | 
			
		||||
        //封装数据
 | 
			
		||||
        BeanUtils.copyProperties(skuInfo, skuInfoVo);
 | 
			
		||||
        skuInfoVo.setSkuImagesList(skuImageList);
 | 
			
		||||
        skuInfoVo.setSkuPosterList(skuPosterList);
 | 
			
		||||
        skuInfoVo.setSkuAttrValueList(skuAttrValueList);
 | 
			
		||||
        return skuInfoVo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,12 @@ package com.atguigu.ssyx.product.service.impl;
 | 
			
		||||
import com.atguigu.ssyx.model.product.SkuPoster;
 | 
			
		||||
import com.atguigu.ssyx.product.mapper.SkuPosterMapper;
 | 
			
		||||
import com.atguigu.ssyx.product.service.SkuPosterService;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 商品海报表 服务实现类
 | 
			
		||||
@@ -17,4 +20,14 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
@Service
 | 
			
		||||
public class SkuPosterServiceImpl extends ServiceImpl<SkuPosterMapper, SkuPoster> implements SkuPosterService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据id查询商品海报列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param skuId
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SkuPoster> findBySkuId(Long skuId) {
 | 
			
		||||
        return baseMapper.selectList(new LambdaQueryWrapper<SkuPoster>().eq(SkuPoster::getSkuId, skuId));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,3 +17,9 @@ spring:
 | 
			
		||||
    date-format: yyyy-MM-dd HH:mm:ss
 | 
			
		||||
    time-zone: GMT+8
 | 
			
		||||
 | 
			
		||||
aliyun:
 | 
			
		||||
  endpoint: oss-cn-beijing.aliyuncs.com
 | 
			
		||||
  keyid: LTAI5tHWGPq6o62dMMV1hn1i
 | 
			
		||||
  keysecret: FyUK59nlI0bf1MFHLuEvtBwXl2CJjA
 | 
			
		||||
  bucketname: ssyx-yovinchen
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,3 +3,9 @@ spring:
 | 
			
		||||
    name: service-product
 | 
			
		||||
  profiles:
 | 
			
		||||
    active: dev
 | 
			
		||||
  cloud:
 | 
			
		||||
    nacos:
 | 
			
		||||
      discovery:
 | 
			
		||||
        server-addr: localhost:8848
 | 
			
		||||
      username: nacos
 | 
			
		||||
      password: nacos
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package com.atguigu.ssyx;
 | 
			
		||||
 | 
			
		||||
import org.springframework.boot.SpringApplication;
 | 
			
		||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ClassName: ServiceSysApplication
 | 
			
		||||
@@ -11,6 +12,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
 * @Create 2023/9/14 15:36
 | 
			
		||||
 */
 | 
			
		||||
@SpringBootApplication
 | 
			
		||||
@EnableDiscoveryClient
 | 
			
		||||
public class ServiceSysApplication {
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        SpringApplication.run(ServiceSysApplication.class, args);
 | 
			
		||||
 
 | 
			
		||||
@@ -3,3 +3,9 @@ spring:
 | 
			
		||||
    name: service-sys
 | 
			
		||||
  profiles:
 | 
			
		||||
    active: dev
 | 
			
		||||
  cloud:
 | 
			
		||||
    nacos:
 | 
			
		||||
      discovery:
 | 
			
		||||
        server-addr: localhost:8848
 | 
			
		||||
      username: nacos
 | 
			
		||||
      password: nacos
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user