admin
2020-05-06 24a8d17e007545f7426c48352109aa1a9c6587ee
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/GoodsClassServiceImpl.java
@@ -1,395 +1,96 @@
package com.yeshi.fanli.service.impl.goods;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.UUID;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import org.apache.commons.beanutils.PropertyUtils;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.orm.hibernate4.HibernateCallback;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.yeshi.utils.tencentcloud.COSManager;
import com.yeshi.fanli.dao.goods.GoodsClassDao;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yeshi.fanli.dao.mybatis.GoodsClassMapper;
import com.yeshi.fanli.dao.mybatis.lable.LabelClassMapper;
import com.yeshi.fanli.entity.admin.GoodsClassAdmin;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.su.clazz.SuperGoodsClass;
import com.yeshi.fanli.entity.system.System;
import com.yeshi.fanli.service.inter.config.SystemService;
import com.yeshi.fanli.service.inter.goods.ClassRecommendGoodsService;
import com.yeshi.fanli.entity.bus.clazz.GoodsSubClass;
import com.yeshi.fanli.entity.bus.clazz.TaoBaoClass;
import com.yeshi.fanli.exception.goods.GoodsClassException;
import com.yeshi.fanli.service.inter.goods.GoodsClassService;
import com.yeshi.fanli.service.inter.goods.GoodsSecondClassService;
import com.yeshi.fanli.service.inter.goods.SuperGoodsClassService;
import com.yeshi.fanli.service.inter.goods.GoodsSubClassService;
import com.yeshi.fanli.service.inter.goods.TaoBaoClassService;
import com.yeshi.fanli.service.inter.lable.LabelClassService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.Utils;
@Service
public class GoodsClassServiceImpl implements GoodsClassService {
   @Resource
   private GoodsClassDao goodsClassDao;
   @Resource
   private SystemService systemService;
   @Resource
   private SuperGoodsClassService superGoodsClassService;
   @Resource
   private ClassRecommendGoodsService classRecommendGoodsService;
   @Resource
   private GoodsSecondClassService goodsSecondClassService;
   @Resource
   private GoodsClassMapper goodsClassMapper;
   @Resource
   private LabelClassMapper labelClassMapper;
   private GoodsSubClassService goodsSubClassService;
   public GoodsClass getGoodsClass(long gcid) {
      return goodsClassDao.find(GoodsClass.class, gcid);
   @Resource
   private LabelClassService labelClassService;
   @Resource
   private TaoBaoClassService taoBaoClassService;
   public GoodsClass getGoodsClass(long id) {
      return goodsClassMapper.selectByPrimaryKey(id);
   }
   @Override
   public void deleteGoodsClass(final long id) {
      goodsClassDao.excute(new HibernateCallback() {
            public Object doInHibernate(Session session)
                  throws HibernateException {
               Query query = session.createQuery("delete from GoodsClass  where  id = ? ");
               query.setParameter(0, id);
               query.executeUpdate();
               return null;
            }
         });
   public int updateByPrimaryKey(GoodsClass record) {
      return goodsClassMapper.updateByPrimaryKey(record);
   }
   @Override
   @SuppressWarnings("unchecked")
   public List<GoodsClass> getByorderby(int orderby) {
      List<GoodsClass> goodsClassList = (List<GoodsClass>) goodsClassDao.excute(new HibernateCallback<List<GoodsClass>>() {
         public List<GoodsClass> doInHibernate(Session session) throws HibernateException {
            Query query = session.createQuery(" from GoodsClass rs where rs.orderby = ? ");
            query.setParameter(0, orderby);
            return query.list();
         }
      });
      return goodsClassList;
   }
   @SuppressWarnings("unchecked")
   public List<GoodsClassAdmin> getGoodsClassAdmins(int index, String platform, String packages, String key) {
      final int strat = index * Constant.PAGE_SIZE;
      platform = Utils.getMap().get(platform);
      com.yeshi.fanli.entity.system.System system = systemService.getSystem(platform, packages);
      List<GoodsClass> GoodsClassList = null;
      List<SuperGoodsClass> superGoodsClassList = null;
      Map<Long, GoodsClassAdmin> goodsClassAdminMap = new HashMap<Long, GoodsClassAdmin>();
      List<GoodsClassAdmin> goodsClassAdmin = new ArrayList<GoodsClassAdmin>();
      if (system == null) {
         final String likekey = "%" + key + "%";
         GoodsClassList = (List<GoodsClass>) goodsClassDao.excute(new HibernateCallback<List<GoodsClass>>() {
            public List<GoodsClass> doInHibernate(Session session) throws HibernateException {
               Query query = session.createQuery(" from GoodsClass rs where rs.name like ? ");
               query.setFirstResult(strat);
               query.setMaxResults(Constant.PAGE_SIZE);
               query.setParameter(0, likekey);
               return query.list();
            }
         });
         List<Long> gcIdList = new ArrayList<Long>();
         for (GoodsClass rs : GoodsClassList) {
            gcIdList.add(rs.getId());
         }
         superGoodsClassList = superGoodsClassService.getSuperGoodsClasss(gcIdList);
         Map<Long, List<System>> superMap = new HashMap<Long, List<System>>();
         Long rsId = null;
         List<System> systemList = null;
         for (SuperGoodsClass srs : superGoodsClassList) {
            rsId = srs.getGoodsClass().getId();
            systemList = superMap.get(rsId);
            if (systemList == null) {
               systemList = new ArrayList<System>();
            }
            systemList.add(srs.getSystem());
            superMap.put(rsId, systemList);
         }
         GoodsClassAdmin rsa = null;
         for (GoodsClass GoodsClass : GoodsClassList) {
            long id = GoodsClass.getId();
            rsa = goodsClassAdminMap.get(id);
            if (rsa == null) {
               rsa = new GoodsClassAdmin();
            }
            List<System> list = superMap.get(id);
            if (list != null) {
               rsa.getSystemList().addAll(superMap.get(id));
            }
            rsa.setGoodsClass(GoodsClass);
            goodsClassAdminMap.put(id, rsa);
         }
      } else if (system != null) {
         String likekey = "%" + key + "%";
         superGoodsClassList = superGoodsClassService.getSuperGoodsClassList(system.getId(), strat,
               Constant.PAGE_SIZE, likekey);
         List<Long> gcIdList = new ArrayList<Long>();
         for (SuperGoodsClass superGoodsClass : superGoodsClassList) {
            GoodsClass GoodsClass = superGoodsClass.getGoodsClass();
            gcIdList.add(GoodsClass.getId());
         }
         superGoodsClassList = superGoodsClassService.getSuperGoodsClasss(gcIdList);
         GoodsClassAdmin rsa = null;
         for (SuperGoodsClass superGoodsClass : superGoodsClassList) {
            GoodsClass goodsClass = superGoodsClass.getGoodsClass();
            rsa = goodsClassAdminMap.get(goodsClass.getId());
            if (rsa == null) {
               rsa = new GoodsClassAdmin(goodsClass);
            }
            rsa.getSystemList().add(superGoodsClass.getSystem());
            goodsClassAdminMap.put(goodsClass.getId(), rsa);
         }
      }
      Map map = Utils.orderBy(goodsClassAdminMap);
      Collection<GoodsClassAdmin> values = map.values();
      goodsClassAdmin.addAll(values);
      return goodsClassAdmin;
   public String getKeysById(Long id) {
      return goodsClassMapper.getKeysById(id);
   }
   public int getCount(String platform, String packages, final String key) {
      platform = Utils.getMap().get(platform);
      final System system = systemService.getSystem(platform, packages);
      return (Integer) goodsClassDao.excute(new HibernateCallback<Integer>() {
         public Integer doInHibernate(Session session) throws HibernateException {
            String k = "%" + key + "%";
            if (system == null) {
               // Query query = session.createSQLQuery("select
               // count(a.name) from (select `name` from yeshi_ec_class
               // where `name` like ?) a");
               Query query = session.createQuery("select count(gc.id) from GoodsClass gc where gc.name like ?");
               query.setParameter(0, k);
               Long result = (Long) query.uniqueResult();
               int intValue = result.intValue();
               return intValue;
            } else {
               // Query query =session.createSQLQuery("select count(a.name)
               // from (select hs.name from yeshi_ec_super_goodsclass shs
               // left join yeshi_ec_class hs on shs.goodsclass_id=hs.id
               // where shs.system_id=? and hs.name like ?) a");
               Query query = session.createQuery(
                     "select count(sgc.id) from SuperGoodsClass sgc where sgc.goodsClass.name like ? and sgc.system.id=?");
               query.setParameter(0, k);
               query.setParameter(1, system.getId());
               Long result = (Long) query.uniqueResult();
               int intValue = result.intValue();
               return intValue;
            }
         }
      });
   }
   // @Transactional
   // public void addGoodsClass(GoodsClass goodsClass) {
   // goodsClass.setCreatetime(java.lang.System.currentTimeMillis());
   // Serializable id = goodsClassDao.save(goodsClass);
   // Properties properties = new Properties();
   // InputStream in = null;
   // try {
   // in = new BufferedInputStream (new FileInputStream("url.properties"));
   // properties.load(in);
   // String url = (String) properties.get("url");
   // goodsClass.setUrl(url+id);
   // goodsClassDao.update(goodsClass);
   // } catch (FileNotFoundException e) {
   // e.printStackTrace();
   // } catch (IOException e) {
   // e.printStackTrace();
   // }finally{
   // if(in !=null){
   // try {
   // in.close();
   // } catch (IOException e) {
   // e.printStackTrace();
   // }
   // }
   // }
   // }
   public Integer addGoodsClass(final GoodsClass goodsClass) {
      return (Integer) goodsClassDao.excute(new HibernateCallback() {
         public Object doInHibernate(Session session) throws HibernateException {
            session.getTransaction().begin();
            goodsClass.setCreatetime(java.lang.System.currentTimeMillis());
            Serializable id = session.save(goodsClass);
            Properties properties = new Properties();
            InputStream in = null;
            try {
               in = this.getClass().getClassLoader().getResourceAsStream("url.properties");
               properties.load(in);
               String url = (String) properties.get("url");
               url = MessageFormat.format(url, id, goodsClass.getKey(), goodsClass.getName());
               goodsClass.setUrl(url);
               session.update(goodsClass);
               session.flush();
               session.getTransaction().commit();
            } catch (FileNotFoundException e) {
               session.getTransaction().rollback();
               e.printStackTrace();
               return 1;
            } catch (IOException e) {
               session.getTransaction().rollback();
               e.printStackTrace();
               return 2;
            } finally {
               if (in != null) {
                  try {
                     in.close();
                  } catch (IOException e) {
                     e.printStackTrace();
                  }
               }
            }
            return null;
         }
      });
   }
   @Transactional
   public void deleteGoodsClasss(long[] gcids) {
      for (long id : gcids) {
         superGoodsClassService.deleteSuperGoodsClass(id);
         classRecommendGoodsService.deleteClassGoodsByGC(id);
         goodsSecondClassService.deleteSecondClassByGC(id);
         goodsClassDao.delete(new GoodsClass(id));
      }
   }
   public Integer updateGoodsClass(final GoodsClass goodsClass) {
      return (Integer) goodsClassDao.excute(new HibernateCallback() {
         public Object doInHibernate(Session session) throws HibernateException {
            session.getTransaction().begin();
            goodsClass.setCreatetime(java.lang.System.currentTimeMillis());
            session.update(goodsClass);
            Properties properties = new Properties();
            InputStream in = null;
            try {
               in = this.getClass().getClassLoader().getResourceAsStream("url.properties");
               properties.load(in);
               String url = (String) properties.get("url");
               java.lang.System.out.println(goodsClass.getKey());
               java.lang.System.out.println(goodsClass.getName());
               String encodeKey = URLEncoder.encode(goodsClass.getKey(), "utf-8");
               String encodeName = URLEncoder.encode(goodsClass.getName(), "utf-8");
               url = MessageFormat.format(url, goodsClass.getId(), encodeKey, encodeName);
               goodsClass.setUrl(url);
               session.update(goodsClass);
               session.flush();
               session.getTransaction().commit();
            } catch (FileNotFoundException e) {
               session.getTransaction().rollback();
               e.printStackTrace();
               return 1;
            } catch (IOException e) {
               session.getTransaction().rollback();
               e.printStackTrace();
               return 2;
            } finally {
               if (in != null) {
                  try {
                     in.close();
                  } catch (IOException e) {
                     e.printStackTrace();
                  }
               }
            }
            return null;
         }
      });
   }
   @SuppressWarnings("unchecked")
   @Override
   public List<GoodsClass> queryAll(String platform, String packages) throws Exception{
   public GoodsClass selectByPrimaryKey(Long gcid) {
      return goodsClassMapper.selectByPrimaryKey(gcid);
   }
      List<System> defultList = systemService.getSystems();
   @Override
   public int updateByPrimaryKeySelective(GoodsClass record) {
      return goodsClassMapper.updateByPrimaryKeySelective(record);
   }
      platform = Utils.getMap().get(platform);
      com.yeshi.fanli.entity.system.System system = systemService.getSystem(platform, packages);
      List<GoodsClass> goodsClassList = new ArrayList<GoodsClass>();
      List<SuperGoodsClass> superGoodsClassList = null;
      List<Long> gcIdList = new ArrayList<Long>();
      if (system == null) {
         goodsClassList = (List<GoodsClass>) goodsClassDao.excute(new HibernateCallback<List<GoodsClass>>() {
            public List<GoodsClass> doInHibernate(Session session) throws HibernateException {
               Query query = session.createQuery(" from GoodsClass order by orderby");
               return query.list();
            }
         });
         if (goodsClassList == null || goodsClassList.size() == 0) {
            return null;
         }
         /* 存放类别id集合 */
         for (GoodsClass rs : goodsClassList) {
            gcIdList.add(rs.getId());
         }
   @Cacheable(value = "classCache", key = "'getGoodsClass-'+#gcid")
   @Override
   public GoodsClass getGoodsClassCache(long gcid) {
      return getGoodsClass(gcid);
   }
      } else if (system != null) {
         superGoodsClassList = superGoodsClassService.getSuperGoodsClassAll(system.getId());
         if (goodsClassList == null || goodsClassList.size() == 0) {
            return null;
         }
         for (SuperGoodsClass superGoodsClass : superGoodsClassList) {
            GoodsClass goodsClass = superGoodsClass.getGoodsClass();
            goodsClassList.add(goodsClass);
            gcIdList.add(goodsClass.getId());
         }
   @Override
   public void deleteGoodsClass(long id) {
      goodsClassMapper.deleteByPrimaryKey(id);
   }
   @Override
   public List<GoodsClass> listquery(Integer sex) throws Exception {
      List<GoodsClass> list = goodsClassMapper.getGoodsClassAll(sex);
      if (list != null && list.size() == 0) {
         return list;
      }
      /* 根据类别 id 查询关联系统数据 */
      superGoodsClassList = superGoodsClassService.getSuperGoodsClasss(gcIdList);
      for (GoodsClass gclass : goodsClassList) {
      for (GoodsClass gclass : list) {
         Long iosClick = gclass.getIosClick();
         Long androidClick = gclass.getAndroidClick();
@@ -403,142 +104,192 @@
            gclass.setCountClick(0l);
         }
         int countlabel = labelClassMapper.getCountQueryByClassId(gclass.getId());
         // 参数处理
         String searchParam = gclass.getSearchParam();
         if (searchParam == null) {
            gclass.setSearchParam("");
         } else {
            gclass.setSearchParam(searchParam);
         }
         // 标签
         int countlabel = labelClassService.getCountQueryByClassId(gclass.getId());
         gclass.setCountlabel(countlabel);
         List<Long> gList = new ArrayList<Long>();
         if (superGoodsClassList != null && superGoodsClassList.size() > 0) {
            for (SuperGoodsClass srs : superGoodsClassList) {
               long rsId = srs.getGoodsClass().getId();
               if (gclass.getId() == rsId) {
                  System gsystem = srs.getSystem();
                  gList.add(gsystem.getId());
               }
         List<TaoBaoClass> listTB = taoBaoClassService.listBySystemCid(0, Integer.MAX_VALUE, gclass.getId());
         if (listTB == null || listTB.size() == 0) {
            gclass.setTaobaoCids("");
         } else {
            String taobaoCids = "";
            for (TaoBaoClass taoBaoClass : listTB) {
               taobaoCids = taobaoCids + taoBaoClass.getCategoryName() + "-" + taoBaoClass.getCategoryId() + ",";
            }
         }
         List<System> newList = new ArrayList<System>();
         // 是否有关联系统选项
         for (System dsystem : defultList) {
            System newsystem = new System();
            PropertyUtils.copyProperties(newsystem, dsystem);
            newsystem.setCheck(0);
            if (gList != null && gList.size() > 0) {
               Long did = newsystem.getId();
               for (Long gid : gList) {
                  if (gid == did) {
                     newsystem.setCheck(1);
                  }
               }
            }
            newList.add(newsystem);
         }
         gclass.setSystemList(newList);
      }
      return goodsClassList;
            if (!StringUtil.isNullOrEmpty(taobaoCids)) {
               taobaoCids = taobaoCids.substring(0, taobaoCids.length() - 1);
            }
            gclass.setTaobaoCids(taobaoCids);
         }
      }
      return list;
   }
   public List<GoodsClass> getGoodsClassAll() {
      return goodsClassDao.list("from GoodsClass order by orderby");
      return goodsClassMapper.getGoodsClassAll(null);
   }
   @Override
   public String getKwById(Long id) {
      return goodsClassMapper.getKwById(id);
   }
   @Override
   public GoodsClass selectByPrimaryKey(Long gcid) {
      return goodsClassMapper.selectByPrimaryKey(gcid);
   }
   @Override
   public int updateByPrimaryKeySelective(GoodsClass record) {
      return goodsClassMapper.updateByPrimaryKeySelective(record);
   }
   @Override
   public List<GoodsClass> queryAll() {
      return goodsClassMapper.queryAll();
   }
   @Cacheable(value="classCache",key="'getGoodsClass-'+#gcid")
   @Override
   public GoodsClass getGoodsClassCache(long gcid) {
      return getGoodsClass(gcid);
   }
   @Transactional(rollbackFor=Exception.class)
   public void saveObject(MultipartFile file, GoodsClass record) throws GoodsClassException, Exception {
   @Override
   @SuppressWarnings("unchecked")
   public long saveAdd(GoodsClass record, MultipartFile file) throws Exception{
      long result = 0;
      record.setCreatetime(java.lang.System.currentTimeMillis());
      /*  上传新图片  */
      if (file != null) {
         InputStream inputStream = file.getInputStream();
         String contentType = file.getContentType();
         String type = contentType.substring(contentType.indexOf("/") + 1);
         // 上传文件相对位置
         String fileUrl="ClassImg/"+UUID.randomUUID().toString().replace("-", "") + "." + type;
         String uploadFilePath = COSManager.getInstance().uploadFile(inputStream, fileUrl).getUrl();
         record.setPicture(uploadFilePath);
      String name = record.getName();
      if (name == null || name.trim().length() == 0) {
         throw new GoodsClassException(1, "分类名称不能为空");
      }
      
      addGoodsClass(record);
      Integer sex = record.getSex();
      if (sex == null) {
         throw new GoodsClassException(1, "性别设置不能为空");
      }
      
      record.setOrderby((int)record.getId());
      updateGoodsClass(record);
      long id = record.getId();
      if (id > 0)
         return id;
      return result;
      // 图片上传
      String picture = null;
      if (file != null) {
         picture = uploadPicture(file);
      }
      String params = record.getSearchParam();
      if (params == null || params.trim().length() == 0 || "null".equalsIgnoreCase(params)) {
         record.setSearchParam(null);
      } else if (!StringUtil.isJson(params)) {
         throw new GoodsClassException(1, "筛选条件非JSON格式");
      }
      Long id = record.getId();
      if (id == null) {
         record.setPicture(picture);
         record.setIosClick(0L);
         record.setAndroidClick(0L);
         record.setCreatetime(java.lang.System.currentTimeMillis());
         Integer state = record.getState();
         if (state == null) {
            record.setState(0);
         }
         if (params == null || params.trim().length() == 0 || "null".equalsIgnoreCase(params)) {
            // 搜索条件:有券、在售价20-200、牛皮癣轻微
            record.setSearchParam(
                  "{\"quan\":1,\"endPrice\":220,\"includeGoodRate\":true,\"baoYou\":true,\"ip\":\"218.72.111.105\"}");
         }
         // 排序
         int maxOrder = goodsClassMapper.getMaxOrder();
         record.setOrderby(maxOrder + 1);
         goodsClassMapper.insert(record);
      } else {
         // 修改
         GoodsClass resultObj = goodsClassMapper.selectByPrimaryKey(id);
         if (resultObj == null) {
            throw new GoodsClassException(1, "修改内容已不存在");
         }
         if (picture != null && picture.trim().length() > 0) {
            // 删除老图
            removePicture(resultObj.getPicture());
            // 存储新图
            record.setPicture(picture);
         } else {
            record.setPicture(resultObj.getPicture());
         }
         record.setIosClick(resultObj.getIosClick());
         record.setOrderby(resultObj.getOrderby());
         record.setAndroidClick(resultObj.getAndroidClick());
         record.setCreatetime(resultObj.getCreatetime());
         goodsClassMapper.updateByPrimaryKey(record);
      }
      // 保存淘宝商品分类id
      String taobaoCids = record.getTaobaoCids();
      List<Long> tbCidList = new ArrayList<>();
      if (!StringUtil.isNullOrEmpty(taobaoCids) && !"null".equalsIgnoreCase(taobaoCids)) {
         String[] sts = taobaoCids.split(",");
         for (String st : sts) {
            String cid = st.split("-")[st.split("-").length - 1].trim();
            tbCidList.add(Long.parseLong(cid));
         }
      }
      taoBaoClassService.save(record.getId(), tbCidList);
   }
   /**
    * 上传图片
    *
    * @param file
    * @return
    * @throws Exception
    */
   public String uploadPicture(MultipartFile file) throws Exception {
      // 文件解析
      InputStream inputStream = file.getInputStream();
      String contentType = file.getContentType();
      String type = contentType.substring(contentType.indexOf("/") + 1);
      // 文件路径
      String filePath = FilePathEnum.goodsClass.getPath() + UUID.randomUUID().toString().replace("-", "") + "." + type;
      // 执行上传
      String fileLink = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
      return fileLink;
   }
   /**
    * 删除图片-不更新数据库
    *
    * @param record
    * @throws Exception
    */
   public void removePicture(String picture) throws Exception {
      if (!Constant.IS_TEST)
         if (picture != null && picture.trim().length() > 0) {
            COSManager.getInstance().deleteFile(picture);
         }
   }
   @Override
   public void uploadPicture(GoodsClass record, MultipartFile file) throws Exception {
      InputStream inputStream = file.getInputStream();
      String contentType = file.getContentType();
      String type = contentType.substring(contentType.indexOf("/") + 1);
      // 上传文件相对位置
      String fileUrl="ClassImg/"+UUID.randomUUID().toString().replace("-", "") + "." + type;
      boolean deleteFile =true;
      /*  修改图片时,先删除已存在图片  */
      String fileUrl = FilePathEnum.goodsClassOld.getPath()+ UUID.randomUUID().toString().replace("-", "") + "." + type;
      boolean deleteFile = true;
      /* 修改图片时,先删除已存在图片 */
      String picture = record.getPicture();
      if (!StringUtil.isNullOrEmpty(picture))
      if (!StringUtil.isNullOrEmpty(picture))
         deleteFile = COSManager.getInstance().deleteFile(picture);
      String uploadFilePath = null;
      /*  上传新图片  */
      /* 上传新图片 */
      if (deleteFile) {
         uploadFilePath = COSManager.getInstance().uploadFile(inputStream, fileUrl).getUrl();
      }
      /*  更新数据库信息  */
      /* 更新数据库信息 */
      if (!StringUtil.isNullOrEmpty(uploadFilePath)) {
         record.setPicture(uploadFilePath);
         updateGoodsClass(record);
         goodsClassMapper.updateByPrimaryKey(record);
      }
   }
   /**
@@ -546,24 +297,137 @@
    */
   @Override
   public void removePicture(GoodsClass record) throws Exception {
      String fileUrl = record.getPicture();
      boolean deleteFile = true;
      if (StringUtil.isNullOrEmpty(fileUrl)) {
         return;
      }
      deleteFile = COSManager.getInstance().deleteFile(fileUrl);
      if (deleteFile) {
         record.setPicture(null);
         // 更新数据库
          updateGoodsClass(record);
      }
      return;
         goodsClassMapper.updateByPrimaryKey(record);
      }
   }
   @Override
   public void switchState(Long id) throws GoodsClassException {
      if (id == null) {
         throw new GoodsClassException(1, "请传递正确参数");
      }
      GoodsClass resultObj = goodsClassMapper.selectByPrimaryKey(id);
      if (resultObj == null) {
         throw new GoodsClassException(1, "此内容已不存在");
      }
      Integer state = resultObj.getState();
      if (state == null || state == 0) {
         state = 1;
      } else {
         state = 0;
      }
      GoodsClass updateObj = new GoodsClass();
      updateObj.setId(id);
      updateObj.setState(state);
      goodsClassMapper.updateByPrimaryKeySelective(updateObj);
   }
   
   @Override
   @Cacheable(value = "classCache", key = "'getEffectiveClassCache'")
   public List<GoodsClass> getEffectiveClassCache() {
      return goodsClassMapper.getEffectiveClass();
   }
   @Override
   @Cacheable(value = "classCache", key = "'getClassListAllCache'+#changePicture")
   public List<Map<String, Object>> getClassListAllCache(boolean changePicture) throws Exception {
      List<GoodsClass> goodsClassList = goodsClassMapper.getEffectiveClass();
      if (goodsClassList == null || goodsClassList.size() == 0) {
         return null;
      }
      List<Long> listID = new ArrayList<Long>();
      for (GoodsClass coodsClass : goodsClassList) {
         listID.add(coodsClass.getId());
      }
      List<GoodsSubClass> listSub = goodsSubClassService.queryByListCid(listID);
      Gson gson = new GsonBuilder().create();
      List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
      for (GoodsClass goodsClass : goodsClassList) {
         List<GoodsSubClass> subClassList = new ArrayList<GoodsSubClass>();
         if (listSub != null && listSub.size() > 0) {
            Iterator<GoodsSubClass> iterator = listSub.iterator();
            while (iterator.hasNext()) {
               GoodsSubClass goodsSubClass = iterator.next();
               GoodsClass goodsClassInner = goodsSubClass.getRootClass();
               if (goodsClass.getId() == goodsClassInner.getId()) {
                  // 1.5.3新版图片替换
                  if (changePicture) {
                     String pictureSecond = goodsSubClass.getPictureSecond();
                     if (pictureSecond != null && pictureSecond.trim().length() > 0) {
                        goodsSubClass.setPicture(pictureSecond);
                     }
                  }
                  // 对应下子分类
                  subClassList.add(goodsSubClass);
                  iterator.remove();
               }
            }
         }
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("gclass", goodsClass);
         map.put("subList", gson.toJson(subClassList));
         list.add(map);
      }
      return list;
   }
   @Override
   @Transactional(rollbackFor=Exception.class)
   public void updateOrder(Long id, Integer moveType) throws GoodsClassException {
      if (id == null || moveType == null || (!moveType.equals(1) && !moveType.equals(-1))) {
         throw new GoodsClassException(1, "请传递正确参数");
      }
      GoodsClass resultObj = goodsClassMapper.selectByPrimaryKey(id);
      if (resultObj == null) {
         throw new GoodsClassException(1, "此内容已不存在");
      }
      Integer order = resultObj.getOrderby();
      // 获取交换对象
      GoodsClass exchangeObject = goodsClassMapper.getByAdjoinOrder(order, moveType);
      if (exchangeObject == null) {
         if (moveType == 1) {
            throw new GoodsClassException(1, "在相同使用地方中优先级已经最低了");
         } else {
            throw new GoodsClassException(1, "在相同使用地方中优先级已经最高了");
         }
      }
      resultObj.setOrderby(exchangeObject.getOrderby());
      exchangeObject.setOrderby(order);
      goodsClassMapper.updateByPrimaryKey(resultObj);
      goodsClassMapper.updateByPrimaryKey(exchangeObject);
   }
}