|
|
@@ -7,10 +7,10 @@
|
|
|
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
|
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
|
* subject to the following conditions:
|
|
|
-
|
|
|
+ * <p>
|
|
|
* The above copyright notice and this permission notice shall be included in all
|
|
|
* copies or substantial portions of the Software.
|
|
|
-
|
|
|
+ * <p>
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
|
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
|
@@ -48,271 +48,273 @@ import java.util.List;
|
|
|
* 创建日期:2019-11-28 15:12:32<br/>
|
|
|
* 历史修订:<br/>
|
|
|
*/
|
|
|
- @Service("cmscategoryBizImpl")
|
|
|
- @Transactional(rollbackFor = RuntimeException.class)
|
|
|
+@Service("cmscategoryBizImpl")
|
|
|
+@Transactional(rollbackFor = RuntimeException.class)
|
|
|
public class CategoryBizImpl extends BaseBizImpl<ICategoryDao, CategoryEntity> implements ICategoryBiz {
|
|
|
|
|
|
|
|
|
- @Autowired
|
|
|
- private ICategoryDao categoryDao;
|
|
|
+ @Autowired
|
|
|
+ private ICategoryDao categoryDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IContentDao contentDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private IContentDao contentDao;
|
|
|
|
|
|
+ @Override
|
|
|
+ protected IBaseDao getDao() {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ return categoryDao;
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- protected IBaseDao getDao() {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return categoryDao;
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public List<CategoryEntity> queryChilds(CategoryEntity category) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ return categoryDao.queryChildren(category);
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public List<CategoryEntity> queryChilds(CategoryEntity category) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return categoryDao.queryChildren(category);
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void saveEntity(CategoryEntity categoryEntity) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- String pingYin = PinYinUtil.getPingYin(categoryEntity.getCategoryTitle());
|
|
|
- //如果用户自己填入了拼音则使用用户的
|
|
|
- if (StrUtil.isNotBlank(categoryEntity.getCategoryPinyin())) {
|
|
|
- pingYin = categoryEntity.getCategoryPinyin();
|
|
|
- }
|
|
|
- CategoryEntity category=new CategoryEntity();
|
|
|
- category.setCategoryPinyin(pingYin);
|
|
|
- Object categoryBizEntity = getEntity(category);
|
|
|
- setParentId(categoryEntity);
|
|
|
- categoryEntity.setCategoryPinyin(pingYin);
|
|
|
- //更新新的父级
|
|
|
- if(StrUtil.isNotBlank(categoryEntity.getCategoryId())&&!"0".equals(categoryEntity.getCategoryId())){
|
|
|
- CategoryEntity parent = getById(categoryEntity.getCategoryId());
|
|
|
- //如果之前是叶子节点就更新
|
|
|
- if(parent.getLeaf()){
|
|
|
- parent.setLeaf(false);
|
|
|
- updateById(parent);
|
|
|
- }
|
|
|
- }
|
|
|
- categoryEntity.setLeaf(false);
|
|
|
- //如果是新增栏目一定是叶子节点
|
|
|
- if (StrUtil.isEmpty(categoryEntity.getId())) {
|
|
|
- categoryEntity.setLeaf(true);
|
|
|
- }
|
|
|
- super.save(categoryEntity);
|
|
|
- //拼音存在则拼接id
|
|
|
- if(categoryBizEntity!=null){
|
|
|
- categoryEntity.setCategoryPinyin(pingYin+categoryEntity.getId());
|
|
|
- }
|
|
|
- CategoryEntity parentCategory = null;
|
|
|
- if (StringUtils.isNotBlank(categoryEntity.getCategoryId())) {
|
|
|
- parentCategory = (CategoryEntity)getById(categoryEntity.getCategoryId());
|
|
|
- }
|
|
|
- //保存链接地址
|
|
|
- String path=ObjectUtil.isNotNull(parentCategory)?parentCategory.getCategoryPath():"";
|
|
|
- categoryEntity.setCategoryPath( path+"/" + categoryEntity.getCategoryPinyin());
|
|
|
- setTopId(categoryEntity);
|
|
|
- super.updateById(categoryEntity);
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public void saveEntity(CategoryEntity categoryEntity) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ String pingYin = PinYinUtil.getPingYin(categoryEntity.getCategoryTitle());
|
|
|
+ //如果用户自己填入了拼音则使用用户的
|
|
|
+ if (StrUtil.isNotBlank(categoryEntity.getCategoryPinyin())) {
|
|
|
+ pingYin = categoryEntity.getCategoryPinyin();
|
|
|
+ }
|
|
|
+ CategoryEntity category = new CategoryEntity();
|
|
|
+ category.setCategoryPinyin(pingYin);
|
|
|
+ Object categoryBizEntity = getEntity(category);
|
|
|
+ setParentId(categoryEntity);
|
|
|
+ categoryEntity.setCategoryPinyin(pingYin);
|
|
|
+ //更新新的父级
|
|
|
+ if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
|
|
|
+ CategoryEntity parent = getById(categoryEntity.getCategoryId());
|
|
|
+ //如果之前是叶子节点就更新
|
|
|
+ if (parent.getLeaf()) {
|
|
|
+ parent.setLeaf(false);
|
|
|
+ updateById(parent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ categoryEntity.setLeaf(false);
|
|
|
+ //如果是新增栏目一定是叶子节点
|
|
|
+ if (StrUtil.isEmpty(categoryEntity.getId())) {
|
|
|
+ categoryEntity.setLeaf(true);
|
|
|
+ }
|
|
|
+ super.save(categoryEntity);
|
|
|
+ //拼音存在则拼接id
|
|
|
+ if (categoryBizEntity != null) {
|
|
|
+ categoryEntity.setCategoryPinyin(pingYin + categoryEntity.getId());
|
|
|
+ }
|
|
|
+ CategoryEntity parentCategory = null;
|
|
|
+ if (StringUtils.isNotBlank(categoryEntity.getCategoryId())) {
|
|
|
+ parentCategory = (CategoryEntity) getById(categoryEntity.getCategoryId());
|
|
|
+ }
|
|
|
+ //保存链接地址
|
|
|
+ String path = ObjectUtil.isNotNull(parentCategory) ? parentCategory.getCategoryPath() : "";
|
|
|
+ categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
|
|
|
+ setTopId(categoryEntity);
|
|
|
+ super.updateById(categoryEntity);
|
|
|
+ }
|
|
|
|
|
|
- private void setParentId(CategoryEntity categoryEntity) {
|
|
|
- String path = "";
|
|
|
- if(StringUtils.isNotEmpty(categoryEntity.getCategoryId())&&Long.parseLong(categoryEntity.getCategoryId())>0) {
|
|
|
- CategoryEntity category = (CategoryEntity)getById(categoryEntity.getCategoryId());
|
|
|
- path = category.getCategoryPath();
|
|
|
- if(StringUtils.isEmpty(category.getCategoryParentIds())) {
|
|
|
- categoryEntity.setCategoryParentIds(category.getId());
|
|
|
- } else {
|
|
|
- categoryEntity.setCategoryParentIds(category.getCategoryParentIds()+","+category.getId());
|
|
|
- }
|
|
|
- }else {
|
|
|
- categoryEntity.setCategoryParentIds(null);
|
|
|
- }
|
|
|
- //保存时先保存再修改链接地址,修改时直接修改
|
|
|
- if(StringUtils.isNotBlank(categoryEntity.getId())) {
|
|
|
- categoryEntity.setCategoryPath(path+ "/" + categoryEntity.getCategoryPinyin());
|
|
|
- }
|
|
|
+ private void setParentId(CategoryEntity categoryEntity) {
|
|
|
+ String path = "";
|
|
|
+ if (StringUtils.isNotEmpty(categoryEntity.getCategoryId()) && Long.parseLong(categoryEntity.getCategoryId()) > 0) {
|
|
|
+ CategoryEntity category = (CategoryEntity) getById(categoryEntity.getCategoryId());
|
|
|
+ path = category.getCategoryPath();
|
|
|
+ if (StringUtils.isEmpty(category.getCategoryParentIds())) {
|
|
|
+ categoryEntity.setCategoryParentIds(category.getId());
|
|
|
+ } else {
|
|
|
+ categoryEntity.setCategoryParentIds(category.getCategoryParentIds() + "," + category.getId());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ categoryEntity.setCategoryParentIds(null);
|
|
|
+ }
|
|
|
+ //保存时先保存再修改链接地址,修改时直接修改
|
|
|
+ if (StringUtils.isNotBlank(categoryEntity.getId())) {
|
|
|
+ categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- private void setChildParentId(CategoryEntity categoryEntity, String topId) {
|
|
|
- CategoryEntity category=new CategoryEntity();
|
|
|
- category.setCategoryId(categoryEntity.getId());
|
|
|
- List<CategoryEntity> list = categoryDao.query(category);
|
|
|
- list.forEach(x->{
|
|
|
- if(StringUtils.isEmpty(categoryEntity.getCategoryParentIds())) {
|
|
|
- x.setCategoryParentIds(categoryEntity.getId());
|
|
|
- } else {
|
|
|
- x.setCategoryParentIds(categoryEntity.getCategoryParentIds()+","+categoryEntity.getId());
|
|
|
- }
|
|
|
- //更新topid
|
|
|
- x.setTopId(topId);
|
|
|
- String path=categoryEntity.getCategoryPath();
|
|
|
- //判断是否有parentIds
|
|
|
- x.setCategoryPath(path+"/"+x.getCategoryPinyin());
|
|
|
- //去除多余的/符号
|
|
|
- super.updateEntity(x);
|
|
|
- setChildParentId(x, topId);
|
|
|
- });
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void updateEntity(CategoryEntity entity) {
|
|
|
- setParentId(entity);
|
|
|
- String pingYin =entity.getCategoryPinyin();
|
|
|
- if(StrUtil.isNotBlank(pingYin)){
|
|
|
- CategoryEntity category=new CategoryEntity();
|
|
|
- category.setCategoryPinyin(pingYin);
|
|
|
- CategoryEntity categoryBizEntity = (CategoryEntity)getEntity(category);
|
|
|
- //拼音存在则拼接id
|
|
|
- if(categoryBizEntity!=null&&!categoryBizEntity.getId().equals(entity.getId())){
|
|
|
- entity.setCategoryPinyin(pingYin+entity.getId());
|
|
|
- }
|
|
|
- }
|
|
|
- setParentLeaf(entity);
|
|
|
- setTopId(entity);
|
|
|
- //如果父级栏目和父级id为空字符串则转化成null
|
|
|
- if (StringUtils.isEmpty(entity.getCategoryId())) {
|
|
|
- entity.setCategoryId(null);
|
|
|
- }
|
|
|
- if (StringUtils.isEmpty(entity.getCategoryParentIds())) {
|
|
|
- entity.setCategoryParentIds(null);
|
|
|
- }
|
|
|
- categoryDao.updateEntity(entity);
|
|
|
- //更新子节点所有父节点id和topid
|
|
|
- //如果本节点的topid为0(顶级栏目),则把自身的id作为子栏目的topid,非0所有的子栏目和本栏目使用同一个topid
|
|
|
- String topId = entity.getTopId();
|
|
|
- if (topId.equals("0")) {
|
|
|
- topId = entity.getId();
|
|
|
- }
|
|
|
- setChildParentId(entity, topId);
|
|
|
- }
|
|
|
+ private void setChildParentId(CategoryEntity categoryEntity, String topId) {
|
|
|
+ CategoryEntity category = new CategoryEntity();
|
|
|
+ category.setCategoryId(categoryEntity.getId());
|
|
|
+ List<CategoryEntity> list = categoryDao.query(category);
|
|
|
+ list.forEach(x -> {
|
|
|
+ if (StringUtils.isEmpty(categoryEntity.getCategoryParentIds())) {
|
|
|
+ x.setCategoryParentIds(categoryEntity.getId());
|
|
|
+ } else {
|
|
|
+ x.setCategoryParentIds(categoryEntity.getCategoryParentIds() + "," + categoryEntity.getId());
|
|
|
+ }
|
|
|
+ //更新topid
|
|
|
+ x.setTopId(topId);
|
|
|
+ String path = categoryEntity.getCategoryPath();
|
|
|
+ //判断是否有parentIds
|
|
|
+ x.setCategoryPath(path + "/" + x.getCategoryPinyin());
|
|
|
+ //去除多余的/符号
|
|
|
+ super.updateEntity(x);
|
|
|
+ setChildParentId(x, topId);
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public void updateEntity(CategoryEntity entity) {
|
|
|
+ setParentId(entity);
|
|
|
+ String pingYin = entity.getCategoryPinyin();
|
|
|
+ if (StrUtil.isNotBlank(pingYin)) {
|
|
|
+ CategoryEntity category = new CategoryEntity();
|
|
|
+ category.setCategoryPinyin(pingYin);
|
|
|
+ CategoryEntity categoryBizEntity = (CategoryEntity) getEntity(category);
|
|
|
+ //拼音存在则拼接id
|
|
|
+ if (categoryBizEntity != null && !categoryBizEntity.getId().equals(entity.getId())) {
|
|
|
+ entity.setCategoryPinyin(pingYin + entity.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setParentLeaf(entity);
|
|
|
+ setTopId(entity);
|
|
|
+ //如果父级栏目和父级id为空字符串则转化成null
|
|
|
+ if (StringUtils.isEmpty(entity.getCategoryId())) {
|
|
|
+ entity.setCategoryId(null);
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(entity.getCategoryParentIds())) {
|
|
|
+ entity.setCategoryParentIds(null);
|
|
|
+ }
|
|
|
+ categoryDao.updateEntity(entity);
|
|
|
+ //更新子节点所有父节点id和topid
|
|
|
+ //如果本节点的topid为0(顶级栏目),则把自身的id作为子栏目的topid,非0所有的子栏目和本栏目使用同一个topid
|
|
|
+ String topId = entity.getTopId();
|
|
|
+ if (topId.equals("0")) {
|
|
|
+ topId = entity.getId();
|
|
|
+ }
|
|
|
+ setChildParentId(entity, topId);
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void update(CategoryEntity entity) {
|
|
|
- super.updateEntity(entity);
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void delete(String categoryId) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- CategoryEntity category = (CategoryEntity) categoryDao.selectById(categoryId);
|
|
|
- //删除父类
|
|
|
- if(category != null){
|
|
|
- category.setCategoryParentIds(null);
|
|
|
- List<CategoryEntity> childrenList = categoryDao.queryChildren(category);
|
|
|
- List<String> ids = new ArrayList<>();
|
|
|
- for(int i = 0; i < childrenList.size(); i++){
|
|
|
- //删除子类
|
|
|
- ids.add(childrenList.get(i).getId());
|
|
|
- }
|
|
|
- categoryDao.deleteBatchIds(ids);
|
|
|
- // 删除文章
|
|
|
- contentDao.deleteEntityByCategoryIds(ids.toArray(new String[ids.size()]));
|
|
|
+ @Override
|
|
|
+ public void update(CategoryEntity entity) {
|
|
|
+ super.updateEntity(entity);
|
|
|
+ }
|
|
|
|
|
|
- //获取被删节点的父节点
|
|
|
- CategoryEntity parentNode = categoryDao.selectById(category.getCategoryId());
|
|
|
- //获取被删节点的所属栏目的其他节点
|
|
|
- List<CategoryEntity> childNode = categoryDao.queryChildren(parentNode);
|
|
|
- //判断删除的是否为主节点
|
|
|
- if (parentNode != null) {
|
|
|
- UpdateWrapper<CategoryEntity> updateWrapper = new UpdateWrapper<>();
|
|
|
+ @Override
|
|
|
+ public void delete(String categoryId) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ CategoryEntity category = (CategoryEntity) categoryDao.selectById(categoryId);
|
|
|
+ //删除父类
|
|
|
+ if (category != null) {
|
|
|
+ category.setCategoryParentIds(null);
|
|
|
+ List<CategoryEntity> childrenList = categoryDao.queryChildren(category);
|
|
|
+ List<String> ids = new ArrayList<>();
|
|
|
+ for (int i = 0; i < childrenList.size(); i++) {
|
|
|
+ //删除子类
|
|
|
+ ids.add(childrenList.get(i).getId());
|
|
|
+ }
|
|
|
+ categoryDao.deleteBatchIds(ids);
|
|
|
+ // 删除文章
|
|
|
+ contentDao.deleteEntityByCategoryIds(ids.toArray(new String[ids.size()]));
|
|
|
|
|
|
- //是否还有子节点
|
|
|
- if (childNode.size() > 1)
|
|
|
- updateWrapper.eq("id", parentNode.getId()).set("leaf", 0);
|
|
|
- else
|
|
|
- updateWrapper.eq("id", parentNode.getId()).set("leaf", 1);
|
|
|
+ //获取被删节点的父节点
|
|
|
+ CategoryEntity parentNode = categoryDao.selectById(category.getCategoryId());
|
|
|
+ //清空CategoryParentIds,避免查找不必要的数据,只需要当前的父级栏目
|
|
|
+ parentNode.setCategoryParentIds(null);
|
|
|
+ //获取被删节点的所属栏目的其他节点
|
|
|
+ List<CategoryEntity> childNode = categoryDao.queryChildren(parentNode);
|
|
|
+ //判断删除的是否为主节点
|
|
|
+ if (parentNode != null) {
|
|
|
+ UpdateWrapper<CategoryEntity> updateWrapper = new UpdateWrapper<>();
|
|
|
+ //如果没有子节点进行更新代码
|
|
|
+ if (childNode.size() == 1) {
|
|
|
+ updateWrapper.eq("id", parentNode.getId()).set("leaf", 1);
|
|
|
+ categoryDao.update(null, updateWrapper);
|
|
|
+ }
|
|
|
|
|
|
- categoryDao.update(null, updateWrapper);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 设置父级叶子节点
|
|
|
- * @param entity
|
|
|
- */
|
|
|
- private void setParentLeaf(CategoryEntity entity){
|
|
|
- CategoryEntity categoryEntity = getById(entity.getId());
|
|
|
- //如果父级不为空并且修改了父级则需要更新父级
|
|
|
- if(entity.getCategoryId() != null && !entity.getCategoryId().equals(categoryEntity.getCategoryId())){
|
|
|
- //更新旧的父级
|
|
|
- if(StrUtil.isNotBlank(categoryEntity.getCategoryId())&&!"0".equals(categoryEntity.getCategoryId())){
|
|
|
- CategoryEntity parent = getById(categoryEntity.getCategoryId());
|
|
|
- //如果修改了父级则需要判断父级是否还有子节点
|
|
|
- boolean leaf = parent.getLeaf();
|
|
|
- //查找不等于当前更新的分类子集,有则不是叶子节点
|
|
|
- QueryWrapper<CategoryEntity> queryWrapper = new QueryWrapper<>();
|
|
|
- parent.setLeaf(count(queryWrapper.eq("category_id",parent.getId()).ne("id",entity.getId()))==0);
|
|
|
- if(leaf!=parent.getLeaf()){
|
|
|
- updateById(parent);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 设置父级叶子节点
|
|
|
+ * @param entity
|
|
|
+ */
|
|
|
+ private void setParentLeaf(CategoryEntity entity) {
|
|
|
+ CategoryEntity categoryEntity = getById(entity.getId());
|
|
|
+ //如果父级不为空并且修改了父级则需要更新父级
|
|
|
+ if (entity.getCategoryId() != null && !entity.getCategoryId().equals(categoryEntity.getCategoryId())) {
|
|
|
+ //更新旧的父级
|
|
|
+ if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
|
|
|
+ CategoryEntity parent = getById(categoryEntity.getCategoryId());
|
|
|
+ //如果修改了父级则需要判断父级是否还有子节点
|
|
|
+ boolean leaf = parent.getLeaf();
|
|
|
+ //查找不等于当前更新的分类子集,有则不是叶子节点
|
|
|
+ QueryWrapper<CategoryEntity> queryWrapper = new QueryWrapper<>();
|
|
|
+ parent.setLeaf(count(queryWrapper.eq("category_id", parent.getId()).ne("id", entity.getId())) == 0);
|
|
|
+ if (leaf != parent.getLeaf()) {
|
|
|
+ updateById(parent);
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- //更新新的父级
|
|
|
- if(StrUtil.isNotBlank(entity.getCategoryId())&&!"0".equals(entity.getCategoryId())){
|
|
|
- CategoryEntity parent = getById(entity.getCategoryId());
|
|
|
- //如果之前是叶子节点就更新
|
|
|
- if(parent.getLeaf()){
|
|
|
- parent.setLeaf(false);
|
|
|
- updateById(parent);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ //更新新的父级
|
|
|
+ if (StrUtil.isNotBlank(entity.getCategoryId()) && !"0".equals(entity.getCategoryId())) {
|
|
|
+ CategoryEntity parent = getById(entity.getCategoryId());
|
|
|
+ //如果之前是叶子节点就更新
|
|
|
+ if (parent.getLeaf()) {
|
|
|
+ parent.setLeaf(false);
|
|
|
+ updateById(parent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 设置顶级id
|
|
|
- * @param entity
|
|
|
- */
|
|
|
- private void setTopId(CategoryEntity entity){
|
|
|
- String categoryParentId = entity.getCategoryParentIds();
|
|
|
- if(StrUtil.isNotBlank(categoryParentId)){
|
|
|
- String[] ids = categoryParentId.split(",");
|
|
|
- //如果有ParentId就取第一个
|
|
|
- if(ids.length>0){
|
|
|
- entity.setTopId(ids[0]);
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- entity.setTopId("0");
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 设置顶级id
|
|
|
+ * @param entity
|
|
|
+ */
|
|
|
+ private void setTopId(CategoryEntity entity) {
|
|
|
+ String categoryParentId = entity.getCategoryParentIds();
|
|
|
+ if (StrUtil.isNotBlank(categoryParentId)) {
|
|
|
+ String[] ids = categoryParentId.split(",");
|
|
|
+ //如果有ParentId就取第一个
|
|
|
+ if (ids.length > 0) {
|
|
|
+ entity.setTopId(ids[0]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ entity.setTopId("0");
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void copyCategory(CategoryEntity category) {
|
|
|
- String oldId = category.getId();
|
|
|
- //先保存被复制第一层栏目,因为第一层栏目不需要变更父级栏目
|
|
|
- category = getById(oldId);
|
|
|
- //id、拼音和路径按照原来的业务逻辑生成
|
|
|
- category.setId(null);
|
|
|
- category.setCategoryPinyin(null);
|
|
|
- category.setCategoryPath(null);
|
|
|
- saveEntity(category);
|
|
|
- //传入简要被复制子栏目的id和复制后的生成的id,复制的子栏目全部使用
|
|
|
- recursionCopyChilds(oldId, category.getId());
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public void copyCategory(CategoryEntity category) {
|
|
|
+ String oldId = category.getId();
|
|
|
+ //先保存被复制第一层栏目,因为第一层栏目不需要变更父级栏目
|
|
|
+ category = getById(oldId);
|
|
|
+ //id、拼音和路径按照原来的业务逻辑生成
|
|
|
+ category.setId(null);
|
|
|
+ category.setCategoryPinyin(null);
|
|
|
+ category.setCategoryPath(null);
|
|
|
+ saveEntity(category);
|
|
|
+ //传入简要被复制子栏目的id和复制后的生成的id,复制的子栏目全部使用
|
|
|
+ recursionCopyChilds(oldId, category.getId());
|
|
|
+ }
|
|
|
|
|
|
- /*
|
|
|
- * 递归复制子栏目
|
|
|
- * @param oldParentId:被复制的父级栏目id(需要数据库原来存在该数据)
|
|
|
- * @param newParentId:复制栏目后新父级的id(新插入数据的id)
|
|
|
- * */
|
|
|
- private void recursionCopyChilds(String oldParentId, String newParentId) {
|
|
|
- CategoryEntity _category = new CategoryEntity();
|
|
|
- _category.setCategoryId(oldParentId);
|
|
|
- List<CategoryEntity> childs = query(_category);
|
|
|
- for (CategoryEntity child : childs) {
|
|
|
- String childId = child.getId();
|
|
|
- //id、拼音和路径按照原来的业务逻辑生成
|
|
|
- child.setId(null);
|
|
|
- child.setCategoryPinyin(null);
|
|
|
- child.setCategoryPath(null);
|
|
|
- child.setCategoryId(newParentId);
|
|
|
- saveEntity(child);
|
|
|
- //如果该栏目下还有子栏目则继续复制该栏目里的子栏目
|
|
|
- recursionCopyChilds(childId, child.getId());
|
|
|
- }
|
|
|
- }
|
|
|
+ /*
|
|
|
+ * 递归复制子栏目
|
|
|
+ * @param oldParentId:被复制的父级栏目id(需要数据库原来存在该数据)
|
|
|
+ * @param newParentId:复制栏目后新父级的id(新插入数据的id)
|
|
|
+ * */
|
|
|
+ private void recursionCopyChilds(String oldParentId, String newParentId) {
|
|
|
+ CategoryEntity _category = new CategoryEntity();
|
|
|
+ _category.setCategoryId(oldParentId);
|
|
|
+ List<CategoryEntity> childs = query(_category);
|
|
|
+ for (CategoryEntity child : childs) {
|
|
|
+ String childId = child.getId();
|
|
|
+ //id、拼音和路径按照原来的业务逻辑生成
|
|
|
+ child.setId(null);
|
|
|
+ child.setCategoryPinyin(null);
|
|
|
+ child.setCategoryPath(null);
|
|
|
+ child.setCategoryId(newParentId);
|
|
|
+ saveEntity(child);
|
|
|
+ //如果该栏目下还有子栏目则继续复制该栏目里的子栏目
|
|
|
+ recursionCopyChilds(childId, child.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|