票务核销接口
This commit is contained in:
parent
ec840a0781
commit
f8b4ebe394
@ -21,7 +21,7 @@ public class ZTicketVerificationAuth extends Model<ZTicketVerificationAuth> {
|
|||||||
|
|
||||||
// 权限ID
|
// 权限ID
|
||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
private String authId;
|
private Long authId;
|
||||||
// 用户ID
|
// 用户ID
|
||||||
private Integer memberId;
|
private Integer memberId;
|
||||||
// 演出ID
|
// 演出ID
|
||||||
|
@ -31,7 +31,7 @@ public class ZTicketVerificationRecords extends Model<ZTicketVerificationRecords
|
|||||||
// 演出ID
|
// 演出ID
|
||||||
private Long showId;
|
private Long showId;
|
||||||
// 核销人用户ID
|
// 核销人用户ID
|
||||||
private Long writeOffUserId;
|
private Integer writeOffUserId;
|
||||||
// 创建时间
|
// 创建时间
|
||||||
@TableField(fill = FieldFill.INSERT)
|
@TableField(fill = FieldFill.INSERT)
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
@ -28,9 +28,9 @@ public class ZTicketVerificationAuthController {
|
|||||||
return R.success(zTicketVerificationAuthService.getList());
|
return R.success(zTicketVerificationAuthService.getList());
|
||||||
}
|
}
|
||||||
@GetMapping("page")
|
@GetMapping("page")
|
||||||
@ApiOperation(value = "分页查询")
|
@ApiOperation(value = "分页查询该演出的核销人")
|
||||||
public R page(Page page) {
|
public R page(Page page,@RequestParam Long showId) {
|
||||||
return R.success(zTicketVerificationAuthService.getPage(page));
|
return R.success(zTicketVerificationAuthService.getPage(page,showId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("{Id}")
|
@GetMapping("{Id}")
|
||||||
|
@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface ZTicketVerificationAuthService extends IService<ZTicketVerificationAuth> {
|
public interface ZTicketVerificationAuthService extends IService<ZTicketVerificationAuth> {
|
||||||
List<ZTicketVerificationAuth> getList();
|
List<ZTicketVerificationAuth> getList();
|
||||||
IPage<ZTicketVerificationAuth> getPage(Page page);
|
IPage<ZTicketVerificationAuth> getPage(Page page,Long showId);
|
||||||
ZTicketVerificationAuth getByZTicketVerificationAuthId(Integer id);
|
ZTicketVerificationAuth getByZTicketVerificationAuthId(Integer id);
|
||||||
|
|
||||||
ZTicketVerificationAuth add(ZTicketVerificationAuth zTicketVerificationAuth);
|
ZTicketVerificationAuth add(ZTicketVerificationAuth zTicketVerificationAuth);
|
||||||
|
@ -4,13 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.cpop.nftmeta.admin.service.ZMemberService;
|
||||||
|
import com.cpop.nftmeta.admin.vo.TicketVerificationAuthVO;
|
||||||
|
import com.cpop.nftmeta.common.entity.ZMember;
|
||||||
import com.cpop.nftmeta.common.entity.ZTicketVerificationAuth;
|
import com.cpop.nftmeta.common.entity.ZTicketVerificationAuth;
|
||||||
import com.cpop.nftmeta.admin.mapper.ZTicketVerificationAuthMapper;
|
import com.cpop.nftmeta.admin.mapper.ZTicketVerificationAuthMapper;
|
||||||
import com.cpop.nftmeta.admin.service.ZTicketVerificationAuthService;
|
import com.cpop.nftmeta.admin.service.ZTicketVerificationAuthService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门票核销权限表
|
* 门票核销权限表
|
||||||
@ -19,15 +24,31 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class ZTicketVerificationAuthServiceImpl extends ServiceImpl<ZTicketVerificationAuthMapper,ZTicketVerificationAuth> implements ZTicketVerificationAuthService {
|
public class ZTicketVerificationAuthServiceImpl extends ServiceImpl<ZTicketVerificationAuthMapper,ZTicketVerificationAuth> implements ZTicketVerificationAuthService {
|
||||||
|
@Autowired
|
||||||
|
private ZMemberService zMemberService;
|
||||||
@Override
|
@Override
|
||||||
public List<ZTicketVerificationAuth> getList() {
|
public List<ZTicketVerificationAuth> getList() {
|
||||||
return this.list();
|
return this.list();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public IPage getPage(Page page) {
|
public IPage getPage(Page page,Long showId) {
|
||||||
LambdaQueryWrapper<ZTicketVerificationAuth> lambdaQueryWrapper=new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ZTicketVerificationAuth> lambdaQueryWrapper=new LambdaQueryWrapper<>();
|
||||||
// 用户名 手机号 id
|
lambdaQueryWrapper.eq(ZTicketVerificationAuth::getShowId,showId);
|
||||||
return this.page(page, lambdaQueryWrapper);
|
Page authPage = this.page(page, lambdaQueryWrapper);
|
||||||
|
List<ZTicketVerificationAuth> records = authPage.getRecords();
|
||||||
|
// 用户名 手机号 id
|
||||||
|
List<TicketVerificationAuthVO> authVOS = records.stream().map(e -> {
|
||||||
|
TicketVerificationAuthVO vo = new TicketVerificationAuthVO();
|
||||||
|
vo.setAuthId(e.getAuthId());
|
||||||
|
ZMember member = zMemberService.getById(e.getMemberId());
|
||||||
|
if (member != null) {
|
||||||
|
vo.setNickname(member.getNickname());
|
||||||
|
vo.setPhone(member.getUsername());
|
||||||
|
}
|
||||||
|
return vo;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
authPage.setRecords(authVOS);
|
||||||
|
return authPage;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public ZTicketVerificationAuth getByZTicketVerificationAuthId(@NotNull(message = "Id不能为空") Integer id) {
|
public ZTicketVerificationAuth getByZTicketVerificationAuthId(@NotNull(message = "Id不能为空") Integer id) {
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.cpop.nftmeta.admin.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Version: 1.0
|
||||||
|
* @since: 2024/12/2
|
||||||
|
* @author: yxz
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel(description = "核销权限VO")
|
||||||
|
public class TicketVerificationAuthVO {
|
||||||
|
private Long authId;
|
||||||
|
private String nickname;
|
||||||
|
private String phone;
|
||||||
|
}
|
@ -4,6 +4,8 @@ import cn.hutool.core.img.ImgUtil;
|
|||||||
import cn.hutool.extra.qrcode.QrCodeUtil;
|
import cn.hutool.extra.qrcode.QrCodeUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.cpop.nftmeta.api.dto.RealnameDTO;
|
||||||
|
import com.cpop.nftmeta.api.dto.TicketRealnameDTO;
|
||||||
import com.cpop.nftmeta.api.service.ZShowService;
|
import com.cpop.nftmeta.api.service.ZShowService;
|
||||||
import com.cpop.nftmeta.api.service.ZTicketTierService;
|
import com.cpop.nftmeta.api.service.ZTicketTierService;
|
||||||
import com.cpop.nftmeta.api.vo.TicketFolderVO;
|
import com.cpop.nftmeta.api.vo.TicketFolderVO;
|
||||||
@ -132,6 +134,20 @@ public class ZTicketFolderController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实名认证
|
||||||
|
*
|
||||||
|
* @param ticketRealnameDTO 机票实名制
|
||||||
|
* @return {@link R }
|
||||||
|
* @author yxz
|
||||||
|
* @since 2024/12/02
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "实名认证")
|
||||||
|
@PostMapping("/real-name")
|
||||||
|
public R realNameTicket(@RequestBody TicketRealnameDTO ticketRealnameDTO) {
|
||||||
|
return zTicketFolderService.realNameTicket(ticketRealnameDTO);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 核销门票
|
* 核销门票
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.cpop.nftmeta.api.dto;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Version: 1.0
|
||||||
|
* @since: 2024/12/2
|
||||||
|
* @author: yxz
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel("门票实名信息DTO")
|
||||||
|
public class TicketRealnameDTO extends RealnameDTO {
|
||||||
|
@ApiModelProperty("门票ID")
|
||||||
|
private Long folderId;
|
||||||
|
}
|
@ -3,6 +3,7 @@ package com.cpop.nftmeta.api.mapper;
|
|||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.cpop.nftmeta.api.dto.ExchangeTicketDTO;
|
import com.cpop.nftmeta.api.dto.ExchangeTicketDTO;
|
||||||
import com.cpop.nftmeta.common.entity.ZTicketUniqueCode;
|
import com.cpop.nftmeta.common.entity.ZTicketUniqueCode;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门票唯一标识表
|
* 门票唯一标识表
|
||||||
@ -13,10 +14,11 @@ public interface ZTicketUniqueCodeMapper extends BaseMapper<ZTicketUniqueCode> {
|
|||||||
/**
|
/**
|
||||||
* 检查重复观演人
|
* 检查重复观演人
|
||||||
*
|
*
|
||||||
* @param exchangeTicketDTO 兑换机票
|
* @param showId 显示id
|
||||||
|
* @param idNumber 身份证号码
|
||||||
* @return {@link Integer }
|
* @return {@link Integer }
|
||||||
* @author yxz
|
* @author yxz
|
||||||
* @since 2024/11/27
|
* @since 2024/11/27
|
||||||
*/
|
*/
|
||||||
Integer checkRepeatAudience(ExchangeTicketDTO exchangeTicketDTO);
|
Integer checkRepeatAudience(@Param("showId") Long showId, @Param("idNumber") String idNumber);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
|
||||||
|
import com.cpop.nftmeta.api.dto.RealnameDTO;
|
||||||
|
import com.cpop.nftmeta.api.dto.TicketRealnameDTO;
|
||||||
import com.cpop.nftmeta.common.entity.ZTicketFolder;
|
import com.cpop.nftmeta.common.entity.ZTicketFolder;
|
||||||
import com.cpop.nftmeta.common.vo.R;
|
import com.cpop.nftmeta.common.vo.R;
|
||||||
|
|
||||||
@ -32,4 +34,14 @@ public interface ZTicketFolderService extends IService<ZTicketFolder> {
|
|||||||
* @since 2024/11/29
|
* @since 2024/11/29
|
||||||
*/
|
*/
|
||||||
R verificationTicket(String ticketData);
|
R verificationTicket(String ticketData);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实名认证
|
||||||
|
*
|
||||||
|
* @param realnameDTO realname dto
|
||||||
|
* @return {@link R }
|
||||||
|
* @author yxz
|
||||||
|
* @since 2024/12/02
|
||||||
|
*/
|
||||||
|
R realNameTicket(TicketRealnameDTO realnameDTO);
|
||||||
}
|
}
|
||||||
|
@ -140,6 +140,21 @@ public class ZTicketBlindCodeServiceImpl extends ServiceImpl<ZTicketBlindCodeMap
|
|||||||
if (!ResultCode.SUCCESS.getCode().equals(code)){
|
if (!ResultCode.SUCCESS.getCode().equals(code)){
|
||||||
return R.fail("未找到有效编码");
|
return R.fail("未找到有效编码");
|
||||||
}
|
}
|
||||||
|
// 票档是否有效
|
||||||
|
LambdaQueryWrapper<ZTicketBlindCode> blindCodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
blindCodeLambdaQueryWrapper.eq(ZTicketBlindCode::getUniqudeCode, exchangeBlindDTO.getUniqueCode());
|
||||||
|
ZTicketBlindCode zTicketBlindCode = this.getOne(blindCodeLambdaQueryWrapper);
|
||||||
|
R result= zTicketTierService.checkTicketTierEnable(exchangeBlindDTO.getTicketTierId(), zTicketBlindCode.getFirstShowId());
|
||||||
|
if (result.getCode().equals(ResultCode.FAIL.getCode())){
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// 同一身份证只允许绑定一张票
|
||||||
|
ExchangeTicketDTO exchangeTicketDTO = new ExchangeTicketDTO();
|
||||||
|
BeanUtils.copyProperties(exchangeBlindDTO, exchangeTicketDTO);
|
||||||
|
Integer count = zTicketUniqueCodeMapper.checkRepeatAudience(zTicketBlindCode.getFirstShowId(),exchangeBlindDTO.getIdNumber());
|
||||||
|
if (ObjectUtil.isNotNull(count) && count > 0){
|
||||||
|
return R.fail("同一身份证只能绑定一张门票");
|
||||||
|
}
|
||||||
if ("prod".equals(env)){
|
if ("prod".equals(env)){
|
||||||
// 检查实名信息
|
// 检查实名信息
|
||||||
RealNameVerifyDTO realNameVerifyDTO = new RealNameVerifyDTO();
|
RealNameVerifyDTO realNameVerifyDTO = new RealNameVerifyDTO();
|
||||||
@ -150,21 +165,6 @@ public class ZTicketBlindCodeServiceImpl extends ServiceImpl<ZTicketBlindCodeMap
|
|||||||
return R.fail("实名认证失败,请检查身份信息");
|
return R.fail("实名认证失败,请检查身份信息");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 同一身份证只允许绑定一张票
|
|
||||||
ExchangeTicketDTO exchangeTicketDTO = new ExchangeTicketDTO();
|
|
||||||
BeanUtils.copyProperties(exchangeBlindDTO, exchangeTicketDTO);
|
|
||||||
Integer count = zTicketUniqueCodeMapper.checkRepeatAudience(exchangeTicketDTO);
|
|
||||||
if (ObjectUtil.isNotNull(count) && count > 0){
|
|
||||||
return R.fail("同一身份证只能绑定一张门票");
|
|
||||||
}
|
|
||||||
// 票档是否有效
|
|
||||||
LambdaQueryWrapper<ZTicketBlindCode> blindCodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
blindCodeLambdaQueryWrapper.eq(ZTicketBlindCode::getUniqudeCode, exchangeBlindDTO.getUniqueCode());
|
|
||||||
ZTicketBlindCode zTicketBlindCode = this.getOne(blindCodeLambdaQueryWrapper);
|
|
||||||
R result= zTicketTierService.checkTicketTierEnable(exchangeBlindDTO.getTicketTierId(), zTicketBlindCode.getFirstShowId());
|
|
||||||
if (result.getCode().equals(ResultCode.FAIL.getCode())){
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// 兑换盲盒
|
// 兑换盲盒
|
||||||
LambdaQueryWrapper<ZTicketBlindCode> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ZTicketBlindCode> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(ZTicketBlindCode::getUniqudeCode, exchangeBlindDTO.getUniqueCode());
|
queryWrapper.eq(ZTicketBlindCode::getUniqudeCode, exchangeBlindDTO.getUniqueCode());
|
||||||
|
@ -7,16 +7,28 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.cpop.nftmeta.api.dto.ExchangeTicketDTO;
|
||||||
|
import com.cpop.nftmeta.api.dto.RealnameDTO;
|
||||||
|
import com.cpop.nftmeta.api.dto.TicketRealnameDTO;
|
||||||
|
import com.cpop.nftmeta.api.mapper.ZTicketUniqueCodeMapper;
|
||||||
import com.cpop.nftmeta.api.service.ZTicketVerificationAuthService;
|
import com.cpop.nftmeta.api.service.ZTicketVerificationAuthService;
|
||||||
|
import com.cpop.nftmeta.api.service.ZTicketVerificationRecordsService;
|
||||||
import com.cpop.nftmeta.common.context.CUserInfo;
|
import com.cpop.nftmeta.common.context.CUserInfo;
|
||||||
import com.cpop.nftmeta.common.context.UserContext;
|
import com.cpop.nftmeta.common.context.UserContext;
|
||||||
import com.cpop.nftmeta.common.entity.ZTicketFolder;
|
import com.cpop.nftmeta.common.entity.ZTicketFolder;
|
||||||
import com.cpop.nftmeta.api.mapper.ZTicketFolderMapper;
|
import com.cpop.nftmeta.api.mapper.ZTicketFolderMapper;
|
||||||
import com.cpop.nftmeta.api.service.ZTicketFolderService;
|
import com.cpop.nftmeta.api.service.ZTicketFolderService;
|
||||||
|
import com.cpop.nftmeta.common.entity.ZTicketVerificationAuth;
|
||||||
|
import com.cpop.nftmeta.common.entity.ZTicketVerificationRecords;
|
||||||
|
import com.cpop.nftmeta.common.realname.RealNameVerifyDTO;
|
||||||
|
import com.cpop.nftmeta.common.realname.RealNameVerifyService;
|
||||||
import com.cpop.nftmeta.common.utils.AESUtils;
|
import com.cpop.nftmeta.common.utils.AESUtils;
|
||||||
import com.cpop.nftmeta.common.vo.R;
|
import com.cpop.nftmeta.common.vo.R;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -31,6 +43,11 @@ import java.util.List;
|
|||||||
public class ZTicketFolderServiceImpl extends ServiceImpl<ZTicketFolderMapper,ZTicketFolder> implements ZTicketFolderService {
|
public class ZTicketFolderServiceImpl extends ServiceImpl<ZTicketFolderMapper,ZTicketFolder> implements ZTicketFolderService {
|
||||||
private final ZTicketVerificationAuthService zTicketVerificationAuthService;
|
private final ZTicketVerificationAuthService zTicketVerificationAuthService;
|
||||||
private final AESUtils aesUtils;
|
private final AESUtils aesUtils;
|
||||||
|
private final ZTicketVerificationRecordsService zTicketVerificationRecordsService;
|
||||||
|
private final RealNameVerifyService realNameVerifyService;
|
||||||
|
private final ZTicketUniqueCodeMapper zTicketUniqueCodeMapper;
|
||||||
|
@Value("${spring.profiles.active}")
|
||||||
|
private String env;
|
||||||
@Override
|
@Override
|
||||||
public List<ZTicketFolder> getList() {
|
public List<ZTicketFolder> getList() {
|
||||||
return this.list();
|
return this.list();
|
||||||
@ -60,6 +77,41 @@ public class ZTicketFolderServiceImpl extends ServiceImpl<ZTicketFolderMapper,ZT
|
|||||||
return this.removeById(id);
|
return this.removeById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实名认证
|
||||||
|
*
|
||||||
|
* @param realnameDTO realname dto
|
||||||
|
* @return {@link R }
|
||||||
|
* @author yxz
|
||||||
|
* @since 2024/12/02
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R realNameTicket(TicketRealnameDTO realnameDTO) {
|
||||||
|
ZTicketFolder ticket = this.getById(realnameDTO.getFolderId());
|
||||||
|
if (ticket != null && (ticket.getAudienceName() != null || ticket.getIdNumber() != null)){
|
||||||
|
return R.fail("该门票已实名认证,请勿重复认证");
|
||||||
|
}
|
||||||
|
if ("prod".equals(env)){
|
||||||
|
// 检查实名信息
|
||||||
|
RealNameVerifyDTO realNameVerifyDTO = new RealNameVerifyDTO();
|
||||||
|
realNameVerifyDTO.setRealName(realnameDTO.getAudienceName());
|
||||||
|
realNameVerifyDTO.setIdCard(realnameDTO.getIdNumber());
|
||||||
|
Boolean aBoolean = realNameVerifyService.verify(realNameVerifyDTO);
|
||||||
|
if (!aBoolean){
|
||||||
|
return R.fail("实名认证失败,请检查身份信息");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 同一身份证只允许绑定一张票
|
||||||
|
Integer count = zTicketUniqueCodeMapper.checkRepeatAudience(ticket.getShowId(),realnameDTO.getIdNumber());
|
||||||
|
if (ObjectUtil.isNotNull(count) && count > 0){
|
||||||
|
return R.fail("同一身份证只能绑定一张门票");
|
||||||
|
}
|
||||||
|
// 绑定实名信息
|
||||||
|
BeanUtils.copyProperties(realnameDTO, ticket);
|
||||||
|
boolean b = this.updateById(ticket);
|
||||||
|
return b ? R.success("实名认证成功") : R.fail("实名认证失败");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 核销门票
|
* 核销门票
|
||||||
*
|
*
|
||||||
@ -69,33 +121,31 @@ public class ZTicketFolderServiceImpl extends ServiceImpl<ZTicketFolderMapper,ZT
|
|||||||
* @since 2024/11/29
|
* @since 2024/11/29
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public R verificationTicket(String ticketData) {
|
public R verificationTicket(String ticketData) {
|
||||||
// 提取票据数据
|
// 提取票据数据
|
||||||
String decrypt = aesUtils.decrypt(ticketData);
|
String decrypt = aesUtils.decrypt(ticketData);
|
||||||
String[] parts = decrypt.split(":");
|
String[] parts = decrypt.split(":");
|
||||||
Long userId = Long.parseLong(parts[0]);
|
Long memberId = Long.parseLong(parts[0]);
|
||||||
Long folderId = Long.parseLong(parts[1]);
|
Long folderId = Long.parseLong(parts[1]);
|
||||||
// 核销
|
ZTicketFolder ticketFolderEntity = this.getBaseMapper().selectOne(new QueryWrapper<ZTicketFolder>().eq("member_id", memberId).eq("folder_id", folderId).eq("status",0));
|
||||||
ZTicketFolder ticketFolderEntity = this.getBaseMapper().selectOne(new QueryWrapper<ZTicketFolder>().eq("member_id", userId).eq("folder_id", folderId).eq("status",0));
|
if (ObjectUtil.isNull(ticketFolderEntity)) {
|
||||||
/*CUserInfo userInfo = UserContext.getUserInfo();
|
return R.fail("未找到有效票据,核销失败");
|
||||||
zTicketVerificationAuthService.getOne()
|
|
||||||
// 验证权限
|
|
||||||
if (ObjectUtil.isNull(SecurityUtils.getUser().getAllowWriteOff()) || SecurityUtils.getUser().getAllowWriteOff() != 1) {{
|
|
||||||
return R.failed("无核销权限,核销失败");
|
|
||||||
}}*/
|
|
||||||
|
|
||||||
|
|
||||||
/*if (ObjectUtil.isNull(ticketFolderEntity)) {
|
|
||||||
return R.failed("未找到有效票据,核销失败");
|
|
||||||
}
|
}
|
||||||
|
// 验证权限
|
||||||
|
CUserInfo userInfo = UserContext.getUserInfo();
|
||||||
|
ZTicketVerificationAuth auth = zTicketVerificationAuthService.getOne(new QueryWrapper<ZTicketVerificationAuth>().eq("member_id", userInfo.getUserId()).eq("show_id", ticketFolderEntity.getShowId()));
|
||||||
|
if (auth == null){
|
||||||
|
return R.fail("无核销权限,核销失败");
|
||||||
|
}
|
||||||
|
// 核销
|
||||||
ticketFolderEntity.setStatus(1);
|
ticketFolderEntity.setStatus(1);
|
||||||
boolean b = this.updateById(ticketFolderEntity);
|
boolean b = this.updateById(ticketFolderEntity);
|
||||||
// 核销记录
|
// 核销记录
|
||||||
VerificationRecordsEntity verificationRecords = new VerificationRecordsEntity();
|
ZTicketVerificationRecords verificationRecords = new ZTicketVerificationRecords();
|
||||||
BeanUtil.copyProperties(ticketFolderEntity, verificationRecords);
|
BeanUtil.copyProperties(ticketFolderEntity, verificationRecords);
|
||||||
verificationRecords.setWriteOffUserId(SecurityUtils.getUser().getId());
|
verificationRecords.setWriteOffUserId(userInfo.getUserId());
|
||||||
verificationRecordsService.save(verificationRecords);
|
zTicketVerificationRecordsService.save(verificationRecords);
|
||||||
return b ? R.ok("核销成功") : R.failed("核销失败");*/
|
return b ? R.success("核销成功") : R.fail("核销失败");
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,6 +102,14 @@ public class ZTicketUniqueCodeServiceImpl extends ServiceImpl<ZTicketUniqueCodeM
|
|||||||
if (!ResultCode.SUCCESS.getCode().equals(code)){
|
if (!ResultCode.SUCCESS.getCode().equals(code)){
|
||||||
return R.fail("未找到有效编码");
|
return R.fail("未找到有效编码");
|
||||||
}
|
}
|
||||||
|
// 同一身份证只允许绑定一张票
|
||||||
|
LambdaQueryWrapper<ZTicketUniqueCode> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ZTicketUniqueCode::getUniqudeCode, exchangeTicketDTO.getUniqueCode());
|
||||||
|
ZTicketUniqueCode zTicketUniqueCode = this.getOne(queryWrapper);
|
||||||
|
Integer count = zTicketUniqueCodeMapper.checkRepeatAudience(zTicketUniqueCode.getShowId(),exchangeTicketDTO.getIdNumber());
|
||||||
|
if (ObjectUtil.isNotNull(count) && count > 0){
|
||||||
|
return R.fail("同一身份证只能绑定一张门票");
|
||||||
|
}
|
||||||
if ("prod".equals(env)){
|
if ("prod".equals(env)){
|
||||||
// 检查实名信息
|
// 检查实名信息
|
||||||
RealNameVerifyDTO realNameVerifyDTO = new RealNameVerifyDTO();
|
RealNameVerifyDTO realNameVerifyDTO = new RealNameVerifyDTO();
|
||||||
@ -112,15 +120,7 @@ public class ZTicketUniqueCodeServiceImpl extends ServiceImpl<ZTicketUniqueCodeM
|
|||||||
return R.fail("实名认证失败,请检查身份信息");
|
return R.fail("实名认证失败,请检查身份信息");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 同一身份证只允许绑定一张票
|
|
||||||
Integer count = zTicketUniqueCodeMapper.checkRepeatAudience(exchangeTicketDTO);
|
|
||||||
if (ObjectUtil.isNotNull(count) && count > 0){
|
|
||||||
return R.fail("同一身份证只能绑定一张门票");
|
|
||||||
}
|
|
||||||
// 兑换门票
|
// 兑换门票
|
||||||
LambdaQueryWrapper<ZTicketUniqueCode> queryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
queryWrapper.eq(ZTicketUniqueCode::getUniqudeCode, exchangeTicketDTO.getUniqueCode());
|
|
||||||
ZTicketUniqueCode zTicketUniqueCode = this.getOne(queryWrapper);
|
|
||||||
zTicketUniqueCode.setStatus(1);
|
zTicketUniqueCode.setStatus(1);
|
||||||
this.update(zTicketUniqueCode);
|
this.update(zTicketUniqueCode);
|
||||||
// 插入票夹
|
// 插入票夹
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
SELECT count(tf.folder_id) FROM `z_ticket_folder` tf
|
SELECT count(tf.folder_id) FROM `z_ticket_folder` tf
|
||||||
INNER JOIN z_ticket_unique_code tuc
|
INNER JOIN z_ticket_unique_code tuc
|
||||||
ON tf.show_id = tuc.show_id
|
ON tf.show_id = tuc.show_id
|
||||||
WHERE tuc.uniqude_code = #{uniqueCode}
|
WHERE tuc.show_id = #{showId}
|
||||||
AND tf.id_number = #{idNumber}
|
AND tf.id_number = #{idNumber}
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user