From 626d711cb15896055c13fe344eb7fcc824589715 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期四, 19 十二月 2019 15:38:42 +0800 Subject: [PATCH] 帮助中心 --- fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandInfoServiceImpl.java | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 255 insertions(+), 31 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandInfoServiceImpl.java index 513f76e..5689cdb 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandInfoServiceImpl.java @@ -10,19 +10,24 @@ import javax.annotation.Resource; import org.springframework.cache.annotation.Cacheable; +import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.yeshi.utils.tencentcloud.COSManager; import com.yeshi.fanli.dao.brand.BrandShopCaheDao; import com.yeshi.fanli.dao.mybatis.brand.BrandInfoMapper; +import com.yeshi.fanli.dto.ConfigParamsDTO; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; +import com.yeshi.fanli.entity.brand.BrandClass; import com.yeshi.fanli.entity.brand.BrandGoodsCahe; import com.yeshi.fanli.entity.brand.BrandInfo; +import com.yeshi.fanli.entity.brand.BrandShopCahe; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoShop; import com.yeshi.fanli.exception.brand.BrandInfoException; +import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.brand.BrandClassShopService; import com.yeshi.fanli.service.inter.brand.BrandGoodsCaheService; import com.yeshi.fanli.service.inter.brand.BrandInfoService; @@ -68,31 +73,73 @@ @Resource private BrandShopCaheService brandShopCaheService; + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + @Override public void saveObject(MultipartFile file, BrandInfo record) throws BrandInfoException { String name = record.getName(); - if (name == null || name.trim().length() == 0) + if (StringUtil.isNullOrEmpty(name)) throw new BrandInfoException(1, "鍚嶇О涓嶈兘涓虹┖"); - Integer state = record.getState(); - if (state == null) - record.setState(0); + BrandClass brandClass = record.getBrandClass(); + if (brandClass ==null || brandClass.getId() == null) + throw new BrandInfoException(1, "鍒嗙被涓嶈兘涓虹┖"); - // 鍥剧墖涓婁紶 + BrandInfo existBrand = brandInfoMapper.selectByUniqueName(name.trim(), brandClass.getId(), record.getId()); + if (existBrand != null) + throw new BrandInfoException(1, "璇ュ垎绫讳腑宸插瓨鍦細" + name.trim()); + + Integer state = record.getState(); + if (state == null) { + state = 0; + record.setState(state); + } + + String picture = null; if (file != null) { - try { + try { // 鍥剧墖涓婁紶 picture = uploadPicture(file); } catch (Exception e) { throw new BrandInfoException(1, "鍥剧墖涓婁紶澶辫触"); } } - + + String searchKey = record.getSearchKey(); + if (!StringUtil.isNullOrEmpty(searchKey)) { + if (StringUtil.isNullOrEmpty(record.getSearchKeyJD())) + record.setSearchKeyJD(searchKey); + + if (StringUtil.isNullOrEmpty(record.getSearchKeyPDD())) + record.setSearchKeyPDD(searchKey); + } + + String shopKey = record.getShopKey(); + if (!StringUtil.isNullOrEmpty(shopKey)) { + if (StringUtil.isNullOrEmpty(record.getShopKeyJD())) + record.setShopKeyJD(shopKey); + + if (StringUtil.isNullOrEmpty(record.getShopKeyPDD())) + record.setShopKeyPDD(shopKey); + } + record.setName(name.trim()); + record.setUpdateTime(new Date()); + Long id = record.getId(); if (id == null) { + record.setIcon(picture); + record.setWeight(500.00); + record.setGoodsTotal(0); + record.setShopTotal(0); record.setCreateTime(new Date()); - record.setUpdateTime(new Date()); brandInfoMapper.insert(record); + + BrandInfo resultObj = new BrandInfo(); + resultObj.setId(record.getId()); + resultObj.setOrder(Integer.valueOf(record.getId().toString())); + brandInfoMapper.updateByPrimaryKeySelective(resultObj); } else { BrandInfo resultObj = brandInfoMapper.selectByPrimaryKey(id); if (resultObj == null) @@ -100,8 +147,8 @@ if (picture != null && picture.trim().length() > 0) { // 鍒犻櫎鑰佸浘 - if (picture != null && picture.trim().length() > 0 && !Constant.IS_TEST) { - COSManager.getInstance().deleteFile(picture); + if (resultObj.getIcon() != null && resultObj.getIcon().trim().length() > 0 && !Constant.IS_TEST) { + COSManager.getInstance().deleteFile(resultObj.getIcon()); }; // 瀛樺偍鏂板浘 record.setIcon(picture); @@ -109,10 +156,42 @@ record.setIcon(resultObj.getIcon()); } - record.setGoodsTotal(resultObj.getGoodsTotal()); + if (state == 0){ + record.setGoodsTotal(0); + record.setShopTotal(0); + } else { + record.setGoodsTotal(resultObj.getGoodsTotal()); + record.setShopTotal(resultObj.getShopTotal()); + } + record.setOrder(resultObj.getOrder()); + record.setWeight(resultObj.getWeight()); record.setCreateTime(resultObj.getCreateTime()); - record.setUpdateTime(new Date()); brandInfoMapper.updateByPrimaryKey(record); + + if (state == 0){ + executor.execute(new Runnable() { + @Override + public void run() { + brandGoodsCaheService.removeByBrandId(id); + brandShopCaheService.removeByBrandId(id); + } + }); + } + } + + if (state == 1) { + executor.execute(new Runnable() { + @Override + public void run() { + BrandInfo numInfo = brandGoodsCaheService.addBrandGoods(record); + + BrandInfo update = new BrandInfo(); + update.setId(record.getId()); + update.setGoodsTotal(numInfo.getGoodsTotal()); + update.setShopTotal(numInfo.getShopTotal()); + brandInfoMapper.updateByPrimaryKeySelective(update); + } + }); } } @@ -140,17 +219,57 @@ @Override public int deleteBatchByPrimaryKey(List<Long> list) { + executor.execute(new Runnable() { + @Override + public void run() { + for (Long id: list) { + brandGoodsCaheService.removeByBrandId(id); + brandShopCaheService.removeByBrandId(id); + } + } + }); + return brandInfoMapper.deleteBatchByPrimaryKey(list); } + + @Override + public void updateOrder(Long id, Integer moveType) throws BrandInfoException { + if (moveType == null || (!moveType.equals(1) && !moveType.equals(-1))) + throw new BrandInfoException(1, "浼犻�掔殑绫诲瀷涓嶆纭�"); + + if (id == null) + throw new BrandInfoException(1, "ID涓嶈兘涓虹┖"); + + BrandInfo resultObj = brandInfoMapper.selectByPrimaryKey(id); + if (resultObj == null) + throw new BrandInfoException(1, "鎿嶄綔鏁版嵁宸蹭笉瀛樺湪"); + + Integer oldOrder = resultObj.getOrder(); + BrandInfo changeObj = brandInfoMapper.getByAdjoinOrder(resultObj.getBrandClass().getId(),oldOrder, moveType); + if (changeObj == null ) + throw new BrandInfoException(1, "宸茬粡鍦ㄦ渶杈圭紭锛屾棤鍙氦鎹㈢殑浣嶇疆"); + + BrandInfo changeObj1 = new BrandInfo(); + changeObj1.setId(id); + changeObj1.setOrder(changeObj.getOrder()); + + BrandInfo changeObj2 = new BrandInfo(); + changeObj2.setId(changeObj.getId()); + changeObj2.setOrder(oldOrder); + + brandInfoMapper.updateByPrimaryKeySelective(changeObj1); + brandInfoMapper.updateByPrimaryKeySelective(changeObj2); + } + @Override - public List<BrandInfo> listQuery(long start, int count, String key, Long cid, Integer state) { - return brandInfoMapper.listQuery(start, count, key, cid, state); + public List<BrandInfo> listQuery(long start, int count, List<String> keys, Long cid, Integer state, Integer showState) { + return brandInfoMapper.listQuery(start, count, keys, cid, state,showState); } @Override - public long countQuery(String key, Long cid, Integer state) { - return brandInfoMapper.countQuery(key, cid, state); + public long countQuery(List<String> keys, Long cid, Integer state, Integer showState) { + return brandInfoMapper.countQuery(keys, cid, state, showState); } @Override @@ -205,6 +324,52 @@ return brandClassShopService.countBrandShopinfo(cid); } + + @Override + public void removeAgoByDate(Date date) { + // 鍒犻櫎鍟嗗搧 + brandGoodsCaheService.removeAgoByDate(date); + + // 鍒犻櫎搴楅摵 + brandShopCaheService.removeAgoByDate(date); + + long count = brandInfoMapper.countValidByCid(null); + if (count == 0) + return; + + for (int page = 0; page < (count / 100) + 1; page++) { + updateTotalGoods(page * 100, 100); + } + } + + /** + * 鏇存柊鍟嗗搧鏁伴噺 + * @param start + * @param count + */ + private void updateTotalGoods(long start, int count) { + List<BrandInfo> list = brandInfoMapper.listValidAll(start, count); + if (list == null || list.size() == 0) + return; + + for (BrandInfo brandInfo : list) { + long goodsTotal = brandGoodsCaheService.countByBrandId(brandInfo.getId()); + + BrandInfo updateInfo = new BrandInfo(); + updateInfo.setId(brandInfo.getId()); + updateInfo.setGoodsTotal((int)goodsTotal); + List<BrandShopCahe> listshop = brandShopCaheService.getByBrandId(brandInfo.getId()); + if (listshop == null) { + updateInfo.setShopTotal(0); + } else { + updateInfo.setShopTotal(listshop.size()); + } + updateInfo.setWeight(Math.random() * 1000); + brandInfoMapper.updateByPrimaryKeySelective(updateInfo); + } + } + + @Override public void addShopAndGoods(long start, int count) { List<BrandInfo> list = brandInfoMapper.listValidAll(start, count); @@ -212,16 +377,25 @@ return; for (BrandInfo brandInfo : list) { - String key = brandInfo.getName(); - if (StringUtil.isNullOrEmpty(key)) - continue; - - // 娣诲姞鍟嗗搧 - int goodsTotal = brandGoodsCaheService.addBrandGoods(brandInfo); - - brandInfo.setGoodsTotal(goodsTotal); - brandInfo.setUpdateTime(new Date()); - brandInfoMapper.updateByPrimaryKeySelective(brandInfo); + try { + String name = brandInfo.getName(); + String searchKey = brandInfo.getSearchKey(); + if (StringUtil.isNullOrEmpty(name) && StringUtil.isNullOrEmpty(searchKey)) + continue; + // 娣诲姞鍟嗗搧 + BrandInfo numInfo = brandGoodsCaheService.addBrandGoods(brandInfo); + + BrandInfo updateInfo = new BrandInfo(); + updateInfo.setId(brandInfo.getId()); + updateInfo.setWeight(Math.random() * 1000); + updateInfo.setGoodsTotal(numInfo.getGoodsTotal()); + updateInfo.setShopTotal(numInfo.getShopTotal()); + updateInfo.setUpdateTime(new Date()); + brandInfoMapper.updateByPrimaryKeySelective(updateInfo); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } } @@ -243,7 +417,7 @@ return brandInfoMapper.listValidByCidToApp(cid); } - @Cacheable(value = "brandCache", key = "'listValidToApp-'+#start+'-'+#start +'-'+#cid") + @Cacheable(value = "brandCache", key = "'listValidToApp-'+#start+'-'+#cid") @Override public List<BrandInfoVO> listValidToApp(long start, int count, Long cid) { List<BrandInfoVO> list = brandInfoMapper.listBrandInfoVO(start, count, cid); @@ -252,7 +426,7 @@ BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); - + ConfigParamsDTO configParamsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,hongBaoManageService.getVIPFanLiRate()); List<BrandInfoVO> listInfo = new ArrayList<BrandInfoVO>(); for (int i = 0; i < list.size(); i++) { BrandInfoVO brand = list.get(i); @@ -267,19 +441,19 @@ for (BrandGoodsCahe brandGoods : listGoods) { JDGoods goodsJD = brandGoods.getGoodsJD(); if (goodsJD != null) { - listGoodsVO.add(GoodsDetailVOFactory.convertJDGoods(goodsJD, fanLiRate, shareRate)); + listGoodsVO.add(GoodsDetailVOFactory.convertJDGoods(goodsJD, configParamsDTO)); continue; } TaoBaoGoodsBrief goodsTB = brandGoods.getGoodsTB(); if (goodsTB != null) { - listGoodsVO.add(GoodsDetailVOFactory.convertTaoBao(goodsTB, null, fanLiRate, shareRate)); + listGoodsVO.add(GoodsDetailVOFactory.convertTaoBao(goodsTB, configParamsDTO)); continue; } PDDGoodsDetail goodsPDD = brandGoods.getGoodsPDD(); if (goodsPDD != null) { - listGoodsVO.add(GoodsDetailVOFactory.convertPDDGoods(goodsPDD, fanLiRate, shareRate)); + listGoodsVO.add(GoodsDetailVOFactory.convertPDDGoods(goodsPDD, configParamsDTO)); continue; } } @@ -291,4 +465,54 @@ } return listInfo; } + + + + + @Override + @Cacheable(value = "brandCache", key = "'listByAlikeName-'+#key") + public BrandInfoVO listByAlikeName(String key) { + if (StringUtil.isNullOrEmpty(key)) + return null; + + List<BrandInfoVO> list = brandInfoMapper.listByAlikeName(key); + if (list == null || list.size() == 0) + return null; + + BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); + BigDecimal shareRate = hongBaoManageService.getShareRate(); + ConfigParamsDTO configParamsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,hongBaoManageService.getVIPFanLiRate()); + + BrandInfoVO brand = list.get(0); + List<BrandGoodsCahe> listGoods = brandGoodsCaheService.getByBrandId(1, 3, brand.getId()); + if (listGoods == null || listGoods.size() < 3) + return null; + + List<GoodsDetailVO> listGoodsVO = new ArrayList<GoodsDetailVO>(); + for (BrandGoodsCahe brandGoods : listGoods) { + JDGoods goodsJD = brandGoods.getGoodsJD(); + if (goodsJD != null) { + listGoodsVO.add(GoodsDetailVOFactory.convertJDGoods(goodsJD, configParamsDTO)); + continue; + } + + TaoBaoGoodsBrief goodsTB = brandGoods.getGoodsTB(); + if (goodsTB != null) { + listGoodsVO.add(GoodsDetailVOFactory.convertTaoBao(goodsTB, configParamsDTO)); + continue; + } + + PDDGoodsDetail goodsPDD = brandGoods.getGoodsPDD(); + if (goodsPDD != null) { + listGoodsVO.add(GoodsDetailVOFactory.convertPDDGoods(goodsPDD, configParamsDTO)); + continue; + } + } + + if (listGoodsVO.size() < 3) + return null; + + brand.setListGoods(listGoodsVO); + return brand; + } } -- Gitblit v1.8.0