package com.j1.soa.resource.cms.service.oracle;

import com.j1.base.dto.ServiceMessage;
import com.j1.cms.model.EcHomePageTab;
import com.j1.cms.model.EcHomePageTemplate;
import com.j1.cms.model.EcHomePageTemplateItem;
import com.j1.cms.model.EcTemolateItem;
import com.j1.item.model.Goods;
import com.j1.soa.common.service.BaseServiceImpl;
import com.j1.soa.resource.cms.api.EcHomePageTempLateService;
import com.j1.soa.resource.cms.dao.oracle.EcHomePageTempLateMapper;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by wangchuanfu on 17/5/20.
 */
public class EcHomePageTempLateServiceImpl extends BaseServiceImpl implements EcHomePageTempLateService {

    @Autowired
    private EcHomePageTempLateMapper ecHomePageTempLateMapper;

    public ServiceMessage<EcHomePageTab> getTableListById( Integer tabId) {
        try{
            if(tabId ==null){
                return super.returnParamsError("param is null");
            }
            /**
             * 根据tabId 查询对应的tab
             */
            EcHomePageTab ecHomePageTab= new EcHomePageTab();
            ecHomePageTab.setTabId(tabId);
            //查看tab下有无模板数据
            List<EcHomePageTemplate> templateList = ecHomePageTempLateMapper.queryAdList(tabId);
            if(templateList != null && templateList.size() > 0){
                for (EcHomePageTemplate template : templateList){
                    //查询tab下的模板数据,父级数据
                    EcHomePageTemplateItem item = new EcHomePageTemplateItem();
                    item.setTabId(tabId);
                    item.setTemplateTypeId(template.getTemplateTypeId());
                    item.setParentId(0);
                    /*List<EcHomePageTemplateItem> itemList = ecHomePageTempLateMapper.queryTemplateItemList(item);
                    List<EcHomePageTemplateItem> childItemList = new ArrayList<EcHomePageTemplateItem>();
                    if(itemList != null && itemList.size() > 0) {
                        for (EcHomePageTemplateItem teplate : itemList) {
                            //查看父级下面有没有子集数据
                            item.setParentId(teplate.getTemplateId());
                            childItemList = ecHomePageTempLateMapper.queryTemplateItemList(item);
                            teplate.setSubItemList(childItemList);
                        }
                        template.setItemList(itemList);
                    }*/
                    List<EcHomePageTemplateItem> itemList =getItemList(item);
                    if(itemList != null && itemList.size() > 0){
                        template.setItemList(itemList);
                    }
                }
                ecHomePageTab.setTemplateList(templateList);
            }else{
                return super.returnNoResult("not result");
            }
            return super.returnCorrectResult("search is success!", ecHomePageTab);
        }catch(Exception e){
            return super.returnException(e);
        }

    }

    private List<EcHomePageTemplateItem> getItemList(EcHomePageTemplateItem item){
        List<EcHomePageTemplateItem> itemList = ecHomePageTempLateMapper.queryTemplateItemList(item);
        List<EcHomePageTemplateItem> childItemList = new ArrayList<EcHomePageTemplateItem>();
        if(itemList != null && itemList.size() > 0) {
            for (EcHomePageTemplateItem teplate : itemList) {
                //如果配置的链接类型为商品编码,前台则需要取linkValueSupplement
                //查看父级下面有没有子集数据
                item.setParentId(teplate.getTemplateItemId());
                childItemList = getItemList(item);
                if(childItemList != null && childItemList.size() > 0){
                    teplate.setSubItemList(childItemList);
                }

            }

        }
        return itemList;
    }

    /**
     * 查询tab信息
     * @return
     */
    @Override
    public ServiceMessage<List<EcHomePageTab>> queryTable() {

        try{
            List<EcHomePageTab> tabs= ecHomePageTempLateMapper.queryTable();
            if(tabs.size()>0|| tabs!=null){
                return super.returnCorrectResult("success!", tabs);
            }else{
                return super.returnNoResult("not result");
            }
        }catch(Exception e){
            return super.returnException(e);
        }

    }
}

java 递归的更多相关文章

  1. Java递归列出目录下全部文件

    Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...

  2. Java 递归调用 recursive 给一个参数 返回一大堆

    需求: 需要组装成对象多层嵌套式的 json字符串; 想到使用 递归来完成这个多层嵌套: 憋了四个小时,终于写出来了; 先看效果: 数据库中的数据: 拼装后的效果: [ EmpVO{ ename='孙 ...

  3. JAVA 递归实现从n个数中选取m个数的所有组合

    这周Java课程有个小作业:Java递归实现从n个数中选取m个数的所有组合 代码如下: //其中 n 取 1,2,3,4,5 五个数, m 取 3 package javaText; public c ...

  4. JAVA递归、非递归遍历二叉树(转)

    原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...

  5. 慎用Java递归调用

    总结:慎用Java递归调用,测试时可以尝试该方法,否则尽量不要使用递归!递归过多调用时,最好改为for或者whlie来代替. 在java语言中,使用递归调用时,如果过多的调用容易造成java.lang ...

  6. Java递归实现阶乘

    import java.util.Scanner; public class Factorial { public static void main(String[] args) { Scanner ...

  7. java递归删除目录下所有内容

    java递归删除目录下所有内容 private static boolean deleteDir(File dir) {if (dir.isDirectory()) {        String[] ...

  8. JAVA递归实现线索化二叉树

    JAVA递归实现线索化二叉树 基础理论 首先,二叉树递归遍历分为先序遍历.中序遍历和后序遍历. 先序遍历为:根节点+左子树+右子树 中序遍历为:左子树+根节点+右子树 后序遍历为:左子树+右子树+根节 ...

  9. 算法笔记_013:汉诺塔问题(Java递归法和非递归法)

    目录 1 问题描述 2 解决方案  2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...

  10. Java递归输出指定路径下所有文件及文件夹

    package a.ab; import java.io.File; import java.io.IOException; public class AE { public static void ...

随机推荐

  1. linux系统Qt实现简单的任务管理器

    继续上次的操作系统课设,这次需要设计一个简单的任务管理器,大部分人选择GTK来实现,我剑走偏锋,使用Qt来完成这个任务. 用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数.由于 ...

  2. UPNP

    基本概念 UPnP 的应用范围非常大,以致足够可以实现许多现成的.新的及令人兴奋的方案,包括家庭自动化.打印.图片处理.音频 / 视频娱乐.厨房设备.汽车网络和公共集会场所的类似网络.它可以充分发挥 ...

  3. 【转】【VS Code】配置文件Launch及快捷键

     Ctrl+shift+p,然后输入launch,点击第一个选项即可配置. 之后选择More即可 具体配置可修改为: { "version": "0.2.0", ...

  4. 第三百三十二节,web爬虫讲解2—Scrapy框架爬虫—Scrapy使用

    第三百三十二节,web爬虫讲解2—Scrapy框架爬虫—Scrapy使用 xpath表达式 //x 表示向下查找n层指定标签,如://div 表示查找所有div标签 /x 表示向下查找一层指定的标签 ...

  5. Mybatis系列(四):Mybatis缓存

    一.MyBatis缓存介绍 MyBatis 提供了一级缓存和二级缓存的支持        1. 一级缓存: 默认开启,基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...

  6. 使用openstackclient调用Keystone v3 API

    本文内容属于个人原创,转载务必注明出处:  http://www.cnblogs.com/Security-Darren/p/4138945.html 考虑到Keystone社区逐渐弃用第二版身份AP ...

  7. [mysql-Ver5.6.23] windows版my.ini配置

    基于utf8mb4比utf8多了种编码,能更好的支持emoji表情(http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.htm ...

  8. json过滤某些属性 之@jsonignore

    Jackson相关: 使用Jackson相关的注解时一定要注意自己定义的属性命名是否规范. 命名不规范时会失去效果.(例如Ename ,Eage 为不规范命名.“nameE”,“ageE”为规范命名) ...

  9. TensorFlow:tf.contrib.layers.xavier_initializer

    xavier_initializer( uniform=True, seed=None, dtype=tf.float32 ) 该函数返回一个用于初始化权重的初始化程序 “Xavier” .这个初始化 ...

  10. Java多线程之细说线程池

    前言 在认识线程池之前,我们需要使用线程就去创建一个线程,但是我们会发现有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因 ...