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

Commit bae54a48 authored by wangyifan's avatar wangyifan

福袋补充需求-验码权限、核销接口

parent aaed2a7b
package com.liquidnet.service.kylin.constant;
import lombok.Getter;
@Getter
public enum LuckyBagStatusEnum {
// 兑换码显示类型
CODE_SHOW_TYPE_CODE(1, "兑换码"),
CODE_SHOW_TYPE_QR_CODE(2, "二维码"),
// 解锁状态
UNLOCK_STATUS_NOT_UNLOCKED(0, "未解锁"),
UNLOCK_STATUS_UNLOCKED(1, "已解锁"),
// 可用状态
AVAILABLE_STATUS_UNAVAILABLE(0, "不可用"),
AVAILABLE_STATUS_AVAILABLE(1, "可用"),
AVAILABLE_STATUS_RECEIVED(2, "已领取");
private final Integer value;
private final String desc;
LuckyBagStatusEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
}
...@@ -18,6 +18,9 @@ public class KylinLuckyBagCodeDetailVo { ...@@ -18,6 +18,9 @@ public class KylinLuckyBagCodeDetailVo {
@ApiModelProperty(value = "福袋ID") @ApiModelProperty(value = "福袋ID")
private String luckyBagId; private String luckyBagId;
@ApiModelProperty(value = "福袋名称")
private String luckyBagName;
@ApiModelProperty(value = "兑换码") @ApiModelProperty(value = "兑换码")
private String code; private String code;
...@@ -46,6 +49,7 @@ public class KylinLuckyBagCodeDetailVo { ...@@ -46,6 +49,7 @@ public class KylinLuckyBagCodeDetailVo {
@ApiModel(value = "用户信息") @ApiModel(value = "用户信息")
@Data
public static class UserInfo { public static class UserInfo {
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private String uid; private String uid;
...@@ -56,6 +60,7 @@ public class KylinLuckyBagCodeDetailVo { ...@@ -56,6 +60,7 @@ public class KylinLuckyBagCodeDetailVo {
} }
@ApiModel(value = "订单信息") @ApiModel(value = "订单信息")
@Data
public static class OrderInfo { public static class OrderInfo {
@ApiModelProperty(value = "订单ID") @ApiModelProperty(value = "订单ID")
private String orderId; private String orderId;
......
...@@ -8,7 +8,6 @@ import lombok.Data; ...@@ -8,7 +8,6 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set;
@Data @Data
...@@ -66,7 +65,7 @@ public class KylinLuckyBagVo implements Serializable { ...@@ -66,7 +65,7 @@ public class KylinLuckyBagVo implements Serializable {
@ApiModel(value = "兑换码VO") @ApiModel(value = "兑换码VO")
public static class RewardCodeVo { public static class RewardCodeVo {
@ApiModelProperty(value = "状态 0:不可用 1:可用 2:已领取") @ApiModelProperty(value = "状态 0:不可用 1:可用 2:已领取")
private Integer state; private Integer useStatus;
@ApiModelProperty(value = "兑换码") @ApiModelProperty(value = "兑换码")
private String code; private String code;
......
...@@ -8,11 +8,36 @@ import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagVo; ...@@ -8,11 +8,36 @@ import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagVo;
import java.util.List; import java.util.List;
public interface IKylinLuckyBagService { public interface IKylinLuckyBagService {
/**
* 根据订单ID获取福袋
* @param orderId
* @return
*/
KylinLuckyBagVo getLuckyBagByOrderId(String orderId); KylinLuckyBagVo getLuckyBagByOrderId(String orderId);
/**
* 获取福袋验码列表
* @param mobile
* @return
*/
List<KylinLuckyBagScopeVo> getLuckyBagListScope(String mobile); List<KylinLuckyBagScopeVo> getLuckyBagListScope(String mobile);
KylinLuckyBagCodeDetailVo getCodeDetail(String code, String luckyBagId); /**
* 获取福袋详情
*
* @param authMobile
* @param code
* @param luckyBagId
* @return
*/
ResponseDto<KylinLuckyBagCodeDetailVo> getCodeDetail(String authMobile, String code, String luckyBagId);
ResponseDto<Boolean> consumeCode(String code, String luckyBagId); /**
* 验码
* @param authMobile
* @param code
* @param luckyBagId
* @return
*/
ResponseDto<Boolean> consumeCode(String authMobile, String code, String luckyBagId);
} }
...@@ -40,17 +40,17 @@ public class KylinLuckyBagController { ...@@ -40,17 +40,17 @@ public class KylinLuckyBagController {
@ApiOperation("兑换码详情") @ApiOperation("兑换码详情")
@GetMapping("/code/detail") @GetMapping("/code/detail")
public ResponseDto<KylinLuckyBagCodeDetailVo> getCodeDetail(@RequestParam(value = "authMobile") String authMobile, public ResponseDto<KylinLuckyBagCodeDetailVo> getCodeDetail(@RequestParam(value = "mobile") String mobile,
@RequestParam(value = "code") String code, @RequestParam(value = "code") String code,
@RequestParam(value = "luckyBagId") String luckyBagId){ @RequestParam(value = "luckyBagId") String luckyBagId){
return ResponseDto.success(luckyBagService.getCodeDetail(code, luckyBagId)); return luckyBagService.getCodeDetail(mobile, code, luckyBagId);
} }
@GetMapping("/code/consume") @GetMapping("/code/consume")
@ApiOperation("兑换码核销") @ApiOperation("兑换码核销")
public ResponseDto<Boolean> consumeCode(@RequestParam(value = "authMobile") String authMobile, public ResponseDto<Boolean> consumeCode(@RequestParam(value = "mobile") String mobile,
@RequestParam(value = "code") String code, @RequestParam(value = "code") String code,
@RequestParam(value = "luckyBagId") String luckyBagId){ @RequestParam(value = "luckyBagId") String luckyBagId){
return luckyBagService.consumeCode(code, luckyBagId); return luckyBagService.consumeCode(mobile, code, luckyBagId);
} }
} }
...@@ -10,12 +10,14 @@ import com.liquidnet.commons.lang.util.StringUtil; ...@@ -10,12 +10,14 @@ import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.LuckyBagStatusEnum;
import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagCodeDetailVo; import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagCodeDetailVo;
import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagScopeVo; import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagScopeVo;
import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagVo; import com.liquidnet.service.kylin.dto.vo.KylinLuckyBagVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo; import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.KylinLuckyBagMapper;
import com.liquidnet.service.kylin.mapper.KylinLuckyBagScopeMapper; import com.liquidnet.service.kylin.mapper.KylinLuckyBagScopeMapper;
import com.liquidnet.service.kylin.mapper.KylinRewardCodeMapper; import com.liquidnet.service.kylin.mapper.KylinRewardCodeMapper;
import com.liquidnet.service.kylin.mapper.KylinRewardUserMapper; import com.liquidnet.service.kylin.mapper.KylinRewardUserMapper;
...@@ -49,8 +51,6 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -49,8 +51,6 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
IKylinOrderTicketsService orderTicketsService; IKylinOrderTicketsService orderTicketsService;
@Autowired @Autowired
private IFeishuBotService iFeishuBotService; private IFeishuBotService iFeishuBotService;
@Autowired
private KylinPerformancesServiceImpl kylinPerformancesService;
@Autowired @Autowired
private KylinRewardCodeMapper kylinRewardCodeMapper; private KylinRewardCodeMapper kylinRewardCodeMapper;
...@@ -58,6 +58,8 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -58,6 +58,8 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
private KylinRewardUserMapper kylinRewardUserMapper; private KylinRewardUserMapper kylinRewardUserMapper;
@Autowired @Autowired
private KylinLuckyBagScopeMapper kylinLuckyBagScopeMapper; private KylinLuckyBagScopeMapper kylinLuckyBagScopeMapper;
@Autowired
private KylinLuckyBagMapper kylinLuckyBagMapper;
@Override @Override
...@@ -72,7 +74,7 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -72,7 +74,7 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
} }
log.info("[getLuckyBagByOrderId] 获取福袋详情, orderId: {}, uid: {}.", orderId, uid); log.info("[getLuckyBagByOrderId] 获取福袋详情, orderId: {}, uid: {}.", orderId, uid);
// 判断订单状态 // 判断订单状态
if (vo.getOrderTicketVo().getStatus() != 1 || vo.getOrderTicketVo().getPayStatus() != 1) { if (!vo.getOrderTicketVo().getStatus().equals(1) || !vo.getOrderTicketVo().getPayStatus().equals(1)) {
log.info("[getLuckyBagByOrderId] 该订单状态不满足权益要求, orderId: {}, uid: {}, status: {}, payStatus: {}.", orderId, log.info("[getLuckyBagByOrderId] 该订单状态不满足权益要求, orderId: {}, uid: {}, status: {}, payStatus: {}.", orderId,
uid, vo.getOrderTicketVo().getStatus(), vo.getOrderTicketVo().getPayStatus()); uid, vo.getOrderTicketVo().getStatus(), vo.getOrderTicketVo().getPayStatus());
return KylinLuckyBagVo.ofEmpty(); return KylinLuckyBagVo.ofEmpty();
...@@ -93,38 +95,17 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -93,38 +95,17 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
} }
@Override
public ResponseDto<Boolean> consumeCode(String code, String luckyBagId) {
LambdaQueryWrapper<KylinRewardUser> queryWrapper = new QueryWrapper<KylinRewardUser>()
.lambda()
.eq(KylinRewardUser::getCode, code)
.eq(KylinRewardUser::getLuckyBagId, luckyBagId);
KylinRewardUser rewardUser = kylinRewardUserMapper.selectOne(queryWrapper);
if (rewardUser == null) {
log.error("code does not exist, code: {}, luckyBagId: {}.", code, luckyBagId);
return ResponseDto.failure("兑换码无效");
}
if (rewardUser.getState().equals(2)) {
log.info("code be used, code: {}, luckyBagId: {}.", code, luckyBagId);
return ResponseDto.failure("已被使用");
}
rewardUser.setState(2);
rewardUser.setUpdatedAt(LocalDateTime.now());
int updateById = kylinRewardUserMapper.updateById(rewardUser);
log.info("update code result: {}.", updateById);
return ResponseDto.success(updateById > 0);
}
@Override @Override
public List<KylinLuckyBagScopeVo> getLuckyBagListScope(String mobile) { public List<KylinLuckyBagScopeVo> getLuckyBagListScope(String mobile) {
if(StringUtil.isBlank(mobile)){ if (StringUtil.isBlank(mobile)) {
log.info("手机号为空"); log.info("[getLuckyBagListScope] 手机号为空");
return Collections.emptyList(); return Collections.emptyList();
} }
LambdaQueryWrapper<KylinLuckyBagScope> queryWrapper = new QueryWrapper<KylinLuckyBagScope>() LambdaQueryWrapper<KylinLuckyBagScope> queryWrapper = new QueryWrapper<KylinLuckyBagScope>()
.lambda() .lambda()
.eq(KylinLuckyBagScope::getMobile, mobile) .eq(KylinLuckyBagScope::getMobile, mobile)
.eq(KylinLuckyBagScope::getState, 1); .eq(KylinLuckyBagScope::getState, LuckyBagStatusEnum.AVAILABLE_STATUS_AVAILABLE.getValue());
List<KylinLuckyBagScope> kylinLuckyBagScopes = kylinLuckyBagScopeMapper.selectList(queryWrapper); List<KylinLuckyBagScope> kylinLuckyBagScopes = kylinLuckyBagScopeMapper.selectList(queryWrapper);
if (kylinLuckyBagScopes.isEmpty()) { if (kylinLuckyBagScopes.isEmpty()) {
log.info("[getLuckyBagListScope] 验码福袋列表为空, mobile: {}.", mobile); log.info("[getLuckyBagListScope] 验码福袋列表为空, mobile: {}.", mobile);
...@@ -158,8 +139,123 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -158,8 +139,123 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
} }
@Override @Override
public KylinLuckyBagCodeDetailVo getCodeDetail(String code, String luckyBagId) { public ResponseDto<KylinLuckyBagCodeDetailVo> getCodeDetail(String authMobile, String code, String luckyBagId) {
return null; if (!checkScopeByMobile(authMobile, luckyBagId)) {
log.info("暂无验码权限, mobile: {}, luckyBagId: {}.", authMobile, luckyBagId);
return ResponseDto.failure(ErrorMapping.get("20003"));
}
LambdaQueryWrapper<KylinRewardUser> queryWrapper = new QueryWrapper<KylinRewardUser>()
.lambda()
.eq(KylinRewardUser::getCode, code)
.eq(KylinRewardUser::getLuckyBagId, luckyBagId);
KylinRewardUser rewardUser = kylinRewardUserMapper.selectOne(queryWrapper);
if (rewardUser == null) {
log.error("兑换码或福袋不存在, code: {}, luckyBagId: {}.", code, luckyBagId);
return ResponseDto.failure(ErrorMapping.get("20800"));
}
OrderDetailsVo vo = orderTicketsService.orderDetails(rewardUser.getOrderId());
if (vo == null) {
log.error("订单详情为空, orderId: {}.", rewardUser.getOrderId());
iFeishuBotService.sendTextMessage("订单不存在, orderId: " + rewardUser.getOrderId());
return ResponseDto.failure(ErrorMapping.get("20801"));
}
return ResponseDto.success(buildCodeDetailVo(rewardUser, vo.getOrderTicketVo()));
}
@Override
public ResponseDto<Boolean> consumeCode(String authMobile, String code, String luckyBagId) {
if (!checkScopeByMobile(authMobile, luckyBagId)) {
log.info("暂无验码权限, mobile: {}, luckyBagId: {}.", authMobile, luckyBagId);
return ResponseDto.failure(ErrorMapping.get("20003"));
}
LambdaQueryWrapper<KylinRewardUser> queryWrapper = new QueryWrapper<KylinRewardUser>()
.lambda()
.eq(KylinRewardUser::getCode, code)
.eq(KylinRewardUser::getLuckyBagId, luckyBagId);
KylinRewardUser rewardUser = kylinRewardUserMapper.selectOne(queryWrapper);
if (rewardUser == null) {
log.error("兑换码或福袋不存在, code: {}, luckyBagId: {}.", code, luckyBagId);
return ResponseDto.failure(ErrorMapping.get("20800"));
}
if (LuckyBagStatusEnum.AVAILABLE_STATUS_RECEIVED.getValue().equals(rewardUser.getState())) {
log.info("兑换码被使用, code: {}, luckyBagId: {}.", code, luckyBagId);
return ResponseDto.failure(ErrorMapping.get("20802"));
}
rewardUser.setState(LuckyBagStatusEnum.AVAILABLE_STATUS_RECEIVED.getValue());
rewardUser.setComment(authMobile);
rewardUser.setUpdatedAt(LocalDateTime.now());
int updateById = kylinRewardUserMapper.updateById(rewardUser);
log.info("核销兑换码: {}.", updateById > 0);
return ResponseDto.success(updateById > 0);
}
private KylinLuckyBagCodeDetailVo buildCodeDetailVo(KylinRewardUser rewardUser,
KylinOrderTicketVo orderTicketVo) {
KylinLuckyBagCodeDetailVo detailVo = new KylinLuckyBagCodeDetailVo();
detailVo.setLuckyBagId(rewardUser.getLuckyBagId());
KylinLuckyBag luckyBag = getLuckyBagById(rewardUser.getLuckyBagId());
if (luckyBag != null) {
detailVo.setLuckyBagName(luckyBag.getName());
}
detailVo.setCode(rewardUser.getCode());
detailVo.setState(rewardUser.getState());
detailVo.setCreatedAt(rewardUser.getCreatedAt());
detailVo.setUpdatedAt(rewardUser.getUpdatedAt());
detailVo.setUserInfo(getUserInfo(orderTicketVo));
detailVo.setOrderInfo(getOrderInfo(orderTicketVo));
return detailVo;
}
/**
* 根据福袋ID获取福袋信息
*
* @param luckyBagId
* @return
*/
private KylinLuckyBag getLuckyBagById(String luckyBagId) {
LambdaQueryWrapper<KylinLuckyBag> wrapper = new QueryWrapper<KylinLuckyBag>().lambda()
.eq(KylinLuckyBag::getLuckyBagId, luckyBagId);
return kylinLuckyBagMapper.selectOne(wrapper);
}
/**
* 获取用户信息
*
* @param orderTicketVo
* @return
*/
private KylinLuckyBagCodeDetailVo.UserInfo getUserInfo(KylinOrderTicketVo orderTicketVo) {
if (orderTicketVo == null) {
return null;
}
KylinLuckyBagCodeDetailVo.UserInfo userInfo = new KylinLuckyBagCodeDetailVo.UserInfo();
userInfo.setUid(orderTicketVo.getUserId());
userInfo.setUserName(orderTicketVo.getUserName());
userInfo.setUserMobile(orderTicketVo.getUserMobile());
return userInfo;
}
/**
* 获取订单信息
*
* @param orderTicketVo
* @return
*/
private KylinLuckyBagCodeDetailVo.OrderInfo getOrderInfo(KylinOrderTicketVo orderTicketVo) {
if (orderTicketVo == null) {
return null;
}
KylinLuckyBagCodeDetailVo.OrderInfo orderInfo = new KylinLuckyBagCodeDetailVo.OrderInfo();
orderInfo.setOrderId(orderTicketVo.getOrderTicketsId());
orderInfo.setOrderCode(orderTicketVo.getOrderCode());
orderInfo.setPerformanceTitle(orderTicketVo.getPerformanceTitle());
orderInfo.setTicketTitle(orderTicketVo.getTicketTitle());
orderInfo.setNumber(orderTicketVo.getNumber());
orderInfo.setCreatedAt(orderTicketVo.getCreatedAt());
orderInfo.setUseStart(orderTicketVo.getUseStart());
return orderInfo;
} }
/** /**
...@@ -206,18 +302,19 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -206,18 +302,19 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
log.info("[getLuckyBagVos] 福袋[{}]已到发放时间,但未给用户分配兑换码, uid: {}, orderId: {}.", l.getName(), uid, orderId); log.info("[getLuckyBagVos] 福袋[{}]已到发放时间,但未给用户分配兑换码, uid: {}, orderId: {}.", l.getName(), uid, orderId);
kylinRewardUserList = getRandomRewardCode(vo, l.getLuckyBagId()); kylinRewardUserList = getRandomRewardCode(vo, l.getLuckyBagId());
} }
List<KylinLuckyBagVo.RewardCodeVo> codeSet = kylinRewardUserList.stream().map(k -> { List<KylinLuckyBagVo.RewardCodeVo> codeVoList = kylinRewardUserList.stream().map(k -> {
KylinLuckyBagVo.RewardCodeVo rewardCodeVo = new KylinLuckyBagVo.RewardCodeVo(); KylinLuckyBagVo.RewardCodeVo rewardCodeVo = new KylinLuckyBagVo.RewardCodeVo();
rewardCodeVo.setState(k.getState()); rewardCodeVo.setUseStatus(k.getState());
rewardCodeVo.setCode(k.getCode()); rewardCodeVo.setCode(k.getCode());
return rewardCodeVo; return rewardCodeVo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
luckyBagVo.setRewardCodeVoList(codeSet); luckyBagVo.setRewardCodeVoList(codeVoList);
luckyBagVo.setStatus(kylinRewardUserList.isEmpty() ? 0 : 1); luckyBagVo.setStatus(kylinRewardUserList.isEmpty() ?
LuckyBagStatusEnum.UNLOCK_STATUS_NOT_UNLOCKED.getValue() : LuckyBagStatusEnum.UNLOCK_STATUS_UNLOCKED.getValue());
} else { } else {
log.info("[getLuckyBagVos] 福袋[{}]未到发放时间.", l.getName()); log.info("[getLuckyBagVos] 福袋[{}]未到发放时间.", l.getName());
luckyBagVo.setStatus(0); luckyBagVo.setStatus(LuckyBagStatusEnum.UNLOCK_STATUS_NOT_UNLOCKED.getValue());
luckyBagVo.setRewardCodeVoList(Collections.emptyList()); luckyBagVo.setRewardCodeVoList(Collections.emptyList());
} }
} }
...@@ -255,7 +352,7 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -255,7 +352,7 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
LambdaQueryWrapper<KylinRewardCode> lambdaQueryWrapper = new QueryWrapper<KylinRewardCode>().lambda() LambdaQueryWrapper<KylinRewardCode> lambdaQueryWrapper = new QueryWrapper<KylinRewardCode>().lambda()
.eq(KylinRewardCode::getLuckyBagId, luckyBagId) .eq(KylinRewardCode::getLuckyBagId, luckyBagId)
.eq(KylinRewardCode::getState, 1) .eq(KylinRewardCode::getState, LuckyBagStatusEnum.AVAILABLE_STATUS_AVAILABLE.getValue())
.last(true, " limit " + limitTotal); .last(true, " limit " + limitTotal);
//2. 搜索未分配的兑换码 //2. 搜索未分配的兑换码
List<KylinRewardCode> rewardCodes = kylinRewardCodeMapper.selectList(lambdaQueryWrapper); List<KylinRewardCode> rewardCodes = kylinRewardCodeMapper.selectList(lambdaQueryWrapper);
...@@ -283,7 +380,8 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -283,7 +380,8 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
int inserted = kylinRewardUserMapper.insert(rewardUser); int inserted = kylinRewardUserMapper.insert(rewardUser);
if (inserted > 0) { if (inserted > 0) {
// 将兑换码状态更新为已领取 // 将兑换码状态更新为已领取
int updateResult = kylinRewardCodeMapper.updateByMid(lockedRewardCode.getMid(), 0); int updateResult = kylinRewardCodeMapper.updateByMid(lockedRewardCode.getMid(),
LuckyBagStatusEnum.AVAILABLE_STATUS_UNAVAILABLE.getValue());
if (updateResult <= 0) { if (updateResult <= 0) {
log.error("[getRandomRewardCode] 修改兑换码状态失败, luckyBagId: {}, orderId: {}, code: {}.", log.error("[getRandomRewardCode] 修改兑换码状态失败, luckyBagId: {}, orderId: {}, code: {}.",
luckyBagId, orderTicketVo.getOrderTicketsId(), lockedRewardCode.getCode()); luckyBagId, orderTicketVo.getOrderTicketsId(), lockedRewardCode.getCode());
...@@ -316,7 +414,7 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -316,7 +414,7 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
user.setOrderId(orderId); user.setOrderId(orderId);
user.setOrderTicketEntitiesId(orderTicketEntitiesId); user.setOrderTicketEntitiesId(orderTicketEntitiesId);
user.setCode(code); user.setCode(code);
user.setState(1); user.setState(LuckyBagStatusEnum.AVAILABLE_STATUS_AVAILABLE.getValue());
user.setCreatedAt(LocalDateTime.now()); user.setCreatedAt(LocalDateTime.now());
// user.setUpdatedAt(LocalDateTime.now()); // user.setUpdatedAt(LocalDateTime.now());
return user; return user;
...@@ -343,4 +441,24 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService { ...@@ -343,4 +441,24 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
}); });
return activityVos; return activityVos;
} }
/**
* 校验手机号是否有权限验码
*
* @param mobile
* @param luckyBagId
* @return
*/
private boolean checkScopeByMobile(String mobile, String luckyBagId) {
if (StringUtil.isBlank(mobile)) {
log.info("mobile is blank.");
return false;
}
LambdaQueryWrapper<KylinLuckyBagScope> queryWrapper = new QueryWrapper<KylinLuckyBagScope>().lambda()
.eq(KylinLuckyBagScope::getMobile, mobile)
.eq(KylinLuckyBagScope::getLuckyBagId, luckyBagId)
.eq(KylinLuckyBagScope::getState, LuckyBagStatusEnum.AVAILABLE_STATUS_AVAILABLE.getValue());
KylinLuckyBagScope kylinLuckyBagScope = kylinLuckyBagScopeMapper.selectOne(queryWrapper);
return kylinLuckyBagScope != null;
}
} }
...@@ -13,6 +13,7 @@ import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo; ...@@ -13,6 +13,7 @@ import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.constant.LuckyBagStatusEnum;
import com.liquidnet.service.kylin.dao.KylinTicketActive; import com.liquidnet.service.kylin.dao.KylinTicketActive;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo; import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeUpushVo; import com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeUpushVo;
...@@ -1624,7 +1625,7 @@ public class DataUtils { ...@@ -1624,7 +1625,7 @@ public class DataUtils {
// 从数据库查询 状态为可用的 // 从数据库查询 状态为可用的
LambdaQueryWrapper<KylinLuckyBagActivity> lambdaQueryWrapper = new QueryWrapper<KylinLuckyBagActivity>() LambdaQueryWrapper<KylinLuckyBagActivity> lambdaQueryWrapper = new QueryWrapper<KylinLuckyBagActivity>()
.lambda() .lambda()
.eq(KylinLuckyBagActivity::getState, 1) .eq(KylinLuckyBagActivity::getState, LuckyBagStatusEnum.AVAILABLE_STATUS_AVAILABLE.getValue())
.orderByDesc(KylinLuckyBagActivity::getSort); .orderByDesc(KylinLuckyBagActivity::getSort);
List<KylinLuckyBagActivity> bagActivities = kylinLuckyBagActivityMapper.selectList(lambdaQueryWrapper); List<KylinLuckyBagActivity> bagActivities = kylinLuckyBagActivityMapper.selectList(lambdaQueryWrapper);
setKylinLuckyBagActivityList(bagActivities); setKylinLuckyBagActivityList(bagActivities);
...@@ -1656,7 +1657,7 @@ public class DataUtils { ...@@ -1656,7 +1657,7 @@ public class DataUtils {
// 从数据库查询 状态为可用的 // 从数据库查询 状态为可用的
LambdaQueryWrapper<KylinLuckyBag> lambdaQueryWrapper = new QueryWrapper<KylinLuckyBag>() LambdaQueryWrapper<KylinLuckyBag> lambdaQueryWrapper = new QueryWrapper<KylinLuckyBag>()
.lambda() .lambda()
.eq(KylinLuckyBag::getState, 1); .eq(KylinLuckyBag::getState, LuckyBagStatusEnum.AVAILABLE_STATUS_AVAILABLE.getValue());
List<KylinLuckyBag> bagActivities = kylinLuckyBagMapper.selectList(lambdaQueryWrapper); List<KylinLuckyBag> bagActivities = kylinLuckyBagMapper.selectList(lambdaQueryWrapper);
setKylinLuckyBagList(bagActivities); setKylinLuckyBagList(bagActivities);
return bagActivities; return bagActivities;
...@@ -1686,8 +1687,7 @@ public class DataUtils { ...@@ -1686,8 +1687,7 @@ public class DataUtils {
LambdaQueryWrapper<KylinRewardUser> lambdaQueryWrapper = new QueryWrapper<KylinRewardUser>().lambda() LambdaQueryWrapper<KylinRewardUser> lambdaQueryWrapper = new QueryWrapper<KylinRewardUser>().lambda()
.eq(KylinRewardUser::getUid, uid) .eq(KylinRewardUser::getUid, uid)
.eq(KylinRewardUser::getOrderId, orderId) .eq(KylinRewardUser::getOrderId, orderId)
.eq(KylinRewardUser::getLuckyBagId, luckyBagId) .eq(KylinRewardUser::getLuckyBagId, luckyBagId);
.eq(KylinRewardUser::getState, 1);
return kylinRewardUserMapper.selectList(lambdaQueryWrapper); return kylinRewardUserMapper.selectList(lambdaQueryWrapper);
} }
} }
40001=登录信息有误 40001=\u767B\u5F55\u4FE1\u606F\u6709\u8BEF
40002=账号已在另一台设备登录 40002=\u8D26\u53F7\u5DF2\u5728\u53E6\u4E00\u53F0\u8BBE\u5907\u767B\u5F55
40003=登录已过期 40003=\u767B\u5F55\u5DF2\u8FC7\u671F
# ------------------------ 4开头错误码作系统保留 # ------------------------ 4\u5F00\u5934\u9519\u8BEF\u7801\u4F5C\u7CFB\u7EDF\u4FDD\u7559
#APP ERROR #APP ERROR
20001=验证码发送失败 20001=\u9A8C\u8BC1\u7801\u53D1\u9001\u5931\u8D25
20002=验证码错误,请重新输入 20002=\u9A8C\u8BC1\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165
20003=无权查看 20003=\u65E0\u6743\u67E5\u770B
20004=参数错误 20004=\u53C2\u6570\u9519\u8BEF
20005=手机号获取失败,请更换登录方式 20005=\u624B\u673A\u53F7\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u66F4\u6362\u767B\u5F55\u65B9\u5F0F
20006=第三方账号未注册 20006=\u7B2C\u4E09\u65B9\u8D26\u53F7\u672A\u6CE8\u518C
20007=数量错误 20007=\u6570\u91CF\u9519\u8BEF
20008=无权购买 20008=\u65E0\u6743\u8D2D\u4E70
20009=非会员用户暂不可购买 20009=\u975E\u4F1A\u5458\u7528\u6237\u6682\u4E0D\u53EF\u8D2D\u4E70
20010=当前不可购买 20010=\u5F53\u524D\u4E0D\u53EF\u8D2D\u4E70
20011=未开始售卖 20011=\u672A\u5F00\u59CB\u552E\u5356
20012=售卖已结束 20012=\u552E\u5356\u5DF2\u7ED3\u675F
20013=已超过快递票截止时间 20013=\u5DF2\u8D85\u8FC7\u5FEB\u9012\u7968\u622A\u6B62\u65F6\u95F4
20014=快递票未填写收货地址 20014=\u5FEB\u9012\u7968\u672A\u586B\u5199\u6536\u8D27\u5730\u5740
20015=入场人数量错误 20015=\u5165\u573A\u4EBA\u6570\u91CF\u9519\u8BEF
20016=库存不足 20016=\u5E93\u5B58\u4E0D\u8DB3
20017=年龄不符合 20017=\u5E74\u9F84\u4E0D\u7B26\u5408
20018=下单失败 20018=\u4E0B\u5355\u5931\u8D25
20019=申请失败 20019=\u7533\u8BF7\u5931\u8D25
20020=当前状态不可撤回 20020=\u5F53\u524D\u72B6\u6001\u4E0D\u53EF\u64A4\u56DE
20021=退款金额不能为0 20021=\u9000\u6B3E\u91D1\u989D\u4E0D\u80FD\u4E3A0
20022=申请金额不得小于0 20022=\u7533\u8BF7\u91D1\u989D\u4E0D\u5F97\u5C0F\u4E8E0
20023=请求频繁 20023=\u8BF7\u6C42\u9891\u7E41
20024=订单不存在 20024=\u8BA2\u5355\u4E0D\u5B58\u5728
20025=订单已支付 20025=\u8BA2\u5355\u5DF2\u652F\u4ED8
20026=订单已关闭 20026=\u8BA2\u5355\u5DF2\u5173\u95ED
20028=订单已失效 20028=\u8BA2\u5355\u5DF2\u5931\u6548
20027=您已支付请刷新再试 20027=\u60A8\u5DF2\u652F\u4ED8\u8BF7\u5237\u65B0\u518D\u8BD5
20029=未选择支付方式 20029=\u672A\u9009\u62E9\u652F\u4ED8\u65B9\u5F0F
20030=查看失败 20030=\u67E5\u770B\u5931\u8D25
#APP JDM #APP JDM
20201= 20201=
# 专业版APP # \u4E13\u4E1A\u7248APP
20601=账号不存在 20601=\u8D26\u53F7\u4E0D\u5B58\u5728
20602=密码错误 20602=\u5BC6\u7801\u9519\u8BEF
20603= 20603=
20604= 20604=
20605= 20605=
20606=当前账号无关联演出数据 20606=\u5F53\u524D\u8D26\u53F7\u65E0\u5173\u8054\u6F14\u51FA\u6570\u636E
20607=当前账号未关联当前演出 20607=\u5F53\u524D\u8D26\u53F7\u672A\u5173\u8054\u5F53\u524D\u6F14\u51FA
20608=当前演出还未开放下载 20608=\u5F53\u524D\u6F14\u51FA\u8FD8\u672A\u5F00\u653E\u4E0B\u8F7D
# 演出 # \u6F14\u51FA
20700=演出详情获取失败 20700=\u6F14\u51FA\u8BE6\u60C5\u83B7\u53D6\u5931\u8D25
20701=巡演获取失败 20701=\u5DE1\u6F14\u83B7\u53D6\u5931\u8D25
20702=获取演出场次票种失败 20702=\u83B7\u53D6\u6F14\u51FA\u573A\u6B21\u7968\u79CD\u5931\u8D25
20703=获取支付前详情失败 20703=\u83B7\u53D6\u652F\u4ED8\u524D\u8BE6\u60C5\u5931\u8D25
#\u798F\u888B
20800=\u5151\u6362\u7801\u65E0\u6548
20801=\u8BA2\u5355\u4E0D\u5B58\u5728
20802=\u5151\u6362\u7801\u5DF2\u88AB\u4F7F\u7528
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