From c54fb6a88876be994906d57d2d18e844686964d0 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 01 七月 2020 14:16:13 +0800
Subject: [PATCH] rcoketmq集中管理
---
fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/FloatADServiceImpl.java | 153 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 148 insertions(+), 5 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/FloatADServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/FloatADServiceImpl.java
index 867cbb0..7788f95 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/FloatADServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/FloatADServiceImpl.java
@@ -3,24 +3,35 @@
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 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.FloatADMapper;
+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.FloatAD;
import com.yeshi.fanli.entity.bus.homemodule.FloatAD.FloatADTypeEnum;
import com.yeshi.fanli.entity.common.JumpDetailV2;
+import com.yeshi.fanli.exception.banner.SwiperPictureException;
import com.yeshi.fanli.exception.homemodule.FloatADException;
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.FloatADService;
+import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
@Service
@@ -31,6 +42,12 @@
@Resource
private JumpDetailV2Service jumpDetailV2Service;
+
+ @Resource
+ private AppVersionService appVersionService;
+
+ @Resource
+ private AdActivityVersionControlService adActivityVersionControlService;
@Override
@@ -51,6 +68,8 @@
record.setParams(null);
} else if (!StringUtil.isJson(params)) {
throw new FloatADException(1, "璺宠浆鍙傛暟闈濲SON鏍煎紡");
+ } else {
+ record.setParams(params.trim());
}
FloatADTypeEnum typeEnum = record.getTypeEnum();
@@ -146,7 +165,7 @@
String type = contentType.substring(contentType.indexOf("/") + 1);
// 鏂囦欢璺緞
- String filePath="/img/FloatAD/"+UUID.randomUUID().toString().replace("-", "") + "." + type;
+ String filePath= FilePathEnum.floatAD.getPath() +UUID.randomUUID().toString().replace("-", "") + "." + type;
// 鎵ц涓婁紶
String fileLink= COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
@@ -197,6 +216,31 @@
floatADMapper.updateByPrimaryKey(exchangeObject);
}
+
+ @Override
+ public void switchState(Long id) throws FloatADException {
+ if (id == null) {
+ throw new FloatADException(1, "璇蜂紶閫掓纭弬鏁�");
+ }
+ FloatAD resultObj = floatADMapper.selectByPrimaryKey(id);
+ if (resultObj == null) {
+ throw new FloatADException(1, "姝ゅ唴瀹瑰凡涓嶅瓨鍦�");
+ }
+
+ Integer state = resultObj.getState();
+ if (state == null || state == 0) {
+ state = 1;
+ } else {
+ state = 0;
+ }
+
+ FloatAD updateObj = new FloatAD();
+ updateObj.setId(id);
+ updateObj.setState(state);
+ floatADMapper.updateByPrimaryKeySelective(updateObj);
+ }
+
+
@Override
@Transactional(rollbackFor=Exception.class)
public int deleteByPrimaryKeyList(List<Long> list) throws Exception{
@@ -209,6 +253,12 @@
// 鍒犻櫎宸插瓨鍦ㄥ浘鐗�
for (FloatAD floatAD: listSwiper) {
removePicture(floatAD.getPicture());
+
+ List<AdActivityVersionControl> versionList = adActivityVersionControlService
+ .listByTypeAndSourceId(AdActivityType.floatAD, floatAD.getId());
+ if (versionList != null)
+ for (AdActivityVersionControl control : versionList)
+ adActivityVersionControlService.deleteByPrimaryKey(control.getId());
}
return floatADMapper.deleteByPrimaryKeyList(list);
@@ -273,6 +323,7 @@
return floatADMapper.countQuery(key, state);
}
+ @Cacheable(value = "configCache", key = "'getEffectiveFloatAD-'+#position+'-'+#type")
@Override
public FloatAD getEffectiveFloatAD(String position, Integer type) {
FloatAD floatAD = floatADMapper.getEffectiveFloatAD(position, type);
@@ -294,14 +345,106 @@
}
+ @Transactional(rollbackFor = Exception.class)
@Override
- public List<FloatAD> getValidCommonByPosition(String position) {
- return floatADMapper.getValidFloatAD(position, 1);
+ public void setVersions(Long id, List<Long> versions) throws Exception {
+ FloatAD record = floatADMapper.selectByPrimaryKey(id);
+ if (record == null) {
+ throw new Exception("涓撻涓嶅瓨鍦�");
+ }
+
+ Set<Long> oldSet = new HashSet<>();
+
+ List<AdActivityVersionControl> versionList = adActivityVersionControlService
+ .listByTypeAndSourceId(AdActivityType.floatAD, id);
+ 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.floatAD, 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(id);
+ control.setType(AdActivityType.floatAD);
+ control.setVersion(new AppVersionInfo(versionId));
+ try {
+ adActivityVersionControlService.addVersionControl(control);
+ } catch (Exception e) {
+ throw new SwiperPictureException(2, e.getMessage());
+ }
+ }
}
+ @Cacheable(value = "configCache", key = "'getValidFloatADCache-'+#position+'-'+#type+'-'+#platform+'-'+#versionCode")
@Override
- public List<FloatAD> getValidByPosition(String position) {
- return floatADMapper.getValidFloatAD(position, null);
+ public List<FloatAD> getValidFloatADCache(String position, Integer type, String platform, Integer versionCode) {
+ List<FloatAD> list = floatADMapper.getValidFloatAD(position, type);
+ // 杩囨护
+ filterFloatAD(list, platform, versionCode);
+
+ return list;
}
+
+ /**
+ * 杩囨护
+ *
+ * @param list
+ * @param platform
+ * @param versionCode
+ */
+ private void filterFloatAD(List<FloatAD> 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 (FloatAD record : list) {
+ sourceIdList.add(record.getId());
+ }
+
+ Set<Long> sourceIds = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList,
+ AdActivityType.floatAD, versionIdList);
+
+ for (int i = 0; i < list.size(); i++) {
+ // 杩囨护鐗堟湰
+ if (!sourceIds.contains(list.get(i).getId())) {
+ list.remove(i--);
+ continue;
+ }
+
+ // 璺宠浆鏄惁鐧诲綍
+ FloatAD floatAD = list.get(i);
+ JumpDetailV2 jumpDetail = floatAD.getJumpDetail();
+ if (jumpDetail != null) {
+ jumpDetail = jumpDetailV2Service.selectByPrimaryKey(jumpDetail.getId());
+ if (jumpDetail != null) {
+ jumpDetail.setNeedLogin(floatAD.isJumpNeedLogin());
+ }
+ }
+ }
+ }
+
}
--
Gitblit v1.8.0