| | |
| | | package com.yeshi.fanli.service.impl.homemodule;
|
| | |
|
| | | import java.io.InputStream;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Calendar;
|
| | | 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.JsonUtil;
|
| | | import org.yeshi.utils.tencentcloud.COSManager;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.homemodule.SpecialMapper;
|
| | | import com.yeshi.fanli.dto.common.CommonContentTypeEnum;
|
| | | import com.yeshi.fanli.entity.AppVersionInfo;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | 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.SpecialPlace;
|
| | | import com.yeshi.fanli.entity.common.JumpDetailV2;
|
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
| | | import com.yeshi.fanli.exception.banner.SwiperPictureException;
|
| | | import com.yeshi.fanli.exception.homemodule.HomeNavbarException;
|
| | | import com.yeshi.fanli.exception.homemodule.SpecialException;
|
| | | import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
|
| | | import com.yeshi.fanli.service.inter.config.AppVersionService;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService;
|
| | | import com.yeshi.fanli.service.inter.homemodule.SpecialCardService;
|
| | | import com.yeshi.fanli.service.inter.homemodule.SpecialPlaceService;
|
| | | import com.yeshi.fanli.service.inter.homemodule.SpecialService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.FilePathEnum;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.VersionUtil;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | |
|
| | | @Service
|
| | | public class SpecialServiceImpl implements SpecialService {
|
| | | |
| | |
|
| | | @Resource
|
| | | private SpecialMapper specialMapper;
|
| | | |
| | |
|
| | | @Resource
|
| | | private SpecialPlaceService specialPlaceService;
|
| | |
|
| | | |
| | | @Override
|
| | | public int deleteByPrimaryKey(Long id) {
|
| | | return specialMapper.deleteByPrimaryKey(id);
|
| | | }
|
| | | @Resource
|
| | | private SpecialCardService specialCardService;
|
| | |
|
| | | @Override
|
| | | public int insert(Special record) {
|
| | | return specialMapper.insert(record);
|
| | | }
|
| | | @Resource
|
| | | private JumpDetailV2Service jumpDetailV2Service;
|
| | |
|
| | | @Override
|
| | | public int insertSelective(Special record) {
|
| | | return specialMapper.insertSelective(record);
|
| | | }
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private AppVersionService appVersionService;
|
| | |
|
| | | @Resource
|
| | | private AdActivityVersionControlService adActivityVersionControlService;
|
| | |
|
| | | @Override
|
| | | public Special selectByPrimaryKey(Long id) {
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | public int updateByPrimaryKeySelective(Special record) {
|
| | | return specialMapper.updateByPrimaryKeySelective(record);
|
| | | public void saveObject(MultipartFile file, MultipartFile file2, MultipartFile file3, Special record,
|
| | | String jumpType) throws SpecialException, Exception {
|
| | |
|
| | | Long cardId = record.getCardId();
|
| | | if (cardId == null) {
|
| | | throw new SpecialException(1, "管理ID不能为空");
|
| | | }
|
| | |
|
| | | String name = record.getName();
|
| | | if (name == null || name.trim().length() == 0) {
|
| | | throw new SpecialException(1, "专题名称不能为空");
|
| | | }
|
| | |
|
| | | Integer sex = record.getSex();
|
| | | if (sex == null) {
|
| | | throw new SpecialException(1, "性别不能为空");
|
| | | }
|
| | |
|
| | | String params = record.getParams();
|
| | | if (params == null || params.trim().length() == 0 || "null".equalsIgnoreCase(params)) {
|
| | | record.setParams(null);
|
| | | } else if (!StringUtil.isJson(params)) {
|
| | | throw new SpecialException(1, "跳转参数非JSON格式");
|
| | | } else {
|
| | | record.setParams(params.trim());
|
| | | }
|
| | |
|
| | | String startTime_str = record.getStartTime_str();
|
| | | if (record.isTimeTask() && (startTime_str == null || startTime_str.length() == 0)) {
|
| | | throw new SpecialException(1, "控制时间不能为空");
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(jumpType)) {
|
| | | List<JumpDetailV2> listByType = jumpDetailV2Service.listByType(jumpType);
|
| | | if (listByType != null && listByType.size() > 0) {
|
| | | record.setJumpDetail(listByType.get(0));
|
| | | }
|
| | | }
|
| | |
|
| | | // 时间转换
|
| | | conversionTime(record);
|
| | |
|
| | | Long state = record.getState();
|
| | | if (state == null) {
|
| | | record.setState(0L);
|
| | | }
|
| | |
|
| | | // 图片上传
|
| | | String picture = null;
|
| | | if (file != null) {
|
| | | picture = uploadPicture(file);
|
| | | }
|
| | |
|
| | | // 图片上传
|
| | | String subPicture = null;
|
| | | if (file2 != null) {
|
| | | subPicture = uploadPicture(file2);
|
| | | }
|
| | |
|
| | | // 图片上传
|
| | | String icon = null;
|
| | | if (file3 != null) {
|
| | | icon = uploadPicture(file3);
|
| | | }
|
| | |
|
| | | Long id = record.getId();
|
| | | if (id == null) {
|
| | | record.setIcon(icon);
|
| | | record.setPicture(picture);
|
| | | record.setSubPicture(subPicture);
|
| | |
|
| | | // 排序
|
| | | record.setOrderby(specialMapper.getDefaultMaxOrder(cardId) + 1);
|
| | | record.setOrderMan(specialMapper.getManMaxOrder(cardId) + 1);
|
| | | record.setOrderWoman(specialMapper.getWomanMaxOrder(cardId) + 1);
|
| | |
|
| | | record.setCreatetime(new Date());
|
| | | record.setUpdatetime(new Date());
|
| | | specialMapper.insert(record);
|
| | |
|
| | | Special s = new Special();
|
| | | s.setId(record.getId());
|
| | | s.setOrderby(Integer.parseInt(s.getId() + ""));
|
| | | s.setOrderMan(Integer.parseInt(s.getId() + ""));
|
| | | s.setOrderWoman(Integer.parseInt(s.getId() + ""));
|
| | | specialMapper.updateByPrimaryKeySelective(s);
|
| | | } else {
|
| | | // 修改
|
| | | Special resultObj = specialMapper.selectByPrimaryKey(id);
|
| | | if (resultObj == null) {
|
| | | throw new SpecialException(1, "修改内容已不存在");
|
| | | }
|
| | |
|
| | | // 删除图片
|
| | | Boolean delIcon = record.getDelIcon();
|
| | | if (delIcon != null && delIcon) {
|
| | | removePicture(resultObj.getIcon());
|
| | | resultObj.setIcon(null);
|
| | | }
|
| | | Boolean delPicture = record.getDelPicture();
|
| | | if (delPicture != null && delPicture) {
|
| | | removePicture(resultObj.getPicture());
|
| | | resultObj.setPicture(null);
|
| | | }
|
| | | Boolean delSubPicture = record.getDelSubPicture();
|
| | | if (delSubPicture != null && delSubPicture) {
|
| | | removePicture(resultObj.getSubPicture());
|
| | | resultObj.setSubPicture(null);
|
| | | }
|
| | |
|
| | | if (picture != null && picture.trim().length() > 0) {
|
| | | // 删除老图
|
| | | removePicture(resultObj.getPicture());
|
| | | // 存储新图
|
| | | record.setPicture(picture);
|
| | | } else {
|
| | | record.setPicture(resultObj.getPicture());
|
| | | }
|
| | |
|
| | | if (subPicture != null && subPicture.trim().length() > 0) {
|
| | | // 删除老图
|
| | | removePicture(resultObj.getSubPicture());
|
| | | // 存储新图
|
| | | record.setSubPicture(subPicture);
|
| | | } else {
|
| | | record.setSubPicture(resultObj.getSubPicture());
|
| | | }
|
| | |
|
| | | if (icon != null && icon.trim().length() > 0) {
|
| | | // 删除老图
|
| | | removePicture(resultObj.getIcon());
|
| | | // 存储新图
|
| | | record.setIcon(icon);
|
| | | } else {
|
| | | record.setIcon(resultObj.getIcon());
|
| | | }
|
| | |
|
| | | record.setOrderby(resultObj.getOrderby());
|
| | | record.setOrderMan(resultObj.getOrderMan());
|
| | | record.setOrderWoman(resultObj.getOrderWoman());
|
| | | record.setCreatetime(resultObj.getCreatetime());
|
| | |
|
| | | record.setUpdatetime(new Date());
|
| | | specialMapper.updateByPrimaryKey(record);
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * web段时间转换
|
| | | * |
| | | * @param record
|
| | | */
|
| | | public void conversionTime(Special record) throws SpecialException, Exception {
|
| | | // 是否时间控制
|
| | | if (!record.isTimeTask()) {
|
| | | record.setStartTime(null);
|
| | | record.setEndTime(null);
|
| | | } else {
|
| | | String startTime_str = record.getStartTime_str();
|
| | | String endTime_str = record.getEndTime_str();
|
| | |
|
| | | if ((startTime_str == null || startTime_str.trim().length() == 0)
|
| | | && (endTime_str == null || endTime_str.trim().length() == 0)) {
|
| | | throw new HomeNavbarException(1, "请输入控制时间");
|
| | | } else {
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
| | | if (startTime_str != null && startTime_str.trim().length() > 0) {
|
| | | startTime_str = startTime_str.replaceAll("T", " ");
|
| | | record.setStartTime(format.parse(startTime_str));
|
| | | }
|
| | |
|
| | | if (endTime_str != null && endTime_str.trim().length() > 0) {
|
| | | endTime_str = endTime_str.replaceAll("T", " ");
|
| | | record.setEndTime(format.parse(endTime_str));
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 上传图片
|
| | | * |
| | | * @param file
|
| | | * @return
|
| | | * @throws Exception
|
| | | */
|
| | | public String uploadPicture(MultipartFile file) throws Exception {
|
| | |
|
| | | // 文件解析
|
| | | InputStream inputStream = file.getInputStream();
|
| | | String contentType = file.getContentType();
|
| | | String type = contentType.substring(contentType.indexOf("/") + 1);
|
| | |
|
| | | // 文件路径
|
| | | String filePath =FilePathEnum.special.getPath() + 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 int updateByPrimaryKey(Special record) {
|
| | | return specialMapper.updateByPrimaryKey(record);
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | public void updateOrder(Long id, Integer moveType, Integer sex) throws SpecialException {
|
| | |
|
| | | if (id == null || moveType == null || (!moveType.equals(1) && !moveType.equals(-1)) || sex == null) {
|
| | | throw new SpecialException(1, "请传递正确参数");
|
| | | }
|
| | |
|
| | | Special resultObj = specialMapper.selectByPrimaryKey(id);
|
| | | if (resultObj == null) {
|
| | | throw new SpecialException(1, "此内容已不存在");
|
| | | }
|
| | |
|
| | | Long cardId = resultObj.getCardId();
|
| | | // 获取交换对象
|
| | | Special exchangeObject = null;
|
| | | if (Special.SEX_ALL == sex || Special.SEX_DEFAULT == sex) {
|
| | | Integer orderby = resultObj.getOrderby();
|
| | | exchangeObject = specialMapper.getOrderByCardID(cardId, moveType, orderby, sex);
|
| | | if (exchangeObject == null) {
|
| | | throw new SpecialException(1, "没有找到可交换的位置");
|
| | | }
|
| | |
|
| | | resultObj.setOrderby(exchangeObject.getOrderby());
|
| | | exchangeObject.setOrderby(orderby);
|
| | | } else if (Special.SEX_MAN == sex) {
|
| | | Integer orderMan = resultObj.getOrderMan();
|
| | | exchangeObject = specialMapper.getOrderByCardID(cardId, moveType, orderMan, sex);
|
| | | if (exchangeObject == null) {
|
| | | throw new SpecialException(1, "没有找到可交换的位置");
|
| | | }
|
| | |
|
| | | resultObj.setOrderMan(exchangeObject.getOrderMan());
|
| | | exchangeObject.setOrderMan(orderMan);
|
| | | } else if (Special.SEX_WOMAN == sex) {
|
| | | Integer orderWoman = resultObj.getOrderWoman();
|
| | | exchangeObject = specialMapper.getOrderByCardID(cardId, moveType, orderWoman, sex);
|
| | |
|
| | | if (exchangeObject == null) {
|
| | | throw new SpecialException(1, "没有找到可交换的位置");
|
| | | }
|
| | |
|
| | | resultObj.setOrderWoman(exchangeObject.getOrderWoman());
|
| | | exchangeObject.setOrderWoman(orderWoman);
|
| | | } else {
|
| | | throw new SpecialException(1, "sex参数不正确");
|
| | | }
|
| | |
|
| | | specialMapper.updateByPrimaryKey(resultObj);
|
| | | specialMapper.updateByPrimaryKey(exchangeObject);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public int deleteBatchByPrimaryKey(List<Long> list) throws Exception{
|
| | | |
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public int deleteBatchByPrimaryKey(List<Long> list) throws Exception {
|
| | | List<Special> listSpecial = specialMapper.queryByListPrimaryKey(list);
|
| | | for (Special special: listSpecial) {
|
| | | for (Special special : listSpecial) {
|
| | | String src = special.getPicture();
|
| | | if (!StringUtil.isNullOrEmpty(src)) {
|
| | | COSManager.getInstance().deleteFile(src);
|
| | | }
|
| | |
|
| | | String subPicture = special.getSubPicture();
|
| | | if (!StringUtil.isNullOrEmpty(subPicture)) {
|
| | | COSManager.getInstance().deleteFile(subPicture);
|
| | | }
|
| | | }
|
| | |
|
| | | if (listSpecial != null)
|
| | | for (Special special : listSpecial) {
|
| | | List<AdActivityVersionControl> versionList = adActivityVersionControlService
|
| | | .listByTypeAndSourceId(AdActivityType.special, special.getId());
|
| | | if (versionList != null)
|
| | | for (AdActivityVersionControl control : versionList)
|
| | | adActivityVersionControlService.deleteByPrimaryKey(control.getId());
|
| | | }
|
| | | return specialMapper.deleteBatchByPrimaryKey(list);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public int deleteBatchByCardID(List<Long> list) throws Exception{
|
| | | public int deleteBatchByCardID(List<Long> list) throws Exception {
|
| | | List<Special> listSpecial = specialMapper.queryByListCardID(list);
|
| | | for (Special special: listSpecial) {
|
| | | for (Special special : listSpecial) {
|
| | | String src = special.getPicture();
|
| | | if (!StringUtil.isNullOrEmpty(src)) {
|
| | | COSManager.getInstance().deleteFile(src);
|
| | | }
|
| | |
|
| | | String subPicture = special.getSubPicture();
|
| | | if (!StringUtil.isNullOrEmpty(subPicture)) {
|
| | | COSManager.getInstance().deleteFile(subPicture);
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | return specialMapper.deleteBatchByCardID(list);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public List<Special> listQueryByCard(long start, int count, Long card, String key){
|
| | | return specialMapper.listQueryByCard(start, count, card, key);
|
| | | }
|
| | | |
| | | @Override
|
| | | public long countlistQueryByCard(Long card, String key) {
|
| | | return specialMapper.countlistQueryByCard(card, key);
|
| | | }
|
| | | |
| | | @Override
|
| | | public List<Special> getOrderByCardID(Long cardId, Integer type, Integer order) {
|
| | | return specialMapper.getOrderByCardID(cardId, type, order);
|
| | | }
|
| | | |
| | | @Override
|
| | | public int getMaxOrderByCard(Long card) {
|
| | | return specialMapper.getMaxOrderByCard(card);
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "configCache", key = "'listBySystemAndCard-'+#card+'-'+#systemId")
|
| | | public List<Special> listQueryByCard(long start, int count, Long card, String key, Integer sex) {
|
| | |
|
| | | List<Special> list = specialMapper.listQueryByCard(start, count, card, key, sex);
|
| | | if (list == null || list.size() == 0) {
|
| | | return list;
|
| | | }
|
| | |
|
| | | // 跳转链接
|
| | | for (Special special : list) {
|
| | |
|
| | | Date startTime = special.getStartTime();
|
| | | Date endTime = special.getEndTime();
|
| | |
|
| | | if (startTime == null && endTime == null) {
|
| | | special.setTimeTask(false);
|
| | | special.setStartTime_str("");
|
| | | special.setEndTime_str("");
|
| | | } else {
|
| | | special.setTimeTask(true);
|
| | |
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
|
| | | if (startTime == null) {
|
| | | special.setStartTime_str("");
|
| | | } else {
|
| | | special.setStartTime_str(sdf.format(startTime));
|
| | | }
|
| | |
|
| | | if (endTime == null) {
|
| | | special.setEndTime_str("");
|
| | | } else {
|
| | | special.setEndTime_str(sdf.format(endTime));
|
| | | }
|
| | | }
|
| | |
|
| | | String params = special.getParams();
|
| | | if (StringUtil.isNullOrEmpty(params)) {
|
| | | special.setParams("");
|
| | | }
|
| | |
|
| | | String remark = special.getRemark();
|
| | | if (StringUtil.isNullOrEmpty(remark)) {
|
| | | special.setRemark("");
|
| | | }
|
| | |
|
| | | JumpDetailV2 jumpDetail = special.getJumpDetail();
|
| | | if (jumpDetail == null) {
|
| | | // 默认未选择
|
| | | JumpDetailV2 jumpDetailV2 = new JumpDetailV2();
|
| | | jumpDetailV2.setName("-未选择-");
|
| | | jumpDetailV2.setType("default");
|
| | | special.setJumpDetail(jumpDetailV2);
|
| | | }
|
| | | }
|
| | | return list;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public long countlistQueryByCard(Long card, String key, Integer sex) {
|
| | | return specialMapper.countlistQueryByCard(card, key, sex);
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "specialCache", key = "'listBySystemAndCard-'+#card+'-'+#systemId")
|
| | | public List<Special> listBySystemAndCard(String card, Long systemId) {
|
| | | return specialMapper.listBySystemAndCard(card, systemId);
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | @Cacheable(value = "configCache", key = "'listPageBySystemAndCard-'+#start+'-'+#count+'-'+#card+'-'+#systemId")
|
| | | @Cacheable(value = "specialCache", key = "'listPageBySystemAndCard-'+#start+'-'+#count+'-'+#card+'-'+#systemId")
|
| | | public List<Special> listPageBySystemAndCard(long start, int count, String card, Long systemId) {
|
| | | return specialMapper.listPageBySystemAndCard(start, count, card, systemId);
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | @Cacheable(value = "configCache", key = "'getSpecialListCache-'+#card+'-'+#systemId")
|
| | | public JSONObject getSpecialListCache(String card, Long systemId) throws Exception{
|
| | | |
| | | // 两行圆形专题
|
| | | List<Special> arcList = new ArrayList<Special>();
|
| | | // 活动列表
|
| | | List<Special> activityList = new ArrayList<Special>();
|
| | | // 方块部分
|
| | | List<Special> blockList = new ArrayList<Special>();
|
| | | |
| | | |
| | | List<Special> list = specialMapper.listBySystemAndCard(card, systemId);
|
| | | if (list != null && list.size() > 0) {
|
| | | for (Special special : list) {
|
| | | if (Special.SHOWTYPE_ARC.equals(special.getShowType())) {
|
| | | // 两行圆形专题
|
| | | arcList.add(special);
|
| | | } else if (Special.SHOWTYPE_BLOCK.equals(special.getShowType())) {
|
| | | // 方块部分
|
| | | blockList.add(special);
|
| | | } else if (Special.SHOWTYPE_ACTIVITY.equals(special.getShowType())) {
|
| | | // 动态
|
| | | activityList.add(special);
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | JSONObject arcMap = new JSONObject();
|
| | | arcMap.put("list", JsonUtil.getApiCommonGson().toJson(arcList));
|
| | | |
| | | JSONObject activityMap = new JSONObject();
|
| | | activityMap.put("list", JsonUtil.getApiCommonGson().toJson(activityList));
|
| | | |
| | | JSONObject blockJsonMap = new JSONObject();
|
| | | blockJsonMap.put("list", JsonUtil.getApiCommonGson().toJson(blockList));
|
| | | |
| | | // 背景图片
|
| | | List<SpecialPlace> listPlace = specialPlaceService.getList();
|
| | | if (listPlace != null && listPlace.size() > 0) {
|
| | | for (SpecialPlace specialPlace: listPlace) {
|
| | | String bottomPicture = specialPlace.getBottomPicture();
|
| | | if (bottomPicture != null && bottomPicture.trim().length() > 0) {
|
| | | if (Special.SHOWTYPE_ARC.equals(specialPlace.getKey())) {
|
| | | arcMap.put("bottomPicture", bottomPicture);
|
| | | } else if (Special.SHOWTYPE_BLOCK.equals(specialPlace.getKey())) {
|
| | | blockJsonMap.put("bottomPicture", bottomPicture);
|
| | | } else if (Special.SHOWTYPE_ACTIVITY.equals(specialPlace.getKey())) {
|
| | | activityMap.put("bottomPicture", bottomPicture);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | JSONObject rootMap = new JSONObject();
|
| | | rootMap.put("arcArea", arcMap);
|
| | | rootMap.put("activityArea", activityMap);
|
| | | rootMap.put("blockArea", blockJsonMap);
|
| | | |
| | | return rootMap;
|
| | | @Cacheable(value = "specialCache", key = "'listByVersion-'+#start+'-'+#count+'-'+#card+'-'+#platform+'-'+#versionCode")
|
| | | public List<Special> listByVersion(long start, int count, String card, String platform, Integer versionCode) {
|
| | | List<Special> specialList = specialMapper.listByPlaceKey(card, null, null, null);
|
| | | filterSpecial(specialList, platform, versionCode);
|
| | | return specialList;
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public void uploadPicture(MultipartFile file, Special record, Long cardId) throws Exception {
|
| | | |
| | | InputStream inputStream = file.getInputStream();
|
| | | String contentType = file.getContentType();
|
| | | String type = contentType.substring(contentType.indexOf("/") + 1);
|
| | | // 上传文件相对位置
|
| | | String fileUrl="SpecialPic/"+UUID.randomUUID().toString().replace("-", "") + "." + type;
|
| | | |
| | | /* 修改图片时,先删除已存在图片 */
|
| | | if (record != null) { |
| | | String src = record.getPicture();
|
| | | if (!StringUtil.isNullOrEmpty(src)) {
|
| | | COSManager.getInstance().deleteFile(src);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 专题版本过滤
|
| | | * |
| | | * @param list
|
| | | * @param platform
|
| | | * @param versionCode
|
| | | */
|
| | | private void filterSpecial(List<Special> list, String platform, int versionCode) {
|
| | | if (list == null || list.size() == 0)
|
| | | return;
|
| | | AppVersionInfo app = appVersionService.getClientVersion(platform, versionCode);
|
| | | if (app == null) {
|
| | | list.clear();
|
| | | return;
|
| | | }
|
| | | |
| | | String uploadFilePath = COSManager.getInstance().uploadFile(inputStream, fileUrl).getUrl();
|
| | | |
| | | /* 更新数据库信息 */
|
| | | if (!StringUtil.isNullOrEmpty(uploadFilePath)) {
|
| | | |
| | | if (record != null) {
|
| | | record.setUpdatetime(new Date());
|
| | | record.setPicture(uploadFilePath);
|
| | | updateByPrimaryKeySelective(record);
|
| | | } else {
|
| | | record = new Special();
|
| | | record.setPicture(uploadFilePath);
|
| | | record.setCreatetime(new Date());
|
| | | record.setUpdatetime(new Date());
|
| | | record.setCardId(cardId);
|
| | | record.setState(0L);
|
| | | |
| | | int maxOrder = getMaxOrderByCard(cardId);
|
| | | record.setOrderby(maxOrder + 1);
|
| | | record.setShowType("default");
|
| | | insertSelective(record);
|
| | | List<Long> versionIdList = new ArrayList<>();
|
| | | versionIdList.add(app.getId());
|
| | | List<Long> sourceIdList = new ArrayList<>();
|
| | | for (Special special : list) {
|
| | | sourceIdList.add(special.getId());
|
| | | }
|
| | |
|
| | | Set<Long> sourceIds = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList,
|
| | | AdActivityType.special, versionIdList);
|
| | | for (int i = 0; i < list.size(); i++) {
|
| | | if (!sourceIds.contains(list.get(i).getId())) {
|
| | | list.remove(i--);
|
| | | }
|
| | | |
| | | }
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | @Cacheable(value = "specialCache", key = "'listCacheSpecialToIndex'+#acceptData.platform+'-'+#acceptData.version+'-'+#sex")
|
| | | public JSONObject listCacheSpecialToIndex(AcceptData acceptData, Integer sex) throws Exception {
|
| | |
|
| | | // 首页-5圆形2排区域
|
| | | JSONObject arcMap = new JSONObject();
|
| | |
|
| | | String indexArc = "index_arc";
|
| | | if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion()))
|
| | | indexArc = "index_arc_1.6.5";
|
| | | else if (VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion()))
|
| | | indexArc = "index_arc_1.6.0";
|
| | | else if (VersionUtil.greaterThan_1_5_70(acceptData.getPlatform(), acceptData.getVersion()))
|
| | | indexArc = "index_arc_1.5.7";
|
| | | else if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion()))
|
| | | indexArc = "index_arc_1.5.6";
|
| | |
|
| | | String platform = acceptData.getPlatform();
|
| | | int platformCode = Constant.getPlatformCode(platform);
|
| | | int version = Integer.parseInt(acceptData.getVersion());
|
| | |
|
| | | List<Special> listArc = specialMapper.listByPlaceKey(indexArc, sex, platformCode, version);
|
| | | filterSpecial(listArc, platform, version);
|
| | | if (listArc == null) {
|
| | | listArc = new ArrayList<Special>();
|
| | | } else if (listArc.size() > 0) {
|
| | | Special special = listArc.get(0);
|
| | | if (special != null) {
|
| | | // 背景图片
|
| | | arcMap.put("bottomPicture", special.getBottomPicture());
|
| | | }
|
| | | }
|
| | |
|
| | | int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
| | |
|
| | | // 处理9.9包邮
|
| | | if (listArc != null && VersionUtil.greaterThan_1_5_50(acceptData.getPlatform(), acceptData.getVersion()))
|
| | | for (Special s : listArc) {
|
| | | if (s.getName().contains("9.9")) {// 9块9
|
| | | s.setJumpDetail(jumpDetailV2Service.getByTypeCache("common_template"));
|
| | | JSONObject params = new JSONObject();
|
| | | params.put("key", CommonContentTypeEnum._9k9.name());
|
| | | params.put("title", CommonContentTypeEnum._9k9.getDesc());
|
| | | s.setParams(params.toString());
|
| | | } else if (s.getName().contains("自购立减")) {
|
| | | if (hour < 6) {// 0-6点之间不进入自购立减的页面
|
| | | s.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
|
| | | JSONObject params = new JSONObject();
|
| | | params.put("url", configService.get(ConfigKeyEnum.tljOwnBuyNogoods.getKey()));
|
| | | s.setParams(params.toString());
|
| | | } else {
|
| | | // 查询专题详情
|
| | | Special special = specialMapper.selectByPrimaryKey(s.getId());
|
| | | s.setJumpDetail(special.getJumpDetail());
|
| | | s.setParams(special.getParams());
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // 数据处理
|
| | | handlelist(listArc);
|
| | | arcMap.put("list", JsonUtil.getApiCommonGson().toJson(listArc));
|
| | |
|
| | | // 首页-活动区域(女王节)
|
| | | JSONObject activityMap = new JSONObject();
|
| | | List<Special> listActivity = null;
|
| | | if ("ios".equalsIgnoreCase(acceptData.getPlatform())
|
| | | && configService.iosOnLining(Integer.parseInt(acceptData.getVersion()))) {
|
| | | // 如果IOS当前版本处于审核状态就不返回
|
| | | } else {
|
| | | listActivity = specialMapper.listByPlaceKey("index_activity", null, platformCode, version);
|
| | | }
|
| | |
|
| | | filterSpecial(listActivity, platform, version);
|
| | |
|
| | | if (listActivity == null) {
|
| | | listActivity = new ArrayList<Special>();
|
| | | } else if (listActivity.size() > 0) {
|
| | | Special special = listActivity.get(0);
|
| | | if (special != null) {
|
| | | // 背景图片
|
| | | activityMap.put("bottomPicture", special.getBottomPicture());
|
| | | }
|
| | | }
|
| | |
|
| | | handlelist(listActivity);
|
| | |
|
| | | activityMap.put("list", JsonUtil.getApiCommonGson().toJson(listActivity));
|
| | |
|
| | | // 首页-方形专题(品牌券、母婴...)
|
| | | String indexBlock = "index_block";
|
| | | if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion()))
|
| | | indexBlock = "index_block_1.5.6";
|
| | |
|
| | | JSONObject blockJsonMap = new JSONObject();
|
| | | List<Special> listBlock = specialMapper.listByPlaceKey(indexBlock, sex, platformCode, version);
|
| | | filterSpecial(listBlock, platform, version);
|
| | | if (listBlock == null) {
|
| | | listBlock = new ArrayList<Special>();
|
| | | } else if (listBlock.size() > 0) {
|
| | | Special special = listBlock.get(0);
|
| | | if (special != null) {
|
| | | // 背景图片
|
| | | blockJsonMap.put("bottomPicture", special.getBottomPicture());
|
| | | }
|
| | | }
|
| | |
|
| | | // 品牌券
|
| | | // >=1.5.40后的版本可以用
|
| | | if (("android".equalsIgnoreCase(acceptData.getPlatform()) && Integer.parseInt(acceptData.getVersion()) > 39)
|
| | | || "ios".equalsIgnoreCase(acceptData.getPlatform()) && Integer.parseInt(acceptData.getVersion()) > 48)
|
| | | if (listBlock != null)
|
| | | for (int i = 0; i < listBlock.size(); i++) {
|
| | | if ("品牌券".equalsIgnoreCase(listBlock.get(i).getName())) {
|
| | | listBlock.get(i).setJumpDetail(jumpDetailV2Service.getByTypeCache("hot_cakes"));
|
| | | }
|
| | | }
|
| | |
|
| | | // 数据处理
|
| | | handlelist(listBlock);
|
| | | blockJsonMap.put("list", JsonUtil.getApiCommonGson().toJson(listBlock));
|
| | |
|
| | | JSONObject root = new JSONObject();
|
| | | root.put("arcArea", arcMap);
|
| | | root.put("activityArea", activityMap);
|
| | | root.put("blockArea", blockJsonMap);
|
| | | return root;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<Special> listByPlaceKey(String placeKey, Integer platform, Integer versionCode) {
|
| | | return specialMapper.listByPlaceKey(placeKey, null, platform, versionCode);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<Special> listByPlaceKeyList(long start, int count, List<String> list, Integer platform,
|
| | | Integer versionCode) {
|
| | | return specialMapper.listByPlaceKeyList(start, count, list, null, platform, versionCode);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public long countByPlaceKeyList(List<String> list, Integer platform, Integer versionCode) {
|
| | | return specialMapper.countByPlaceKeyList(list, null, platform, versionCode);
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "specialCache", key = "'listByPlaceKeyHasLabel'+#start+'-'+#platform+'-'+#versionCode+'-'+#list")
|
| | | public List<Special> listByPlaceKeyHasLabel(long start, int count, List<String> list, Integer platform,
|
| | | Integer versionCode) {
|
| | | return specialMapper.listByPlaceKeyHasLabel(start, count, list, null, platform, versionCode);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 处理 数据
|
| | | * |
| | | * @param list
|
| | | */
|
| | | public void handlelist(List<Special> list) {
|
| | | if (list != null && list.size() > 0) {
|
| | | for (Special special : list) {
|
| | | boolean needLogin = special.isJumpLogin();
|
| | | JumpDetailV2 jumpDetail = special.getJumpDetail();
|
| | | if (jumpDetail != null) {
|
| | | jumpDetail.setNeedLogin(needLogin);
|
| | | special.setJumpDetail(jumpDetail);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void setVersions(Long specialId, List<Long> versions) throws Exception {
|
| | | Special special = selectByPrimaryKey(specialId);
|
| | | if (special == null) {
|
| | | throw new Exception("专题不存在");
|
| | | }
|
| | |
|
| | | Set<Long> oldSet = new HashSet<>();
|
| | |
|
| | | List<AdActivityVersionControl> versionList = adActivityVersionControlService
|
| | | .listByTypeAndSourceId(AdActivityType.special, specialId);
|
| | | 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(specialId, AdActivityType.special, 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(special.getId());
|
| | | control.setType(AdActivityType.special);
|
| | | control.setVersion(new AppVersionInfo(versionId));
|
| | | try {
|
| | | adActivityVersionControlService.addVersionControl(control);
|
| | | } catch (Exception e) {
|
| | | throw new SwiperPictureException(2, e.getMessage());
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|