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

Commit 712b5780 authored by 张国柄's avatar 张国柄

验票API:

 +刷新验票数据API;
 登录返回+UID、MOBILE、NAME;
 演出列表+城市、场地;
parent 91f31742
package com.liquidnet.service.kylin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "KylinStationLoginVo", description = "专业版登录成功响应数据")
@Data
public class KylinStationLoginVo implements Serializable, Cloneable {
private static final long serialVersionUID = 9097515630202255297L;
@ApiModelProperty(position = 10, value = "ID[64]")
private String uid;
@ApiModelProperty(position = 11, value = "手机号[11]")
private String mobile;
@ApiModelProperty(position = 12, value = "姓名[20]")
private String name;
@ApiModelProperty(position = 13, value = "TOKEN[255]")
private String token;
private static final KylinStationLoginVo obj = new KylinStationLoginVo();
public static KylinStationLoginVo getNew() {
try {
return (KylinStationLoginVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinStationLoginVo();
}
}
}
......@@ -21,9 +21,13 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable {
private String timeStart;
@ApiModelProperty(position = 14, value = "结束时间[yyyy/MM/dd]")
private String timeEnd;
@ApiModelProperty(position = 15, value = "票种列表信息")
@ApiModelProperty(position = 15, value = "城市名称")
private String cityName;
@ApiModelProperty(position = 16, value = "场地名称")
private String fieldName;
@ApiModelProperty(position = 17, value = "票种列表信息")
private List<KylinStationTicketVo> ticketVoList;
@ApiModelProperty(position = 16, value = "可下载时间")
@ApiModelProperty(position = 18, value = "可下载时间")
private String canDownTime;
private static final KylinStationPerformanceVo obj = new KylinStationPerformanceVo();
......
......@@ -2,10 +2,7 @@ package com.liquidnet.service.kylin.controller;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.CheckPerformanceRelationParam;
......@@ -65,7 +62,7 @@ public class KylinStationController {
@ApiImplicitParam(type = "form", dataType = "String", name = "passwd", value = "密码", example = "123456"),
})
@PostMapping("login")
public ResponseDto<String> login(@RequestParam String mobile, @RequestParam String passwd) {
public ResponseDto<KylinStationLoginVo> login(@RequestParam String mobile, @RequestParam String passwd) {
log.info("mobile:{},passwd:{}", mobile, passwd);
return this.loginVerification(mobile, passwd, true);
......@@ -77,7 +74,7 @@ public class KylinStationController {
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "code", value = "验证码", example = "111111"),
})
@PostMapping("login/sms")
public ResponseDto<String> loginBySms(@RequestParam String mobile, @RequestParam String code) {
public ResponseDto<KylinStationLoginVo> loginBySms(@RequestParam String mobile, @RequestParam String code) {
log.info("mobile:{},code:{}", mobile, code);
return this.loginVerification(mobile, code, false);
......@@ -105,7 +102,7 @@ public class KylinStationController {
@ApiOperation(value = "演出列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "mod", value = "模块[recent-近期的,down-已下载,over-历史]", allowableValues = "recent,down,over"),
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "mod", value = "模块[recent-近期的]", allowableValues = "recent"),
})
@GetMapping("performances/{mod}")
public ResponseDto<List<KylinStationPerformanceVo>> performances(@PathVariable String mod) {
......@@ -208,15 +205,12 @@ public class KylinStationController {
@ApiOperation(value = "下载验票数据")
@ApiImplicitParams({
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "type", value = "类型[101-音乐节,102小型演出(livehouse演出),103巡演]", allowableValues = "101,102,103"),
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "performanceId", value = "演出ID[64]"),
@ApiImplicitParam(type = "path", required = true, dataType = "String", name = "type", value = "类型[101-音乐节,102小型演出(livehouse演出),103巡演]", allowableValues = "101,102,103"),
@ApiImplicitParam(type = "path", required = true, dataType = "String", name = "performanceId", value = "演出ID[64]"),
})
@GetMapping("download/{type}/{performanceId}")
public ResponseDto<List<KylinStationCheckOrderVo>> downloadTicketData(@PathVariable String type, @PathVariable String performanceId) {
log.info("type:{},performanceId:{}", type, performanceId);
List<KylinStationCheckOrderVo> voList = new ArrayList<>();
String currentUid = CurrentUtil.getCurrentUid();
// 查取当前用户下关联演出ID列表
......@@ -235,6 +229,8 @@ public class KylinStationController {
return ResponseDto.failure(ErrorMapping.get("20608"));
}
List<KylinStationCheckOrderVo> voList = new ArrayList<>();
// 查取演出对应的订单票明细
Query orderTicketEntitiesVoQuery = Query.query(Criteria.where("performanceId").is(performanceId).and("isPayment").is(1));
voList = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
......@@ -254,17 +250,66 @@ public class KylinStationController {
@ApiOperation(value = "上载验票数据")
@PostMapping("upload")
public ResponseDto<Boolean> uploadTicketData(@RequestBody KylinStationCheckOrderParam checkDataParam) {
public ResponseDto<Object> uploadTicketData(@RequestBody KylinStationCheckOrderParam checkDataParam) {
log.info("checkDataParams:{}", JsonUtils.toJson(checkDataParam));
kylinOrderTicketEntitiesService.updateByStation(checkDataParam);
return ResponseDto.success(true);
return ResponseDto.success();
}
@ApiOperation(value = "刷新验票数据")
@ApiImplicitParams({
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "type", value = "类型[101-音乐节,102小型演出(livehouse演出),103巡演]", allowableValues = "101,102,103"),
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "performanceId", value = "演出ID[64]"),
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "latestUpdateAt", value = "最近更新时间[yyyy-MM-dd HH:mm:ss]"),
})
@PostMapping("refresh")
public ResponseDto<List<KylinStationCheckOrderVo>> refreshTicketData(@PathVariable String type,
@PathVariable String performanceId, @PathVariable String latestUpdateAt) {
log.info("refresh type:{},performanceId:{},latestUpdateAt:{}", type, performanceId, latestUpdateAt);
String currentUid = CurrentUtil.getCurrentUid();
// 查取当前用户下关联演出ID列表
KylinCheckUserPerformanceVo checkUserRelationVo = dataUtils.getCheckUserRelationVo(currentUid);
List<CheckPerformanceRelationParam> relationParams;
if (null == checkUserRelationVo || CollectionUtils.isEmpty(relationParams = checkUserRelationVo.getRelationParams())) {
return ResponseDto.failure(ErrorMapping.get("20606"));
}
Optional<CheckPerformanceRelationParam> optional = relationParams.stream().findFirst().filter(r -> r.getPerformanceId().equals(performanceId));
if (!optional.isPresent()) {
return ResponseDto.failure(ErrorMapping.get("20607"));
}
CheckPerformanceRelationParam relationParam = optional.get();
LocalDateTime canDownDt = DateUtil.Formatter.yyyyMMddHHmmss.parse(relationParam.getCanDownTime());
if (canDownDt.isAfter(LocalDateTime.now())) {
return ResponseDto.failure(ErrorMapping.get("20608"));
}
List<KylinStationCheckOrderVo> voList = new ArrayList<>();
// 查取演出对应的订单票明细
Query orderTicketEntitiesVoQuery = Query.query(
Criteria.where("performanceId").is(performanceId).and("updatedAt").gte(latestUpdateAt)
);
voList = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
Query query = Query.query(Criteria.where("orderTicketsId").in(
voList.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()
));
query.fields().include("orderTicketsId").include("qrCode");
List<KylinOrderTicketVo> orderTicketVoList = mongoTemplate.find(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo t : orderTicketVoList)
for (KylinStationCheckOrderVo r : voList)
if (r.getOrderId().equals(t.getOrderTicketsId())) r.setQrCode(t.getQrCode());
return ResponseDto.success(voList);
}
/* ------------------------------------------------------------------ */
private ResponseDto<String> loginVerification(String mobile, String identity, boolean isPasswd) {
private ResponseDto<KylinStationLoginVo> loginVerification(String mobile, String identity, boolean isPasswd) {
KylinCheckUserVo checkUserVo = mongoTemplate.findOne(Query.query(Criteria.where("mobile").is(mobile)),
KylinCheckUserVo.class, KylinCheckUserVo.class.getSimpleName());
......@@ -309,7 +354,7 @@ public class KylinStationController {
}
}
private ResponseDto<String> loginAuthentication(KylinCheckUserVo checkUserVo) {
private ResponseDto<KylinStationLoginVo> loginAuthentication(KylinCheckUserVo checkUserVo) {
String uid = checkUserVo.getCheckUserId();
String ssoKeyUid = jwtValidator.getSsoRedisKey().concat(uid);
......@@ -325,7 +370,12 @@ public class KylinStationController {
redisUtil.set(ssoKeyUidM5Token, true, jwtValidator.getExpireTtl() * 60);
return ResponseDto.success(token);
KylinStationLoginVo stationLoginVo = KylinStationLoginVo.getNew();
stationLoginVo.setUid(checkUserVo.getCheckUserId());
stationLoginVo.setMobile(SensitizeUtil.custom(checkUserVo.getMobile(), 3, 4));
stationLoginVo.setName(SensitizeUtil.chineseName(checkUserVo.getName()));
stationLoginVo.setToken(token);
return ResponseDto.success(stationLoginVo);
}
private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
......
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.kylin.dto.param.KylinStationCheckOrderParam;
import com.liquidnet.service.kylin.dto.vo.KylinOrderTicketEntitiesVo;
......@@ -48,6 +49,7 @@ public class KylinOrderTicketEntitiesServiceImpl extends ServiceImpl<KylinOrderT
KylinOrderTicketEntitiesVo updateVo = new KylinOrderTicketEntitiesVo();
updateVo.setCheckClient(checkDataParam.getCheckClient());
updateVo.setUpdatedAt(DateUtil.getNowTime());
updateVo.setStatus(1);// 1-已出票
List<String> checkedEntitiesIdList = checkDataParam.getCheckedEntitiesIdList();
mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).updateMany(
......
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