欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

电商平台搭建--收获地址管理模块开发

程序员文章站 2024-03-25 21:18:04
...

Hi,大家好。今天为大家介绍收货地址管理模块的开发。

电商平台搭建--收获地址管理模块开发

收获地址管理模块较之前的模块来说相对简单,需要实现的接口也不多,所以本篇博文会介绍完整。

一、收获地址管理模块-增加收获地址功能的开发

public ServerResponse add(Integer userId, Shipping shipping){
        shipping.setUserId(userId);
        int rowCount = shippingMapper.insert(shipping);
        if(rowCount > 0){
            Map result = Maps.newHashMap();
            result.put("shippingId", shipping.getId());
            return ServerResponse.createBySuccess("新建地址成功", result);
        }
        return ServerResponse.createByErrorMessage("新建地址失败");
    }

    增加收获地址其实就是把收获地址都需要的信息插入到当前用户的数据库表中即可,因为后端使用的是SSM框架,在Spring MVC中自带了对象专递这种方法,就是这里的Shipping shipping,Spring MVC会自动绑定和Shipping这个类有关的所有字段,然后再一一为这些字段赋值即可。如果不这样写,那就需要把涉及到的收获地址信息逐一写出来,这样是非常麻烦的,也会造成代码冗余。因为并没有让前端穿userId,所以这里要为shipping设置好userId,然后插入到数据库中,这里需要注意,因为使用了Spring MVC的对象传递,当插入数据的时候需要在Mappers中添加规则,

useGeneratedKeys="true" keyProperty="id"

这样就会自动匹配id字段。如果rowCount大于0,说明shipping信息插入成功,这时候需要使用Map集合才存储插入以后的数据,然后返回新增地址成功,否则新增地址失败。

    @RequestMapping(value = "add.do", method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse add(HttpSession session, Shipping shipping){
        User user = (User)session.getAttribute(Const.CURRENT_USER);
        if(user ==null){
            return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
        }
        return iShippingService.add(user.getId(),shipping);
    }

    这里还需要判断一下用户是否登录,如果未登录则需要强制登录,否则返回Service中的add方法即可。

二、收获地址管理模块-删除收获地址功能的开发

public ServerResponse<String> del(Integer userId, Integer shippingId){
        int resultCount = shippingMapper.deleteByShippingIdUserId(userId, shippingId);
        if(resultCount > 0){
            return ServerResponse.createBySuceessMessage("删除地址成功");
        }
        return ServerResponse.createByErrorMessage("删除地址失败");
    }

     删除收获地址需要保证用户地址是当前用户的,所以传入了userId,而且删除的是当前用户对应选择的收获地址,所以又传入了shippinfId来做区分。这里直接对返回结果进行判断就行没有其余的逻辑处理。

    @RequestMapping(value = "del.do", method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse del(HttpSession session,Integer shippingId){
        User user = (User)session.getAttribute(Const.CURRENT_USER);
        if(user ==null){
            return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
        }
        return iShippingService.del(user.getId(),shippingId);
    }

    处理方法同上!

三、收获地址管理模块-更新收获地址功能的开发

public ServerResponse update(Integer userId, Shipping shipping){
        int resultCount = shippingMapper.updateByShipping(shipping);
        if(resultCount > 0){
            return ServerResponse.createBySuceessMessage("更新地址成功");
        }
        return ServerResponse.createByErrorMessage("更新地址失败");
    }

    更新收获地址和新增收获地址非常相似,都是使用了Spring MVC对象传递shipping,只是这里的SQL是update结点,更新的信息都是相同的。然后对返回结果进行判断即可。

    @RequestMapping(value = "update.do", method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse update(HttpSession session,Shipping shipping){
        User user = (User)session.getAttribute(Const.CURRENT_USER);
        if(user == null){
            return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
        }
        return iShippingService.update(user.getId(),shipping);
    }

    处理方法同上!

四、收获地址管理模块-选择收获地址功能的开发

public ServerResponse<Shipping> select(Integer userId, Integer shippingId){
        Shipping shipping = shippingMapper.selectByShippingIdUserId(userId, shippingId);
        if(shipping == null){
            return ServerResponse.createByErrorMessage("无法查询到该地址");
        }
        return ServerResponse.createBySuccess("更新地址成功",shipping);
    }

    选择收获地址和更新收货地址非常相似,不再赘述!

    @RequestMapping(value = "select.do", method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<Shipping> select(HttpSession session,Integer shippingId){
        User user = (User)session.getAttribute(Const.CURRENT_USER);
        if(user ==null){
            return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
        }
        return iShippingService.select(user.getId(),shippingId);
    }

    处理方法同上!

五、收获地址管理模块-获取收获地址列表功能的开发

public ServerResponse<PageInfo> list(Integer userId, int pageNum, int pageSize){
        PageHelper.startPage(pageNum, pageSize);
        List<Shipping> shippingList = shippingMapper.selectByUserId(userId);
        PageInfo pageInfo = new PageInfo(shippingList);
        return ServerResponse.createBySuccess(pageInfo);
    }

    获取收获地址列表需要进行分页,所以使用PageHelper进行分页处理。数据使用shippingMapper查询出来的shippingList即可。

    @RequestMapping(value = "list.do", method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<PageInfo> list(@RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
                                         @RequestParam(value = "pageSize",defaultValue = "10")int pageSize,
                                         HttpSession session){
        User user = (User)session.getAttribute(Const.CURRENT_USER);
        if(user ==null){
            return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
        }
        return iShippingService.list(user.getId(),pageNum,pageSize);
    }

    处理方法同上!

写到这里,收货地址管理模块的所有功能已经开发完成了。

在接下来的博文中,我会为大家介绍在电商项目开发过程中的重难点-订单管理模块和支付模块,会用较大的篇幅来进行介绍,力求大家都能看的明白。同时如果大家有什么问题,欢迎留言评论。在更新完电商项目之后我会就单独的一点来进行深入剖析,欢迎大家关注!下期再见!!