2024-04 新增足球场馆邀请链接逻辑
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user