2024-04 新增足球场馆邀请链接逻辑

This commit is contained in:
2024-04-26 15:13:58 +08:00
parent e7ec957b9e
commit 9f2c55eaf3
10 changed files with 645 additions and 99 deletions

View File

@@ -0,0 +1,25 @@
package com.sv.mapper;
import com.sv.entity.MemberTicketInvite;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface MemberTicketInviteMapper {
int deleteByPrimaryKey(Integer id);
int insert(MemberTicketInvite record);
int insertSelective(MemberTicketInvite record);
MemberTicketInvite selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(MemberTicketInvite record);
int updateByPrimaryKey(MemberTicketInvite record);
List<MemberTicketInvite> findByTicketId(Integer ticketId);
int findByTicketIdAndMember(@Param("ticketId") Integer ticketId,@Param("memberId") Integer memberId);
}

View File

@@ -0,0 +1,116 @@
package com.sv.service.api;
import com.enums.*;
import com.github.pagehelper.PageHelper;
import com.sv.dto.api.*;
import com.sv.dto.api.wechat.OrderPaySignResponse;
import com.sv.entity.*;
import com.sv.exception.api.ExceptionCodeTemplate;
import com.sv.mapper.MemberLessonTicketMapper;
import com.sv.mapper.MemberTicketInviteMapper;
import com.sv.mapper.VenueLessonMapper;
import com.sv.service.api.util.DateUtilCard;
import com.sv.service.common.RedisLock;
import com.sv.service.message.AsyncTaskUtil;
import com.sv.service.message.NotifyAdminMsgThread;
import com.ydd.framework.core.common.Pagination;
import com.ydd.framework.core.common.utils.ValidationUtils;
import com.ydd.framework.core.entity.enums.DeletedEnum;
import com.ydd.framework.core.entity.enums.StatusEnum;
import com.ydd.framework.core.exception.ServiceException;
import com.ydd.framework.core.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalUnit;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import static com.sv.entity.Constants.LESSON_TICKET_LOCK_KEY;
/**
* Service - 用户查询预订列表
*
* @author limqsh
* @since 2024-04-26
*/
@Service
@Transactional
public class MemberTicketEnterService extends BaseServiceImpl {
private final Logger logger = LoggerFactory.getLogger(MemberTicketEnterService.class);
@Resource
private MemberTicketInviteMapper memberTicketInviteMapper;
@Resource
private MemberLessonTicketMapper memberLessonTicketMapper;
@Resource
private VenueLessonMapper venueLessonMapper;
/**
* api 足球预约详情
*/
public MemberTicketEnterDTO memberTicketEnterDetail(Integer memberId, Integer ticketId) {
MemberTicketEnterDTO res = new MemberTicketEnterDTO();
res.setOpenFlag(true);
res.setErrCode("0");
MemberLessonTicket memberLessonTicket = memberLessonTicketMapper.findById(ticketId);
if (memberLessonTicket == null) {
res.setErrCode("2");
res.setMsg("未找到对应的预订信息");
}
// 判断场馆是否已经超时
VenueLesson venueLesson = venueLessonMapper.findById(memberLessonTicket.getLessonId());
LocalTime endTime = venueLesson.getEndTime();
LocalTime startTime = venueLesson.getStartTime();
if (endTime.isAfter(LocalTime.now().plus(15, ChronoUnit.MINUTES)) && startTime.isBefore(LocalTime.now())){
// 十五分钟之内都可以开门
res.setOpenFlag(true);
}
// 1 先判断是否已经报名,如果没有报名就默认报名
int count = memberTicketInviteMapper.findByTicketIdAndMember(ticketId, memberId);
if (count <= 0) {
// 没有报名现在报名
orderMyself(memberId,memberLessonTicket);
}
// 查询报名人员列表
BeanUtils.copyProperties(memberLessonTicket,res);
List<MemberTicketInvite> inviteList = memberTicketInviteMapper.findByTicketId(ticketId);
List<MemberTicketInviteDTO> memberTicketInviteList = new ArrayList<>();
for (MemberTicketInvite ticketInvite : inviteList) {
MemberTicketInviteDTO memberTicketInviteDTO = new MemberTicketInviteDTO();
memberTicketInviteDTO.setMine(false);
if (memberId == ticketInvite.getMemberId()){
memberTicketInviteDTO.setMine(true);
}
BeanUtils.copyProperties(ticketInvite,memberTicketInviteDTO);
memberTicketInviteList.add(memberTicketInviteDTO);
}
res.setMemberTicketInviteList(memberTicketInviteList);
return res;
}
private void orderMyself(Integer memberId, MemberLessonTicket memberLessonTicket){
MemberTicketInvite memberTicketInvite = new MemberTicketInvite();
memberTicketInvite.setMemberId(memberId);
memberTicketInvite.setDeleted(0);
memberTicketInvite.setPlatformId(memberLessonTicket.getPlatformId());
memberTicketInvite.setOwnerId(memberLessonTicket.getId());
memberTicketInvite.setStatus(2);
memberTicketInviteMapper.insert(memberTicketInvite);
}
}

View File

@@ -0,0 +1,173 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sv.mapper.MemberTicketInviteMapper" >
<resultMap id="BaseResultMap" type="com.sv.entity.MemberTicketInvite" >
<constructor >
<idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="owner_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="member_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="status" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="platform_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="created_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="modified_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="created_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
<arg column="modified_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
<arg column="deleted" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="mobile" jdbcType="String" javaType="java.lang.String" />
</constructor>
</resultMap>
<sql id="Base_Column_List" >
id, owner_id, member_id, status, platform_id, created_id, modified_id, created_time,
modified_time, deleted
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from sv_member_lesson_ticket_invite
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from sv_member_lesson_ticket_invite
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sv.entity.MemberTicketInvite" >
insert into sv_member_lesson_ticket_invite (id, owner_id, member_id,
status, platform_id, created_id,
modified_id, created_time, modified_time,
deleted)
values (#{id,jdbcType=INTEGER}, #{ownerId,jdbcType=INTEGER}, #{memberId,jdbcType=INTEGER},
#{status,jdbcType=INTEGER}, #{platformId,jdbcType=INTEGER}, #{createdId,jdbcType=INTEGER},
#{modifiedId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP}, #{modifiedTime,jdbcType=TIMESTAMP},
#{deleted,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" parameterType="com.sv.entity.MemberTicketInvite" >
insert into sv_member_lesson_ticket_invite
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="ownerId != null" >
owner_id,
</if>
<if test="memberId != null" >
member_id,
</if>
<if test="status != null" >
status,
</if>
<if test="platformId != null" >
platform_id,
</if>
<if test="createdId != null" >
created_id,
</if>
<if test="modifiedId != null" >
modified_id,
</if>
<if test="createdTime != null" >
created_time,
</if>
<if test="modifiedTime != null" >
modified_time,
</if>
<if test="deleted != null" >
deleted,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="ownerId != null" >
#{ownerId,jdbcType=INTEGER},
</if>
<if test="memberId != null" >
#{memberId,jdbcType=INTEGER},
</if>
<if test="status != null" >
#{status,jdbcType=INTEGER},
</if>
<if test="platformId != null" >
#{platformId,jdbcType=INTEGER},
</if>
<if test="createdId != null" >
#{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null" >
#{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null" >
#{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null" >
#{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="deleted != null" >
#{deleted,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sv.entity.MemberTicketInvite" >
update sv_member_lesson_ticket_invite
<set >
<if test="ownerId != null" >
owner_id = #{ownerId,jdbcType=INTEGER},
</if>
<if test="memberId != null" >
member_id = #{memberId,jdbcType=INTEGER},
</if>
<if test="status != null" >
status = #{status,jdbcType=INTEGER},
</if>
<if test="platformId != null" >
platform_id = #{platformId,jdbcType=INTEGER},
</if>
<if test="createdId != null" >
created_id = #{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null" >
modified_id = #{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null" >
created_time = #{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null" >
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="deleted != null" >
deleted = #{deleted,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sv.entity.MemberTicketInvite" >
update sv_member_lesson_ticket_invite
set owner_id = #{ownerId,jdbcType=INTEGER},
member_id = #{memberId,jdbcType=INTEGER},
status = #{status,jdbcType=INTEGER},
platform_id = #{platformId,jdbcType=INTEGER},
created_id = #{createdId,jdbcType=INTEGER},
modified_id = #{modifiedId,jdbcType=INTEGER},
created_time = #{createdTime,jdbcType=TIMESTAMP},
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
deleted = #{deleted,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="findByTicketId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
a.id, a.owner_id, a.member_id, a.status, a.platform_id, a.created_id, a.modified_id, a.created_time,
a.modified_time, a.deleted,b.mobile
from sv_member_lesson_ticket_invite a,sv_member b
where a.member_id = b.id
owner_id = #{ticketId,jdbcType=INTEGER}
</select>
<select id="findByTicketIdAndMember" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select count(1)
from sv_member_lesson_ticket_invite
where member_id = #{memberId,jdbcType=INTEGER}
owner_id = #{ticketId,jdbcType=INTEGER}
</select>
</mapper>

View File

@@ -90,7 +90,7 @@
domainObjectName 给表对应的 model 起名字
注意:大小写敏感问题。
-->
<table tableName="sv_member_enter_status" domainObjectName="MemberEnterStatus"
<table tableName="sv_member_lesson_ticket_invite" domainObjectName="MemberTicketInvite"
enableInsert="true"
enableDeleteByPrimaryKey="true"
enableSelectByPrimaryKey="true"