新增无限极分类操作: (以1为数据库表结构)
1,新增的分类如果是一级分类 这个就不说了,字段设什么值都能明白
2,新增的分类如果是多级分类
1)要得到新增的分类的父级的arrparentid字段值 在拼接父级的catid 组成新增的分类的arrparentid字段值
2)设新增的分类的arrchildid的值为新增的分类catid
3)如果新增的分类的父级分类的child为0 则改为1
4)对新增的分类的父级分类的arrchildid字段都拼接新增的分类id(如果新增的分类的父级有多个,则所有父级的arrchildid都要拼接当前的新增的caiid值)
删除无限极分类操作: (以1为数据库表结构)
****在删除分类之前要判断当前分类是否有子分类,如果有子分类,建议最好提示不许删除(具体看自己项目需求)
1,如果当前删除对象无子分类,且同时属于一级分类,直接删就好了,不需要考虑
2,删除的分类的父级分类的arrchildid字段都需截取当前删除的分类的catid(如果当前分类的父级分类有多个,则循环截取)
3,如果删除的分类的父级分类只有当前删除的分类的一个子分类,那么父分类的child修改成0
修改无限极分类操作: (以1为数据库表结构)
修改的话比较复杂,考虑的点比较多,一般做修改都是某一级的分类修改到另外一级修改级别这样的操作,或者由分类一这个大分类修改到另外一个大的分类下,同时修改的分类当前的子分类也同步修改过去
**为了能明白修改与被修改分类对象的识别 我暂把 A作为当前要修改的分类 , B作为A移动到的分类(也就是说A是B修改后的子分类)
1,A的parentid字段值修改成 B的catid
2,A的arrparentid字段值修改成 B的parentid+B的catid
3,B的child改成1(如果本来就是1的不变)
4,A修改前的所有父级(多个)的arrchildid里内包含这个A里的arrchildid的,都要去除(如果A是一级分类,则此步不需要考虑)(例子:假设A修改前的父级有两个,名为Q跟E,那么那就去除Q的arrchildid字段里的值等于A的arrchildid字段的值,同理E也一样)假设Q的arrchildid为[1,3,5,6,7,9,12,14,25,46] , A的[ 14, 25,46] 那么Q的14,25,46都要去除
5,如果A修改前的父级分类只有A这个子分类,A修改前的父级分类的child要修改为0
6,得到A的arrchildid字段值,并循环修改A的arrchildid的每个值(这里是包括A的所有子分类的catid值)(提示:除了A的catid值之外)的arrparentid修改成B的arrparentid+B的catid+A的catid
7,修改B以及B的所有父级分类的arrchildid ,使之修改成B的arrchildid+A的arrchildid