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