From cdcbed9af813b2a02cdc01eefa24db8bec6b51a9 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期三, 27 三月 2019 12:17:33 +0800 Subject: [PATCH] 主分类 + 子分类 DAO改造 --- fanli/src/main/java/com/yeshi/fanli/service/impl/goods/GoodsClassServiceImpl.java | 536 +++++++++++++++++++++------------------------------------- 1 files changed, 195 insertions(+), 341 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/GoodsClassServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/GoodsClassServiceImpl.java index 1e55f2e..0e39efe 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/GoodsClassServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/GoodsClassServiceImpl.java @@ -1,57 +1,40 @@ 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.web.multipart.MultipartFile; import org.yeshi.utils.tencentcloud.COSManager; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.yeshi.fanli.dao.goods.GoodsClassDao; 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.clazz.GoodsSubClass; import com.yeshi.fanli.entity.bus.su.clazz.SuperGoodsClass; import com.yeshi.fanli.entity.system.BusinessSystem; +import com.yeshi.fanli.exception.GoodsClassException; import com.yeshi.fanli.service.inter.config.BusinessSystemService; import com.yeshi.fanli.service.inter.goods.GoodsClassService; -import com.yeshi.fanli.service.inter.goods.GoodsSecondClassService; import com.yeshi.fanli.service.inter.goods.GoodsSubClassService; import com.yeshi.fanli.service.inter.goods.SuperGoodsClassService; -import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.service.inter.lable.LabelClassService; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.Utils; @Service public class GoodsClassServiceImpl implements GoodsClassService { - - @Resource - private GoodsClassDao goodsClassDao; @Resource private BusinessSystemService businessSystemService; @@ -60,290 +43,69 @@ private SuperGoodsClassService superGoodsClassService; @Resource - private GoodsSecondClassService goodsSecondClassService; - - @Resource private GoodsClassMapper goodsClassMapper; - - @Resource - private LabelClassMapper labelClassMapper; - @Resource private GoodsSubClassService goodsSubClassService; + @Resource + private LabelClassService labelClassService; + - public GoodsClass getGoodsClass(long gcid) { - return goodsClassDao.find(GoodsClass.class, gcid); + 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; + public String getKeysById(Long id) { + return goodsClassMapper.getKeysById(id); + } + + @Override + public GoodsClass selectByPrimaryKey(Long gcid) { + return goodsClassMapper.selectByPrimaryKey(gcid); + } + + @Override + public int updateByPrimaryKeySelective(GoodsClass record) { + return goodsClassMapper.updateByPrimaryKeySelective(record); } - @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); - BusinessSystem system = businessSystemService.getBusinessSystem(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<BusinessSystem>> superMap = new HashMap<Long, List<BusinessSystem>>(); - Long rsId = null; - List<BusinessSystem> systemList = null; - for (SuperGoodsClass srs : superGoodsClassList) { - rsId = srs.getGoodsClass().getId(); - systemList = superMap.get(rsId); - if (systemList == null) { - systemList = new ArrayList<BusinessSystem>(); - } - 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<BusinessSystem> 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; - + @Cacheable(value="classCache",key="'getGoodsClass-'+#gcid") + @Override + public GoodsClass getGoodsClassCache(long gcid) { + return getGoodsClass(gcid); } + + @Override + public void deleteGoodsClass(long id) { + goodsClassMapper.deleteByPrimaryKey(id); + } + + + @Override public int getCount(String platform, String packages, final String key) { + + Long systemId = null; + platform = Utils.getMap().get(platform); - final BusinessSystem system = businessSystemService.getBusinessSystem(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); - goodsSecondClassService.deleteSecondClassByGC(id); - goodsClassDao.delete(new GoodsClass(id)); + + BusinessSystem system = businessSystemService.getBusinessSystem(platform, packages); + if (system != null) { + systemId = system.getId(); } - } - - 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; - } - }); + ; + return goodsClassMapper.countByName(key, systemId); } - @SuppressWarnings("unchecked") + @Override public List<GoodsClass> queryAll(String platform, String packages) throws Exception{ @@ -358,12 +120,7 @@ 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(); - } - }); + goodsClassList = goodsClassMapper.getGoodsClassAll(); if (goodsClassList == null || goodsClassList.size() == 0) { return null; @@ -375,7 +132,7 @@ } } else if (system != null) { - superGoodsClassList = superGoodsClassService.getSuperGoodsClassAll(system.getId()); + superGoodsClassList = superGoodsClassService.getSuperGoodsClassBySystemId(system.getId()); if (goodsClassList == null || goodsClassList.size() == 0) { return null; @@ -406,8 +163,16 @@ } else { gclass.setCountClick(0l); } + + String searchParam = gclass.getSearchParam(); + if (searchParam == null) { + gclass.setSearchParam(""); + } else { + gclass.setSearchParam(searchParam); + } + - int countlabel = labelClassMapper.getCountQueryByClassId(gclass.getId()); + int countlabel = labelClassService.getCountQueryByClassId(gclass.getId()); gclass.setCountlabel(countlabel); List<Long> gList = new ArrayList<Long>(); @@ -453,67 +218,124 @@ } public List<GoodsClass> getGoodsClassAll() { - return goodsClassDao.list("from GoodsClass order by orderby"); + return goodsClassMapper.getGoodsClassAll(); } - @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); - } - - @Override - @SuppressWarnings("unchecked") - public long saveAdd(GoodsClass record, MultipartFile file) throws Exception{ + public void saveObject(MultipartFile file, GoodsClass record) throws GoodsClassException, 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); - record.setOrderby((int)record.getId()); - updateGoodsClass(record); + // 鍥剧墖涓婁紶 + String picture = null; + if (file != null) { + picture = uploadPicture(file); + } - long id = record.getId(); - if (id > 0) - return id; + String params = record.getSearchParam(); + if (params== null || params.trim().length() == 0 || "null".equalsIgnoreCase(params)) { + record.setSearchParam(null); + } else { + record.setSearchParam(params); + } - return result; + + + Long id = record.getId(); + if (id == null) { + record.setPicture(picture); + record.setIosClick(0L); + record.setAndroidClick(0L); + + record.setCreatetime(java.lang.System.currentTimeMillis()); + + 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); + + // 榛樿鎵�鏈夌郴缁熶娇鐢� + List<BusinessSystem> listSystems = businessSystemService.getBusinessSystems(); + if (listSystems != null && listSystems.size() > 0) { + for(BusinessSystem businessSystem: listSystems) { + SuperGoodsClass superGoodsClass = new SuperGoodsClass(); + superGoodsClass.setGoodsClass(record);; + superGoodsClass.setSystem(businessSystem); + superGoodsClassService.insertSelective(superGoodsClass); + } + } + + } 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); + } } + + + /** + * 涓婁紶鍥剧墖 + * @param file + * @return + * @throws Exception + */ + public String uploadPicture(MultipartFile file) throws Exception { + + // 鏂囦欢瑙f瀽 + InputStream inputStream = file.getInputStream(); + String contentType = file.getContentType(); + String type = contentType.substring(contentType.indexOf("/") + 1); + + // 鏂囦欢璺緞 + String filePath="/img/GoodsClass/"+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 (picture != null && picture.trim().length() > 0) { + COSManager.getInstance().deleteFile(picture); + } + } + + + + @Override public void uploadPicture(GoodsClass record, MultipartFile file) throws Exception { @@ -540,7 +362,7 @@ /* 鏇存柊鏁版嵁搴撲俊鎭� */ if (!StringUtil.isNullOrEmpty(uploadFilePath)) { record.setPicture(uploadFilePath); - updateGoodsClass(record); + goodsClassMapper.updateByPrimaryKey(record); } } @@ -562,7 +384,7 @@ if (deleteFile) { record.setPicture(null); // 鏇存柊鏁版嵁搴� - updateGoodsClass(record); + goodsClassMapper.updateByPrimaryKey(record); } } @@ -630,5 +452,37 @@ return list; } + + + @Override + @Transactional + 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); + } } -- Gitblit v1.8.0