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

Commit bb430898 authored by jiangxiulong's avatar jiangxiulong

演出 redis整理

parent ca69604b
......@@ -4,7 +4,9 @@ public class KylinRedisConst {
public static final String FIELDS = "kylin:fields:id";
public static final String PERFORMANCES = "kylin:performances:id:";
public static final String PERFORMANCES_LIST_CITYNAME = "kylin:performances:cityName:";
public static final String PERFORMANCES_LIST_RECOMMEND = "kylin:performances:recommend:";
public static final String PERFORMANCES_LIST_ALL = "kylin:performances:cityName*";
public static final String PERFORMANCES_LIST_RECOMMEND = "kylin:performances:recommend";
public static final String PERFORMANCES_ROADLIST = "kylin:performances:roadShowId:";
public static final String PERFORMANCES_RECOMMEND = "kylin:performances:recommend:id:";
public static final String PERFORMANCES_INVENTORY = "kylin:performances_inventory:ticket:id:";
public static final String SURPLUS_GENERAL = "surplusGeneral";
......
......@@ -404,8 +404,8 @@ public abstract class DateUtil {
return yearInterval * 12 + monthInterval;
}
// 获得当天开始时间和结束时间
public static HashMap oneDayStartEnd(String[] args) {
// 获得当天开始时间和结束时间 jiangxiulong
public static HashMap oneDayStartEnd() {
HashMap datas = new HashMap();
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
......@@ -414,18 +414,23 @@ public abstract class DateUtil {
calendar.set(Calendar.SECOND, 0);
Date start = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startStr = sdf.format(start);
datas.put("start", start);
datas.put("startStr", startStr);
calendar.add(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.SECOND, -1);
Date end = calendar.getTime();
String endStr = sdf.format(end);
datas.put("end", end);
datas.put("endStr", endStr);
return datas;
}
// 获取当月第一天
// 获取当月第一天 jiangxiulong
public static String getMonthFirst() {
//规定返回日期格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
......@@ -440,12 +445,12 @@ public abstract class DateUtil {
return dayFirst;
}
// 获取某月第一天
// 获取某月第一天 jiangxiulong
public static String getMonthFirst(String month) {
return month.concat("-01");
}
// 获取当月最后一天
// 获取当月最后一天 jiangxiulong
public static String getMonthLast() {
//获取Calendar
Calendar calendar = Calendar.getInstance();
......@@ -458,7 +463,7 @@ public abstract class DateUtil {
return dayLast + " 23:59:59";
}
// 获取某月最后一天
// 获取某月最后一天 jiangxiulong
public static String getMonthLast(String month) throws ParseException {
// String 转 Date
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
......
......@@ -13,7 +13,6 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
......@@ -38,49 +37,35 @@ public class KylinPerformancesController {
@GetMapping("localList")
@ApiOperation("本地演出列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "timeStart", value = "演出开始时间 2021-01-01"),
@ApiImplicitParam(type = "query", dataType = "String", name = "cityName", value = "城市名称", required = true),
@ApiImplicitParam(type = "query", dataType = "int", name = "days", value = "时间范围 几天 今天1 三天3。。。"),
@ApiImplicitParam(type = "query", dataType = "String", name = "title", value = "演出名称"),
@ApiImplicitParam(type = "query", dataType = "String", name = "cityName", value = "城市名称"),
@ApiImplicitParam(type = "query", dataType = "int", name = "type", value = "演出类型 101音乐节 102小型演出(livehouse演出) 103巡演 演出类型只有这几个了"),
// @ApiImplicitParam(type = "query", dataType = "int", name = "type", value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isDiscount", value = "是否会员优惠 0 1"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isAdvance", value = "是否优先 0 1"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isExclusive", value = "是否会员专属 0 1"),
@ApiImplicitParam(type = "query", dataType = "int", name = "page", value = "页码"),
@ApiImplicitParam(type = "query", dataType = "int", name = "size", value = "每页数量"),
@ApiImplicitParam(type = "query", dataType = "String", name = "orderBy", value = "排序字段 时间timeStart"),
@ApiImplicitParam(type = "query", dataType = "String", name = "sort", value = "排序方式[DESC ASC]"),
})
public ResponseDto<HashMap<String, Object>> localList(
@RequestParam(defaultValue = "") String timeStart,
@RequestParam(defaultValue = "0") int days,
@RequestParam(defaultValue = "") String title,
@RequestParam(defaultValue = "") String cityName,
@RequestParam(defaultValue = "0") int days,
@RequestParam(defaultValue = "0") int type,
@RequestParam(defaultValue = "") Integer isDiscount,
@RequestParam(defaultValue = "") Integer isAdvance,
@RequestParam(defaultValue = "") Integer isExclusive,
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "10") int size,
// 排序
@RequestParam(defaultValue = "") String orderBy,
@RequestParam(defaultValue = "") String sort
) {
HashMap<String, Object> result = kylinPerformancesService.localList(
timeStart, days, title, cityName, type,
days, cityName, type,
isDiscount, isAdvance, isExclusive,
page, size,
orderBy, sort
);
return ResponseDto.success(result);
}
......@@ -100,15 +85,8 @@ public class KylinPerformancesController {
@GetMapping("exclusiveList")
@ApiOperation("会员专属演出列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "int", name = "page", value = "页码"),
@ApiImplicitParam(type = "query", dataType = "int", name = "size", value = "每页数量")
})
public ResponseDto<List<KylinPerformanceVo>> exclusiveList(
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "10") int size
) {
List<KylinPerformanceVo> result = kylinPerformancesService.exclusiveList(page, size);
public ResponseDto<List<KylinPerformanceVo>> exclusiveList() {
List<KylinPerformanceVo> result = kylinPerformancesService.exclusiveList();
return ResponseDto.success(result);
}
......@@ -135,7 +113,7 @@ public class KylinPerformancesController {
@ApiImplicitParam(type = "query", dataType = "String", name = "yearMonth", value = "年月 2021-01", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "cityName", value = "城市名称", required = true)
})
public ResponseDto<List> performanceCalendar(@RequestParam String yearMonth, @RequestParam String cityName) throws ParseException {
public ResponseDto<List> performanceCalendar(@RequestParam String yearMonth, @RequestParam String cityName) {
List result = null;
result = kylinPerformancesService.performanceCalendar(yearMonth, cityName);
return ResponseDto.success(result);
......
......@@ -17,12 +17,12 @@ import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.regex.Pattern;
@Component
public class DataUtils {
......@@ -35,6 +35,10 @@ public class DataUtils {
private RedisUtil redisUtil;
@Autowired
private MongoVoUtils mongoVoUtils;
@Autowired
private DataUtils dataUtils;
@Autowired
private RedisTemplate redisTemplate;
/**
* 根据 购票须知 id 获取 购票须知文案
......@@ -141,7 +145,12 @@ public class DataUtils {
if (redisUtil.hasKey(KylinRedisConst.PERFORMANCES + performanceId)) {
} else {
KylinPerformanceVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
List<KylinPerformanceVo> roadList = new ArrayList();
if (Integer.parseInt(performanceData.getRoadShowId()) > 0) {
roadList = dataUtils.getRoadList(performanceData.getRoadShowId());
}
redisUtil.set(KylinRedisConst.PERFORMANCES + performanceId, performanceData);
performanceData.setRoadList(roadList); // 不一起存到演出详情
}
return (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
}
......@@ -369,14 +378,14 @@ public class DataUtils {
int count = 0;
for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
String item = allTicketId.get(useTime).get(i);
if(allTicketId.get(useTime).size()==1){
if (allTicketId.get(useTime).size() == 1) {
redisUtil.incr(performanceIdKey, buyCount);
break;
}
if (i == 0) {
count = (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item);
} else {
if(count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)){
if (count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)) {
redisUtil.incr(performanceIdKey, buyCount);
break;
}
......@@ -391,14 +400,14 @@ public class DataUtils {
int count = 0;
for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
String item = allTicketId.get(useTime).get(i);
if(allTicketId.get(useTime).size()==1){
if (allTicketId.get(useTime).size() == 1) {
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
break;
}
if (i == 0) {
count = (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item);
} else {
if(count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)){
if (count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)) {
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
break;
}
......@@ -471,13 +480,19 @@ public class DataUtils {
* @param cityName
*/
public List<KylinPerformanceVo> getPerformancesListOfcityName(String cityName) {
String redisKey = KylinRedisConst.PERFORMANCES.concat(cityName);
String redisKey = KylinRedisConst.PERFORMANCES_LIST_CITYNAME.concat(cityName);
if (!redisUtil.hasKey(redisKey)) {
// 固定查询条件
Query query = new Query();
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime);
query.addCriteria(Criteria.where("timeEnd").gte(nowTimeStr));
// 其他条件
Pattern cityNameCompile = Pattern.compile("^.*" + cityName + ".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("cityName").regex(cityNameCompile));
// 排序
Sort sortName = Sort.by(Sort.Direction.ASC, "timeStart");
query.with(sortName);
// 不要查询的字段
query.fields().exclude("details");
query.fields().exclude("noticeImage");
......@@ -488,6 +503,15 @@ public class DataUtils {
return (List<KylinPerformanceVo>) redisUtil.get(redisKey);
}
/**
* 删除演出列表redis
*
* @param cityName
*/
public void delPerformancesListOfcityName(String cityName) {
redisUtil.del(KylinRedisConst.ORDER_ENTITIES.concat(cityName));
}
/**
* 获取推荐演出列表redis
*/
......@@ -499,6 +523,9 @@ public class DataUtils {
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime);
query.addCriteria(Criteria.where("timeEnd").gte(nowTimeStr));
// 排序
Sort sortName = Sort.by(Sort.Direction.ASC, "timeStart");
query.with(sortName);
// 不要查询的字段
query.fields().exclude("details");
query.fields().exclude("noticeImage");
......@@ -513,11 +540,45 @@ public class DataUtils {
/**
* 删除演出列表redis
*
* @param cityName
*/
public void delPerformancesListOfcityName(String cityName) {
redisUtil.del(KylinRedisConst.ORDER_ENTITIES.concat(cityName));
public void delPerformancesListIsRecommend() {
redisUtil.del(KylinRedisConst.PERFORMANCES_LIST_RECOMMEND);
}
/**
* 获取所有城市演出列表redis
*/
public List<KylinPerformanceVo> getPerformancesListAll() {
List<KylinPerformanceVo> list = new ArrayList<>();
Set<String> keys = redisTemplate.keys(KylinRedisConst.PERFORMANCES_LIST_ALL);
for (String key : keys) {
List<KylinPerformanceVo> OneCityList = (List<KylinPerformanceVo>) redisUtil.get(key);
list.addAll(OneCityList);
}
return list;
}
/**
* 获取巡演列表redis
*/
public List<KylinPerformanceVo> getRoadList(String roadShowId) {
String redisKey = KylinRedisConst.PERFORMANCES_ROADLIST.concat(roadShowId);
if (!redisUtil.hasKey(redisKey)) {
List<KylinPerformanceVo> roadList = mongoTemplate.find(
Query.query(Criteria.where("roadShowId").is(roadShowId)),
KylinPerformanceVo.class,
KylinPerformanceVo.class.getSimpleName()
);
redisUtil.set(redisKey, roadList);
}
return (List<KylinPerformanceVo>) redisUtil.get(redisKey);
}
/**
* 删除巡演列表redis
*/
public void delRoadList(String roadShowId) {
redisUtil.del(KylinRedisConst.PERFORMANCES_ROADLIST.concat(roadShowId));
}
}
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