Service层代码展示
package com.jt.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jt.mapper.ItemCatMapper;
import com.jt.pojo.Item;
import com.jt.pojo.ItemCat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class ItemCatServiceImpl implements ItemCatService {
@Autowired
private ItemCatMapper itemCatMapper;
//查询商品分类
public Map<Integer,List<ItemCat>> initMap(){
List<ItemCat> itemCatslist = itemCatMapper.selectList(null);
Map<Integer, List<ItemCat>> map = new HashMap<>();
for (ItemCat itemCat : itemCatslist) {
Integer key = itemCat.getParentId();
if(map.containsKey(key)){
List<ItemCat> list = map.get(key);
list.add(itemCat);
}else {
ArrayList<ItemCat> list = new ArrayList<>();
list.add(itemCat);
map.put(key,list);
}
}
return map;
}
@Override
public List<ItemCat> findItemCatList(Integer level) {
// long t1=System.currentTimeMillis();
// QueryWrapper<ItemCat> qw = new QueryWrapper<>();
// qw.eq("level", 1);
// List<ItemCat> itemCatslist1 = itemCatMapper.selectList(qw);
// if(level>1) {
// for (ItemCat itemCatone : itemCatslist1) {
// qw.clear();
// qw.eq("parent_id", itemCatone.getId());
// List<ItemCat> itemCatslist2 = itemCatMapper.selectList(qw);
// itemCatone.setChildren(itemCatslist2);
// if (level > 2) {
// for (ItemCat itemCattwo : itemCatslist2) {
// qw.clear();
// qw.eq("parent_id", itemCattwo.getId());
// List<ItemCat> itemCatslist3 = itemCatMapper.selectList(qw);
// itemCattwo.setChildren(itemCatslist3);
// }
// }
// }
// }
// long t2=System.currentTimeMillis();
//因为上方方法查询数据库次数较多,效率低
//优化后的方法
/**
* level 1只查询以及商品分类
* 2查询一级/耳机 嵌套封装
* 3查询一级/耳机/三级 嵌套封装
*/
long t1 = System.currentTimeMillis();
Map<Integer, List<ItemCat>> map = initMap();
if(level==1){
List<ItemCat> list = map.get(0);
return list;
}
if (level==2){
List<ItemCat> list = getlevel2List(map);
return list;
}
List<ItemCat> list = getlevel3List(map);
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
return list;
}
//查询一级和二级信息
private List<ItemCat> getlevel2List(Map<Integer,List<ItemCat>> map) {
List<ItemCat> onelist = map.get(0);
for (ItemCat oneitemCat : onelist) {
List<ItemCat> list2 = map.get(oneitemCat.getId());
oneitemCat.setChildren(list2);
}
return onelist;
}
//查询一级和二级和三级信息
private List<ItemCat> getlevel3List(Map<Integer, List<ItemCat>> map) {
List<ItemCat> onelist = getlevel2List(map);
for (ItemCat itemCat : onelist) {
List<ItemCat> children = itemCat.getChildren();
if (children==null ||children.size()==0){
continue;
}
for (ItemCat child : children) {
List<ItemCat> list = map.get(child.getId());
child.setChildren(list);
}
}
return onelist;
}
//修改商品分类状态
@Override
@Transactional
public Integer updaStatus(ItemCat itemCat) {
return itemCatMapper.updateById(itemCat);
}
//新增商品分类
@Override
@Transactional
public Integer addItemCat(ItemCat itemCat) {
itemCat.setStatus(true);
return itemCatMapper.insert(itemCat);
}
//商品分类信息修改
@Override
@Transactional
public Integer updateItemCat(ItemCat itemCat) {
return itemCatMapper.updateById(itemCat);
}
//商品分类删除(当删除节点为父级时,应该删除自身和所有的子节点)
@Override
@Transactional
public Integer deleteItemCat(Integer id,Integer level) {
QueryWrapper<ItemCat> qw = new QueryWrapper<>();
int sum=0;
if (level==3){
int delete = itemCatMapper.deleteById(id);
return delete;
}
if (level==2){
qw.eq("parent_id", id);
int delete = itemCatMapper.delete(qw);
int i = itemCatMapper.deleteById(id);
return delete+i;
}
ArrayList<Integer> it1 = new ArrayList<>();
ArrayList<Integer> it = new ArrayList<>();
qw.eq("parent_id", id);
List<ItemCat> list = itemCatMapper.selectList(qw);
for (ItemCat itemCat : list) {
it.add(itemCat.getId());
it1.add(itemCat.getId());
}
qw.clear();
qw.in("parent_id", it);
itemCatMapper.delete(qw);
it1.add(id);
int i = itemCatMapper.deleteBatchIds(it);
return sum+i;
}
}