From 5ecd8721c48fcfbbcb061fcedd860e28760e4a63 Mon Sep 17 00:00:00 2001 From: limqhz <540344226@qq.com> Date: Sun, 7 Jan 2024 19:54:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E6=96=B0=E9=80=BB=E8=BE=91=20?= =?UTF-8?q?=EF=BC=88=E8=B6=85=E8=BF=871=E5=B0=8F=E6=97=B6=E5=8D=8A?= =?UTF-8?q?=E5=B0=8F=E6=97=B6=E6=94=B6=E5=8D=8A=E5=B0=8F=E6=97=B6=E9=92=B1?= =?UTF-8?q?=E3=80=81=E5=A4=9A=E4=BD=99=E7=9A=84=E6=94=B6=E4=B8=80=E5=B0=8F?= =?UTF-8?q?=E6=97=B6=E9=92=B1=EF=BC=8C=E6=B2=A1=E6=9C=89=E5=AE=BD=E9=99=90?= =?UTF-8?q?=E6=9C=9F=EF=BC=89=20=E5=A2=9E=E5=8A=A0=E7=AF=AE=E7=90=83?= =?UTF-8?q?=E5=85=A5=E5=9C=BA=E8=A7=86=E5=9B=BE=EF=BC=8C=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AE=B0=E5=BD=95=E4=BF=A1=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sv/api/controller/VenueController.java | 16 + .../impl/ServerMessageHandlerAdapter.java | 24 +- .../java/com/enums/EnterOrderStatusEnum.java | 43 ++ .../com/sv/dto/api/MemberEnterOrderDTO.java | 526 ++++++++++++++++++ .../java/com/sv/entity/BarcodeOrderTime.java | 46 +- .../ydd/oms/task/BarcodeTimeOrderTask.java | 7 +- .../com/sv/mapper/BarcodeOrderTimeMapper.java | 4 + .../java/com/sv/service/api/OrderService.java | 4 +- .../com/sv/service/api/VenueEnterService.java | 72 ++- .../mapper/sv/BarcodeOrderTimeMapper.xml | 95 +++- 10 files changed, 802 insertions(+), 35 deletions(-) create mode 100644 entity/src/main/java/com/enums/EnterOrderStatusEnum.java create mode 100644 entity/src/main/java/com/sv/dto/api/MemberEnterOrderDTO.java diff --git a/api/src/main/java/com/sv/api/controller/VenueController.java b/api/src/main/java/com/sv/api/controller/VenueController.java index ecf3e4c..e676264 100644 --- a/api/src/main/java/com/sv/api/controller/VenueController.java +++ b/api/src/main/java/com/sv/api/controller/VenueController.java @@ -224,4 +224,20 @@ public class VenueController extends BaseApiController { addAttribute("pay",orderService.createEnterVenueOrder(venueId, memberId, enterFlag, PayTypeEnum.WEI_XIN, new BigDecimal(payMoney))); } + /** + * 篮球入场 + */ + @RequestMapping(value = "/member/order/enter/list", method = RequestMethod.POST) + public ResponseDTO memberOrderEnterList(Pagination pagination){ + return ResponseDTO.ok().setPagination(venueEnterService.memberOrderEnterList(getMemberIdByAccessToken(),pagination)); + } + + /** + * 篮球入场详情页 + */ + @RequestMapping(value = "/member/order/enter/detail", method = RequestMethod.POST) + public ResponseDTO memberOrderEnterDetail(@RequestParam("enterId") Integer enterId){ + return ResponseDTO.ok().addAttribute("memberEnterDetail",venueEnterService.memberOrderEnterDetail(getMemberIdByAccessToken(),enterId)); + } + } diff --git a/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java b/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java index 7d89402..054e922 100644 --- a/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java +++ b/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java @@ -135,22 +135,22 @@ public class ServerMessageHandlerAdapter implements MessageService { Channel channel = getCurrentChannel(doorSn,venueBarCode.getVenueId()); Member member = memberService.findByMember(venueBarCode.getMemberId()); if (member != null) { + BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrder(member.getId(), venueBarCode.getVenueId()); + lastOrder.setLastOut(new Date()); + // 不需要补交钱且需要退钱 + if (lastOrder.getPayMoney() > 0) { + lastOrder.setPaying(1); + lastOrder.setModifiedTime(new Date()); + } + barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder); MemberEnterVenueLog memberEnterVenueLog = new MemberEnterVenueLog(); - memberEnterVenueLog.setOrderSn(barcode); + memberEnterVenueLog.setOrderSn(lastOrder.getId() + ""); memberEnterVenueLog.setType(EnterEnum.OUT.getValue()); memberEnterVenueLog.setPayType(EnterVenuePayTypeEnum.WEI_XIN.getValue()); memberEnterVenueLog.setMemberId(member.getId()); memberEnterVenueLog.setPlatformId(member.getPlatformId() == null ? 1 : member.getPlatformId()); memberEnterVenueLog.setVenueId(venueBarCode.getVenueId()); memberEnterVenueLogService.save(memberEnterVenueLog); - - BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrder(member.getId(), venueBarCode.getVenueId()); - // 不需要补交钱且需要退钱 - if (lastOrder.getPayMoney() > 0) { - lastOrder.setPaying(1); - lastOrder.setModifiedTime(new Date()); - barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder); - } doorLockUtil.lockDoor(doorSn); logger.info("用户" + member.getId() + "&" + member.getNickname() + "出场"); writeOffCode(barcode); @@ -180,8 +180,12 @@ public class ServerMessageHandlerAdapter implements MessageService { Channel channel = getCurrentChannel(doorSn, venueBarCode.getVenueId()); Member member = memberService.findByMember(venueBarCode.getMemberId()); if (member != null) { + BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrder(member.getId(), venueBarCode.getVenueId()); + lastOrder.setLastEnter(new Date()); + lastOrder.setModifiedTime(new Date()); + barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder); MemberEnterVenueLog memberEnterVenueLog = new MemberEnterVenueLog(); - memberEnterVenueLog.setOrderSn(barcode); + memberEnterVenueLog.setOrderSn(lastOrder.getId() + ""); memberEnterVenueLog.setType(EnterEnum.ENTER.getValue()); memberEnterVenueLog.setMemberId(member.getId()); memberEnterVenueLog.setPlatformId(member.getPlatformId() == null ? 1 : member.getPlatformId()); diff --git a/entity/src/main/java/com/enums/EnterOrderStatusEnum.java b/entity/src/main/java/com/enums/EnterOrderStatusEnum.java new file mode 100644 index 0000000..3fdd19e --- /dev/null +++ b/entity/src/main/java/com/enums/EnterOrderStatusEnum.java @@ -0,0 +1,43 @@ +package com.enums; + +/** + * Enum - 入场标志 + * + */ +public enum EnterOrderStatusEnum { + USING(0, "使用中"), + PAYING(1, "待结算"), + OVER(2, "已结算"); + public Integer value; + public String name; + + EnterOrderStatusEnum(Integer value, String name) { + this.value = value; + this.name = name; + } + + public Integer getValue() { + return value; + } + + public void setValue(Integer value) { + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public static EnterOrderStatusEnum getByValue(Integer value) { + for (EnterOrderStatusEnum type : EnterOrderStatusEnum.values()) { + if (type.value.equals(value)) { + return type; + } + } + return null; + } +} diff --git a/entity/src/main/java/com/sv/dto/api/MemberEnterOrderDTO.java b/entity/src/main/java/com/sv/dto/api/MemberEnterOrderDTO.java new file mode 100644 index 0000000..ff36930 --- /dev/null +++ b/entity/src/main/java/com/sv/dto/api/MemberEnterOrderDTO.java @@ -0,0 +1,526 @@ +package com.sv.dto.api; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * DTO - 用户预约的场馆课程票号 + * + * @author lihong + * @since 2018-08-06 + */ +public class MemberEnterOrderDTO implements Serializable { + + + /** + * + */ + private Integer id; + + /** + * 场馆类型 + */ + private Integer veneuType; + + /** + * 场馆ID + */ + private Integer venueId; + + /** + * 课程ID + */ + private Integer lessonId; + + /** + * 用户ID + */ + private Integer memberId; + + /** + * 预约课程支付订单号 + */ + private String orderSn; + + /** + * 入场支付方式 + */ + private Integer payType; + + /** + * 用户会员卡ID + */ + private Integer memberCardId; + + /** + * 支付状态 + */ + private Integer paying; + + /** + * 使用状态 + */ + private Integer status; + + /** + * 品台来源ID + */ + private Integer platformId; + + /** + * 创建者编号 + */ + private Integer createdId; + + /** + * 创建者编号 + */ + private Integer modifiedId; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新时间 + */ + private Date modifiedTime; + + /** + * 删除标识位 + * + * @see com.ydd.framework.core.entity.enums.DeletedEnum + */ + private Integer deleted; + + /** + * 课程名 + */ + private String lessonName; + + /** + * 课程开始日期 + */ +// @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8") + private Date lastEnter; + + /** + * 课程开始时间 + */ +// @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) +// @JsonSerialize(using= LocalTimeSerializer.class) + private Date startTime; + + /** + * 课程结束时间 12 + */ +// @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) +// @JsonSerialize(using= LocalTimeSerializer.class) + private Date endTime; + + /** + * 课程价格 + */ + private BigDecimal price; + + /** + * 课程图片 + */ + private String lessonImage; + + /** + * 运动时长 + */ + private Integer lessonCount; + + /** + * 场馆地址 + */ + private String address; + + /** + * 场馆经度 + */ + private String longitude; + + /** + * 纬度 + */ + private String latitude; + + /** + * 设置 + * + * @param id + */ + public void setId(Integer id){ + this.id = id; + } + + /** + * 获取 + * + * @return + */ + public Integer getId(){ + return id; + } + + + /** + * 设置场馆类型 + * + * @param veneuType 场馆类型 + */ + public void setVeneuType(Integer veneuType){ + this.veneuType = veneuType; + } + + /** + * 获取场馆类型 + * + * @return 场馆类型 + */ + public Integer getVeneuType(){ + return veneuType; + } + + + /** + * 设置场馆ID + * + * @param venueId 场馆ID + */ + public void setVenueId(Integer venueId){ + this.venueId = venueId; + } + + /** + * 获取场馆ID + * + * @return 场馆ID + */ + public Integer getVenueId(){ + return venueId; + } + + /** + * 设置课程ID + * + * @param lessonId 课程ID + */ + public void setLessonId(Integer lessonId){ + this.lessonId = lessonId; + } + + /** + * 获取课程ID + * + * @return 课程ID + */ + public Integer getLessonId(){ + return lessonId; + } + + + /** + * 设置用户ID + * + * @param memberId 用户ID + */ + public void setMemberId(Integer memberId){ + this.memberId = memberId; + } + + /** + * 获取用户ID + * + * @return 用户ID + */ + public Integer getMemberId(){ + return memberId; + } + + + /** + * 设置预约课程支付订单号 + * + * @param orderSn 预约课程支付订单号 + */ + public void setOrderSn(String orderSn){ + this.orderSn = orderSn; + } + + /** + * 获取预约课程支付订单号 + * + * @return 预约课程支付订单号 + */ + public String getOrderSn(){ + return orderSn; + } + + + /** + * 设置入场支付方式 + * + * @param payType 入场支付方式 + */ + public void setPayType(Integer payType){ + this.payType = payType; + } + + /** + * 获取入场支付方式 + * + * @return 入场支付方式 + */ + public Integer getPayType(){ + return payType; + } + + + /** + * 设置用户会员卡ID + * + * @param memberCardId 用户会员卡ID + */ + public void setMemberCardId(Integer memberCardId){ + this.memberCardId = memberCardId; + } + + /** + * 获取用户会员卡ID + * + * @return 用户会员卡ID + */ + public Integer getMemberCardId(){ + return memberCardId; + } + + public Integer getPaying() { + return paying; + } + + public void setPaying(Integer paying) { + this.paying = paying; + } + + /** + * 设置使用状态 + * + * @see com.ydd.framework.core.entity.enums.StatusEnum + * @param status 使用状态 + */ + public void setStatus(Integer status){ + this.status = status; + } + + /** + * 获取使用状态 + * + * @see com.ydd.framework.core.entity.enums.StatusEnum + * @return 使用状态 + */ + public Integer getStatus(){ + return status; + } + + + /** + * 设置品台来源ID + * + * @param platformId 品台来源ID + */ + public void setPlatformId(Integer platformId){ + this.platformId = platformId; + } + + /** + * 获取品台来源ID + * + * @return 品台来源ID + */ + public Integer getPlatformId(){ + return platformId; + } + + + /** + * 设置创建者编号 + * + * @param createdId 创建者编号 + */ + public void setCreatedId(Integer createdId){ + this.createdId = createdId; + } + + /** + * 获取创建者编号 + * + * @return 创建者编号 + */ + public Integer getCreatedId(){ + return createdId; + } + + + /** + * 设置创建者编号 + * + * @param modifiedId 创建者编号 + */ + public void setModifiedId(Integer modifiedId){ + this.modifiedId = modifiedId; + } + + /** + * 获取创建者编号 + * + * @return 创建者编号 + */ + public Integer getModifiedId(){ + return modifiedId; + } + + + /** + * 设置创建时间 + * + * @param createdTime 创建时间 + */ + public void setCreatedTime(Date createdTime){ + this.createdTime = createdTime; + } + + /** + * 获取创建时间 + * + * @return 创建时间 + */ + public Date getCreatedTime(){ + return createdTime; + } + + + /** + * 设置更新时间 + * + * @param modifiedTime 更新时间 + */ + public void setModifiedTime(Date modifiedTime){ + this.modifiedTime = modifiedTime; + } + + /** + * 获取更新时间 + * + * @return 更新时间 + */ + public Date getModifiedTime(){ + return modifiedTime; + } + + + /** + * 设置删除标识位 + * + * @see com.ydd.framework.core.entity.enums.DeletedEnum + * @param deleted 删除标识位 + */ + public void setDeleted(Integer deleted){ + this.deleted = deleted; + } + + /** + * 获取删除标识位 + * + * @see com.ydd.framework.core.entity.enums.DeletedEnum + * @return 删除标识位 + */ + public Integer getDeleted(){ + return deleted; + } + + public String getLessonName() { + return lessonName; + } + + public void setLessonName(String lessonName) { + this.lessonName = lessonName; + } + + public Date getLastEnter() { + return lastEnter; + } + + public void setLastEnter(Date lastEnter) { + this.lastEnter = lastEnter; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public String getLessonImage() { + return lessonImage; + } + + public void setLessonImage(String lessonImage) { + this.lessonImage = lessonImage; + } + + public Integer getLessonCount() { + return lessonCount; + } + + public void setLessonCount(Integer lessonCount) { + this.lessonCount = lessonCount; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } +} diff --git a/entity/src/main/java/com/sv/entity/BarcodeOrderTime.java b/entity/src/main/java/com/sv/entity/BarcodeOrderTime.java index 23b233b..4d7d4dd 100644 --- a/entity/src/main/java/com/sv/entity/BarcodeOrderTime.java +++ b/entity/src/main/java/com/sv/entity/BarcodeOrderTime.java @@ -17,22 +17,35 @@ public class BarcodeOrderTime { private Date orderEnd; + /** + * 记录最后一次进门时间 + */ + private Date lastEnter; + /** + * 记录最后一次出门时间 + */ + private Date lastOut; + private Integer status; /** * 入场 paying = 0 不需要退款 - * 出场未结算 paying = 1 需要退款 + * 出场未结算 paying = 1 需要退款 1 也可能待结算 就是出场需要补费用,区别在于 payMoney = -1 */ private Integer paying; /** - * 0- 按次 - * 1- 按时 + * 退款金额 -1 代表出场还需要交钱 */ private Integer payMoney; private String orderSn; - public BarcodeOrderTime(Integer id, Integer memberId, Integer venueId, Date createdTime, Date modifiedTime, Date orderStart, Date orderEnd, Integer status ,Integer paying, Integer payMoney, String orderSn) { + /** + * 追加付款订单号 + */ + private String orderAddSn; + + public BarcodeOrderTime(Integer id, Integer memberId, Integer venueId, Date createdTime, Date modifiedTime, Date orderStart, Date orderEnd, Integer status ,Integer paying, Integer payMoney, String orderSn, String orderAddSn) { this.id = id; this.memberId = memberId; this.venueId = venueId; @@ -44,6 +57,7 @@ public class BarcodeOrderTime { this.paying = paying; this.payMoney = payMoney; this.orderSn = orderSn; + this.orderAddSn = orderAddSn; } public BarcodeOrderTime() { @@ -137,4 +151,28 @@ public class BarcodeOrderTime { public void setOrderSn(String orderSn) { this.orderSn = orderSn; } + + public String getOrderAddSn() { + return orderAddSn; + } + + public void setOrderAddSn(String orderAddSn) { + this.orderAddSn = orderAddSn; + } + + public Date getLastEnter() { + return lastEnter; + } + + public void setLastEnter(Date lastEnter) { + this.lastEnter = lastEnter; + } + + public Date getLastOut() { + return lastOut; + } + + public void setLastOut(Date lastOut) { + this.lastOut = lastOut; + } } diff --git a/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java b/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java index 900ef88..4719ff2 100644 --- a/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java +++ b/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java @@ -1,25 +1,20 @@ package com.ydd.oms.task; import com.enums.BarCodeStatusEnum; -import com.enums.StayEnum; import com.sv.entity.BarcodeOrderTime; -import com.sv.entity.MemberEnterStatus; import com.sv.entity.MemberRefund; import com.sv.entity.Order; import com.sv.mapper.BarcodeOrderTimeMapper; -import com.sv.mapper.MemberEnterStatusMapper; import com.sv.mapper.MemberRefundMapper; import com.sv.mapper.OrderMapper; import com.sv.service.api.config.WechatPayService; import com.sv.service.api.util.DateUtilCard; -import com.sv.service.oms.OrderService; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -65,7 +60,7 @@ public class BarcodeTimeOrderTask { @Scheduled(cron = "0 0/2 * * * ?") public void refundOrder(){ logger.error("执行BarcodeTimeOrderTask.refundOrder"); - // 查询用户已经过期的按次入场订单 + // 需要支付的订单 List barcodeOrderTimes = barcodeOrderTimeMapper.needPayOrderList(); if (barcodeOrderTimes != null && barcodeOrderTimes.size() > 0){ Date date = new Date(); diff --git a/service/src/main/java/com/sv/mapper/BarcodeOrderTimeMapper.java b/service/src/main/java/com/sv/mapper/BarcodeOrderTimeMapper.java index 598082b..ebea6ec 100644 --- a/service/src/main/java/com/sv/mapper/BarcodeOrderTimeMapper.java +++ b/service/src/main/java/com/sv/mapper/BarcodeOrderTimeMapper.java @@ -1,5 +1,6 @@ package com.sv.mapper; +import com.sv.dto.api.MemberEnterOrderDTO; import com.sv.entity.BarcodeOrderTime; import org.apache.ibatis.annotations.Param; @@ -29,4 +30,7 @@ public interface BarcodeOrderTimeMapper { List needPayOrderList(); + List memberOrderEnterList(@Param("memberId") Integer memberId); + + MemberEnterOrderDTO memberOrderEnterDetail(@Param("memberId") Integer memberId,@Param("enterId") Integer enterId); } diff --git a/service/src/main/java/com/sv/service/api/OrderService.java b/service/src/main/java/com/sv/service/api/OrderService.java index 4076ebb..7328824 100644 --- a/service/src/main/java/com/sv/service/api/OrderService.java +++ b/service/src/main/java/com/sv/service/api/OrderService.java @@ -11,7 +11,6 @@ import com.sv.mapper.OrderMapper; import com.sv.mapper.VenueMapper; import com.sv.mapper.VenuePriceMapper; import com.sv.service.api.config.WechatPayService; -import com.sv.service.api.util.DateUtilCard; import com.ydd.framework.core.common.Pagination; import com.ydd.framework.core.common.utils.RequestUtils; import com.ydd.framework.core.exception.ServiceException; @@ -299,7 +298,8 @@ public class OrderService extends BaseServiceImpl { if (lastOrder != null) { lastOrder.setPaying(1); lastOrder.setPayMoney(-1); - lastOrder.setOrderSn(order.getOrderSn()); + lastOrder.setOrderAddSn(order.getOrderSn()); +// lastOrder.setOrderSn(order.getOrderSn()); lastOrder.setModifiedTime(new Date()); barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder); } diff --git a/service/src/main/java/com/sv/service/api/VenueEnterService.java b/service/src/main/java/com/sv/service/api/VenueEnterService.java index d5fc857..a26fb7a 100644 --- a/service/src/main/java/com/sv/service/api/VenueEnterService.java +++ b/service/src/main/java/com/sv/service/api/VenueEnterService.java @@ -1,13 +1,16 @@ package com.sv.service.api; import com.enums.*; +import com.github.pagehelper.PageHelper; import com.sv.dto.BasketEnterResult; +import com.sv.dto.api.MemberEnterOrderDTO; import com.sv.entity.*; import com.sv.exception.api.ExceptionCodeTemplate; import com.sv.mapper.BarcodeOrderTimeMapper; import com.sv.mapper.OrderMapper; import com.sv.mapper.VenueMapper; import com.sv.service.api.util.DateUtilCard; +import com.ydd.framework.core.common.Pagination; import com.ydd.framework.core.common.utils.ValidationUtils; import com.ydd.framework.core.exception.ServiceException; import com.ydd.framework.core.service.impl.BaseServiceImpl; @@ -80,10 +83,13 @@ public class VenueEnterService extends BaseServiceImpl { checkOrderPaying(memberId); basketEnterResult.setFlg(2); basketEnterResult.setMsg("订单金额"+ price + "元,请确认!"); + if (PayStyleEnum.HOUR.getValue() == venue.getPayStyle()){ + basketEnterResult.setMsg("预付押金"+ price + "元,出门后结算,收费规则见场馆主页详情"); + } basketEnterResult.setMoney(price); }else { // 不需要交钱,则不需要微信支付,直接展示二维码 - Integer timePayHour = 2; + Integer timePayHour = 2; // 此处修改押金小时数 if(PayStyleEnum.TIME.getValue() == venue.getPayStyle()){ // 按次入场先收钱,且多久不收钱,出场不收钱 // 该用户上次订单的是否逾期 @@ -152,9 +158,14 @@ public class VenueEnterService extends BaseServiceImpl { // 按时出场选择按照分钟四舍五入到角扣款 price = venuePriceEnter.getPrice(); int minutes = DateUtilCard.diffMinute(lastOrder.getOrderStart(), dateNow); - int hours = (minutes - 1) / 60; + int hours = minutes / 60; // 需要补收的价格 - price = price.multiply(new BigDecimal(hours - 1)); + price = price.multiply(new BigDecimal(hours - 1)); // 此处修改押金小时数 + int mod = new BigDecimal(minutes).divideAndRemainder(new BigDecimal(60))[1].intValue(); + if (hours >= 1 && mod <= 30) { + // 超过一个小时 且不满半小时,只收一半的钱 + price = price.subtract(price.divide(new BigDecimal(2)).setScale(1,BigDecimal.ROUND_HALF_UP)); + } logger.info("用户出场$" + memberId + "$经过时间为" + minutes + "分钟,价格为:"+ price); if (price.compareTo(BigDecimal.ZERO) > 0 ) { checkOrderPaying(memberId); @@ -222,10 +233,10 @@ public class VenueEnterService extends BaseServiceImpl { private void createBarcodeTimeOrder(Integer memberId, Integer venueId, Integer timePayHour,String orderSn) { Date startDate = new Date(); Date endDate = DateUtilCard.addHours(startDate, timePayHour); - // 如果小于2小时,则默认给15分钟宽限期,包时订单 - if (timePayHour <= 2) { - endDate = DateUtilCard.addMinute(endDate,15); - } +// // 如果小于2小时,则默认给15分钟宽限期,包时订单 +// if (timePayHour <= 2) { +// endDate = DateUtilCard.addMinute(endDate,15); +// } BarcodeOrderTime barcodeOrderTime = new BarcodeOrderTime(); barcodeOrderTime.setMemberId(memberId); barcodeOrderTime.setVenueId(venueId); @@ -249,7 +260,7 @@ public class VenueEnterService extends BaseServiceImpl { Venue venue = venueMapper.findById(venueId); createMemberMoneyLog(MoneyLogEnum.JOIN.value, order.getPrice(), memberId, order.getPlatformId(), PayTypeEnum.WEI_XIN.value, null,venue.getId(), venue.getType()); if (EnterEnum.OUT.value != enterFlag) { - Integer timePayHour = 2; + Integer timePayHour = 2; // 此处修改押金小时数 if(PayStyleEnum.TIME.getValue() == venue.getPayStyle()){ // 按次入场先收钱,且多久不收钱,出场不收钱 // 该用户上次订单的是否逾期 @@ -263,9 +274,54 @@ public class VenueEnterService extends BaseServiceImpl { BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrderBySn(memberId, venueId,order.getOrderSn()); if (lastOrder != null) { lastOrder.setPaying(2); + lastOrder.setStatus(BarCodeStatusEnum.USED.getValue()); lastOrder.setModifiedTime(new Date()); barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder); } } } + + /** + * 我的进场订单 + * @param memberId + * @param pagination + * @return + */ + public Pagination memberOrderEnterList(Integer memberId, Pagination pagination) { + // 判断用户信息 + if (memberId == null) { + throw new ServiceException(com.ydd.framework.core.exception.ExceptionCodeTemplate.NEED_LOGIN); + } + PageHelper.startPage(pagination.getPage(), pagination.getPageSize()); + pagination.setQueryResult(barcodeOrderTimeMapper.memberOrderEnterList(memberId)); + return pagination; + } + + /** + * 我的进场订单明细 + */ + public MemberEnterOrderDTO memberOrderEnterDetail(Integer memberId, Integer enterId) { + // 判断用户信息 + if (memberId == null) { + throw new ServiceException(com.ydd.framework.core.exception.ExceptionCodeTemplate.NEED_LOGIN); + } + MemberEnterOrderDTO memberEnterOrderDTO = barcodeOrderTimeMapper.memberOrderEnterDetail(memberId, enterId); + Date endTime = memberEnterOrderDTO.getEndTime(); + if (endTime == null) { + endTime = new Date(); + } + int diffMinute = DateUtilCard.diffMinute(memberEnterOrderDTO.getStartTime(), endTime); + memberEnterOrderDTO.setStatus(EnterOrderStatusEnum.OVER.value); + if (BarCodeStatusEnum.INIT.getValue() == memberEnterOrderDTO.getStatus()) { + if (1 == memberEnterOrderDTO.getPaying()) { + memberEnterOrderDTO.setStatus(EnterOrderStatusEnum.PAYING.value); + } + if (0 == memberEnterOrderDTO.getPaying()){ + memberEnterOrderDTO.setStatus(EnterOrderStatusEnum.USING.value); + } + } + memberEnterOrderDTO.setLessonCount(diffMinute); + return memberEnterOrderDTO; + } + } diff --git a/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml b/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml index 452795f..290f396 100644 --- a/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml @@ -10,14 +10,17 @@ + + + - id, member_id, venue_id, created_time, modified_time, order_start, order_end, status, paying, pay_money, order_sn + id, member_id, venue_id, created_time, modified_time, order_start, order_end, last_out, last_enter, status, paying, pay_money, order_sn,order_add_sn @@ -198,4 +233,54 @@ where paying = 1 + + + +