• 商品推荐_后端的一些操作


    商品推荐

    虽然说着是一个功能,
    但自己感觉, 这个功能, 不是 业务的 核心功能, 而是一个 可有可无的, 非 必须的核心功能
    核心功能: 没有这个功能, 不叫电商项目, 比如 购物车, 下单支付, 浏览商品(详情页)>
    体会这句话
    其实是自己小了, 商品推荐 功能, 是 推荐系统的 雏形
    推荐系统, 可就是 一个 大的复杂的系统了

    推荐规则
    1, 根据当前用户 的 最近搜索 进行推荐
    2, 查询 销量最高的商品 进行推荐
    3, 根据 平台管理员 设置的 需要推荐的商品
    4, 查询 最新上架的商品 进行推荐(我们这个项目, 选择了)

    商品推荐

    当前这个阶段的 商品推荐
    本质: 查询, 显示

    2.1. 流程分析

    2.2. 接口开发

    体会, 这里的 接口 说的 比较模糊,
    这里的 接口, 是 把 前端 和 后端 各自看成一个项目, 后端项目 对 前端项目 提供的 接口
    而不是 仅仅指 后端中的 controller层, 更不是指 service层中 的 接口, 这一点要深刻体会

    数据库实现
    推荐算法: 推荐最新上架的商品
    说明: 商品推荐算法 是 根据 多个维度 进行权重计算, 计算出 一个 匹配值
    数据表分析 及 数据准备
    sql

    select *
    from product
    order by create_time desc limit 0, 3
    
    • 1
    • 2
    • 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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    DAO实现, 接下来, 我们用 子查询
    Mapper接口 定义 操作方法

    1. 业务层实现
      ProductService接口
    public interface ProductService {
        public ResultVO listRecommendProducts();
    }
    
    • 1
    • 2
    • 3

    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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 控制层实现
      IndexController
      下面给出的是 增量型 代码
    @RestController
    @CrossOrigin
    @RequestMapping("/index")
    // service可以分开写; 接口可以统一提供, 这里应该说的是 前端对后端暴露的 controller(这里也叫做接口了)
    public class IndexController {
        @Autowired
        private ProductService productService;
    
        @GetMapping("/list-recommends")
    //    @ApiOperation("查询推荐商品接口")
        public ResultVO listRecommendProducts() {
            return productService.listRecommendProducts();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    测试之前
    推荐对 父工程 clean, isntall

  • 相关阅读:
    LNMP网站架构
    从入门到精通:Java三目运算符详细教程!
    GDPU 数据结构 天码行空3
    基于Dijkstra和A*算法的机器人路径规划(Matlab代码实现)
    【零基础学Python】运算符
    https转到http的nginx配置参考
    实践案例:同程艺龙网的 Dubbo 升级经验总结
    神经网络放大图片,神经网络AI滤镜
    104. 简易聊天室7:使用 Socket 传递对象
    阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo
  • 原文地址:https://blog.csdn.net/beyondx/article/details/126362922