谷粒商城第十二天-基本属性&销售属性管理功能的实现

这篇具有很好参考价值的文章主要介绍了谷粒商城第十二天-基本属性&销售属性管理功能的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、总述

二、前端部分

三、后端部分

四、总结


一、总述

前端的话,依旧是直接使用老师给的。

前端的话还是那些增删改查,业务复杂一点的话,无非就是设计到多个字段多个表的操作,当然这是后端的事了,前端这里不做深究,走一下流程,知道哪些数据,需要绑定哪些事件,哪些方法就行了。

其实我之前讲的前端开发的三步,是基于已经有了大致的代码,也就是已经提供了一份代码了,只需要我们去修改,理解一下就行了,如果我们单纯使用elementUI进行开发的话,需要对那些组件比较熟悉。然后再作修改,数据域,方法等。

这里后端的话其实还是那些CRUD,比较常规。

二、前端部分

前端部分,这里我不像之前那样一点一点解析了,说实话浪费时间,稍微理解一下就行了,这里我直接贴上前端相应的代码:

代码很长,我直接放到这篇博文对应的资源包下面了。

三、后端部分

1. 模糊分页查询接口

接口:

/**
     * 查询基本商品属性列表
     */
    @ApiOperation("查询商品基本属性列表")
    //@PreAuthorize("@ss.hasPermi('product:attr:list')")
    @PostMapping("/{type}/list/{catId}")
    public TableDataInfo pageBaseList(@PathVariable("type") String type,@PathVariable("catId")Long catId, @RequestBody PageParamsDto pageParamsDto) {
        TableDataInfo tableDataInfo = attrService.pageList(type,catId,pageParamsDto);
        return tableDataInfo;
    }

实现:

/**
     * 分页查询商品基本属性列表
     * @param catId 分类id
     * @param pageParamsDto 分页参数
     * @return
     */
    @Override
    public TableDataInfo pageList(String type,Long catId, PageParamsDto pageParamsDto) {
        //1. 根据catId查询出基本属性
        LambdaQueryWrapper<Attr> wrapper = new LambdaQueryWrapper<>();
        if(catId!=0){
            wrapper.eq(Attr::getCatelogId,catId);
        }
        if("base".equalsIgnoreCase(type)){
            wrapper.eq(Attr::getAttrType,1L);
        } else if ("sale".equalsIgnoreCase(type)) {
            wrapper.eq(Attr::getAttrType,0L);
        }
        if(StringUtils.hasText(pageParamsDto.getKey())){
            if (NumberUtils.isParsable(pageParamsDto.getKey())) {
                //如果当前字符串是数字,也就是代表是属性id的话,就拼接上属性id
                wrapper.eq(Attr::getAttrId,Long.parseLong(pageParamsDto.getKey()));
            }else{
                wrapper.like(Attr::getAttrName,pageParamsDto.getKey());
            }
        }
        //2. 分页处理
        Page<Attr> page = new Page<>(pageParamsDto.getPage(),pageParamsDto.getLimit());
        page(page,wrapper);

        List<Attr> records = page.getRecords();
        List<AttrVo> attrVos = BeanCopyUtils.copyBean(records, AttrVo.class);
        attrVos.stream().forEach((item)->{
            //1. 获取属性对应的分类名
            Long catelogId = item.getCatelogId();
            Category category = categoryService.getById(catelogId);
            if (category != null) {
                item.setCatelogName(category.getName());
            }
            if("base".equalsIgnoreCase(type)){
                //2. 获取属性对应的分组id及分组名
                AttrAttrgroupRelation relation = attrAttrgroupRelationService.getOne(new LambdaQueryWrapper<AttrAttrgroupRelation>().eq(AttrAttrgroupRelation::getAttrId, item.getAttrId()));
                if (relation != null) {
                    Long attrGroupId = relation.getAttrGroupId();
                    AttrGroup group = groupService.getById(attrGroupId);
                    if (group != null) {
                        item.setAttrGroupId(attrGroupId);
                        item.setGroupName(group.getAttrGroupName());
                    }
                }
            }
            //3. 获取属性对应的分类id对应的路径
            Long[] path = categoryService.categoryPath(catelogId);
            item.setCatelogPath(path);
        });
        return new TableDataInfo(attrVos,(int)page.getTotal());
    }

2. 新增属性接口

接口:

/**
     * 新增商品属性
     */
    @ApiOperation("新增商品属性")
    //@PreAuthorize("@ss.hasPermi('product:attr:add')")
    @Log(title = "商品属性", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody AttrVo attrVo) {
        return toAjax(attrService.saveDetail(attrVo));
    }

实现:

/**
     * 添加商品属性的详细信息,包含属性分组
     * @param attrVo
     * @return
     */
    @Transactional
    @Override
    public boolean saveDetail(AttrVo attrVo) {
        //1. 先新增自己本身
        Attr attr = BeanCopyUtils.copyBean(attrVo, Attr.class);
        boolean save = save(attr);
        if(attrVo.getAttrType().equals(ProductConstant.AttrTypeConstant.BASE_ATTR)){
            AttrAttrgroupRelation relation = new AttrAttrgroupRelation();
            relation.setAttrGroupId(attrVo.getAttrGroupId());
            relation.setAttrId(attr.getAttrId());
            //2. 添加上分组信息
            return attrAttrgroupRelationService.save(relation);
        }
        return save;
    }

3. 修改属性接口

接口:

/**
     * 修改商品属性
     */
    @ApiOperation("修改商品属性")
    //@PreAuthorize("@ss.hasPermi('product:attr:edit')")
    @Log(title = "商品属性", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody AttrVo attrVo) {
        return toAjax(attrService.updateDetail(attrVo));
    }

实现:

/**
     * 更新商品属性信息
     * @param attrVo
     * @return
     */
    @Transactional
    @Override
    public boolean updateDetail(AttrVo attrVo) {
        //1. 先更新自己
        Attr attr = BeanCopyUtils.copyBean(attrVo, Attr.class);
        boolean update = updateById(attr);
        //2. 更新关联的分组信息
        if(attrVo.getAttrType().equals(ProductConstant.AttrTypeConstant.BASE_ATTR)){
            LambdaUpdateWrapper<AttrAttrgroupRelation> wrapper = new LambdaUpdateWrapper<>();
            wrapper.eq(AttrAttrgroupRelation::getAttrId,attrVo.getAttrId());
            wrapper.set(AttrAttrgroupRelation::getAttrGroupId,attrVo.getAttrGroupId());
            return attrAttrgroupRelationService.update(wrapper);
        }
        return update;
    }

4. 删除属性接口

/**
     * 删除商品属性
     */
    @ApiOperation("删除商品属性")
    //@PreAuthorize("@ss.hasPermi('product:attr:remove')")
    @Log(title = "商品属性", businessType = BusinessType.DELETE)
    @DeleteMapping
    public AjaxResult remove(@RequestBody Long[] attrIds) {
        return toAjax(attrService.removeMore(Arrays.asList(attrIds)));
    }

四、总结

前端后端还是那些东西....文章来源地址https://www.toymoban.com/news/detail-648717.html

到了这里,关于谷粒商城第十二天-基本属性&销售属性管理功能的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 谷粒商城第七天-商品服务之分类管理下的删除、新增以及修改商品分类

    目录 一、总述 1.1 前端思路 1.2 后端思路 二、前端部分 2.1 删除功能 2.2 新增功能 2.3 修改功能 三、后端部分 3.1 删除接口 3.2 新增接口 3.3 修改接口 四、总结  删除和新增以及修改的前端无非就是点击按钮,就向后端发送请求,交与后端真正的执行相关操作。 具体来说,就是

    2024年02月15日
    浏览(45)
  • 谷粒商城第三天-微服务中基本组件的使用 java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho

    目录 一、前言 二、学习的内容 一、Nacos的服务注册/发现 1. 导依赖,nacos-discovery java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho 2. 在application.yml中声明nacos服务器的ip地址和端口号,以及指定好服务的名称 3. 在启动类上面加上@EnableDiscoverClient 二、

    2024年02月09日
    浏览(89)
  • 鲜花在线销售平台的设计与实现/鲜花商城/网上花店管理系统

    摘  要 为了解决客户便捷地在网上购物,本文设计和开发了一个鲜花在线销售平台。本系统是基于 web 架构设计, SSM框架 , javascript 技术的前台页面设计与实现, 使用 Mysql 数据库 管理 , 综合 采用 java 模式来完成系统的相关功能 。 主要实现了管理员与客户的注册与登陆,

    2024年02月06日
    浏览(53)
  • 微信小程序vue.js+uniapp服装商城销售管理系统nodejs-java

    本技术是java平台的开源应用框架,其目的是简化Sping的初始搭建和开发过程。默认配置了很多框架的使用方式,自动加载Jar包,为了让用户尽可能快的跑起来spring应用程序。 SpinrgBoot的主要优点有: 1、为所有spring开发提供了一个更快、更广泛的入门体验; 2、零配置; 3、集

    2024年04月22日
    浏览(38)
  • 谷粒商城实战(012 业务-商城业务)

    Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强 总时长 104:45:00 共408P 此文章包含第203p-第p210的内容 介绍 这段除了210集都是商城业务,无太多可学习的,可跳过这7集,直接看第210集 一个页面需要获取多个 API 数据的情况 通常有两种主要的方式来处理:

    2024年04月17日
    浏览(38)
  • 谷粒商城----ES篇

    P128 ES在内存中,所以在检索中优于mysql。ES也支持集群,数据分片存储。 需求: 上架的商品才可以在网站展示。 上架的商品需要可以被检索。 分析sku在es中如何存储 商品mapping 分析:商品上架在es中是存sku还是spu? 1)、检索的时候输入名字,是需要按照sku的title进行全文检

    2024年02月09日
    浏览(45)
  • 【笔记/后端】谷粒商城高级篇

    全文检索工具:快速储存、搜索和分析海量数据。 Index (索引) → Mysql的库 动词,相当于MySQL中的insert; 名词,相当于MySQL中的Database。 Type (类型) → Mysql的表(过时) 在Index中,可以定义一个或多个类型。类似于MySQL中的Table;每一种类型的数据放在一起。 Document (文档) →

    2024年02月02日
    浏览(43)
  • 谷粒商城学习笔记

    1)、电商模式 2)、谷粒商城 谷粒商城是一个 B2C 模式的电商平台,销售自营商品给客户。 1、项目微服务架构图 2、微服务划分图 3、项目技术特色 4、项目前置要求 分布式是指将不同的业务分布在不同的地方。 集群指的是将几台服务器集中在一起,实现同一业务。 例如:

    2024年01月16日
    浏览(59)
  • 【笔记】谷粒商城高级篇

    全文检索工具:快速储存、搜索和分析海量数据。 Index (索引) → Mysql的库 动词,相当于MySQL中的insert; 名词,相当于MySQL中的Database。 Type (类型) → Mysql的表(过时) 在Index中,可以定义一个或多个类型。类似于MySQL中的Table;每一种类型的数据放在一起。 Document (文档) →

    2023年04月21日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包