From 8b3c82c0788e23acd889e6f67a91c855693352fd Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期三, 13 五月 2020 16:38:29 +0800
Subject: [PATCH] 团队分红统计
---
fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/SwiperPictureServiceImpl.java | 392 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 339 insertions(+), 53 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 3fda54d..b0da86f 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,121 +1,280 @@
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.SwiperPicture;
+import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.exception.banner.SwiperPictureException;
+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.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
-import org.yeshi.utils.tencentcloud.COSManager;
@Service
public class SwiperPictureServiceImpl implements SwiperPictureService {
@Resource
private SwiperPictureMapper swiperPictureMapper;
-
- @Override
- public int deleteByPrimaryKey(Long id) throws SwiperPictureException{
- return swiperPictureMapper.deleteByPrimaryKey(id);
- }
+
+ @Resource
+ 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
- @Transactional
- public int deleteBatchByPrimaryKey(List<Long> list) 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 (params == null || params.trim().length() == 0 || "null".equalsIgnoreCase(params)) {
+ record.setParams(null);
+ } else if (!StringUtil.isJson(params)) {
+ throw new SwiperPictureException(1, "璺宠浆鍙傛暟闈濲SON鏍煎紡");
+ } else {
+ record.setParams(params.trim());
+ }
+
+ 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();
+ // 榛樿鍋滅敤
+ 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 {
+ // 淇敼
+ SwiperPicture resultObj = swiperPictureMapper.selectByPrimaryKey(id);
+ 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 = FilePathEnum.swiper.getPath() + 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
+ public void switchState(Long id) throws SwiperPictureException {
+ if (id == null) {
+ throw new SwiperPictureException(1, "璇蜂紶閫掓纭弬鏁�");
+ }
+ SwiperPicture resultObj = swiperPictureMapper.selectByPrimaryKey(id);
+ if (resultObj == null) {
+ throw new SwiperPictureException(1, "姝ゅ唴瀹瑰凡涓嶅瓨鍦�");
+ }
+
+ Integer state = resultObj.getState();
+ if (state == null || state == 0) {
+ state = 1;
+ } else {
+ state = 0;
+ }
+
+ SwiperPicture updateObj = new SwiperPicture();
+ updateObj.setId(id);
+ updateObj.setState(state);
+ updateObj.setJumpNeedLogin(resultObj.isJumpNeedLogin());
+ swiperPictureMapper.updateByPrimaryKeySelective(updateObj);
+ }
+
+ @Override
+ @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);
}
@@ -123,6 +282,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) {
+ 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