From 9f2c55eaf3b87b53d7140476ae839eb4d8f6803d Mon Sep 17 00:00:00 2001 From: limqsh <540344226@qq.com> Date: Fri, 26 Apr 2024 15:13:58 +0800 Subject: [PATCH] =?UTF-8?q?2024-04=20=E6=96=B0=E5=A2=9E=E8=B6=B3=E7=90=83?= =?UTF-8?q?=E5=9C=BA=E9=A6=86=E9=82=80=E8=AF=B7=E9=93=BE=E6=8E=A5=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + .../MemberLessonTicketController.java | 11 ++ .../com/sv/dto/api/MemberTicketEnterDTO.java | 72 +++++++ .../com/sv/dto/api/MemberTicketInviteDTO.java | 16 ++ .../com/sv/entity/MemberLessonTicket.java | 185 ++++++++---------- .../com/sv/entity/MemberTicketInvite.java | 138 +++++++++++++ .../sv/mapper/MemberTicketInviteMapper.java | 25 +++ .../service/api/MemberTicketEnterService.java | 116 +++++++++++ .../mapper/sv/MemberTicketInviteMapper.xml | 173 ++++++++++++++++ .../main/resources/tools/generatorConfig.xml | 2 +- 10 files changed, 645 insertions(+), 99 deletions(-) create mode 100644 entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java create mode 100644 entity/src/main/java/com/sv/dto/api/MemberTicketInviteDTO.java create mode 100644 entity/src/main/java/com/sv/entity/MemberTicketInvite.java create mode 100644 service/src/main/java/com/sv/mapper/MemberTicketInviteMapper.java create mode 100644 service/src/main/java/com/sv/service/api/MemberTicketEnterService.java create mode 100644 service/src/main/resources/mybatis/mapper/sv/MemberTicketInviteMapper.xml diff --git a/.gitignore b/.gitignore index 9ca7801..96da241 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,9 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +.idea + +*/target + +*.iml diff --git a/api/src/main/java/com/sv/api/controller/MemberLessonTicketController.java b/api/src/main/java/com/sv/api/controller/MemberLessonTicketController.java index ea2822c..38efdd7 100644 --- a/api/src/main/java/com/sv/api/controller/MemberLessonTicketController.java +++ b/api/src/main/java/com/sv/api/controller/MemberLessonTicketController.java @@ -4,6 +4,7 @@ import com.sv.api.context.PlatformContext; import com.sv.dto.api.LessonTicketOrderDTO; import com.sv.entity.MemberLessonTicket; import com.sv.service.api.MemberLessonTicketService; +import com.sv.service.api.MemberTicketEnterService; import com.ydd.framework.core.annotation.AccessToken; import com.ydd.framework.core.common.Pagination; import com.ydd.framework.core.common.dto.ResponseDTO; @@ -29,6 +30,8 @@ public class MemberLessonTicketController extends BaseApiController { @Resource private MemberLessonTicketService memberLessonTicketService; + @Resource + private MemberTicketEnterService memberTicketEnterService; /** * 分页查询用户预约的场馆课程票号 @@ -112,6 +115,14 @@ public class MemberLessonTicketController extends BaseApiController { return ResponseDTO.ok().addAttribute("memberLessonTicket",memberLessonTicketService.memberLessonTicketDetail(getMemberIdByAccessToken(),orderSn)); } + /** + * 订单详情开门链接 + */ + @RequestMapping(value = "/member/lesson/tickets/invite", method = RequestMethod.POST) + public ResponseDTO memberTicketInvite(@RequestParam("ticketId") Integer ticketId){ + return ResponseDTO.ok().addAttribute("memberLessonTicket",memberTicketEnterService.memberTicketEnterDetail(getMemberIdByAccessToken(),ticketId)); + } + /** * 取消预约课程 * 只能取消距离上课时间48小时以外的 diff --git a/entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java b/entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java new file mode 100644 index 0000000..fbedd66 --- /dev/null +++ b/entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java @@ -0,0 +1,72 @@ +package com.sv.dto.api; + +import com.sv.entity.MemberLessonTicket; + +import java.util.List; + +public class MemberTicketEnterDTO extends MemberLessonTicket { + private String venueName; + private String lessonName; + private String mobile; + private String errCode; + private String msg; + private boolean openFlag = false; + + private List memberTicketInviteList; + + public String getVenueName() { + return venueName; + } + + public void setVenueName(String venueName) { + this.venueName = venueName; + } + + public String getLessonName() { + return lessonName; + } + + public void setLessonName(String lessonName) { + this.lessonName = lessonName; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public List getMemberTicketInviteList() { + return memberTicketInviteList; + } + + public void setMemberTicketInviteList(List memberTicketInviteList) { + this.memberTicketInviteList = memberTicketInviteList; + } + + public String getErrCode() { + return errCode; + } + + public void setErrCode(String errCode) { + this.errCode = errCode; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public boolean isOpenFlag() { + return openFlag; + } + + public void setOpenFlag(boolean openFlag) { + this.openFlag = openFlag; + } +} diff --git a/entity/src/main/java/com/sv/dto/api/MemberTicketInviteDTO.java b/entity/src/main/java/com/sv/dto/api/MemberTicketInviteDTO.java new file mode 100644 index 0000000..d89650c --- /dev/null +++ b/entity/src/main/java/com/sv/dto/api/MemberTicketInviteDTO.java @@ -0,0 +1,16 @@ +package com.sv.dto.api; + +import com.sv.entity.MemberTicketInvite; + +public class MemberTicketInviteDTO extends MemberTicketInvite { + + private boolean isMine = false; + + public boolean isMine() { + return isMine; + } + + public void setMine(boolean mine) { + isMine = mine; + } +} \ No newline at end of file diff --git a/entity/src/main/java/com/sv/entity/MemberLessonTicket.java b/entity/src/main/java/com/sv/entity/MemberLessonTicket.java index b64cb9e..201afaf 100644 --- a/entity/src/main/java/com/sv/entity/MemberLessonTicket.java +++ b/entity/src/main/java/com/sv/entity/MemberLessonTicket.java @@ -18,28 +18,10 @@ public class MemberLessonTicket implements Serializable { private Integer id; private String counts; - - public String getCounts() { - return counts; - } - - public void setCounts(String counts) { - this.counts = counts; - } - /** *手机号码 */ private String mobile; - - public String getMobile() { - return mobile; - } - - public void setMobile(String mobile) { - this.mobile = mobile; - } - /** * 场馆类型 */ @@ -54,116 +36,36 @@ public class MemberLessonTicket implements Serializable { * 支付时间 */ private Date payTime; - - public Date getPayTime() { - return payTime; - } - - public void setPayTime(Date payTime) { - this.payTime = payTime; - } - /** * 上级订单号 */ private Integer parentOrderId; - - public Integer getParentOrderId() { - return parentOrderId; - } - - public void setParentOrderId(Integer parentOrderId) { - this.parentOrderId = parentOrderId; - } - /** * 外部订单号 */ private String tradeSn; - - public String getTradeSn() { - return tradeSn; - } - - public void setTradeSn(String tradeSn) { - this.tradeSn = tradeSn; - } - /** * 会员卡类型 */ private String cardType; - public String getCardType() { - return cardType; - } - - public void setCardType(String cardType) { - this.cardType = cardType; - } - private String prices; - - public String getPrices() { - return prices; - } - - public void setPrices(String prices) { - this.prices = prices; - } - /** * 课程价格 */ private String price; - - public String getPrice() { - return price; - } - - public void setPrice(String price) { - this.price = price; - } - /** * 用户名称 */ private String nickname; - - public String getNickname() { - return nickname; - } - - public void setNickname(String nickname) { - this.nickname = nickname; - } - /** * 课程名称 */ private String lessonname; - - public String getLessonname() { - return lessonname; - } - - public void setLessonname(String lessonname) { - this.lessonname = lessonname; - } - /** * 场馆名称 */ private String name; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - /** * 课程票号ID */ @@ -590,4 +492,91 @@ public class MemberLessonTicket implements Serializable { return deleted; } + public String getCounts() { + return counts; + } + + public void setCounts(String counts) { + this.counts = counts; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public Date getPayTime() { + return payTime; + } + + public void setPayTime(Date payTime) { + this.payTime = payTime; + } + + public Integer getParentOrderId() { + return parentOrderId; + } + + public void setParentOrderId(Integer parentOrderId) { + this.parentOrderId = parentOrderId; + } + + public String getTradeSn() { + return tradeSn; + } + + public void setTradeSn(String tradeSn) { + this.tradeSn = tradeSn; + } + + public String getCardType() { + return cardType; + } + + public void setCardType(String cardType) { + this.cardType = cardType; + } + + public String getPrices() { + return prices; + } + + public void setPrices(String prices) { + this.prices = prices; + } + + public String getPrice() { + return price; + } + + public void setPrice(String price) { + this.price = price; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getLessonname() { + return lessonname; + } + + public void setLessonname(String lessonname) { + this.lessonname = lessonname; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } \ No newline at end of file diff --git a/entity/src/main/java/com/sv/entity/MemberTicketInvite.java b/entity/src/main/java/com/sv/entity/MemberTicketInvite.java new file mode 100644 index 0000000..035cebf --- /dev/null +++ b/entity/src/main/java/com/sv/entity/MemberTicketInvite.java @@ -0,0 +1,138 @@ +package com.sv.entity; + +import java.util.Date; + +public class MemberTicketInvite { + private Integer id; + + private Integer ownerId; + + private Integer memberId; + + /** + * 暂时未启用 默认为2 + * 报名成功 1 + * 被选中 2 + */ + private Integer status; + + private Integer platformId; + + private Integer createdId; + + private Integer modifiedId; + + private Date createdTime; + + private Date modifiedTime; + + private Integer deleted; + + private String mobile; + + public MemberTicketInvite(Integer id, Integer ownerId, Integer memberId, Integer status, Integer platformId, Integer createdId, Integer modifiedId, Date createdTime, Date modifiedTime, Integer deleted, String mobile) { + this.id = id; + this.ownerId = ownerId; + this.memberId = memberId; + this.status = status; + this.platformId = platformId; + this.createdId = createdId; + this.modifiedId = modifiedId; + this.createdTime = createdTime; + this.modifiedTime = modifiedTime; + this.deleted = deleted; + this.mobile = mobile; + } + + public MemberTicketInvite() { + super(); + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getOwnerId() { + return ownerId; + } + + public void setOwnerId(Integer ownerId) { + this.ownerId = ownerId; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getPlatformId() { + return platformId; + } + + public void setPlatformId(Integer platformId) { + this.platformId = platformId; + } + + public Integer getCreatedId() { + return createdId; + } + + public void setCreatedId(Integer createdId) { + this.createdId = createdId; + } + + public Integer getModifiedId() { + return modifiedId; + } + + public void setModifiedId(Integer modifiedId) { + this.modifiedId = modifiedId; + } + + public Date getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + public Date getModifiedTime() { + return modifiedTime; + } + + public void setModifiedTime(Date modifiedTime) { + this.modifiedTime = modifiedTime; + } + + public Integer getDeleted() { + return deleted; + } + + public void setDeleted(Integer deleted) { + this.deleted = deleted; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } +} \ No newline at end of file diff --git a/service/src/main/java/com/sv/mapper/MemberTicketInviteMapper.java b/service/src/main/java/com/sv/mapper/MemberTicketInviteMapper.java new file mode 100644 index 0000000..c6bb2ac --- /dev/null +++ b/service/src/main/java/com/sv/mapper/MemberTicketInviteMapper.java @@ -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 findByTicketId(Integer ticketId); + + int findByTicketIdAndMember(@Param("ticketId") Integer ticketId,@Param("memberId") Integer memberId); + +} \ No newline at end of file diff --git a/service/src/main/java/com/sv/service/api/MemberTicketEnterService.java b/service/src/main/java/com/sv/service/api/MemberTicketEnterService.java new file mode 100644 index 0000000..4c1828f --- /dev/null +++ b/service/src/main/java/com/sv/service/api/MemberTicketEnterService.java @@ -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 inviteList = memberTicketInviteMapper.findByTicketId(ticketId); + List 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); + } + +} + diff --git a/service/src/main/resources/mybatis/mapper/sv/MemberTicketInviteMapper.xml b/service/src/main/resources/mybatis/mapper/sv/MemberTicketInviteMapper.xml new file mode 100644 index 0000000..9c60be1 --- /dev/null +++ b/service/src/main/resources/mybatis/mapper/sv/MemberTicketInviteMapper.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + id, owner_id, member_id, status, platform_id, created_id, modified_id, created_time, + modified_time, deleted + + + + delete from sv_member_lesson_ticket_invite + where id = #{id,jdbcType=INTEGER} + + + 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 into sv_member_lesson_ticket_invite + + + id, + + + owner_id, + + + member_id, + + + status, + + + platform_id, + + + created_id, + + + modified_id, + + + created_time, + + + modified_time, + + + deleted, + + + + + #{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}, + + + + + update sv_member_lesson_ticket_invite + + + 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 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} + + + + + + + \ No newline at end of file diff --git a/service/src/main/resources/tools/generatorConfig.xml b/service/src/main/resources/tools/generatorConfig.xml index b2b5111..6287253 100644 --- a/service/src/main/resources/tools/generatorConfig.xml +++ b/service/src/main/resources/tools/generatorConfig.xml @@ -90,7 +90,7 @@ domainObjectName 给表对应的 model 起名字 注意:大小写敏感问题。 --> -