虽然说着是一个功能,
但自己感觉, 这个功能, 不是 业务的 核心功能, 而是一个 可有可无的, 非 必须的核心功能
核心功能: 没有这个功能, 不叫电商项目, 比如 购物车, 下单支付, 浏览商品(详情页)>
体会这句话
其实是自己小了, 商品推荐 功能, 是 推荐系统的 雏形
推荐系统, 可就是 一个 大的复杂的系统了
推荐规则
1, 根据当前用户 的 最近搜索 进行推荐
2, 查询 销量最高的商品 进行推荐
3, 根据 平台管理员 设置的 需要推荐的商品
4, 查询 最新上架的商品 进行推荐(我们这个项目, 选择了)
商品推荐
当前这个阶段的 商品推荐
本质: 查询, 显示
体会, 这里的 接口 说的 比较模糊,
这里的 接口, 是 把 前端 和 后端 各自看成一个项目, 后端项目 对 前端项目 提供的 接口
而不是 仅仅指 后端中的 controller层, 更不是指 service层中 的 接口, 这一点要深刻体会
数据库实现
推荐算法: 推荐最新上架的商品
说明: 商品推荐算法 是 根据 多个维度 进行权重计算, 计算出 一个 匹配值
数据表分析 及 数据准备
sql
select *
from product
order by create_time desc limit 0, 3
DAO
改造 bean
在 beans子工程 entity, 创建 ProductVO
相比较 Product 新增了 List imgs 用于存储商品的图片
public class ProductVO {
private List<ProductImg> imgs;
public List<ProductImg> getImgs() {
return imgs;
}
public void setImgs(List<ProductImg> imgs) {
this.imgs = imgs;
}
}
DAO实现, 接下来, 我们用 子查询
Mapper接口 定义 操作方法
public interface ProductService {
public ResultVO listRecommendProducts();
}
ProductServiceImpl实现类
@Service
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductMapper productMapper;
@Override
public ResultVO listRecommendProducts() {
List<ProductVO> productVOS = productMapper.selectRecommendProducts();
ResultVO resultVO = new ResultVO(ResStatus.OK, "success", productVOS);
return null;
}
}
@RestController
@CrossOrigin
@RequestMapping("/index")
// service可以分开写; 接口可以统一提供, 这里应该说的是 前端对后端暴露的 controller(这里也叫做接口了)
public class IndexController {
@Autowired
private ProductService productService;
@GetMapping("/list-recommends")
// @ApiOperation("查询推荐商品接口")
public ResultVO listRecommendProducts() {
return productService.listRecommendProducts();
}
}
测试之前
推荐对 父工程 clean, isntall