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

Commit 427d0769 authored by anjiabin's avatar anjiabin
parents 9e5f882a 557f4a55
package com.liquidnet.service.kylin.controller; package com.liquidnet.service.kylin.controller;
import com.github.pagehelper.PageInfo;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.core.JwtValidator; import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
...@@ -18,6 +19,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -18,6 +19,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
...@@ -102,105 +104,116 @@ public class KylinStationController { ...@@ -102,105 +104,116 @@ public class KylinStationController {
@ApiOperation(value = "演出列表") @ApiOperation(value = "演出列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "mod", value = "模块[recent-近期的]", allowableValues = "recent"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mod", value = "模块[recent-近期的,over-历史]", allowableValues = "recent,over"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "pageNo", value = "页码", example = "1"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "pageSize", value = "页记录数", example = "5"),
}) })
@GetMapping("performances/{mod}") @GetMapping("performances")
public ResponseDto<List<KylinStationPerformanceVo>> performances(@PathVariable String mod) { public ResponseDto<PageInfo<KylinStationPerformanceVo>> performances(@RequestParam String mod,
@RequestParam(defaultValue = "1", required = false) int pageNo,
@RequestParam(defaultValue = "5", required = false) int pageSize) {
List<KylinStationPerformanceVo> voList = new ArrayList<>(); List<KylinStationPerformanceVo> voList = new ArrayList<>();
String currentUid = CurrentUtil.getCurrentUid(); String currentUid = CurrentUtil.getCurrentUid();
long count = 0;
try { try {
switch (mod) { // 查取当前用户下关联演出ID列表
case "recent": KylinCheckUserPerformanceVo checkUserRelationVo = dataUtils.getCheckUserRelationVo(currentUid);
log.info(":::performances/recent:{}", currentUid);
// 查取当前用户下关联演出ID列表 if (null != checkUserRelationVo) {
KylinCheckUserPerformanceVo checkUserRelationVo = dataUtils.getCheckUserRelationVo(currentUid); List<CheckPerformanceRelationParam> performanceRelationList = checkUserRelationVo.getRelationParams();
if (!CollectionUtils.isEmpty(performanceRelationList)) {
if (null != checkUserRelationVo) { LocalDateTime tmpDt = LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0, 0));
List<CheckPerformanceRelationParam> performanceRelationList = checkUserRelationVo.getRelationParams(); String tmpDtStr = DateUtil.format(tmpDt, DateUtil.Formatter.yyyyMMddHHmmss);
if (!CollectionUtils.isEmpty(performanceRelationList)) { Query performancesVoQuery = Query.query(Criteria.where("performancesId").in(
LocalDateTime tmpDt = LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0, 0)); performanceRelationList.stream().map(CheckPerformanceRelationParam::getPerformanceId).toArray()
String tmpDtStr = DateUtil.format(tmpDt, DateUtil.Formatter.yyyyMMddHHmmss); ));
switch (mod) {
// 转换Map<performanceId, canDownTime> case "recent":
Map<String, String> performanceRelationMap = performanceRelationList.stream().collect(Collectors.toMap(CheckPerformanceRelationParam::getPerformanceId, CheckPerformanceRelationParam::getCanDownTime)); log.info(":::performances/recent:{}", currentUid);
performancesVoQuery.addCriteria(Criteria.where("timeEnd").gt(tmpDtStr));
// 查取指定条件的演出列表 break;
Query performancesVoQuery = Query.query(Criteria.where("performancesId").in( // case "down":
performanceRelationList.stream().map(CheckPerformanceRelationParam::getPerformanceId).toArray() // log.info(":::performances/down:{}", currentUid);
).and("timeEnd").gt(tmpDtStr)); // break;
performancesVoQuery.with(Sort.by(Sort.Order.asc("timeEnd"), Sort.Order.desc("sort"))); case "over":
voList = mongoTemplate.find(performancesVoQuery, KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName()); log.info(":::performances/over:{}", currentUid);
performancesVoQuery.addCriteria(Criteria.where("timeEnd").lte(tmpDtStr));
// 查取演出对应的订单票明细 break;
Query orderTicketEntitiesVoQuery = Query.query(Criteria.where("performanceId").in( default:
voList.stream().map(KylinStationPerformanceVo::getPerformancesId).toArray() log.info(":::performances/default:{}", currentUid);
).and("isPayment").is(1)); return ResponseDto.success(new PageInfo<>());
List<KylinOrderTicketEntitiesVo> oteVoList = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
// 转换订单票明细结构为Map<performanceId, List<KylinOrderTicketEntitiesVo>>
Map<String, List<KylinOrderTicketEntitiesVo>> oteVoMap = oteVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getPerformanceId));
// 查取订单对应票种
Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in(
oteVoList.stream().filter(distinctByKey(KylinOrderTicketEntitiesVo::getTicketId)).map(KylinOrderTicketEntitiesVo::getTicketId).toArray()
));
List<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
// 转换票种信息结构为Map<ticketsId, ticketVo>
Map<String, KylinTicketVo> performanceTicketMap = performanceTicketVoList.stream().collect(Collectors.toMap(KylinTicketVo::getTicketsId, Function.identity(), (k1, k2) -> k2));
// 补充演出列表票种统计
voList.forEach(r -> {
// 演出的所有订单票明细
List<KylinOrderTicketEntitiesVo> performanceTicketEntitiesVoList = oteVoMap.get(r.getPerformancesId());
// 订单票明细按票种分组
Map<String, List<KylinOrderTicketEntitiesVo>> performanceTicketEntitiesVoMap = performanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getTicketId));
List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
for (Map.Entry<String, List<KylinOrderTicketEntitiesVo>> entry : performanceTicketEntitiesVoMap.entrySet()) {
KylinTicketVo ticketVo = performanceTicketMap.get(entry.getKey());
KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
stationTicketVo.setTicketId(ticketVo.getTicketsId());
stationTicketVo.setTitle(ticketVo.getTitle());
stationTicketVo.setPrice(ticketVo.getPrice());
stationTicketVo.setUseStart(ticketVo.getUseStart());
stationTicketVo.setUseEnd(ticketVo.getUseEnd());
List<KylinOrderTicketEntitiesVo> subPerformanceTicketEntitiesVoList = entry.getValue();
// 订单票明细按出票状态分组
Map<Integer, List<KylinOrderTicketEntitiesVo>> subStatusPerformanceTicketEntitiesVoMap
= subPerformanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getStatus));
stationTicketVo.setNumber(subPerformanceTicketEntitiesVoList.size());
stationTicketVo.setPriceSum(stationTicketVo.getPrice().multiply(BigDecimal.valueOf(stationTicketVo.getNumber())));
List<KylinOrderTicketEntitiesVo> checkedEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(1);
stationTicketVo.setCheckedNum(CollectionUtils.isEmpty(checkedEntitiesVoList) ? 0 : checkedEntitiesVoList.size());
List<KylinOrderTicketEntitiesVo> remainderEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(0);
stationTicketVo.setRemainderNum(CollectionUtils.isEmpty(remainderEntitiesVoList) ? 0 : remainderEntitiesVoList.size());
ticketVoList.add(stationTicketVo);
}
r.setTicketVoList(ticketVoList);
r.setCanDownTime(performanceRelationMap.get(r.getPerformancesId()));
});
}
} }
break; count = mongoTemplate.count(performancesVoQuery, KylinPerformanceVo.class.getSimpleName());
case "down":
log.info(":::performances/down:{}", currentUid); if (count <= 0) return ResponseDto.success(new PageInfo<>());
break;
case "over": performancesVoQuery.with(PageRequest.of(pageNo - 1, pageSize));
log.info(":::performances/over:{}", currentUid); performancesVoQuery.with(Sort.by(Sort.Order.asc("timeEnd"), Sort.Order.desc("sort")));
break; voList = mongoTemplate.find(performancesVoQuery, KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
default:
log.info(":::performances/default:{}", currentUid); // 查取演出对应的订单票明细
break; Query orderTicketEntitiesVoQuery = Query.query(Criteria.where("performanceId").in(
voList.stream().map(KylinStationPerformanceVo::getPerformancesId).toArray()
).and("isPayment").is(1));
List<KylinOrderTicketEntitiesVo> oteVoList = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
// 转换订单票明细结构为Map<performanceId, List<KylinOrderTicketEntitiesVo>>
Map<String, List<KylinOrderTicketEntitiesVo>> oteVoMap = oteVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getPerformanceId));
// 查取订单对应票种
Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in(
oteVoList.stream().filter(distinctByKey(KylinOrderTicketEntitiesVo::getTicketId)).map(KylinOrderTicketEntitiesVo::getTicketId).toArray()
));
List<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
// 转换票种信息结构为Map<ticketsId, ticketVo>
Map<String, KylinTicketVo> performanceTicketMap = performanceTicketVoList.stream().collect(Collectors.toMap(KylinTicketVo::getTicketsId, Function.identity(), (k1, k2) -> k2));
// 转换Map<performanceId, canDownTime>
Map<String, String> performanceRelationMap = performanceRelationList.stream().collect(Collectors.toMap(CheckPerformanceRelationParam::getPerformanceId, CheckPerformanceRelationParam::getCanDownTime));
// 补充演出列表票种统计
voList.forEach(r -> {
// 演出的所有订单票明细
List<KylinOrderTicketEntitiesVo> performanceTicketEntitiesVoList = oteVoMap.get(r.getPerformancesId());
// 订单票明细按票种分组
Map<String, List<KylinOrderTicketEntitiesVo>> performanceTicketEntitiesVoMap = performanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getTicketId));
List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
for (Map.Entry<String, List<KylinOrderTicketEntitiesVo>> entry : performanceTicketEntitiesVoMap.entrySet()) {
KylinTicketVo ticketVo = performanceTicketMap.get(entry.getKey());
KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
stationTicketVo.setTicketId(ticketVo.getTicketsId());
stationTicketVo.setTitle(ticketVo.getTitle());
stationTicketVo.setPrice(ticketVo.getPrice());
stationTicketVo.setUseStart(ticketVo.getUseStart());
stationTicketVo.setUseEnd(ticketVo.getUseEnd());
List<KylinOrderTicketEntitiesVo> subPerformanceTicketEntitiesVoList = entry.getValue();
// 订单票明细按出票状态分组
Map<Integer, List<KylinOrderTicketEntitiesVo>> subStatusPerformanceTicketEntitiesVoMap
= subPerformanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getStatus));
stationTicketVo.setNumber(subPerformanceTicketEntitiesVoList.size());
stationTicketVo.setPriceSum(stationTicketVo.getPrice().multiply(BigDecimal.valueOf(stationTicketVo.getNumber())));
List<KylinOrderTicketEntitiesVo> checkedEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(1);
stationTicketVo.setCheckedNum(CollectionUtils.isEmpty(checkedEntitiesVoList) ? 0 : checkedEntitiesVoList.size());
List<KylinOrderTicketEntitiesVo> remainderEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(0);
stationTicketVo.setRemainderNum(CollectionUtils.isEmpty(remainderEntitiesVoList) ? 0 : remainderEntitiesVoList.size());
ticketVoList.add(stationTicketVo);
}
r.setTicketVoList(ticketVoList);
r.setCanDownTime(performanceRelationMap.get(r.getPerformancesId()));
});
}
} }
} catch (Exception e) { } catch (Exception e) {
log.error("验票:查取演出列表异常:/station/performances/?", e); log.error("验票:查取演出列表异常:/station/performances/?", e);
} }
return ResponseDto.success(voList); PageInfo<KylinStationPerformanceVo> voPageInfo = PageInfo.of(voList);
voPageInfo.setTotal(count);
return ResponseDto.success(voPageInfo);
} }
@ApiOperation(value = "下载验票数据") @ApiOperation(value = "下载验票数据")
......
...@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.vo.KylinOrderTicketEntitiesVo; ...@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.vo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities; import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketEntitiesMapper; import com.liquidnet.service.kylin.mapper.KylinOrderTicketEntitiesMapper;
import com.liquidnet.service.kylin.service.IKylinOrderTicketEntitiesService; import com.liquidnet.service.kylin.service.IKylinOrderTicketEntitiesService;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.mongodb.bulk.BulkWriteResult; import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.model.UpdateOneModel; import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.model.WriteModel; import com.mongodb.client.model.WriteModel;
...@@ -45,6 +46,8 @@ public class KylinOrderTicketEntitiesServiceImpl extends ServiceImpl<KylinOrderT ...@@ -45,6 +46,8 @@ public class KylinOrderTicketEntitiesServiceImpl extends ServiceImpl<KylinOrderT
MongoTemplate mongoTemplate; MongoTemplate mongoTemplate;
@Autowired @Autowired
RabbitTemplate rabbitTemplate; RabbitTemplate rabbitTemplate;
@Autowired
DataUtils dataUtils;
@Override @Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
...@@ -71,6 +74,8 @@ public class KylinOrderTicketEntitiesServiceImpl extends ServiceImpl<KylinOrderT ...@@ -71,6 +74,8 @@ public class KylinOrderTicketEntitiesServiceImpl extends ServiceImpl<KylinOrderT
updateVo.setUpdatedAt(nowDtStr); updateVo.setUpdatedAt(nowDtStr);
updateVo.setStatus(1); updateVo.setStatus(1);
dataUtils.delOrderTicketEntitiesRedis(r.getTicketEntitiesId());
paramsList.add(new Object[]{1, nowDtStr, r.getCheckedAt(), r.getCheckType(), r.getCheckUserId(), r.getTicketEntitiesId()}); paramsList.add(new Object[]{1, nowDtStr, r.getCheckedAt(), r.getCheckType(), r.getCheckUserId(), r.getTicketEntitiesId()});
Document updateQuery = Query.query(Criteria.where("orderTicketEntitiesId").is(r.getTicketEntitiesId())).getQueryObject(); Document updateQuery = Query.query(Criteria.where("orderTicketEntitiesId").is(r.getTicketEntitiesId())).getQueryObject();
list.add(new UpdateOneModel<Document>(updateQuery, new Document("$set", Document.parse(JsonUtils.toJson(updateVo))))); list.add(new UpdateOneModel<Document>(updateQuery, new Document("$set", Document.parse(JsonUtils.toJson(updateVo)))));
...@@ -78,6 +83,8 @@ public class KylinOrderTicketEntitiesServiceImpl extends ServiceImpl<KylinOrderT ...@@ -78,6 +83,8 @@ public class KylinOrderTicketEntitiesServiceImpl extends ServiceImpl<KylinOrderT
BulkWriteResult bulkWriteResult = mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).bulkWrite(list); BulkWriteResult bulkWriteResult = mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).bulkWrite(list);
log.info("bulkWriteResult:{}", JsonUtils.toJson(bulkWriteResult)); log.info("bulkWriteResult:{}", JsonUtils.toJson(bulkWriteResult));
// TODO: 2021/6/1 sql to mq // TODO: 2021/6/1 sql to mq
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL, // rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("kylin_order_ticket_entities.updateStatusByStation", paramsList)); // SqlMapping.get("kylin_order_ticket_entities.updateStatusByStation", paramsList));
......
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