- 后端:临时解决 Dubbo 内嵌在 Spring Boot 时,对本地的 Dubbo Service 引用报错的问题。
- 前端:完善商品推荐 - 前端:完善优惠劵
This commit is contained in:
@@ -20,12 +20,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
AdminSecurityInterceptor.class, AdminAccessLogInterceptor.class})
|
||||
public class MVCConfiguration implements WebMvcConfigurer {
|
||||
|
||||
// @Autowired
|
||||
// private SecurityInterceptor securityInterceptor;
|
||||
|
||||
// @Reference
|
||||
// private OAuth2Service oauth2Service;
|
||||
|
||||
@Autowired
|
||||
private AdminSecurityInterceptor adminSecurityInterceptor;
|
||||
@Autowired
|
||||
|
||||
@@ -13,30 +13,29 @@ import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrPageVO;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrSimpleVO;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrVO;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrValueVO;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.*;
|
||||
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("admins")
|
||||
@Api("商品规格")
|
||||
public class AdminsProductAttrController {
|
||||
|
||||
@Reference(validation = "true")
|
||||
@Autowired
|
||||
@Reference(validation = "true", version = "${dubbo.provider.ProductAttrService.version}")
|
||||
private ProductAttrService productAttrService;
|
||||
|
||||
@GetMapping("/attr/page")
|
||||
@ApiOperation("获得规格分页")
|
||||
public CommonResult<AdminsProductAttrPageVO> attrPage(@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "pageNo", defaultValue = "0") Integer pageNo,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
// 创建 ProductAttrPageDTO 对象
|
||||
ProductAttrPageDTO productAttrPageDTO = new ProductAttrPageDTO().setName(name).setPageNo(pageNo).setPageSize(pageSize);
|
||||
|
||||
@@ -15,7 +15,6 @@ import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -31,8 +30,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
@Api("商品分类")
|
||||
public class AdminsProductCategoryController {
|
||||
|
||||
@Reference(validation = "true")
|
||||
@Autowired
|
||||
@Reference(validation = "true", version = "${dubbo.provider.ProductCategoryService.version}")
|
||||
private ProductCategoryService productCategoryService;
|
||||
|
||||
@GetMapping("/tree")
|
||||
|
||||
@@ -3,26 +3,23 @@ package cn.iocoder.mall.product.application.controller.admins;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder;
|
||||
import cn.iocoder.mall.product.api.ProductSpuService;
|
||||
import cn.iocoder.mall.product.api.bo.ProductSpuBO;
|
||||
import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
|
||||
import cn.iocoder.mall.product.api.bo.ProductSpuPageBO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSkuAddOrUpdateDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuAddDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuPageDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO;
|
||||
import cn.iocoder.mall.product.api.dto.*;
|
||||
import cn.iocoder.mall.product.application.convert.ProductSpuConvert;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuDetailVO;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuPageVO;
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuVO;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
@@ -32,13 +29,9 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
@Api("商品 SPU + SKU")
|
||||
public class AdminsProductSpuController {
|
||||
|
||||
@Reference(validation = "true")
|
||||
@Autowired
|
||||
@Reference(validation = "true", version = "${dubbo.provider.ProductSpuService.version}")
|
||||
private ProductSpuService productSpuService;
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper; // jackson 解析
|
||||
|
||||
@PostMapping("/spu/add")
|
||||
@ApiOperation("创建商品")
|
||||
@ApiImplicitParams({
|
||||
@@ -109,15 +102,15 @@ public class AdminsProductSpuController {
|
||||
@ApiOperation("商品 SPU 分页列表")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "name", value = "商品名称,模糊匹配", example = "小王"),
|
||||
@ApiImplicitParam(name = "pageNo", value = "页码,从 1 开始", example = "1"),
|
||||
@ApiImplicitParam(name = "status", value = "状态", example = "可选值:1-在售中;2-已售罄;3-仓库中;"),
|
||||
@ApiImplicitParam(name = "cid", value = "商品分类编号", example = "10"),
|
||||
@ApiImplicitParam(name = "pageNo", value = "页码,从 1 开始", example = "1"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页条数", required = true, example = "10"),
|
||||
})
|
||||
public CommonResult<AdminsProductSpuPageVO> spuPage(@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "status") Integer status,
|
||||
@RequestParam(value = "cid", required = false) Integer cid,
|
||||
@RequestParam(value = "pageNo", defaultValue = "0") Integer pageNo,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
// 创建 ProductSpuPageDTO 对象
|
||||
ProductSpuPageDTO productSpuPageDTO = new ProductSpuPageDTO().setName(name).setCid(cid).setPageNo(pageNo).setPageSize(pageSize);
|
||||
@@ -136,20 +129,40 @@ public class AdminsProductSpuController {
|
||||
return success(ProductSpuConvert.INSTANCE.convert2(result));
|
||||
}
|
||||
|
||||
@GetMapping("/spu/search_list")
|
||||
@ApiOperation("商品 SPU 搜索列表")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "name", value = "商品名称,模糊匹配", example = "小王"),
|
||||
})
|
||||
public CommonResult<List<AdminsProductSpuVO>> spuSearchList(@RequestParam(value = "name", required = false) String name) {
|
||||
// 创建 ProductSpuSearchListDTO 对象
|
||||
ProductSpuSearchListDTO productSpuSearchListDTO = new ProductSpuSearchListDTO().setName(name);
|
||||
// 执行搜索
|
||||
List<ProductSpuBO> list = productSpuService.getProductSpuSearchList(productSpuSearchListDTO);
|
||||
// 转换返回
|
||||
return success(ProductSpuConvert.INSTANCE.convert3(list));
|
||||
}
|
||||
|
||||
@GetMapping("/spu/info")
|
||||
@ApiOperation("商品 SPU 明细")
|
||||
@ApiImplicitParam(name = "id", value = "SPU 编号", required = true, example = "100")
|
||||
public CommonResult<AdminsProductSpuDetailVO> info(@RequestParam("id") Integer id) {
|
||||
public CommonResult<AdminsProductSpuDetailVO> spuInfo(@RequestParam("id") Integer id) {
|
||||
return success(ProductSpuConvert.INSTANCE.convert(productSpuService.getProductSpuDetail(id)));
|
||||
}
|
||||
|
||||
@GetMapping("/spu/list")
|
||||
@ApiOperation("商品 SPU 列表")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "ids", value = "商品 SPU 编号数组", example = "1,2,3"),
|
||||
})
|
||||
public CommonResult<List<AdminsProductSpuVO>> spuList(@RequestParam("ids") Collection<Integer> ids) {
|
||||
List<ProductSpuBO> list = productSpuService.getProductSpuList(ids);
|
||||
// 转换返回
|
||||
return success(ProductSpuConvert.INSTANCE.convert3(list));
|
||||
}
|
||||
|
||||
private <T> List<T> parseSkus(String skuStr, Class<T> clazz) {
|
||||
JavaType type = objectMapper.getTypeFactory().constructParametricType(List.class, clazz);
|
||||
try {
|
||||
return objectMapper.readValue(skuStr, type);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return JSON.parseArray(skuStr, clazz);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import java.util.List;
|
||||
@Api("商品分类")
|
||||
public class UsersProductCategoryController {
|
||||
|
||||
@Reference(validation = "true")
|
||||
@Reference(validation = "true", version = "${dubbo.provider.ProductCategoryService.version}")
|
||||
@Autowired
|
||||
private ProductCategoryService productCategoryService;
|
||||
|
||||
|
||||
@@ -8,12 +8,11 @@ import cn.iocoder.mall.product.application.convert.ProductSpuConvert;
|
||||
import cn.iocoder.mall.product.application.vo.users.UsersProductSpuDetailVO;
|
||||
import cn.iocoder.mall.product.application.vo.users.UsersProductSpuPageVO;
|
||||
import cn.iocoder.mall.user.sdk.annotation.PermitAll;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
@@ -26,8 +25,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
@Api("商品 SPU + SKU")
|
||||
public class UsersProductSpuController {
|
||||
|
||||
@Reference(validation = "true")
|
||||
@Autowired
|
||||
@Reference(validation = "true", version = "${dubbo.provider.ProductSpuService.version}")
|
||||
private ProductSpuService productSpuService;
|
||||
|
||||
@GetMapping("/info")
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
package cn.iocoder.mall.product.application.convert;
|
||||
|
||||
import cn.iocoder.mall.product.api.bo.ProductSpuBO;
|
||||
import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
|
||||
import cn.iocoder.mall.product.api.bo.ProductSpuPageBO;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuDetailVO;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuPageVO;
|
||||
import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuVO;
|
||||
import cn.iocoder.mall.product.application.vo.users.UsersProductSpuDetailVO;
|
||||
import cn.iocoder.mall.product.application.vo.users.UsersProductSpuPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface ProductSpuConvert {
|
||||
|
||||
@@ -24,6 +28,9 @@ public interface ProductSpuConvert {
|
||||
@Mappings({})
|
||||
AdminsProductSpuPageVO convert2(ProductSpuPageBO result);
|
||||
|
||||
@Mappings({})
|
||||
List<AdminsProductSpuVO> convert3(List<ProductSpuBO> result);
|
||||
|
||||
@Mappings({})
|
||||
UsersProductSpuPageVO convert3(ProductSpuPageBO result);
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package cn.iocoder.mall.product.api;
|
||||
import cn.iocoder.mall.product.api.bo.*;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuAddDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuPageDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuSearchListDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -23,6 +24,8 @@ public interface ProductSpuService {
|
||||
|
||||
ProductSpuPageBO getProductSpuPage(ProductSpuPageDTO productSpuPageDTO);
|
||||
|
||||
List<ProductSpuBO> getProductSpuSearchList(ProductSpuSearchListDTO productSpuSearchListDTO);
|
||||
|
||||
List<ProductSpuBO> getProductSpuList(Collection<Integer> ids);
|
||||
|
||||
ProductSkuBO getProductSku(Integer id);
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package cn.iocoder.mall.product.api.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 商品 Spu 搜索列表 DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ProductSpuSearchListDTO {
|
||||
|
||||
/**
|
||||
* 商品名
|
||||
*
|
||||
* 模糊匹配
|
||||
*/
|
||||
private String name;
|
||||
|
||||
}
|
||||
@@ -27,7 +27,7 @@ import java.util.stream.Collectors;
|
||||
* @see cn.iocoder.mall.product.dataobject.ProductAttrValueDO
|
||||
*/
|
||||
@Service
|
||||
@org.apache.dubbo.config.annotation.Service(validation = "true")
|
||||
@org.apache.dubbo.config.annotation.Service(validation = "true", version = "${dubbo.provider.ProductAttrService.version}")
|
||||
public class ProductAttrServiceImpl implements ProductAttrService {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -19,7 +19,7 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service // 实际上不用添加。添加的原因是,必须 Spring 报错提示
|
||||
@org.apache.dubbo.config.annotation.Service(validation = "true")
|
||||
@org.apache.dubbo.config.annotation.Service(validation = "true", version = "${dubbo.provider.ProductCategoryService.version}")
|
||||
public class ProductCategoryServiceImpl implements ProductCategoryService {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -9,10 +9,7 @@ import cn.iocoder.mall.product.api.bo.*;
|
||||
import cn.iocoder.mall.product.api.constant.ProductCategoryConstants;
|
||||
import cn.iocoder.mall.product.api.constant.ProductErrorCodeEnum;
|
||||
import cn.iocoder.mall.product.api.constant.ProductSpuConstants;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSkuAddOrUpdateDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuAddDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuPageDTO;
|
||||
import cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO;
|
||||
import cn.iocoder.mall.product.api.dto.*;
|
||||
import cn.iocoder.mall.product.api.message.ProductUpdateMessage;
|
||||
import cn.iocoder.mall.product.convert.ProductSpuConvert;
|
||||
import cn.iocoder.mall.product.dao.ProductSkuMapper;
|
||||
@@ -31,7 +28,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service // 实际上不用添加。添加的原因是,必须 Spring 报错提示
|
||||
@org.apache.dubbo.config.annotation.Service(validation = "true", version = "1.0.0")
|
||||
@org.apache.dubbo.config.annotation.Service(validation = "true", version = "${dubbo.provider.ProductSpuService.version}")
|
||||
public class ProductSpuServiceImpl implements ProductSpuService {
|
||||
|
||||
@Autowired
|
||||
@@ -237,6 +234,14 @@ public class ProductSpuServiceImpl implements ProductSpuService {
|
||||
return productSpuPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProductSpuBO> getProductSpuSearchList(ProductSpuSearchListDTO productSpuSearchListDTO) {
|
||||
return ProductSpuConvert.INSTANCE.convert(
|
||||
productSpuMapper.selectListByNameLikeOrderBySortAsc(productSpuSearchListDTO.getName(), null, null,
|
||||
null, null, null)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProductSpuBO> getProductSpuList(Collection<Integer> ids) {
|
||||
List<ProductSpuDO> spus = productSpuMapper.selectByIds(ids);
|
||||
|
||||
@@ -23,7 +23,13 @@ dubbo:
|
||||
name: dubbo
|
||||
scan:
|
||||
base-packages: cn.iocoder.mall.product.service
|
||||
|
||||
provider:
|
||||
ProductAttrService:
|
||||
version: 1.0.0
|
||||
ProductCategoryService:
|
||||
version: 1.0.0
|
||||
ProductSpuService:
|
||||
version: 1.0.0
|
||||
|
||||
# rocketmq
|
||||
rocketmq:
|
||||
|
||||
@@ -113,7 +113,9 @@
|
||||
AND deleted = 0
|
||||
</where>
|
||||
ORDER BY sort ASC
|
||||
LIMIT #{offset}, #{limit}
|
||||
<if test="offset != null and limit != null">
|
||||
LIMIT #{offset}, #{limit}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectCountByNameLike" resultType="Integer">
|
||||
|
||||
Reference in New Issue
Block a user