- 商品分类
1.编辑pojo-ItemCat
@Data
@Accessors(chain = true)
@TableName("item_cat")
public class ItemCat extends BasePojo{
@TableId(type = IdType.AUTO)
private Integer id;
private Integer parentId;
private String name;
private Boolean status;
private Integer level;
@TableField(exist = false)
private List<ItemCat> children;
}
2.编辑ItemMapper
CRUD没有特殊操作可以省略,并且xml映射文件可以简化
public interface ItemCatMapper extends BaseMapper<ItemCat> {
}
3.编辑页面跳转
{path:'/home',component:Home,children:[
{path:'/user',component:User},
{path:'/itemcat',component:ItemCat}
]},
4.编辑ItemController
@RestController
@RequestMapping("/itemcat")
@CrossOrigin
public class ItemCatController {
@Autowired
private ItemCatService itemCatService;
@GetMapping("/findItemCatList/{level}")
public SysResult findItemCatList(@PathVariable Integer level){
List<ItemCat> list = itemCatService.findItemCatList(level);
return SysResult.success(list);
}
}
5.编辑ItemService
@Service
public class ItemCatServiceImpl implements ItemCatService{
@Autowired
private ItemCatMapper itemCatMapper;
public Map<Integer,List<ItemCat>> getMap(){
Map<Integer,List<ItemCat>> map = new HashMap<>();
List<ItemCat> list = itemCatMapper.selectList(null);
for (ItemCat item : list){
int parentId = item.getParentId();
if (map.containsKey(parentId)){
map.get(parentId).add(item);
}else {
List<ItemCat> childlist = new ArrayList<>();
childlist.add(item);
map.put(parentId, childlist);
}
}
return map;
}
@Override
public List<ItemCat> findItemCatList(Integer level) {
Map<Integer, List<ItemCat>> itemCatMap = getMap();
if (level==1){
return itemCatMap.get(0);
}
if (level==2){
return getTwo(itemCatMap,0);
}
return getThree(itemCatMap);
}
@Override
@Transactional
public void changStatus(ItemCat itemCat) {
itemCatMapper.updateById(itemCat);
}
@Override
@Transactional
public void saveItemCat(ItemCat itemCat) {
Date date = new Date();
itemCat.setStatus(true).setCreated(date).setUpdated(date);
itemCatMapper.insert(itemCat);
}
@Override
@Transactional
public void updateItemCat(ItemCat itemCat) {
itemCatMapper.updateById(itemCat);
}
@Override
@Transactional
public void deleteItemCat(ItemCat itemCat) {
if (itemCat.getLevel()==3){
int id = itemCat.getId();
itemCatMapper.deleteById(id);
return;
}
if (itemCat.getLevel()==2){
int id = itemCat.getId();
QueryWrapper<ItemCat> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("parent_id", id);
itemCatMapper.delete(queryWrapper);
itemCatMapper.deleteById(id);
return;
}
QueryWrapper<ItemCat> queryWrapper = new QueryWrapper<>();
int id=itemCat.getId();
queryWrapper.eq("parent_id",id);
List idList = itemCatMapper.selectObjs(queryWrapper);
if(idList.size()>0){
queryWrapper.clear();
queryWrapper.in("parent_id", idList);
itemCatMapper.delete(queryWrapper);
idList.add(id);
itemCatMapper.deleteBatchIds(idList);
}else {
itemCatMapper.deleteById(id);
}
}
private List<ItemCat> getThree(Map<Integer, List<ItemCat>> map) {
//获取所有1-2级
List<ItemCat> oneList = getTwo(map, 0);
//获取每个1级下的所有2级
for (ItemCat one:oneList){
//获取所有2级
List<ItemCat> twoList = one.getChildren();
if (twoList==null || twoList.size()==0){
continue;
}
//获取单个2级
for (ItemCat two:twoList){
int parentId = two.getId();
List<ItemCat> threeList = map.get(parentId);
two.setChildren(threeList);
}
}
return oneList;
}
// private List<ItemCat> getThree(Map<Integer, List<ItemCat>> map) {
// List<ItemCat> twoList = getTwo(map, 1);
// List<ItemCat> oneList = map.get(0);
// for (ItemCat one:oneList){
// one.setChildren(twoList);
// }
// return oneList;
// }
public List<ItemCat> getTwo(Map<Integer, List<ItemCat>> map,int level) {
List<ItemCat> oneList = map.get(level);
for (ItemCat one:oneList){
Integer parentId = one.getId();
List<ItemCat> twoList = map.get(parentId);
one.setChildren(twoList);
}
return oneList;
}
}