From eda5d0e998204c7a49ab84d8528569b765bec2f9 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期五, 20 十二月 2019 10:05:10 +0800
Subject: [PATCH] 品牌日志
---
fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/SwiperPictureServiceImpl.java | 365 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 276 insertions(+), 89 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/SwiperPictureServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/SwiperPictureServiceImpl.java
index 2032cb9..e45b8f1 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/SwiperPictureServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/SwiperPictureServiceImpl.java
@@ -1,23 +1,34 @@
package com.yeshi.fanli.service.impl.homemodule;
import java.io.InputStream;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.UUID;
import javax.annotation.Resource;
-import javax.transaction.Transactional;
import org.springframework.cache.annotation.Cacheable;
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.mybatis.homemodule.SwiperPictureMapper;
+import com.yeshi.fanli.entity.AppVersionInfo;
+import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl;
+import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType;
+import com.yeshi.fanli.entity.bus.homemodule.Special;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
-import com.yeshi.fanli.exception.NotExistObjectException;
+import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.exception.banner.SwiperPictureException;
-import com.yeshi.fanli.service.inter.config.SystemConfigService;
+import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
+import com.yeshi.fanli.service.inter.config.AppVersionService;
+import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.util.StringUtil;
@@ -26,94 +37,122 @@
@Resource
private SwiperPictureMapper swiperPictureMapper;
-
+
@Resource
- private SystemConfigService systemConfigService;
-
- @Override
- public int deleteByPrimaryKey(Long id) throws SwiperPictureException{
- return swiperPictureMapper.deleteByPrimaryKey(id);
- }
+ private JumpDetailV2Service jumpDetailV2Service;
+
+ @Resource
+ private AdActivityVersionControlService adActivityVersionControlService;
+
+ @Resource
+ private AppVersionService appVersionService;
@Override
- public int insert(SwiperPicture record) throws SwiperPictureException{
- return swiperPictureMapper.insert(record);
- }
-
- @Override
- public int insertSelective(SwiperPicture record) throws SwiperPictureException{
+ public int insertSelective(SwiperPicture record) {
return swiperPictureMapper.insertSelective(record);
}
@Override
- public SwiperPicture selectByPrimaryKey(Long id) throws SwiperPictureException{
+ public SwiperPicture selectByPrimaryKey(Long id) {
return swiperPictureMapper.selectByPrimaryKey(id);
}
@Override
- public int updateByPrimaryKeySelective(SwiperPicture record) throws SwiperPictureException{
+ public int updateByPrimaryKeySelective(SwiperPicture record) {
return swiperPictureMapper.updateByPrimaryKeySelective(record);
}
@Override
- public int updateByPrimaryKey(SwiperPicture record) throws SwiperPictureException{
+ public int updateByPrimaryKey(SwiperPicture record) {
return swiperPictureMapper.updateByPrimaryKey(record);
}
@Override
- public List<SwiperPicture> queryByBannerID(long start, int count, Long bannerId) throws SwiperPictureException{
+ public List<SwiperPicture> queryByBannerID(long start, int count, Long bannerId) throws SwiperPictureException {
return swiperPictureMapper.queryByBannerID(start, count, bannerId);
}
@Override
- public long countQueryByBannerID(Long bannerId) throws SwiperPictureException{
+ public long countQueryByBannerID(Long bannerId) throws SwiperPictureException {
return swiperPictureMapper.countQueryByBannerID(bannerId);
}
-
-
@Override
- public void save(SwiperPicture record) throws SwiperPictureException{
-
+ public void saveObject(MultipartFile file, SwiperPicture record, String jumpType)
+ throws SwiperPictureException, Exception {
+
if (record == null) {
throw new SwiperPictureException(1, "鍙傛暟涓嶈兘涓虹┖");
}
-
+
Long bannerId = record.getBannerId();
if (bannerId == null) {
throw new SwiperPictureException(1, "鏍囪瘑绠$悊ID涓嶈兘涓虹┖");
}
-
+
String params = record.getParams();
- if (!StringUtil.isNullOrEmpty(params)) {
- try {
- String jumpValue = systemConfigService.get("jump");
- if (StringUtil.isNullOrEmpty(jumpValue)) {
- jumpValue = "{\"url\":\"#\"}";
- }
- params = jumpValue.replace("#", params);
-
- } catch (NotExistObjectException e) {
- e.printStackTrace();
+ if (params == null || params.trim().length() == 0 || "null".equalsIgnoreCase(params)) {
+ record.setParams(null);
+ } else if (!StringUtil.isJson(params)) {
+ throw new SwiperPictureException(1, "璺宠浆鍙傛暟闈濲SON鏍煎紡");
+ }
+
+ if (!StringUtil.isNullOrEmpty(jumpType)) {
+ List<JumpDetailV2> listByType = jumpDetailV2Service.listByType(jumpType);
+ if (listByType != null && listByType.size() > 0) {
+ record.setJumpDetail(listByType.get(0));
}
}
-
+
+ try {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String startTime_str = record.getStartTime_str();
+ if (startTime_str != null && startTime_str.trim().length() > 0) {
+ startTime_str = startTime_str.replaceAll("T", " ");
+ record.setStartTime(format.parse(startTime_str));
+ }
+
+ String endTime_str = record.getEndTime_str();
+ if (endTime_str != null && endTime_str.trim().length() > 0) {
+ endTime_str = endTime_str.replaceAll("T", " ");
+ record.setEndTime(format.parse(endTime_str));
+ }
+
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ String remark = record.getRemark();
+ if (remark != null && (remark.trim().length() == 0 || remark.equalsIgnoreCase("null"))) {
+ record.setRemark(null);
+ }
+
+ String picture = null;
+ if (file != null) {
+ picture = uploadPicture(file);
+ }
+
Long id = record.getId();
-
+
if (id == null) {
- // 鏂板
-
int maxOrder = swiperPictureMapper.getMaxOrderByBannerID(bannerId);
record.setOrder(maxOrder + 1);
+
+ Integer state = record.getState();
// 榛樿鍋滅敤
- record.setState(1);
- // 榛樿闈炵郴缁熸帶鍒�
- record.setAutoControl(1);
- // 榛樿闈炵櫥闄�
- record.setJumpNeedLogin(false);
+ if (state == null) {
+ record.setState(1);
+ }
+
+ Integer autoControl = record.getAutoControl();
+ if (autoControl == null) {
+ // 榛樿闈炵郴缁熸帶鍒�
+ record.setAutoControl(1);
+ }
record.setCreatetime(new Date());
record.setUpdatetime(new Date());
-
+ record.setSrc(picture);
+
swiperPictureMapper.insert(record);
} else {
// 淇敼
@@ -121,67 +160,94 @@
if (resultObj == null) {
throw new SwiperPictureException(1, "鍙傛暟涓嶈兘涓虹┖");
}
-
+
+ if (picture != null && picture.trim().length() > 0) {
+ // 鍒犻櫎宸插瓨鍦ㄥ浘鐗�
+ removePicture(resultObj);
+
+ record.setSrc(picture);
+ } else {
+ record.setSrc(resultObj.getSrc());
+ }
+
record.setOrder(resultObj.getOrder());
record.setCreatetime(resultObj.getCreatetime());
record.setUpdatetime(new Date());
+
swiperPictureMapper.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/swiperPic/" + UUID.randomUUID().toString().replace("-", "") + "." + type;
+ // 鎵ц涓婁紶
+ String fileLink = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
+
+ return fileLink;
+ }
+
+ /**
+ * 鍒犻櫎鍥剧墖-涓嶆洿鏂版暟鎹簱
+ *
+ * @param record
+ * @throws Exception
+ */
+ public void removePicture(SwiperPicture record) throws Exception {
+ String picture = record.getSrc();
+ if (picture != null && picture.trim().length() > 0) {
+ COSManager.getInstance().deleteFile(picture);
+ }
+ }
+
@Override
- @Transactional
- public int deleteBatchByPrimaryKey(List<Long> list) throws SwiperPictureException{
-
+ @Transactional(rollbackFor = Exception.class)
+ public int deleteBatchByPrimaryKey(List<Long> list) throws SwiperPictureException {
+
List<SwiperPicture> listSwiper = swiperPictureMapper.queryByListPrimaryKey(list);
- for (SwiperPicture swiperPicture: listSwiper) {
+ for (SwiperPicture swiperPicture : listSwiper) {
String src = swiperPicture.getSrc();
if (!StringUtil.isNullOrEmpty(src)) {
COSManager.getInstance().deleteFile(src);
}
}
-
+
+ if (listSwiper != null)
+ for (SwiperPicture picture : listSwiper) {
+ List<AdActivityVersionControl> versionList = adActivityVersionControlService
+ .listByTypeAndSourceId(AdActivityType.banner, picture.getId());
+ if (versionList != null)
+ for (AdActivityVersionControl control : versionList)
+ adActivityVersionControlService.deleteByPrimaryKey(control.getId());
+ }
return swiperPictureMapper.deleteBatchByPrimaryKey(list);
}
@Override
- public int deleteBatchByBannerID(List<Long> list) throws SwiperPictureException{
+ public int deleteBatchByBannerID(List<Long> list) throws SwiperPictureException {
return swiperPictureMapper.deleteBatchByBannerID(list);
}
-
+
@Override
- public List<SwiperPicture> queryByListBannerID(List<Long> list) throws Exception{
+ public List<SwiperPicture> queryByListBannerID(List<Long> list) throws Exception {
return swiperPictureMapper.queryByListBannerID(list);
}
@Override
- public void uploadPicture(MultipartFile file, SwiperPicture record) throws Exception {
-
- InputStream inputStream = file.getInputStream();
- String contentType = file.getContentType();
- String type = contentType.substring(contentType.indexOf("/") + 1);
- // 涓婁紶鏂囦欢鐩稿浣嶇疆
- String fileUrl="swiperPic/"+UUID.randomUUID().toString().replace("-", "") + "." + type;
-
- /* 淇敼鍥剧墖鏃讹紝鍏堝垹闄ゅ凡瀛樺湪鍥剧墖 */
- String src = record.getSrc();
- if (!StringUtil.isNullOrEmpty(src)) {
- COSManager.getInstance().deleteFile(src);
- }
-
- String uploadFilePath = COSManager.getInstance().uploadFile(inputStream, fileUrl).getUrl();
-
- /* 鏇存柊鏁版嵁搴撲俊鎭� */
- if (!StringUtil.isNullOrEmpty(uploadFilePath)) {
- record.setSrc(uploadFilePath);
- record.setUpdatetime(new Date());
- updateByPrimaryKeySelective(record);
- }
- }
-
- @Override
- public List<SwiperPicture> getOrderByBannerID(Long bannerId, Integer type, Integer order) throws SwiperPictureException {
+ public List<SwiperPicture> getOrderByBannerID(Long bannerId, Integer type, Integer order) {
return swiperPictureMapper.getOrderByBannerID(bannerId, type, order);
}
@@ -189,12 +255,133 @@
public int getMaxOrderByBannerID(Long bannerId) throws SwiperPictureException {
return swiperPictureMapper.getMaxOrderByBannerID(bannerId);
}
-
+
@Override
@Cacheable(value = "bannerCache", key = "'getByBannerCard-'+#card")
- public List<SwiperPicture> getByBannerCard(String card) throws SwiperPictureException {
- return swiperPictureMapper.getByBannerCard(card);
+ public List<SwiperPicture> getByBannerCard(String card) {
+ List<SwiperPicture> list = swiperPictureMapper.getByBannerCard(card);
+ if (list != null && list.size() > 0) {
+ for (SwiperPicture swiperPicture : list) {
+ boolean needLogin = swiperPicture.isJumpNeedLogin();
+ JumpDetailV2 jumpDetail = swiperPicture.getJumpDetail();
+ if (jumpDetail != null) {
+ jumpDetail.setNeedLogin(needLogin);
+ swiperPicture.setJumpDetail(jumpDetail);
+ }
+ }
+ }
+ return list;
}
-
-}
+ /**
+ * 涓撻鐗堟湰杩囨护
+ *
+ * @param list
+ * @param platform
+ * @param versionCode
+ */
+ private void filterSwipePicture(List<SwiperPicture> list, String platform, int versionCode) {
+ if (list == null || list.size() == 0)
+ return;
+ AppVersionInfo app = appVersionService.getClientVersion(platform, versionCode);
+ if (app == null) {
+ list.clear();
+ return;
+ }
+ List<Long> versionIdList = new ArrayList<>();
+ versionIdList.add(app.getId());
+ List<Long> sourceIdList = new ArrayList<>();
+ for (SwiperPicture picture : list) {
+ sourceIdList.add(picture.getId());
+ }
+
+ Set<Long> sourceIds = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList,
+ AdActivityType.banner, versionIdList);
+ for (int i = 0; i < list.size(); i++) {
+ if (!sourceIds.contains(list.get(i).getId())) {
+ list.remove(i--);
+ }
+ }
+ }
+
+ @Cacheable(value = "bannerCache", key = "'getByBannerCardAndVersion-'+#card+'-'+#platform+'-'+#version")
+ @Override
+ public List<SwiperPicture> getByBannerCardAndVersion(String card, String platform, int version) {
+ List<SwiperPicture> list = swiperPictureMapper.getByBannerCard(card);
+ filterSwipePicture(list, platform, version);
+ for (SwiperPicture picture : list) {
+ if (picture.isJumpNeedLogin() && picture.getJumpDetail() != null) {
+ picture.getJumpDetail().setNeedLogin(true);
+ }
+ }
+
+ return list;
+ }
+
+ @Override
+ @Cacheable(value = "bannerCache", key = "'getByBannerId-'+#bannerId")
+ public List<SwiperPicture> getByBannerId(Long bannerId) {
+ return swiperPictureMapper.getByBannerId(bannerId);
+ }
+
+ @Cacheable(value = "bannerCache", key = "'getByBannerId-'+#bannerId+'-'+#platform+'-'+#version")
+ @Override
+ public List<SwiperPicture> getByBannerId(Long bannerId, String platform, int version)
+ throws SwiperPictureException {
+ List<SwiperPicture> pictureList = swiperPictureMapper.getByBannerId(bannerId);
+ filterSwipePicture(pictureList, platform, version);
+ return pictureList;
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void setVersions(Long id, List<Long> versions) throws SwiperPictureException {
+ SwiperPicture swiperPicture = selectByPrimaryKey(id);
+ if (swiperPicture == null) {
+ throw new SwiperPictureException(1, "Banner涓嶅瓨鍦�");
+ }
+
+ Set<Long> oldSet = new HashSet<>();
+
+ List<AdActivityVersionControl> versionList = adActivityVersionControlService
+ .listByTypeAndSourceId(AdActivityType.banner, swiperPicture.getId());
+ if (versionList != null) {
+ for (AdActivityVersionControl control : versionList)
+ oldSet.add(control.getVersion().getId());
+ }
+
+ Set<Long> newSet = new HashSet<>();
+
+ for (Long version : versions) {
+ newSet.add(version);
+ }
+
+ Set<Long> delSet = new HashSet<>();
+ delSet.addAll(oldSet);
+ delSet.removeAll(newSet);
+ for (Long versionId : delSet) {
+ // 鏍规嵁
+ adActivityVersionControlService.deleteBySourceAndVersion(id, AdActivityType.banner, versionId);
+ }
+
+ Set<Long> addSet = new HashSet<>();
+ addSet.addAll(newSet);
+ addSet.removeAll(oldSet);
+
+ // 娣诲姞鏄犲皠
+ for (Long versionId : addSet) {
+ AdActivityVersionControl control = new AdActivityVersionControl();
+ control.setCreateTime(new Date());
+ control.setSourceId(swiperPicture.getId());
+ control.setType(AdActivityType.banner);
+ control.setVersion(new AppVersionInfo(versionId));
+ try {
+ adActivityVersionControlService.addVersionControl(control);
+ } catch (Exception e) {
+ throw new SwiperPictureException(2, e.getMessage());
+ }
+ }
+
+ }
+
+}
--
Gitblit v1.8.0