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

Commit b512594f authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/dev' into dev

parents a76b88ac 92e6f59b
......@@ -5,15 +5,18 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel(value = "AdamMemberOrderCodeParam", description = "使用兑换码")
@Data
public class AdamMemberOrderCodeParam implements Serializable {
private static final long serialVersionUID = 5940725094369061032L;
@ApiModelProperty(position = 0, required = false, example = "0")
private String uid;
@ApiModelProperty(position = 0, required = true, value = "类型2-会员码 3-礼包码", example = "2")
private int type;
@ApiModelProperty(position = 1, required = true, example = "0")
private String memberCode;
@ApiModelProperty(position = 2, required = true, example = "0")
private LocalDateTime birthday;
}
......@@ -42,7 +42,7 @@ public class AdamMemberOrderVo implements Serializable {
private String createdAt;
@ApiModelProperty(position = 14, value = "兑换码")
private String memberCode;
@ApiModelProperty(position = 15, value = "兑换码")
@ApiModelProperty(position = 15, value = "价格")
private BigDecimal price;
public static final AdamMemberOrderVo obj = new AdamMemberOrderVo();
......
......@@ -8,6 +8,8 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.entity.AdamMemberOrder;
import java.util.List;
/**
* 对客户端API接口
*/
......@@ -24,7 +26,14 @@ public interface IAdamMemberOrderService extends IService<AdamMemberOrder> {
* @param param
* @return
*/
Object useMemberCode(AdamMemberOrderCodeParam param);
boolean useMemberCode(AdamMemberOrderCodeParam param);
/**
* 获取订单列表
* @param uid
* @return
*/
List<AdamMemberOrderVo> getMemberOrderList(String uid);
/**
* 获取订单详情信息
......@@ -32,7 +41,7 @@ public interface IAdamMemberOrderService extends IService<AdamMemberOrder> {
* @param orderNo 订单号
* @return
*/
AdamMemberOrderVo getMemberOrderInfo(String orderNo);
AdamMemberOrderVo getMemberOrderInfo(String uid,String orderNo);
/**
* 支付回调
......
package com.liquidnet.service.adam.service.admin;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import java.util.List;
......@@ -10,7 +11,7 @@ public interface IAdamMemberPriceService extends IService<AdamMemberPrice> {
void add(AdamMemberPrice info);
AdamMemberPrice query(String memberPriceId);
AdamMemberPriceVo query(String memberId, String memberPriceId);
boolean edit(AdamMemberPrice info);
}
......@@ -3,7 +3,7 @@ package com.liquidnet.service.adam.constant;
/**
* 订单
*/
public class AdamMemberOrderConst {
public class AdamMemberConst {
// 订单状态
public static final Integer STATUS_UNPAID = 0; // 待支付
public static final Integer STATUS_PAID = 1; // 已支付
......@@ -30,5 +30,13 @@ public class AdamMemberOrderConst {
public static final Integer STATE_VALID = 1; // 正常
public static final Integer STATE_EXPIRED = 2; // 已失效
// 会员码状态
public static final Integer STATUS_UNUSED = 0; // 未使用
public static final Integer STATUS_USED = 1; // 已使用
public static final Integer STATUS_INVALID = 2; // 已失效
public static final String VIP_CODE = "VIP_CODE";
public static final String GIFT_CODE = "GIFT_CODE";
}
......@@ -2,19 +2,23 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult;
import com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(tags = "购买会员")
@Slf4j
......@@ -44,7 +48,10 @@ public class AdamMemberOrderController {
@PostMapping("/use/memberCode")
public ResponseDto<AdamMemberOrder> useMemberCode(AdamMemberOrderCodeParam param) {
try {
adamMemberOrderService.useMemberCode(param);
boolean result = adamMemberOrderService.useMemberCode(param);
if (!result) {
return ResponseDto.failure("兑换失败");
}
return ResponseDto.success();
} catch (Exception e) {
e.printStackTrace();
......@@ -52,4 +59,33 @@ public class AdamMemberOrderController {
}
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "会员订单列表")
@GetMapping("/member/order/list")
public ResponseDto<List<AdamMemberOrderVo>> getMemberOrderList() {
String currentUid = CurrentUtil.getCurrentUid();
List<AdamMemberOrderVo> memberOrderList = adamMemberOrderService.getMemberOrderList(currentUid);
return ResponseDto.success(memberOrderList);
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "会员订单详情")
@GetMapping("/member/order/info/{orderNo}")
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@PathVariable String orderNo) {
String currentUid = CurrentUtil.getCurrentUid();
AdamMemberOrderVo memberOrderInfo = adamMemberOrderService.getMemberOrderInfo(currentUid, orderNo);
return ResponseDto.success(memberOrderInfo);
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "会员支付回调")
@PostMapping("/member/order/callback")
public ResponseDto<Object> memberOrderCallBack(AdamMemberOrderCallbackResult result){
boolean b = adamMemberOrderService.memberNotifyCallBack(result);
if (b) {
return ResponseDto.success();
} else {
return ResponseDto.failure();
}
}
}
......@@ -44,14 +44,10 @@ public class AdamMemberPriceController {
@ApiOperationSupport(order = 1)
@ApiOperation(value = "会员价格详情")
@GetMapping("info/{memberPriceId}")
public ResponseDto<Object> query(@PathVariable(name = "memberPriceId") String memberPriceId){
AdamMemberPrice adamMemberPrice = adamMemberPriceService.query(memberPriceId);
AdamMemberPriceVo adamMemberPriceVo = new AdamMemberPriceVo();
BeanUtils.copyProperties(adamMemberPrice, adamMemberPriceVo);
adamMemberPriceVo.setCreatedAt(DateUtil.format(adamMemberPrice.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
adamMemberPriceVo.setUpdatedAt(DateUtil.format(adamMemberPrice.getUpdatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
return ResponseDto.success(adamMemberPriceVo);
@GetMapping("info/{memberId}/{memberPriceId}")
public ResponseDto<AdamMemberPriceVo> query(@PathVariable(name = "memberId") String memberId, @PathVariable(name = "memberPriceId") String memberPriceId){
AdamMemberPriceVo adamMemberPrice = adamMemberPriceService.query(memberId, memberPriceId);
return ResponseDto.success(adamMemberPrice);
}
@ApiOperationSupport(order = 2)
......
......@@ -4,11 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamMemberOrderConst;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamMemberConst;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult;
import com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam;
......@@ -34,10 +31,7 @@ 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.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
......@@ -64,6 +58,44 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
@Autowired
IAdamMemberService adamMemberService;
@Override
public List<AdamMemberOrderVo> getMemberOrderList(String uid) {
String redisKey = AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(uid);
List<AdamMemberOrderVo> voList = new ArrayList<>();
LinkedHashSet<String> hkeys = (LinkedHashSet<String>) redisUtil.hkeys(redisKey);
if (hkeys.size() > 0) {
Iterator<String> iterator = hkeys.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
AdamMemberOrderVo tempOrderVo = (AdamMemberOrderVo) redisUtil.hget(redisKey, key);
if (null == tempOrderVo) {
tempOrderVo = mongoTemplate.findOne(Query.query(Criteria.where("orderNo").is(key)), AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName());
}
if (null != tempOrderVo) {
voList.add(tempOrderVo);
}
}
} else {
voList = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid)), AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName());
for (int i = 0; i < voList.size(); i++) {
AdamMemberOrderVo vo = voList.get(i);
redisUtil.hset(redisKey, vo.getOrderNo(), vo);
}
}
return voList;
}
@Override
public AdamMemberOrderVo getMemberOrderInfo(String uid, String orderNo) {
AdamMemberOrderVo orderVo = null;
orderVo = (AdamMemberOrderVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(uid), orderNo);
if (null == orderVo) {
orderVo = mongoTemplate.findOne(Query.query(Criteria.where("orderNo").is(orderNo)),
AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName());
}
return orderVo;
}
@Override
public AdamMemberOrderResult buyMemberOrMemberCode(AdamMemberOrderParam param) throws Exception {
String memberId = param.getMemberId();
......@@ -114,7 +146,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo.setMemberName(adamMemberVo.getName());
orderVo.setMode(param.getMode());
orderVo.setPayChannel(param.getPayChannel());
orderVo.setState(AdamMemberOrderConst.STATUS_UNPAID);
orderVo.setState(AdamMemberConst.STATUS_UNPAID);
orderVo.setUid(param.getUid());
orderVo.setPrice(param.getPrice());
......@@ -130,14 +162,14 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
// 判断购买情况
// 调取对应支付接口
LinkedMultiValueMap<String, String> payParam = new LinkedMultiValueMap<>();
payParam.add("type", AdamMemberOrderConst.TYPE_VIP);
payParam.add("type", AdamMemberConst.TYPE_VIP);
payParam.add("price", String.valueOf(priceVo.getPrice()));
payParam.add("name", orderVo.getMemberName());
payParam.add("order_code", orderVo.getOrderNo());
payParam.add("client_ip", param.getClientIp());
payParam.add("notify_url", "回调地址");
payParam.add("create_date", createdAt);
payParam.add("expire_time", AdamMemberOrderConst.TIME_LIMIT.toString());
payParam.add("expire_time", AdamMemberConst.TIME_LIMIT.toString());
if (null != param.getAuthCode()) {
payParam.add("auth_code", param.getAuthCode());
}
......@@ -171,10 +203,80 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
* @return
*/
@Override
public Object useMemberCode(AdamMemberOrderCodeParam param) {
String uid = param.getUid();
public boolean useMemberCode(AdamMemberOrderCodeParam param) {
String uid = CurrentUtil.getCurrentUid();
String code = param.getMemberCode();
return null;
int type = param.getType();
AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisUtil.get(AdamRedisConst.INFO_MEMBERS_USER_INFO.concat(uid));
if (null == userMemberVo) {
userMemberVo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid)), AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
}
if (null != userMemberVo) {
return false;
}
AdamMemberCodeVo memberCodeVo = mongoTemplate.findOne(Query.query(Criteria.where("memberCode").is(code)), AdamMemberCodeVo.class, AdamMemberCodeVo.class.getSimpleName());
if (memberCodeVo.getState() != AdamMemberConst.STATUS_UNPAID) {
return false;
}
// 获取会员价格对应的天数
AdamMemberPriceVo priceVo = (AdamMemberPriceVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(memberCodeVo.getMemberId()), memberCodeVo.getMemberPriceId());
if (null == priceVo) {
priceVo = mongoTemplate.findOne(Query.query(Criteria.where("memberPriceId").is(memberCodeVo.getMemberPriceId())), AdamMemberPriceVo.class, AdamMemberPriceVo.class.getSimpleName());
}
if (null == priceVo) {
return false;
}
String currentDateTime = DateUtil.getNowTime();
AdamMemberOrderVo orderVo = new AdamMemberOrderVo();
orderVo.setMemberCode(code);
orderVo.setMemberNo(memberCodeVo.getMemberNo());
orderVo.setMemberId(IDGenerator.nextSnowId().toString());
orderVo.setMode(type);
orderVo.setMemberId(memberCodeVo.getMemberId());
orderVo.setMemberPriceId(memberCodeVo.getMemberPriceId());
orderVo.setState(AdamMemberConst.STATUS_UNPAID);
orderVo.setCreatedAt(currentDateTime);
orderVo.setDays(priceVo.getDays());
orderVo.setBirthday(DateUtil.format(param.getBirthday(), DateUtil.Formatter.yyyyMMddHHmmss));
if (AdamMemberConst.SUB_TYPE_USE_VIP_CODE == type) { //使用购买的会员码
orderVo.setPayChannel(AdamMemberConst.VIP_CODE);
} else if (AdamMemberConst.SUB_TYPE_USE_GIFT_CODE == type) { // 使用礼包码
orderVo.setPayChannel(AdamMemberConst.GIFT_CODE);
}
// 创建用户使用兑换码的订单
mongoTemplate.insert(orderVo);
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(uid), orderVo.getOrderNo(), orderVo);
// 组装用户会员数据
AdamUserMemberVo memberVo = new AdamUserMemberVo();
memberVo.setMemberNo(orderVo.getMemberNo());
memberVo.setMemberId(orderVo.getMemberId());
memberVo.setState(AdamMemberConst.STATE_VALID);
memberVo.setUid(uid);
memberVo.setMemberUserId(IDGenerator.nextSnowId().toString());
memberVo.setCreatedAt(currentDateTime);
memberVo.setUpdatedAt(currentDateTime);
Date expiryAt = DateUtil.getBeforeDayEnd(Calendar.getInstance(), orderVo.getDays());
String expiryAtStr = DateUtil.format(expiryAt, DateUtil.Formatter.yyyyMMddHHmmss);
memberVo.setExpiryAt(expiryAtStr);
// 创建用户会员相关信息
mongoTemplate.insert(memberVo);
redisUtil.set(AdamRedisConst.INFO_MEMBERS_USER_INFO.concat(uid), memberVo);
// 更新旧数据
memberCodeVo.setState(AdamMemberConst.STATUS_USED);
BasicDBObject object = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(memberCodeVo)));
mongoTemplate.getCollection(AdamMemberCodeVo.class.getSimpleName())
.updateOne(Query.query(Criteria.where("code").is(memberCodeVo.getCode())).getQueryObject(), object);
// todo MQ 统一通知队列插入数据库
return true;
}
/**
......@@ -211,15 +313,10 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
return result;
}
@Override
public AdamMemberOrderVo getMemberOrderInfo(String orderNo) {
return null;
}
@Override
public boolean memberNotifyCallBack(AdamMemberOrderCallbackResult result) {
if (1 != result.getStatus() ||
result.getType() != AdamMemberOrderConst.TYPE_VIP ||
result.getType() != AdamMemberConst.TYPE_VIP ||
null == result.getOrderCode() ||
null == result.getCode()) {
return false;
......@@ -227,7 +324,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
AdamMemberOrderVo orderVo = mongoTemplate.findOne(Query.query(Criteria.where("orderNo").is(result.getOrderCode())), AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName());
int state = orderVo.getState();
if (AdamMemberOrderConst.STATUS_PAID == state || AdamMemberOrderConst.STATUS_LATE == state) {
if (AdamMemberConst.STATUS_PAID == state || AdamMemberConst.STATUS_LATE == state) {
// 订单已经处理过
return false;
}
......@@ -237,12 +334,12 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
String currentDateTime = DateUtil.getNowTime();
// 获取购买天数
AdamMemberPrice priceVo = adamMemberPriceService.query(orderVo.getMemberPriceId());
AdamMemberPriceVo priceVo = adamMemberPriceService.query(orderVo.getMemberId(), orderVo.getMemberPriceId());
String cardNumber = "";
AdamMemberCodeVo codeVo = null;
int day = priceVo.getDays();
try {
if (AdamMemberOrderConst.SUB_TYPE_BUY_VIP == orderVo.getMode()) { // 购买会员
mongoTemplate.findOne(Query.query(Criteria.where("").is("")), null, null);
if (AdamMemberConst.SUB_TYPE_BUY_VIP == orderVo.getMode()) { // 购买会员
AdamUserMemberVo userMemberInfo = adamUserMemberService.getUserMemberInfo(orderVo.getUid());
if (null == userMemberInfo) { // 创建会员
cardNumber = adamUserMemberService.getMaxMemberNo(orderVo.getMemberId());
......@@ -250,7 +347,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
createMemberUser.setMemberUserId(IDGenerator.nextSnowId().toString());
createMemberUser.setMemberId(orderVo.getMemberId());
createMemberUser.setMemberNo(orderVo.getMemberNo());
createMemberUser.setState(AdamMemberOrderConst.STATE_VALID);
createMemberUser.setState(AdamMemberConst.STATE_VALID);
createMemberUser.setUid(orderVo.getUid());
createMemberUser.setCreatedAt(currentDateTime);
createMemberUser.setUpdatedAt(currentDateTime);
......@@ -261,7 +358,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
createMemberUser.setExpiryAt(expiryAtStr);
// todo vip card code 记录 自动创建并使用
AdamMemberCodeVo codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), 0, currentDateTime);
codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), 0, currentDateTime);
codeVo.setState(1);
codeVo.setUseUid(orderVo.getUid());
codeVo.setUseOrderNo(orderVo.getMemberCode());
......@@ -274,7 +371,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
redisUtil.set(AdamRedisConst.INFO_MEMBERS_USER_INFO.concat(orderVo.getUid()), createMemberUser);
// 会员码使用记录
mongoTemplate.insert(codeVo);
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_CODE_INFO.concat(codeVo.getBuyUid()), codeVo.getMemberCodeId(), codeVo);
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_CODE_INFO.concat(codeVo.getBuyUid()), codeVo.getBuyOrderNo(), codeVo);
// todo mq 发送数据到队列中
} else { // 续费
......@@ -294,27 +391,32 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
redisUtil.set(AdamRedisConst.INFO_MEMBERS_USER_INFO.concat(orderVo.getUid()), userMemberInfo);
}
}
if (AdamMemberOrderConst.SUB_TYPE_BUY_VIP_CODE == orderVo.getMode()) { // 购买会员码
if (AdamMemberConst.SUB_TYPE_BUY_VIP_CODE == orderVo.getMode()) { // 购买会员码
cardNumber = adamUserMemberService.getMaxMemberNo(orderVo.getMemberId());
AdamMemberCodeVo codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), 0, currentDateTime);
codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), 0, currentDateTime);
codeVo.setState(0);
codeVo.setMemberNo(cardNumber);
mongoTemplate.insert(codeVo);
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_CODE_INFO.concat(codeVo.getBuyUid()), codeVo.getMemberCodeId(), codeVo);
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_CODE_INFO.concat(codeVo.getBuyUid()), codeVo.getBuyOrderNo(), codeVo);
}
// 更新订单信息
orderVo.setPayChannel(result.getPaymentType());
orderVo.setPaymentAt(DateUtil.format(result.getPaymentAt(), DateUtil.Formatter.yyyyMMddHHmmss));
orderVo.setState(AdamMemberOrderConst.STATUS_PAID);
orderVo.setState(AdamMemberConst.STATUS_PAID);
orderVo.setPayNo(result.getCode());
orderVo.setMemberNo(cardNumber); // 回调中给会员卡号 or 下单时给
orderVo.setMemberNo(cardNumber);
if (null != codeVo) {
orderVo.setMemberCode(codeVo.getCode()); // 兑换码数据
}
BasicDBObject object = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(orderVo)));
mongoTemplate.getCollection(AdamMemberOrderVo.class.getSimpleName())
.updateOne(Query.query(Criteria.where("orderNo").is(orderVo.getOrderNo())).getQueryObject(), object);
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(orderVo.getUid()), orderVo.getOrderNo(), orderVo);
} catch (Exception e) {
e.printStackTrace();
return false;
......@@ -337,7 +439,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
codeVo.setMemberPriceId(orderVo.getMemberPriceId());
codeVo.setBuyAt(currentDateTime);
codeVo.setBuyOrderNo(orderCode);
codeVo.setType(AdamMemberOrderConst.TYPE_BUY);
codeVo.setType(AdamMemberConst.TYPE_BUY);
codeVo.setMemberNo(orderVo.getMemberNo());
codeVo.setCode(MemberUtil.getMemberCode(type));
codeVo.setCreatedAt(currentDateTime);
......
......@@ -42,29 +42,19 @@ public class AdamMemberServiceImpl extends ServiceImpl<AdamMemberMapper, AdamMem
@Override
public AdamMemberVo queryMemberInfo() {
AdamMember firstMember = adamMemberMapper.getFirstMember();
String memberId = firstMember.getMemberId();
AdamMemberVo info = null;
List<AdamMemberVo> adamMemberVoList = mongoTemplate.findAll(AdamMemberVo.class);
if (adamMemberVoList.size() > 0){
info = adamMemberVoList.get(0);
}
List<AdamMemberPriceVo> memberPrice = new ArrayList<>();
info = (AdamMemberVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_INFO.concat(memberId), memberId);
Map<Object, Object> tempMemberPrice = redisUtil.hmget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(memberId));
Map<Object, Object> tempMemberPrice = redisUtil.hmget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat( info.getMemberId()));
Iterator<Object> iterator = tempMemberPrice.keySet().iterator();
while(iterator.hasNext()){
while (iterator.hasNext()) {
AdamMemberPriceVo tempAmp = (AdamMemberPriceVo) tempMemberPrice.get(iterator.next());
memberPrice.add(tempAmp);
}
if (null == info) {
info = mongoTemplate.findOne(Query.query(Criteria.where("memberId").is(memberId)),
AdamMemberVo.class, AdamMemberVo.class.getSimpleName());
}
if (null == tempMemberPrice) {
memberPrice = mongoTemplate.find(Query.query(Criteria.where("memberId").is(memberId)),
AdamMemberPriceVo.class, AdamMemberPriceVo.class.getSimpleName());
}
if (null != info && memberPrice.size() > 0) {
info.setAdamMemberPrice(memberPrice);
}
return info;
}
......
......@@ -81,7 +81,7 @@ public class AdamUserMemberServiceImpl extends ServiceImpl<AdamUserMemberMapper,
@Override
public boolean getOneFromRepertory(String memberId) {
AdamMemberVo adamMemberVo = (AdamMemberVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_INFO.concat(memberId), memberId);
AdamMemberVo adamMemberVo = (AdamMemberVo) redisUtil.get(AdamRedisConst.INFO_MEMBERS_INFO.concat(memberId));
if (null == adamMemberVo) {
adamMemberVo = mongoTemplate.findOne(Query.query(Criteria.where("memberId").is(memberId)), AdamMemberVo.class, AdamMemberVo.class.getSimpleName());
}
......
......@@ -72,8 +72,12 @@ public class AdamMemberPriceServiceImpl extends ServiceImpl<AdamMemberPriceMappe
}
@Override
public AdamMemberPrice query(String memberPriceId) {
return adamMemberPriceMapper.misMemberPriceInfo(memberPriceId);
public AdamMemberPriceVo query(String memberId, String memberPriceId) {
AdamMemberPriceVo priceVo = (AdamMemberPriceVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(memberId), memberPriceId);
if (null == priceVo) {
priceVo = mongoTemplate.findOne(Query.query(Criteria.where("memberPriceId").is(memberPriceId)), AdamMemberPriceVo.class, AdamMemberPriceVo.class.getSimpleName());
}
return priceVo;
}
@Override
......
......@@ -83,7 +83,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_member.add", (new AdamMemberVo()).getMqList(adamMember).toArray()));
// todo 同步redis
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMemberId()), info.getMemberId(), amv);
redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMemberId()), amv);
}
@Override
......@@ -94,6 +94,6 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
.updateOne(Query.query(Criteria.where("mId").is(info.getMid())).getQueryObject(), object);
// todo 放入MQ
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMid().toString()), info.getMid().toString(), info);
redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMid().toString()), info);
}
}
......@@ -7,7 +7,7 @@ public class KylinRedisConst {
public static final String PERFORMANCES_INVENTORY = "kylin:performances_inventory:ticket:";
public static final String SURPLUS_GENERAL = "surplusGeneral";
public static final String SURPLUS_EXCHANGE = "surplusExchange";
public static final String TICKET = "kylin:ticket:id";
public static final String TICKET = "kylin:ticket:info";
public static final String TIMES = "kylin:times:id";
public static final String BANNERS = "kylin:banners";
}
......@@ -28,6 +28,9 @@ public class PerformanceStep2Param implements Serializable {
@NotNull(message = "不能为空")
private Integer isSubmit;
@ApiModelProperty(hidden = true)
private Integer auditStatus;
@ApiModelProperty(value = "场次数据",hidden = true)
private List<TicketTimesTicketCreatePartnerVo> ticketTimes;
}
......@@ -55,8 +55,8 @@ public class PerformanceVo {
private String roadShowId;
// OSS
// @ApiModelProperty(value = "演出详情")
// private String details;
@ApiModelProperty(value = "演出详情")
private String details;
// OSS
@ApiModelProperty(value = "购票须知")
private String noticeImage;
......@@ -94,6 +94,8 @@ public class PerformanceVo {
this.timeStart = performance.getTimeStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.timeEnd = performance.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.type = performance.getType();
this.details =performance.getDetails();
this.noticeImage = performance.getNoticeImage();
}
public void setTimePriceVipAndLack(int isLackRegister, int isMember, int isExclusive, BigDecimal price, LocalDateTime stopSellTime, LocalDateTime sellTime,int isAdvance,int isDiscount) {
......
......@@ -76,6 +76,8 @@ public class TicketVo {
private Integer isExclusive;
@ApiModelProperty(value = "是否会员")
private Integer isMember;
@ApiModelProperty(value = "会员购买状态")
private Integer isMemberStatus;
@ApiModelProperty(value = "是否分销")
private Integer isAgent;
......@@ -93,7 +95,11 @@ public class TicketVo {
this.timeStart = ticket.getTimeStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.timeEnd = ticket.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.memberTimeStart = ticket.getTimeStart().plusMinutes(-ticket.getAdvanceMinuteMember()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
if(ticket.getTimeEndExpress()!=null) {
this.timeEndExpress = ticket.getTimeEndExpress().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}else{
this.timeEndExpress=null;
}
this.useStart = ticket.getUseStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.useEnd = ticket.getUseEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.saleRemindMinute = ticket.getSaleRemindMinute();
......@@ -101,6 +107,7 @@ public class TicketVo {
public void setTicketStatus(KylinTicketStatus ticketStatus) {
this.isMember = ticketStatus.getIsMember();
this.isAgent = ticketStatus.getIsAgent();
this.isExclusive = ticketStatus.getIsExclusive();
this.isTrueName = ticketStatus.getIsTrueName();
this.expressType = ticketStatus.getExpressType();
......
......@@ -49,11 +49,11 @@ public class PerformanceIgnoreVo {
private String roadShowId;
// OSS
// @ApiModelProperty(value = "演出详情")
// private String details;
@ApiModelProperty(value = "演出详情")
private String details;
// OSS
// @ApiModelProperty(value = "购票须知")
// private String noticeImage;
@ApiModelProperty(value = "购票须知")
private String noticeImage;
@ApiModelProperty(value = "推荐顺序 0为不推荐")
private Integer isRecommend;
......
......@@ -26,6 +26,7 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 获取演出详情
*
* @param performancesId 演出id
* @return PerformanceMisVo
*/
......@@ -33,15 +34,17 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 演出审核
*
* @param performancesId 演出id
* @param status 审核状态 3通过 4拒绝
* @param rejectTxt 拒绝理由 如果 status == 4 必填
* @return boolean
*/
boolean performanceAudit(String performancesId,int status ,String rejectTxt);
boolean performanceAudit(String performancesId, int status, String rejectTxt);
/**
* 获取 演出列表 (全量)
*
* @param performanceAdminListParam 列表搜索参数
* @return 分页 sql 数据
*/
......@@ -49,6 +52,7 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 根据巡演id 查询演出列表 简易
*
* @param roadShowId 巡演id
* @return 20个 sql 数据
*/
......@@ -56,6 +60,7 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 根据演出状态 查询演出列表 简易
*
* @param status 演出状态
* @return 20个 sql 数据
*/
......@@ -63,14 +68,16 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 修改演出的巡演关联
*
* @param performancesId 演出id
* @param roadShowId 巡演id
* @return boolean
*/
boolean changeRoadShowId(String performancesId,String roadShowId);
boolean changeRoadShowId(String performancesId, String roadShowId);
/**
* 设置 演出推荐 关联
*
* @param performancesId 相关参数
* @return boolean
*/
......@@ -78,12 +85,14 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 查询 推荐演出列表
*
* @return 分页 sql 数据
*/
PageInfo<PerformanceRecommendAdminDao> listRecommend();
/**
* 获取 演出会员信息(包含场次票)
*
* @param performanceId 演出id
* @return sql 数据
*/
......@@ -91,6 +100,7 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 修改 演出会员信息(包含场次票)
*
* @param performanceMemberAuditParam 相关参数
* @return boolean
*/
......@@ -98,32 +108,44 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 列表 待审核 演出会员信息
*
* @param title 标题
* @return 演出名称 id
*/
PageInfo<PerformanceTitleDao> performanceMemberList(String title,int page,int size);
PageInfo<PerformanceTitleDao> performanceMemberList(String title, int page, int size);
/**
* 详情 待审核 演出会员信息
*
* @param performanceId 演出id
* @param status 状态
* @return sql 数据
*/
PerformanceMemberAuditDao performanceMemberAuditInfo(String performanceId,int status);
PerformanceMemberAuditDao performanceMemberAuditInfo(String performanceId, int status);
//审核 会员信息
/**
* 审核演出会员相关信息
*
* @param performanceId 演出id
* @return boolean
*/
boolean performanceMemberAudit(String performanceId,int status,String rejectTxt);
boolean performanceMemberAudit(String performanceId, int status, String rejectTxt);
/**
* 列表 演出会员审核记录
*
* @param performanceId 演出id
* @return 分页 vo 数据
*/
PageInfo<PerformanceMemberAuditParam> performanceAuditHistory(String performanceId);
/**
* 修改 当前票种是否关联分销
* @param ticketId 票务id
* @param status 0 否 1 是
* @return
*/
boolean changeTicketAgent(String ticketId, Integer status);
}
......@@ -134,6 +134,11 @@ public class KylinTicketStatus implements Serializable {
*/
private Integer isMember;
/**
* 是否关联代理 0不是 1是
*/
private Integer isAgent;
/**
* 创建时间
*/
......
......@@ -298,6 +298,7 @@ CREATE TABLE `kylin_ticket_status`
`is_transfer` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启转赠 0关闭 1开启',
`is_exclusive` tinyint NOT NULL DEFAULT 0 COMMENT '是否会员专属 0不是 1是',
`is_member` tinyint NOT NULL DEFAULT 0 COMMENT '是否关联会员 0不是 1是',
`is_agent` tinyint NOT NULL DEFAULT 0 COMMENT '是否关联代理 0不是 1是',
`created_at` datetime NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间',
KEY `kylin_ticket_status_uid_index` (`ticket_status_id`),
......
......@@ -37,11 +37,6 @@
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -30,7 +30,7 @@ import java.util.List;
* @author liquidnet
* @since 2021-05-05
*/
@Api(tags = "后端-演出",position = 2001)
@Api(tags = "后端-演出", position = 2001)
@RestController
@RequestMapping("admin/performance")
public class KylinPerformancesAdminController {
......@@ -39,7 +39,7 @@ public class KylinPerformancesAdminController {
private KylinPerformancesAdminServiceImpl performancesAdminService;
@PostMapping(value = "list")
@ApiOperation(value = "获取列表",position = 1)
@ApiOperation(value = "获取列表", position = 1)
@ApiResponse(response = PerformanceAdminListDao.class, code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<PerformanceAdminListDao>> getList(@RequestBody @Valid PerformanceAdminListParam performanceAdminListParam) {
PageInfo<PerformanceAdminListDao> result = null;
......@@ -52,7 +52,7 @@ public class KylinPerformancesAdminController {
}
@GetMapping(value = "details")
@ApiOperation(value = "获取演出详情",position = 2)
@ApiOperation(value = "获取演出详情", position = 2)
@ApiResponse(response = PerformanceMisVo.class, code = 200, message = "接口返回对象参数")
public ResponseDto<PerformanceMisVo> performanceDetails(@RequestParam("performancesId") String performancesId) {
PerformanceMisVo result = null;
......@@ -65,7 +65,7 @@ public class KylinPerformancesAdminController {
}
@PostMapping(value = "audit")
@ApiOperation(value = "演出审核",position = 3)
@ApiOperation(value = "演出审核", position = 3)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> performanceAudit(@RequestParam("performancesId") String performancesId, @RequestParam("status") int status, @RequestParam(value = "rejectTxt", required = false) String rejectTxt) {
boolean result = performancesAdminService.performanceAudit(performancesId, status, rejectTxt);
......@@ -77,7 +77,7 @@ public class KylinPerformancesAdminController {
}
@GetMapping(value = "list/roadshow")
@ApiOperation(value = "列表根据巡演id",position = 4)
@ApiOperation(value = "列表根据巡演id", position = 4)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<List<PerformanceTitleDao>> getListByRoadShowId(@RequestParam("roadShowId") String roadShowId) {
List<PerformanceTitleDao> result = performancesAdminService.getListByRoadShowId(roadShowId);
......@@ -89,7 +89,7 @@ public class KylinPerformancesAdminController {
}
@GetMapping(value = "list/status")
@ApiOperation(value = "列表根据演出状态",position = 5)
@ApiOperation(value = "列表根据演出状态", position = 5)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<List<PerformanceTitleDao>> getListByStatus(@RequestParam("status") String status) {
List<PerformanceTitleDao> result = performancesAdminService.getListByStatus(status);
......@@ -101,7 +101,7 @@ public class KylinPerformancesAdminController {
}
@GetMapping(value = "roadShow/relation")
@ApiOperation(value = "修改演出巡演关联",position = 6)
@ApiOperation(value = "修改演出巡演关联", position = 6)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> changeRoadShowId(@RequestParam("performanceId") String performanceId, @RequestParam("roadShowId") String roadShowId) {
boolean result = performancesAdminService.changeRoadShowId(performanceId, roadShowId);
......@@ -112,8 +112,8 @@ public class KylinPerformancesAdminController {
}
}
@PutMapping(value = "performance/recommend")
@ApiOperation(value = "演出推荐编辑",position = 7)
@PutMapping(value = "recommend")
@ApiOperation(value = "演出推荐编辑", position = 7)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> setRecommend(@RequestBody @Valid List<PerformanceRecommendAdminParam> performanceRecommendAdminParam) {
boolean result = performancesAdminService.setRecommend(performanceRecommendAdminParam);
......@@ -124,8 +124,8 @@ public class KylinPerformancesAdminController {
}
}
@GetMapping(value = "performance/recommend/list")
@ApiOperation(value = "演出推荐列表",position = 8)
@GetMapping(value = "recommend/list")
@ApiOperation(value = "演出推荐列表", position = 8)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<PerformanceRecommendAdminDao>> listRecommend() {
PageInfo<PerformanceRecommendAdminDao> result = performancesAdminService.listRecommend();
......@@ -136,8 +136,8 @@ public class KylinPerformancesAdminController {
}
}
@GetMapping(value = "performance/member/details")
@ApiOperation(value = "演出会员信息",position = 9)
@GetMapping(value = "member/details")
@ApiOperation(value = "演出会员信息", position = 9)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PerformanceMemberAuditDao> performanceMemberInfo(@RequestParam("performanceId") @NotNull String performanceId) {
PerformanceMemberAuditDao result = performancesAdminService.performanceMemberInfo(performanceId);
......@@ -148,8 +148,8 @@ public class KylinPerformancesAdminController {
}
}
@PutMapping(value = "performance/member/change")
@ApiOperation(value = "修改演出会员数据",position = 10)
@PutMapping(value = "member/change")
@ApiOperation(value = "修改演出会员数据", position = 10)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> performanceMemberChange(@RequestBody PerformanceMemberAuditParam performanceMemberAuditParam) {
boolean result = performancesAdminService.performanceMemberChange(performanceMemberAuditParam);
......@@ -160,8 +160,8 @@ public class KylinPerformancesAdminController {
}
}
@GetMapping(value = "performance/member/list")
@ApiOperation(value = "待审核会员演出列表",position = 11)
@GetMapping(value = "member/list")
@ApiOperation(value = "待审核会员演出列表", position = 11)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<PerformanceTitleDao>> performanceMemberList(@RequestParam("title") @NotNull String title,
@RequestParam("page") @NotNull int page,
......@@ -174,8 +174,8 @@ public class KylinPerformancesAdminController {
}
}
@GetMapping(value = "performance/member/details/audit")
@ApiOperation(value = "演出会员信息(根据status 1待审核 2已拒绝 3已通过)",position = 12)
@GetMapping(value = "member/details/audit")
@ApiOperation(value = "演出会员信息(根据status 1待审核 2已拒绝 3已通过)", position = 12)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PerformanceMemberAuditDao> performanceMemberAuditInfo(@RequestParam("performanceId") @NotNull String performanceId,
@RequestParam(value = "status") @NotNull int status) {
......@@ -187,8 +187,8 @@ public class KylinPerformancesAdminController {
}
}
@PostMapping(value = "performance/member/audit")
@ApiOperation(value = "审核演出会员信息",position = 13)
@PostMapping(value = "member/audit")
@ApiOperation(value = "审核演出会员信息", position = 13)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> performanceMemberAudit(@RequestParam("performanceId") @NotNull String performanceId,
@RequestParam("status") @NotNull int status,
......@@ -201,7 +201,7 @@ public class KylinPerformancesAdminController {
}
}
@PostMapping(value = "performance/member/history")
@PostMapping(value = "member/history")
@ApiOperation(value = "会员审核记录")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<PerformanceMemberAuditParam>> performanceAuditHistory(@RequestParam("performanceId") @NotNull String performanceId) {
......@@ -212,4 +212,16 @@ public class KylinPerformancesAdminController {
return ResponseDto.failure("操作失败");
}
}
@PostMapping(value = "ticket/agent")
@ApiOperation(value = "修改票分销状态")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> changeTicketAgent(@RequestParam("ticketId") @NotNull String ticketId, @RequestParam("status") @NotNull Integer status) {
boolean result = performancesAdminService.changeTicketAgent(ticketId, status);
if (result) {
return ResponseDto.success("修改完成");
} else {
return ResponseDto.failure("操作失败");
}
}
}
......@@ -109,9 +109,8 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
query.addCriteria(Criteria.where("timeEnd").gte(nowTimeStr));
// 要查询的字段
/*Document fieldsObject = new Document();
Query query = new BasicQuery(queryObject, fieldsObject);
fieldsObject.put("performancesId", true);*/
// query.fields().include();//包含该字段
// query.fields().exclude();//不包含该字段
// 查询总数
long count = mongoTemplate.count(query, PerformanceVo.class, PerformanceVo.class.getSimpleName());
......@@ -284,6 +283,25 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
ticket.setStatus(6);
}
}
// 会员状态
Integer isMemberStatus = 0;
if (1 == ticket.getIsMember()) { // 有会员
String memberTimeStart = ticket.getMemberTimeStart();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime memberTimeStartL = LocalDateTime.parse(memberTimeStart, df);
LocalDateTime nowTimeTicket = LocalDateTime.now();
String nowTimeTicketStr = nowTimeTicket.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime nowTimeTicketStrL = LocalDateTime.parse(nowTimeTicketStr, df);
if (memberTimeStartL.isBefore(nowTimeTicketStrL)) { // 可以购买
isMemberStatus = 1;
} else { // 还没到会员购买时间
isMemberStatus = 0;
}
} else {
isMemberStatus = 0;
}
ticket.setIsMemberStatus(isMemberStatus);
}
partner.setTicketList(ticketList);
......
......@@ -23,6 +23,7 @@ import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.BaseObject;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
......@@ -163,7 +164,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
performanceVoTask.performanceVoStatus(performancesId);
}
}
redisUtil.hdel(KylinRedisConst.PERFORMANCES,performancesId);
} else if (status == 4) {
log.info(" PERFORMANCE 演出审核 拒绝");
auditStatus = 2;
......@@ -251,6 +252,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(),
object
);
redisUtil.hdel(KylinRedisConst.PERFORMANCES,performancesId);
return true;
} catch (Exception e) {
return false;
......@@ -443,7 +445,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
}
performanceVoTask.performanceVoStatus(performanceId);
redisUtil.hdel(KylinRedisConst.PERFORMANCES ,performanceId);
HashMap<String, Object> map2 = new HashMap<>();
map2.put("status", 3);
map2.put("updatedAt", updatedAt);
......@@ -495,4 +497,33 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
return pageInfoTmp;
}
@Override
public boolean changeTicketAgent(String ticketId, Integer status) {
try {
LocalDateTime updatedAt = LocalDateTime.now();
if (status != 0 && status != 1) {
return false;
}
//修改 mysql
KylinTicketStatus ticketStatus = new KylinTicketStatus();
ticketStatus.setUpdatedAt(updatedAt);
ticketStatus.setIsAgent(status);
ticketStatusMapper.update(ticketStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketId));
//修改 mongo
HashMap<String, Object> map = new HashMap<>();
map.put("updatedAt", updatedAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
map.put("isAgent", status);
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
mongoTemplate.getCollection(TicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("ticketsId").is(ticketId)).getQueryObject(),
object);
redisUtil.hdel(KylinRedisConst.TICKET , ticketId);
return true;
} catch (Exception e) {
return false;
}
}
}
......@@ -377,8 +377,8 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
KylinTicketStatus ticketStatus = ticketStatusMapper.selectOne(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketItem.getTicketsId()));
int changeGeneral = ticketStatus.getTotalGeneral() - ticketItem.getTotalGeneral();
int changeExchange = ticketStatus.getTotalGeneral() - ticketItem.getTotalExchange();
redisUtil.hincr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketItem.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL, changeGeneral);
redisUtil.hincr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketItem.getTicketsId(), KylinRedisConst.SURPLUS_EXCHANGE, changeExchange);
dataUtils.changeSurplusGeneral(ticketItem.getTicketsId(),changeGeneral);
dataUtils.changeSurplusExchange(ticketItem.getTicketsId(),changeExchange);
}
//修改 mysql 库存
KylinTicketStatus inventory = new KylinTicketStatus();
......@@ -418,7 +418,6 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
@Override
public ResponseDto<PerformanceStep2Param> getStep2(String performancesId) {
PerformanceStep2Param performanceCreatePartnerVo = null;
PerformancePartnerVo data = mongoTemplate.findOne(
Query.query(Criteria.where("performancesId").is(performancesId)), PerformancePartnerVo.class, PerformancePartnerVo.class.getSimpleName()
);
......@@ -439,9 +438,9 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
PerformanceStep2Param performanceStep2Param = new PerformanceStep2Param();
BeanUtils.copyProperties(data, performanceStep2Param);
performanceStep2Param.setTicketTimes(ticketTimesTicketCreatePartnerVoList);
performanceCreatePartnerVo = performanceStep2Param;
// performanceStep2Param.setAuditStatus();
log.info(" PERFORMANCE 演出第二步 获取");
return ResponseDto.success(performanceCreatePartnerVo);
return ResponseDto.success(performanceStep2Param);
}
@Override
......@@ -522,22 +521,10 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
);
}
//票种 库存redis TODO 库存可能会丢
TicketInventoryDto ticketInventoryDto = new TicketInventoryDto();
//票种 库存redis
if (!redisUtil.hHasKey(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL)) {
ticketInventoryDto.setSurplusExchange(ticketStatus.getSurplusExchange());
ticketInventoryDto.setSurplusGeneral(ticketStatus.getTotalGeneral());
ticketInventoryDto.setTicketsId(ticketVo.getTicketsId());
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL, ticketInventoryDto.getSurplusGeneral());
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_EXCHANGE, ticketInventoryDto.getSurplusExchange());
} else {
int surplusGeneral = (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL);
int surplusExchange = (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_EXCHANGE);
ticketInventoryDto.setSurplusExchange(ticketStatus.getSurplusExchange() - surplusGeneral);
ticketInventoryDto.setSurplusGeneral(ticketStatus.getTotalGeneral() - surplusExchange);
ticketInventoryDto.setTicketsId(ticketVo.getTicketsId());
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL, ticketInventoryDto.getSurplusGeneral());
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_EXCHANGE, ticketInventoryDto.getSurplusExchange());
dataUtils.setSurplusGeneral(ticketVo.getTicketsId(),ticketStatus.getTotalGeneral());
dataUtils.setSurplusExchange(ticketVo.getTicketsId(),ticketStatus.getSurplusExchange());
}
if (ticketVo.getIsMember() == 1) {
......
......@@ -326,17 +326,24 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
ticketStatusMapper.update(changeStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId));
// mongo 操作
KylinTicketStatus ticketStatusMongo = ticketStatusMapper.selectOne(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId).between("status", 1, 10).ne("status", 7));
KylinTicketStatus ticketStatusMySql = ticketStatusMapper.selectOne(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId).between("status", 1, 10).ne("status", 7));
KylinTicketRelations ticketRelation = ticketRelationsMapper.selectOne(new UpdateWrapper<KylinTicketRelations>().eq("ticket_id", ticketsId));
KylinTickets tickets = ticketsMapper.selectOne(
new UpdateWrapper<KylinTickets>().eq("tickets_id", ticketsId
)
new UpdateWrapper<KylinTickets>().eq("tickets_id", ticketsId)
);
HashMap<String,Object> map = new HashMap<>();
map.put("status",6);
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("ticketsId").is(ticketsId)).getQueryObject(),
object
);
TicketVo ticketVo = new TicketVo();
ticketVo.setTimeId(ticketRelation.getTimesId());
ticketVo.setTicket(tickets);
ticketVo.setTicketStatus(ticketStatusMongo);
ticketVo.setTicketStatus(ticketStatusMySql);
boolean ticketExists =
mongoTemplate.exists(Query.query(Criteria.where("ticketsId").is(ticketVo.getTicketsId())), TicketVo.class, TicketVo.class.getSimpleName());
......@@ -366,6 +373,15 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
changeStatus.setStatus(7);
ticketStatusMapper.update(changeStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId));
// mongo 操作
HashMap<String,Object> map = new HashMap<>();
map.put("status",7);
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("ticketsId").is(ticketsId)).getQueryObject(),
object
);
TicketVo ticketVoItem = mongoTemplate.findOne(Query.query(Criteria.where("ticketsId").is(ticketsId)), TicketVo.class, TicketVo.class.getSimpleName());
TicketIgnoreVo ticketIgnoreVo = new TicketIgnoreVo();
BeanUtils.copyProperties(ticketVoItem, ticketIgnoreVo);
......
......@@ -15,6 +15,7 @@ import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.kylin.service.impl.partner.KylinTicketTimesPartnerServiceImpl;
import com.liquidnet.service.kylin.service.impl.partner.KylinTicketsPartnerServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
......@@ -48,6 +49,9 @@ public class PerformanceVoTask {
@Autowired
private RedisUtil redisUtil;
@Autowired
private DataUtils dataUtils;
@Autowired
private KylinPerformancesMapper performancesMapper;
......@@ -148,7 +152,7 @@ public class PerformanceVoTask {
status10Count += 1;
} else {
//库存判断
int surplusGeneral = (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVoItem.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL);
int surplusGeneral = dataUtils.getSurplusGeneral(ticketVoItem.getTicketsId());
if (surplusGeneral > 0) {
status = 6;
......@@ -312,11 +316,11 @@ public class PerformanceVoTask {
performanceRelations.setCreatedAt(performances.getCreatedAt());
performanceRelations.setUpdatedAt(updatedAt);
performancesMapper.delete(new UpdateWrapper<KylinPerformances>().eq("performances_id",performances.getPerformancesId()));
performancesMapper.delete(new UpdateWrapper<KylinPerformances>().eq("performances_id", performances.getPerformancesId()));
performancesMapper.insert(performances);
performanceStatusMapper.delete(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id",performanceStatus.getPerformanceId()));
performanceStatusMapper.delete(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performanceStatus.getPerformanceId()));
performanceStatusMapper.insert(performanceStatus);
performanceRelationsMapper.delete(new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id",performanceRelations.getPerformanceId()));
performanceRelationsMapper.delete(new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id", performanceRelations.getPerformanceId()));
performanceRelationsMapper.insert(performanceRelations);
......@@ -340,9 +344,9 @@ public class PerformanceVoTask {
ticketTimeRelation.setCreatedAt(ticketTimes.getCreatedAt());
ticketTimeRelation.setUpdatedAt(updatedAt);
ticketTimesMapper.delete(new UpdateWrapper<KylinTicketTimes>().eq("ticket_times_id",ticketTimes.getTicketTimesId()));
ticketTimesMapper.delete(new UpdateWrapper<KylinTicketTimes>().eq("ticket_times_id", ticketTimes.getTicketTimesId()));
ticketTimesMapper.insert(ticketTimes);
ticketTimeRelationMapper.delete(new UpdateWrapper<KylinTicketTimeRelation>().eq("ticket_time_relation_id",ticketTimeRelation.getTimesId()));
ticketTimeRelationMapper.delete(new UpdateWrapper<KylinTicketTimeRelation>().eq("ticket_time_relation_id", ticketTimeRelation.getTimesId()));
ticketTimeRelationMapper.insert(ticketTimeRelation);
//修改票
......@@ -397,11 +401,11 @@ public class PerformanceVoTask {
ticketRelations.setCreatedAt(tickets.getCreatedAt());
ticketRelations.setUpdatedAt(updatedAt);
ticketsMapper.delete(new UpdateWrapper<KylinTickets>().eq("tickets_id",tickets.getTicketsId()));
ticketsMapper.delete(new UpdateWrapper<KylinTickets>().eq("tickets_id", tickets.getTicketsId()));
ticketsMapper.insert(tickets);
ticketStatusMapper.delete(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id",ticketStatus.getTicketId()));
ticketStatusMapper.delete(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketStatus.getTicketId()));
ticketStatusMapper.insert(ticketStatus);
ticketRelationsMapper.delete(new UpdateWrapper<KylinTicketRelations>().eq("ticket_id",ticketRelations.getTicketId()));
ticketRelationsMapper.delete(new UpdateWrapper<KylinTicketRelations>().eq("ticket_id", ticketRelations.getTicketId()));
ticketRelationsMapper.insert(ticketRelations);
}
}
......@@ -418,7 +422,7 @@ public class PerformanceVoTask {
* @param performanceUpdateMisVo
* @param updatedAt
*/
public void updatePerformanceMySql(String performancesId, HashMap<String, Object> map, PerformanceMisVo performanceUpdateMisVo, LocalDateTime updatedAt,Integer auditStatus) {
public void updatePerformanceMySql(String performancesId, HashMap<String, Object> map, PerformanceMisVo performanceUpdateMisVo, LocalDateTime updatedAt, Integer auditStatus) {
try {
//创建演出
KylinPerformances performances = new KylinPerformances();
......@@ -471,27 +475,45 @@ public class PerformanceVoTask {
ticketTimeRelation.setCreatedAt(null);
ticketTimeRelation.setUpdatedAt(updatedAt);
if (ticketTimeItem.getStatus() == -1) {
ticketTimes.setStatus(1);
ticketTimesMapper.insert(ticketTimes);
ticketTimeRelationMapper.insert(ticketTimeRelation);
TicketTimesVo ticketTimesVo = new TicketTimesVo();
ticketTimesVo.setTicketTimes(ticketTimes);
ticketTimesVo.setPerformanceId(ticketTimeRelation.getPerformanceId());
ticketTimesVo.setTimeId(ticketTimeRelation.getTimesId());
// HashMap<String ,Object> map2 = new HashMap<>();
// map2.put("status",1);
// BasicDBObject obj = new BasicDBObject("$set", mongoConverter.convertToMongoType(map2));
// mongoTemplate.getCollection(TicketTimesPartnerVo.class.getSimpleName()).updateOne(
// Query.query(Criteria.where("ticketTimesId").is(ticketTimes.getTicketTimesId())).getQueryObject(),
// obj
// );
boolean ticketTimesExists =
mongoTemplate.exists(Query.query(Criteria.where("ticketTimesId").is(ticketTimesVo.getTicketTimesId())), TicketTimesVo.class, TicketTimesVo.class.getSimpleName());
if (!ticketTimesExists) {
mongoTemplate.insert(
ticketTimesVo, TicketTimesVo.class.getSimpleName()
);
}
} else {
ticketTimesMapper.update(ticketTimes, new UpdateWrapper<KylinTicketTimes>().eq("ticket_times_id", ticketTimes.getTicketTimesId()));
ticketTimeRelationMapper.update(ticketTimeRelation, new UpdateWrapper<KylinTicketTimeRelation>().eq("ticket_time_id", ticketTimes.getTicketTimesId()));
ticketTimeRelationMapper.update(ticketTimeRelation, new UpdateWrapper<KylinTicketTimeRelation>().eq("times_id", ticketTimes.getTicketTimesId()));
}
//修改票
for (TicketPartnerVo ticketItem : ticketsPartnerService.getTicketMongoList(ticketTimeItem.getTicketTimesId())) {
TicketPartnerVo ticketPartnerVo;
if (ticketItem.getStatus() != 7) {
BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
Document docTicket = mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())).getQueryObject(),
objectTicketVo,
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
ticketPartnerVo = JsonUtils.fromJson(docTicket.toJson(), TicketPartnerVo.class);
} else {
ticketPartnerVo = mongoTemplate.findOne(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())),
TicketPartnerVo.class,
TicketPartnerVo.class.getSimpleName()
);
}
//创建演出
KylinTickets tickets = new KylinTickets();
......@@ -506,41 +528,87 @@ public class PerformanceVoTask {
tickets.setPriceDiscount(new BigDecimal("0.00"));
tickets.setTimeStart(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketItem.getTimeStart())));
tickets.setTimeEnd(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketItem.getTimeEnd())));
if (ticketItem.getIsExpress() == 1) {
tickets.setTimeEndExpress(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketItem.getTimeEndExpress())));
}
tickets.setUseStart(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketTimeItem.getUseStart())));
tickets.setUseEnd(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketTimeItem.getUseEnd())));
tickets.setSaleRemindMinute(60);
tickets.setCreatedAt(null);
tickets.setUpdatedAt(updatedAt);
ticketStatus.setTicketStatusId(IDGenerator.nextSnowId().toString());
ticketStatus.setTicketId(tickets.getTicketsId());
ticketStatus.setCounts(null);
ticketStatus.setIsMember(null);
ticketStatus.setStatusExchange(7);
if (ticketItem.getIsShowCode() == 1) {
ticketStatus.setQrCodeShowTime(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketItem.getQrCodeShowTime())));
}
ticketRelations.setUpdatedAt(updatedAt);
ticketRelations.setTicketRelationsId(IDGenerator.nextSnowId().toString());
ticketRelations.setTicketId(tickets.getTicketsId());
ticketRelations.setUpdatedAt(updatedAt);
if (ticketItem.getStatus() == -2) {
// ticketStatus.setLimitCount(null);
// ticketStatus.setTotalGeneral(null);
// ticketStatus.setTotalExchange(null);
// tickets.setTimeStart(null);
// tickets.setTimeEnd(null);
tickets.setAdvanceMinuteMember(5);
ticketStatus.setIsMember(1);
ticketRelations.setCreatedAt(LocalDateTime.now());
tickets.setCreatedAt(LocalDateTime.now());
ticketsMapper.insert(tickets);
ticketStatus.setStatus(9);
ticketStatusMapper.insert(ticketStatus);
ticketRelationsMapper.insert(ticketRelations);
TicketVo ticketVo = new TicketVo();
ticketVo.setTimeId(ticketRelations.getTimesId());
ticketVo.setTicket(tickets);
ticketVo.setTicketStatus(ticketStatus);
dataUtils.setSurplusExchange(ticketVo.getTicketsId(), ticketStatus.getSurplusExchange());
dataUtils.setSurplusGeneral(ticketVo.getTicketsId(), ticketStatus.getSurplusGeneral());
BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())).getQueryObject(),
objectTicketVo
);
boolean ticketExists =
mongoTemplate.exists(Query.query(Criteria.where("ticketsId").is(ticketVo.getTicketsId())), TicketVo.class, TicketVo.class.getSimpleName());
if (!ticketExists) {
mongoTemplate.insert(
ticketVo, TicketVo.class.getSimpleName()
);
}
} else {
//不改动数据 价格 限购 购票时间
ticketStatus.setLimitCount(null);
ticketStatus.setTotalGeneral(null);
ticketStatus.setTotalExchange(null);
tickets.setTimeStart(null);
tickets.setTimeEnd(null);
ticketRelations.setCreatedAt(null);
ticketRelations.setUpdatedAt(updatedAt);
ticketRelations.setTicketRelationsId(IDGenerator.nextSnowId().toString());
ticketRelations.setTicketId(tickets.getTicketsId());
ticketStatus.setCounts(null);
ticketStatus.setIsMember(null);
ticketRelations.setCreatedAt(null);
ticketRelations.setUpdatedAt(updatedAt);
tickets.setCreatedAt(null);
ticketsMapper.update(tickets, new UpdateWrapper<KylinTickets>().eq("tickets_id", tickets.getTicketsId()));
ticketStatusMapper.update(ticketStatus, new UpdateWrapper<KylinTicketStatus>().eq("tickets_id", tickets.getTicketsId()));
ticketRelationsMapper.update(ticketRelations, new UpdateWrapper<KylinTicketRelations>().eq("tickets_id", tickets.getTicketsId()));
ticketStatusMapper.update(ticketStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", tickets.getTicketsId()));
ticketRelationsMapper.update(ticketRelations, new UpdateWrapper<KylinTicketRelations>().eq("ticket_id", tickets.getTicketsId()));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
......
package com.liquidnet.service.kylin.utils;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.entity.KylinBuyNotice;
import com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -15,9 +17,80 @@ public class DataUtils {
@Autowired
private KylinBuyNoticeMapper buyNoticeMapper;
public String getBuyNoticeJsonString(List<String> buyNoticeIds){
List<KylinBuyNotice> data = buyNoticeMapper.selectList(new UpdateWrapper<KylinBuyNotice>().in("buy_notice_id",buyNoticeIds));
@Autowired
private RedisUtil redisUtil;
/**
* 根据 购票须知 id 获取 购票须知文案
*
* @param buyNoticeIds 购票须知 数组
* @return 购票须知 json串
*/
public String getBuyNoticeJsonString(List<String> buyNoticeIds) {
List<KylinBuyNotice> data = buyNoticeMapper.selectList(new UpdateWrapper<KylinBuyNotice>().in("buy_notice_id", buyNoticeIds));
return JsonUtils.toJson(data);
}
/**
* 初始化普通库存
*
* @param ticketId 票id
* @param totalGeneral 普通库存
*/
public void setSurplusGeneral(String ticketId, int totalGeneral) {
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL, totalGeneral);
}
/**
* 获取普通剩余库存
*
* @param ticketId 票id
* @return 普通剩余库存
*/
public int getSurplusGeneral(String ticketId) {
return (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL);
}
/**
* 修改普通库存 并 返回修改后的数量
*
* @param ticketId 票id
* @param surplusGeneral 普通库存
* @return 普通剩余库存
*/
public int changeSurplusGeneral(String ticketId, int surplusGeneral) {
return (int) redisUtil.hincr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL, surplusGeneral);
}
/**
* 初始化兑换库存
*
* @param ticketId 票id
* @param totalExchange 兑换库存
*/
public void setSurplusExchange(String ticketId, int totalExchange) {
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_EXCHANGE, totalExchange);
}
/**
* 获取兑换剩余库存
*
* @param ticketId 票id
* @return 兑换剩余库存
*/
public int getSurplusExchange(String ticketId) {
return (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_EXCHANGE);
}
/**
* 变更兑换库存 并 返回 修改后的数量
*
* @param ticketId 票id
* @param surplusExchange 普通库存
* @return 兑换剩余库存
*/
public int changeSurplusExchange(String ticketId, int surplusExchange) {
return (int) redisUtil.hincr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL, surplusExchange);
}
}
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