京淘项目部分功能实现记录1.0

1.创建步骤

1.POM.XML文件 1.parent标签 2.依赖项 3.插件
2.主启动类
3.POJO   路径jt-common\src\main\java\com\jt\pojo的POJO 全部复制 com.jt.pojo
4.VO jt-common\src\main\java\com\jt\vo 全部复制 com.jt.vo   
5.Mapper 只写UserMapper的层级
6.Service
7.Controller
8.Mapper接口的代理
9.粘贴复制配置文件!!!

2.登录实现

2.1添加事件

说明:为登录按钮添加点击事件 

 

 2.2登录步骤

1.再次校验用户的数据是否有效
2.发起Ajax请求实现用户登录请求. username/password post请求
3.在后端服务器 通过username/password 进行数据的查询.
   结果 1.有数据 用户名密码正确. 2.无数据 用户名或密码错误
4.后端将数据处理完成之后,返回特定的数据. 告知前端 数据处理情况(回执!!!)
   status=200 代表操作成功!!! status=201 表示业务操作失败
5.前端通过JS判断服务器的回执. 如果状态码等于200 提示用户登录成功, 否则告知用户用户名或       密码错误.
6.一般为了校验用户是否登录,会返回一个特殊的密钥-TOKEN(密文),如果没有密钥则需要重新登录.
 

2.2.1登录中token的判断

 

  设定路由导航

左侧菜单展现业务实现:

利用MP实现分页

 额外配置的配置类

 设定POJO属性 什么时候实现自动填充

        MP对外暴露了一个自动填充的接口MetaObjectHandler ,用户只需要实现该接口,并且重写其中的方法.即可以实现自动填充的功能.

三级菜单功能展示

1.将表数据进行封装

/*
 * 1.准备Map集合,实现数据封装
 * Map<key,value> = Map<parentId,List<ItemCat>>
 * 2.封装业务说明
 *       map中key--parentId
 *           不存在: 可以存储该key
 *                   同时封装一个List集合,将自己作为第一个元素封装到其中
 *           存在: 根据key获取所有子级集合,将自己追加进去 形成第二个元素
 * */
//通过Map集合进行数据封装
public Map<Integer,List<ItemCat>> itemCatMap(){
    //1.定义Map集合
    Map<Integer,List<ItemCat>> map = new HashMap<>();
    //2.查询所有的数据信息 1-2-3
    List<ItemCat> list = itemCatMapper.selectList(null);
    for (ItemCat itemCat : list){
        int parentId = itemCat.getParentId();//获取父级ID
        if (map.containsKey(parentId)){//判断集合中是否已经有parentId
            //有key  获取list集合 将自己追加到集合中
            List<ItemCat> exeList = map.get(parentId);//引用对象
            exeList.add(itemCat);
        }else {
            //没有key,将自己封装为第一个list元素
            List<ItemCat> firstList = new ArrayList<>();
            firstList.add(itemCat);
            map.put(parentId, firstList);
        }
    }
    return map;
}
//二级菜单展现,被一级菜单所包含
public List<ItemCat> getTwoList(Map<Integer,List<ItemCat>> map){
    List<ItemCat> oneList = map.get(0);
    for (ItemCat oneitemCat : oneList){//查询二级  parentId=1级ID
        List<ItemCat> twoList = map.get(oneitemCat.getId());
        oneitemCat.setChildren(twoList);
    }
    //二级嵌套在一级集合中,所有永远返回的都是1级
    return oneList;
}
//根据前端传来的参数,选择展示的是几级菜单内容
@Override
public List<ItemCat> findItemCatList(Integer level) {
    long startTime = System.currentTimeMillis();
    Map<Integer, List<ItemCat>> map = itemCatMap();
    //1.如果level=1,说明获取一级商品分类信息 parent_id=0
    if (level == 1){
        return map.get(0);
    }
    if (level == 2){//获取一级和二级菜单信息
        return getTwoList(map);
    }
    //3.获取三级菜单信息
    //3.1获取二级商品分类信息  BUG:有的数据可能没有子级 如何处理
    List<ItemCat> oneList = getTwoList(map);
    for (ItemCat oneItemCat : oneList){
        //从一级集合中,获取二级菜单列表
        List<ItemCat> twoList = oneItemCat.getChildren();
        //bug解决: 如果该元素没有2级列表,则跳过本次循环,执行下一次操作
        if(twoList == null || twoList.size()==0){
            continue;
        }
        for(ItemCat twoItemCat : twoList){
            //查询三级商品分类  条件:parentId=2级ID
            List<ItemCat> threeList = map.get(twoItemCat.getId());
            twoItemCat.setChildren(threeList);
        }
    }
    long endTime = System.currentTimeMillis();
    System.out.println("耗时:"+(endTime - startTime)+"毫秒");
    return oneList;
}

删除表

/*
* 策略: 如果是父级,则应该删除子集
* @param itemCat
* */
@Override
@Transactional  //添加事务控制
public void deleteItemCat(ItemCat itemCat) {
    //1.判断是否为三级菜单
    if (itemCat.getLevel() == 3){
        //如果是三级,直接删除
        itemCatMapper.deleteById(itemCat.getId());
        return; //程序终止
    }

    //2.检查菜单是否为二级
    if (itemCat.getLevel() == 2){
        //应该先删除三级 根据parent_id=2级ID即可
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.eq("parent_id", itemCat.getId());
        itemCatMapper.delete(queryWrapper);
        //再删除2级菜单
        itemCatMapper.deleteById(itemCat.getId());
        return;
    }

    //删除1级商品分类信息
    //1.首先获取商品2级信息 parent_id=1级ID
    QueryWrapper queryWrapper = new QueryWrapper();
    queryWrapper.eq("parent_id", itemCat.getId());
    List<ItemCat> twolist = itemCatMapper.selectList(queryWrapper);
    for (ItemCat twolistCat : twolist){
        queryWrapper.clear();
        queryWrapper.eq("parent_id", twolistCat.getId());
        itemCatMapper.delete(queryWrapper);//删除3级菜单
        itemCatMapper.deleteById(twolistCat.getId());//删除2级
    }
    itemCatMapper.deleteById(itemCat.getId());//删除1级

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值