springboot+vue项目之实现商品上下架

一、实现逻辑

  前端通过向Controller层发出请求到后端,后端接收到请求后调用Service层的方法,实现对应的单个商品上下架或者多个商品批量上下架。

二、具体实现之基础准备

1、商品上下架操作请求模型 ProductUpOrDownReq.java

@Getter
@Setter
public class ProductUpOrDownReq {
    @NotNull(message = "主键不能为空")
    private Long id;

    /**
     * 商家id
     */
    @NotNull(message = "商家id不能为空")
    private Long merchantId;


    /**
     * 是否上架 1:上架 ,0:没上架
     */
    @NotBlank(message = "是否上架不能为空")
    private String isgrounding;
}

2、商品上下架批量操作请求模型 BatchUpOrDownReq.java

@Getter
@Setter
public class BatchUpOrDownReq {
    @NotBlank(message = "状态不能为空")
    private String isgrounding;

    @NotNull(message = "商品id的值不能为空")
    private Long[] ids;
}

三、具体实现

1、Controller层  ProductController.java

1)单个商品上下架

    @SaMerchandiserCheckLogin
    @ApiOperation(value = "单个商品上下架")
    @PostMapping(value = "/upordown")
    public R upOrDown(@RequestBody @Valid ProductUpOrDownReq req){
        boolean result=this.productService.upOrDown(req);
        return result?R.ok():R.build(AckCode.DATABASE_ERROR);
    }

2)批量上下架商品

    @SaMerchandiserCheckLogin
    @ApiOperation(value = "上下架批量操作")
    @PostMapping(value = "/batchUpOrDown")
    public R batchUporDown(@RequestBody @Valid BatchUpOrDownReq req){
        boolean result=this.productService.batchUpOrDown(req);
        return result?R.ok():R.build(AckCode.DATABASE_ERROR);
    }

2、Service层

1)单个商品上下架  ProductService.java

    /**
     * 单个商品上下架
     * @param req
     * @return
     */
    boolean upOrDown(ProductUpOrDownReq req);

具体实现ProductServiceImpl.java:

实现逻辑主要是判断选中的数据是否是该商家的数据,判断商家是否有权限,然后再进行更新操作。单个商品上下架只需要更新一列数据,通过获取请求数据的id对其状态进行更改,从而减少数据库的操作。

    @Override
    public boolean upOrDown(ProductUpOrDownReq req) {
        //先判断是否是该商家的数据
        if (StpMerchandiserUtil.getLoginIdAsLong()!=req.getMerchantId().longValue()){
            throw new ServiceException(AckCode.PERMISSION_NOT_ACCESS_CATEGORY);
        }
        Product db = this.getById(req.getId());
        if (Objects.isNull(db)){
            throw new ServiceException(AckCode.NOT_FOUND_DATA);
        }

        //只更新某一列 Isgrounding
        Product entity = new Product();
        entity.setId(req.getId());
        entity.setIsgrounding(req.getIsgrounding());
        entity.setUpdateTime(new Date());
        entity.setUpdateBy(this.currentNameRedisCacheUtil.getMerchandiserCurrentName());
        return this.updateById(entity);
    }

2)批量上下架商品 ProductService.java

    /**
     * 批量上下架
     * @param req
     * @return
     */
    boolean batchUpOrDown(BatchUpOrDownReq req);

具体实现ProductServiceImpl.java:

实现逻辑主要是判断选中的数据是否是该商家的数据,也就是判断该商家是否有权利对数据进行操作,再构建一个专门的集合,存放修改的商品集合,从而实现商品的批量上下架操作。

    @Override
    public boolean batchUpOrDown(BatchUpOrDownReq req) {
        //先判断是不是该商家的数据
        long currentId = StpMerchandiserUtil.getLoginIdAsLong();
        LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(Product::getId,req.getIds());
        queryWrapper.eq(Product::getMerchantId,currentId);
        long count = this.count(queryWrapper);
        //有些商品不是这个商家的
        if (count!=req.getIds().length){
            throw new ServiceException(AckCode.PERMISSION_NOT_ACCESS_CATEGORY);
        }

        //构建一个集合
        List<Product> list=new ArrayList<>();
        for (Long id : req.getIds()) {
            Product product = new Product();
            product.setId(id);
            product.setIsgrounding(req.getIsgrounding());
            product.setUpdateTime(new Date());
            product.setUpdateBy(currentNameRedisCacheUtil.getMerchandiserCurrentName());
            list.add(product);
        }
        return this.saveOrUpdateBatch(list);
    }

四、总结

  该文章主要介绍了通过前端向Controller层发送请求,Controller接收请求并调用方法,从而实现的对商品的简单操作---单个商品的上下架和多个商品的批量上下架。其中要主要的是权限的设置,操作只能由商家进行,同时注意区别单个和多个商品上下架操作的不同之处,以及如何思考设计批量上下架的问题。

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: springboot+vue项目实战是一种常见的开发模式,它将后端的业务逻辑和前端的用户界面分离开来,使得开发更加高效和灵活。在这种模式下,后端使用springboot进行开发,前端使用vue进行开发,两者通过RESTful API进行通信。这种模式具有易于维护、易于扩展、易于测试等优点,因此在实际项目中得到了广泛应用。 ### 回答2: SpringBootVue是现代web开发中非常流行的技术栈,他们分别代表了后端和前端的强大。结合起来,可以实现更加灵活和高效的web应用开发。本篇文章将介绍如何用SpringBootVue搭建一个完整的web应用,并展示如何运用他们的优势来提高开发效率和用户体验。 首先是SpringBoot后端实现使用SpringBoot可以快速搭建一个轻量级的后端构,它包含了很多优秀的特性,例如自动配置,简单易用的API,以及集成了很多流行的依赖。开发者只需要一个简单的Maven或Gradle配置就可以开始编写Java代码了。 在实现中,我们使用了一个简单的用户管理系统,它包括了用户注册,登录,以及权限管理等基本功能。我们使用MySQL数据库存储用户信息,同时使用SpringSecurity来处理用户认证和授权。 Vue是一个非常强大的JavaScript框,它拥有很多出色的特性,例如响应式页面设计,单页面应用等。结合Webpack,Vue可以使用诸如Vue Router,Vuex,Element UI等插件来加速开发。在本项目中,我们使用Vue实现前端界面,同时使用Vue Router来处理页面路由,Vuex来处理状态管理,以及Element UI来提高视觉效果和交互体验。 最后我们将介绍如何使用SpringBootVue来组合一个完整的web应用。我们将使用axios来发起Ajax请求,同时使用SpringBoot提供的Restful API来处理请求,以及使用Vue显示数据和更新页面。我们也会展示如何使用SpringSecurity来保护API,并如何使用拦截器来控制用户权限。 综合起来,这个项目展示了如何使用SpringBootVue来构建一个完整的web应用,通过它你可以了解到SpringBootVue各自的优点,以及如何合理地结合它们来提高开发效率和用户体验。本项目代码开源可供下载、修改和使用。 ### 回答3: SpringBootVue.js是现在很热门的开发框,它们都有自己的优势和特点,可以很好地实现后端分离的开发模式。SpringBoot是一个快速开发框,可以帮助我们快速搭建后端接口,而Vue.js则是一个轻量级的前端开发框,可以帮助我们快速搭建前端页面和交互。 SpringBootVue.js可以非常完美地结合起来,形成一个完整的项目。在实践中,我们可以先使用SpringBoot搭建后端接口,然后使用Vue.js搭建前端页面和交互。在前后端分离的开发模式下,前后端的开发可以同时进行,互不干扰,提高了开发效率和代码质量。 具体项目实战中,我们可以根据需求来设计和实现项目。例如,我们可以使用SpringBoot实现一个简单的登录注册接口,然后使用Vue.js实现用户登录和注册页面。我们也可以使用SpringBoot实现一个简单的数据接口,然后使用Vue.js实现数据的展示和交互功能。不管是哪种场景,SpringBootVue.js都可以帮助我们快速搭建一个完整的项目。 在项目实战中,我们还需要注意一些细节和技巧。例如,在使用SpringBoot时,我们应该合理地设计接口和参数,统一返回格式和错误码,便于前端调用和处理。在使用Vue.js时,我们应该注意组件的拆分和复用,尽量避免重复性的代码编写,提高代码的可维护性和可拓展性。同时,我们还应该注意前后端数据的交互和安全性,使用合适的加密和验证方式,避免数据泄露和攻击。 总之,SpringBootVue.js的结合是一个非常不错的选择,通过它们的协作,我们可以快速搭建高效、可维护、安全的项目。在实际项目中,我们需要结合具体场景和需求来设计和实现项目,同时注意细节和技巧,才能取得良好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值