记得上下班打卡 | git大法好,push需谨慎

Commit 7f60e133 authored by jiangxiulong's avatar jiangxiulong

mongo -> redis

parent 54928871
......@@ -45,7 +45,8 @@ public class KylinRedisConst {
public static final String ZHENGZAI_APP_VERSIONS_CHECK_ANDROID = "basicServices:zhengzaiCheckAppVersionsAndroid";
public static final String ZHENGZAI_APP_VERSIONS_CHECK_IOS = "basicServices:zhengzaiCheckAppVersionsIos";
public static final String ADMIN_UPUSH_LIST = "basicServices:upushList";
public static final String ADMIN_UPUSH_LIST_IOS = "basicServices:upushList:IOS";
public static final String ADMIN_UPUSH_LIST_ANDROID = "basicServices:upushList:Android";
public static final String ADMIN_BANNER_LIST = "kylin:bannerList";
......
......@@ -87,17 +87,58 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
// 处理缓存数据
AdminUpushVo adminUpushVo = new AdminUpushVo();
BeanUtils.copyProperties(adminUpush, adminUpushVo);
LinkedList<AdminUpushVo> pushList = (LinkedList<AdminUpushVo>) redisUtil.get(KylinRedisConst.ADMIN_UPUSH_LIST);
if (CollectionUtil.isEmpty(pushList)) {
adminUpushVo.setMessageType(2);
adminUpushVo.setSpecifyType(2); // 这里暂时写死就行 如果以后改需求再处理
String redisKeyIos = KylinRedisConst.ADMIN_UPUSH_LIST_IOS;
String redisKeyAndroid = KylinRedisConst.ADMIN_UPUSH_LIST_ANDROID;
LinkedList<AdminUpushVo> pushList = new LinkedList<>();
LinkedList<AdminUpushVo> pushList2 = new LinkedList<>();
if (upushParam.getPushRange() == 1) { // all
pushList = (LinkedList<AdminUpushVo>) redisUtil.get(redisKeyIos);
pushList2 = (LinkedList<AdminUpushVo>) redisUtil.get(redisKeyAndroid);
} else if (upushParam.getPushRange() == 2) { // ios
pushList = (LinkedList<AdminUpushVo>) redisUtil.get(redisKeyIos);
} else if(upushParam.getPushRange() == 3) { // android
pushList = (LinkedList<AdminUpushVo>) redisUtil.get(redisKeyAndroid);
}
if (null == pushList) {
pushList = new LinkedList<>();
}
if (null == pushList2) {
pushList2 = new LinkedList<>();
}
if (upushParam.getPushRange() == 1) {
if (!CollectionUtil.isEmpty(pushList)) {
if (pushList.size() >= 20) {
pushList.remove(0);
}
}
pushList.addFirst(adminUpushVo);
if (!CollectionUtil.isEmpty(pushList2)) {
if (pushList2.size() >= 20) {
pushList2.remove(0);
}
}
pushList2.addFirst(adminUpushVo);
} else {
if (pushList.size() >= 20) {
pushList.remove(0);
if (!CollectionUtil.isEmpty(pushList)) {
if (pushList.size() >= 20) {
pushList.remove(0);
}
}
pushList.addFirst(adminUpushVo);
}
if (upushParam.getPushRange() == 1) { // all
redisUtil.set(redisKeyIos, pushList);
redisUtil.set(redisKeyAndroid, pushList2);
} else if (upushParam.getPushRange() == 2) { // ios
redisUtil.set(redisKeyIos, pushList);
} else if(upushParam.getPushRange() == 3) { // android
redisUtil.set(redisKeyAndroid, pushList);
}
pushList.addFirst(adminUpushVo);
redisUtil.set(KylinRedisConst.ADMIN_UPUSH_LIST, pushList);
// 推送
if (adminUpush.getIsPush() == 1) {
if (adminUpush.getPushRange() == 1) {
sendAndroidBroadcast(adminUpush);
......
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -14,32 +13,23 @@ import com.liquidnet.service.kylin.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.dto.param.BannersParam;
import com.liquidnet.service.kylin.dto.param.BannersSearchParam;
import com.liquidnet.service.kylin.dto.vo.KylinBannersVo;
import com.liquidnet.service.kylin.entity.AdminUpush;
import com.liquidnet.service.kylin.entity.KylinBanners;
import com.liquidnet.service.kylin.entity.KylinBannersRelations;
import com.liquidnet.service.kylin.mapper.KylinBannersMapper;
import com.liquidnet.service.kylin.mapper.KylinBannersRelationsMapper;
import com.liquidnet.service.kylin.service.admin.IKylinBannersService;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import org.bson.Document;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
......@@ -64,9 +54,6 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
@Autowired
MongoTemplate mongoTemplate;
@Autowired
private MongoConverter mongoConverter;
@Autowired
RedisUtil redisUtil;
......@@ -108,11 +95,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
}
// 处理缓存数据
List<KylinBanners> bannerList = bannersMapper.selectList(
Wrappers.lambdaQuery(KylinBanners.class).eq(KylinBanners::getIsOnline, 1)
.eq(KylinBanners::getIsDeleted, 1)
);
redisUtil.set(KylinRedisConst.ADMIN_BANNER_LIST, bannerList);
setBannerListRedis();
return true;
} catch (Exception e) {
......@@ -120,6 +103,29 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
}
}
private void setBannerListRedis() {
List<KylinBanners> bannerList = bannersMapper.selectList(
Wrappers.lambdaQuery(KylinBanners.class).eq(KylinBanners::getIsOnline, 1)
.eq(KylinBanners::getIsDeleted, 1)
.orderByDesc(KylinBanners::getBannersSort)
);
for (KylinBanners banner : bannerList) {
List<KylinBannersRelations> pList = kylinBannersRelationsMapper.selectList(
Wrappers.lambdaQuery(KylinBannersRelations.class).eq(KylinBannersRelations::getBannersId, banner.getBannersId())
.eq(KylinBannersRelations::getFieldIdType, 1)
);
List<String> pListStr = pList.stream().map(KylinBannersRelations -> KylinBannersRelations.getFieldId()).collect(Collectors.toList());
List<KylinBannersRelations> proList = kylinBannersRelationsMapper.selectList(
Wrappers.lambdaQuery(KylinBannersRelations.class).eq(KylinBannersRelations::getBannersId, banner.getBannersId())
.eq(KylinBannersRelations::getFieldIdType, 2)
);
List<String> proListStr = proList.stream().map(KylinBannersRelations -> KylinBannersRelations.getFieldName()).collect(Collectors.toList());
banner.setPositionList(pListStr);
banner.setProvincesList(proListStr);
}
redisUtil.set(KylinRedisConst.ADMIN_BANNER_LIST, bannerList);
}
public boolean update(BannersParam bannersParam) {
try {
// 时间
......@@ -129,12 +135,12 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
KylinBanners params = bannersParam.getFields(null, null);
params.setUpdatedAt(updatedAtString);
if (StringUtils.isEmpty(bannersParam.getOnlineStartTime())) {
/*if (StringUtils.isEmpty(bannersParam.getOnlineStartTime())) {
params.setOnlineStartTime(null);
}
if (StringUtils.isEmpty(bannersParam.getOnlineEndTime())) {
params.setOnlineEndTime(null);
}
}*/
// 入数据库
bannersMapper.update(params, new UpdateWrapper<KylinBanners>().eq("banners_id", bannersId));
......@@ -171,11 +177,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
}
// 处理缓存数据
List<KylinBanners> bannerList = bannersMapper.selectList(
Wrappers.lambdaQuery(KylinBanners.class).eq(KylinBanners::getIsOnline, 1)
.eq(KylinBanners::getIsDeleted, 1)
);
redisUtil.set(KylinRedisConst.ADMIN_BANNER_LIST, bannerList);
setBannerListRedis();
return true;
} catch (Exception e) {
......@@ -238,11 +240,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
);
// 处理缓存数据
List<KylinBanners> bannerList = bannersMapper.selectList(
Wrappers.lambdaQuery(KylinBanners.class).eq(KylinBanners::getIsOnline, 1)
.eq(KylinBanners::getIsDeleted, 1)
);
redisUtil.set(KylinRedisConst.ADMIN_BANNER_LIST, bannerList);
setBannerListRedis();
return true;
} catch (Exception e) {
......
......@@ -15,8 +15,8 @@ CREATE TABLE `kylin_banners`
`target_obj` varchar(255) NOT NULL DEFAULT '' COMMENT '跳转目标 id/url等',
`target_obj_name` varchar(255) NOT NULL DEFAULT '' COMMENT '跳转目标 name 选择的时候回显使用',
`is_online` tinyint NOT NULL DEFAULT 0 COMMENT '是否上线展示 0下线 1上线',
`online_start_time` timestamp NULL DEFAULT NULL COMMENT '上线开始时间',
`online_end_time` timestamp NULL DEFAULT NULL COMMENT '上线结束时间',
`online_start_time` varchar(255) NOT NULL DEFAULT '' COMMENT '上线开始时间',
`online_end_time` varchar(255) NOT NULL DEFAULT '' COMMENT '上线结束时间',
`promotion_type` tinyint NOT NULL DEFAULT 1 COMMENT '推广类型 1全国 2省份',
`banners_sort` int NOT NULL DEFAULT 0 COMMENT '排序 越大越靠前',
`is_deleted` tinyint NOT NULL DEFAULT 1 COMMENT '是否删除 0已删除 1正常',
......
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.KylinBannersVo;
import com.liquidnet.service.kylin.entity.KylinBanners;
import com.liquidnet.service.kylin.service.admin.IKylinBannersService;
import com.liquidnet.service.kylin.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
......@@ -14,6 +16,7 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Iterator;
import java.util.List;
/**
......@@ -38,48 +41,61 @@ public class BannersServiceImpl implements IKylinBannersService {
public List<KylinBanners> blist(String position, String provinceName) {
String nowTime = DateUtil.getNowTime();
List<KylinBanners> list = (List<KylinBanners>) redisUtil.get(KylinRedisConst.ADMIN_BANNER_LIST);
for (KylinBanners info : list) {
// 时间
String StartTime = info.getOnlineStartTime();
String endTime = info.getOnlineEndTime();
if (!StartTime.isEmpty() && !endTime.isEmpty()) {
if (DateUtil.compareStrDay(nowTime, StartTime) < 0) { // 当前时间小雨开始时间 还未开始呢
list.remove(info);
}
if (DateUtil.compareStrDay(endTime, nowTime) > 0) { // 解释时间大于当前时间 已过期
list.remove(info);
}
}
// list
if (info.getPromotionType() != 1) {
List<String> pList = info.getPositionList();
Boolean pis = false;
for (String positionName : pList) {
if (positionName.equals(position)) {
pis = true;
Object ListObj = redisUtil.get(KylinRedisConst.ADMIN_BANNER_LIST);
List<KylinBanners> list = ObjectUtil.getKylinBannerListArrayList();
if (null != ListObj) {
list = (List<KylinBanners>) ListObj;
if (!CollectionUtil.isEmpty(list)) {
Iterator<KylinBanners> itBannerList = list.iterator();
while (itBannerList.hasNext()) {
KylinBanners bannerInfo = itBannerList.next();
// 时间
String StartTime = bannerInfo.getOnlineStartTime();
String endTime = bannerInfo.getOnlineEndTime();
if (!StartTime.isEmpty() && !endTime.isEmpty()) {
if (DateUtil.compareStrDay(nowTime, StartTime) < 0) { // 当前时间小雨开始时间 还未开始呢
itBannerList.remove();
}
if (DateUtil.compareStrDay(endTime, nowTime) < 0) { // 解释时间大于当前时间 已过期
itBannerList.remove();
}
}
}
if (!pis) {
list.remove(info);
}
List<String> proList = info.getProvincesList();
Boolean prois = false;
for (String proName : proList) {
if (proName.equals(provinceName)) {
prois = true;
// list
if (bannerInfo.getPromotionType() != 1) {
List<String> pList = bannerInfo.getPositionList();
Boolean pis = false;
if (null != pList) {
for (String positionName : pList) {
if (positionName.equals(position)) {
pis = true;
}
}
}
if (!pis || null == pList) {
itBannerList.remove();
}
List<String> proList = bannerInfo.getProvincesList();
Boolean prois = false;
if (null != proList) {
for (String proName : proList) {
if (proName.equals(provinceName)) {
prois = true;
}
}
}
if (!prois || null == proList) {
itBannerList.remove();
}
}
}
if (!prois) {
list.remove(info);
String setCoverImg = imgUrl + bannerInfo.getCoverImg();
bannerInfo.setCoverImg(setCoverImg);
}
}
String setCoverImg = imgUrl + info.getCoverImg();
info.setCoverImg(setCoverImg);
}
return list;
}
......
......@@ -5,6 +5,7 @@ import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.KylinBanners;
import com.mongodb.client.model.WriteModel;
import org.bson.Document;
......@@ -21,7 +22,7 @@ public class ObjectUtil {
private static final ArrayList<KylinTicketTimesVo> kylinTicketTimesVoArrayList = new ArrayList<>();
private static final ArrayList<KylinOrderRefundsVo> kylinOrderRefundsVoArrayList = new ArrayList<>();
private static final ArrayList<KylinOrderListVo> kylinOrderListVoArrayList = new ArrayList<>();
private static final ArrayList<KylinBanners> kylinBannerListArrayList = new ArrayList<>();
private static final PagedResult<KylinStationPerformanceVo> kylinStationPerformanceVoPagedResult = new PagedResult<>();
public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() {
......@@ -64,6 +65,10 @@ public class ObjectUtil {
return (ArrayList<KylinOrderListVo>) kylinOrderListVoArrayList.clone();
}
public static ArrayList<KylinBanners> getKylinBannerListArrayList() {
return (ArrayList<KylinBanners>) kylinBannerListArrayList.clone();
}
public static PagedResult<KylinStationPerformanceVo> getKylinStationPerformanceVoPagedResult() {
return kylinStationPerformanceVoPagedResult.clone();
}
......
......@@ -14,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 友盟推送 系统消息
......@@ -37,10 +39,11 @@ public class AdminUpushController {
@ApiImplicitParam(type = "query", dataType = "Integer", name = "size", value = "每页数量"),
})
public ResponseDto<PageInfo<AdminUpushVo>> lists(
HttpServletRequest request,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size
) {
PageInfo<AdminUpushVo> result = adminUpushServiceImpl.lists(page, size);
PageInfo<AdminUpushVo> result = adminUpushServiceImpl.lists(request, page, size);
return ResponseDto.success(result);
}
......
......@@ -9,6 +9,8 @@ import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.entity.AdminUpush;
import com.liquidnet.service.kylin.mapper.AdminUpushMapper;
import com.liquidnet.service.kylin.service.admin.IAdminUpushService;
import jdk.nashorn.internal.ir.RuntimeNode;
import org.apache.coyote.Request;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.PageRequest;
......@@ -20,6 +22,7 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.LinkedList;
import java.util.List;
......@@ -43,13 +46,20 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
@Autowired
RedisUtil redisUtil;
public PageInfo<AdminUpushVo> lists(Integer page, Integer size) {
public PageInfo<AdminUpushVo> lists(HttpServletRequest request, Integer page, Integer size) {
String source = request.getHeader("source");
PageInfo<AdminUpushVo> voPageInfo = null;
Object adminUpushVo = redisUtil.get(KylinRedisConst.ADMIN_UPUSH_LIST);
if (null == adminUpushVo) {
voPageInfo = PageInfo.of(null);
Object adminUpushVo = null;
if (null != source) {
if (source.equals("IOS")) {
adminUpushVo = redisUtil.get(KylinRedisConst.ADMIN_UPUSH_LIST_IOS);
} else if (source.equals("Android")) {
adminUpushVo = redisUtil.get(KylinRedisConst.ADMIN_UPUSH_LIST_ANDROID);
}
}
if (null == adminUpushVo || page > 1) { // 不分页了 大于第一页返回空
voPageInfo = PageInfo.of(new LinkedList<>());
} else {
// TODO: 2021/7/29 判断 安卓还是ios 还是全部
LinkedList<AdminUpushVo> pushList = (LinkedList<AdminUpushVo>) adminUpushVo;
for (AdminUpushVo info : pushList) {
if (!info.getImg().isEmpty()) {
......
......@@ -151,6 +151,9 @@ public class PerformancesExpressCallbackServiceImpl extends ServiceImpl<KylinOrd
BeanUtils.copyProperties(kylinOrderExpressRoute, kylinOrderExpressRouteVo);
kylinOrderExpressRouteVo.setOrderTicketsId(orderExpressInfo.getOrderTicketsId());
LinkedList<KylinOrderExpressRouteVo> routeList = dataUtils.getOrderExpressRoute(orderExpressInfo.getOrderTicketsId());
if (null == routeList) {
routeList = new LinkedList();
}
routeList.addFirst(kylinOrderExpressRouteVo);
dataUtils.setOrderExpressRoute(orderExpressInfo.getOrderTicketsId(), routeList);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment