easyui之无限级分类表的设计以及代码开发 2 (程序代码逻辑)

新增无限极分类操作:  (以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

猜你喜欢

转载自www.cnblogs.com/sunzhipeng/p/9077853.html