最新逻辑 (超过1小时半小时收半小时钱、多余的收一小时钱,没有宽限期) 增加篮球入场视图,显示订单记录信息。
This commit is contained in:
@@ -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<BarcodeOrderTime> needPayOrderList();
|
||||
|
||||
List<MemberEnterOrderDTO> memberOrderEnterList(@Param("memberId") Integer memberId);
|
||||
|
||||
MemberEnterOrderDTO memberOrderEnterDetail(@Param("memberId") Integer memberId,@Param("enterId") Integer enterId);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,14 +10,17 @@
|
||||
<arg column="modified_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="order_start" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="order_end" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="last_enter" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="last_out" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="status" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="paying" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="pay_money" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="order_sn" jdbcType="VARCHAR" javaType="java.lang.String" />
|
||||
<arg column="order_add_sn" jdbcType="VARCHAR" javaType="java.lang.String" />
|
||||
</constructor>
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List" >
|
||||
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
|
||||
</sql>
|
||||
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
|
||||
select
|
||||
@@ -32,10 +35,12 @@
|
||||
<insert id="insert" parameterType="com.sv.entity.BarcodeOrderTime" >
|
||||
insert into sv_barcode_order_time (id, member_id, venue_id,
|
||||
created_time, modified_time, order_start,
|
||||
order_end, status,paying ,pay_money,order_sn)
|
||||
order_end, last_enter, last_out, status,paying ,pay_money,order_sn)
|
||||
values (#{id,jdbcType=INTEGER}, #{memberId,jdbcType=INTEGER}, #{venueId,jdbcType=INTEGER},
|
||||
#{createdTime,jdbcType=TIMESTAMP}, #{modifiedTime,jdbcType=TIMESTAMP}, #{orderStart,jdbcType=TIMESTAMP},
|
||||
#{orderEnd,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, #{paying,jdbcType=INTEGER}, #{payMoney,jdbcType=INTEGER}, #{orderSn,jdbcType=VARCHAR})
|
||||
#{orderEnd,jdbcType=TIMESTAMP}, #{lastEnter,jdbcType=TIMESTAMP}, #{lastOut,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER},
|
||||
#{paying,jdbcType=INTEGER},#{payMoney,jdbcType=INTEGER}, #{orderSn,jdbcType=VARCHAR}
|
||||
,#{orderAddSn,jdbcType=VARCHAR})
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="com.sv.entity.BarcodeOrderTime" >
|
||||
insert into sv_barcode_order_time
|
||||
@@ -61,10 +66,16 @@
|
||||
<if test="orderEnd != null" >
|
||||
order_end,
|
||||
</if>
|
||||
<if test="lastEnter != null" >
|
||||
last_enter,
|
||||
</if>
|
||||
<if test="lastOut != null" >
|
||||
last_out,
|
||||
</if>
|
||||
<if test="status != null" >
|
||||
status,
|
||||
</if>
|
||||
<if test="status != null" >
|
||||
<if test="paying != null" >
|
||||
paying,
|
||||
</if>
|
||||
<if test="payMoney != null" >
|
||||
@@ -73,6 +84,9 @@
|
||||
<if test="orderSn != null" >
|
||||
order_sn,
|
||||
</if>
|
||||
<if test="orderAddSn != null" >
|
||||
order_add_sn,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides="," >
|
||||
<if test="id != null" >
|
||||
@@ -96,6 +110,12 @@
|
||||
<if test="orderEnd != null" >
|
||||
#{orderEnd,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="lastEnter != null" >
|
||||
#{lastEnter,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="lastOut != null" >
|
||||
#{lastOut,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="status != null" >
|
||||
#{status,jdbcType=INTEGER},
|
||||
</if>
|
||||
@@ -108,6 +128,9 @@
|
||||
<if test="orderSn != null" >
|
||||
#{orderSn,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="orderAddSn != null" >
|
||||
#{orderAddSn,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<update id="updateByPrimaryKeySelective" parameterType="com.sv.entity.BarcodeOrderTime" >
|
||||
@@ -131,6 +154,12 @@
|
||||
<if test="orderEnd != null" >
|
||||
order_end = #{orderEnd,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="lastEnter != null" >
|
||||
last_enter = #{lastEnter,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="lastOut != null" >
|
||||
last_out = #{lastOut,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="status != null" >
|
||||
status = #{status,jdbcType=INTEGER},
|
||||
</if>
|
||||
@@ -143,6 +172,9 @@
|
||||
<if test="orderSn != null" >
|
||||
order_sn = #{orderSn,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="orderSn != null" >
|
||||
order_add_sn = #{orderAddSn,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id,jdbcType=INTEGER}
|
||||
</update>
|
||||
@@ -154,10 +186,13 @@
|
||||
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
|
||||
order_start = #{orderStart,jdbcType=TIMESTAMP},
|
||||
order_end = #{orderEnd,jdbcType=TIMESTAMP},
|
||||
last_enter = #{lastEnter,jdbcType=TIMESTAMP},
|
||||
last_out = #{lastOut,jdbcType=TIMESTAMP},
|
||||
status = #{status,jdbcType=INTEGER},
|
||||
paying = #{paying,jdbcType=INTEGER},
|
||||
pay_money = #{payMoney,jdbcType=INTEGER},
|
||||
order_sn = #{orderSn,jdbcType=VARCHAR}
|
||||
order_add_sn = #{orderAddSn,jdbcType=VARCHAR}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
|
||||
@@ -180,7 +215,7 @@
|
||||
<include refid="Base_Column_List" />
|
||||
from sv_barcode_order_time
|
||||
where member_id = #{memberId,jdbcType=INTEGER} and venue_id = #{venueId,jdbcType=INTEGER}
|
||||
and order_sn = #{orderSn,jdbcType=VARCHAR}
|
||||
and order_add_sn = #{orderSn,jdbcType=VARCHAR}
|
||||
order by order_end desc LIMIT 1
|
||||
</select>
|
||||
|
||||
@@ -198,4 +233,54 @@
|
||||
where paying = 1
|
||||
</select>
|
||||
|
||||
<select id="memberOrderEnterList" resultType="com.sv.dto.api.MemberEnterOrderDTO">
|
||||
select
|
||||
t.id as id,
|
||||
ue.id as lessonId,
|
||||
ue.`name` as lessonName,
|
||||
ue.list_image as lessonImage,
|
||||
t.last_enter as lastEnter,
|
||||
t.order_start as startTime,
|
||||
t.last_out as endTime,
|
||||
(select IFNULL(sum(ot.price),0) from sv_order ot
|
||||
where ot.member_id = #{memberId,jdbcType=INTEGER} and (ot.order_sn = t.order_sn or ot.order_sn = t.order_add_sn)
|
||||
) as price,
|
||||
t.paying,
|
||||
t.order_sn as orderSn,
|
||||
t.`status`,
|
||||
t.created_time as createTime,
|
||||
1 as payType,
|
||||
ue.address as address,
|
||||
ue.longitude,
|
||||
ue.latitude
|
||||
from sv_barcode_order_time t LEFT JOIN sv_venue ue on t.venue_id = ue.id
|
||||
where t.member_id = #{memberId,jdbcType=INTEGER}
|
||||
order by t.order_start desc
|
||||
</select>
|
||||
|
||||
<select id="memberOrderEnterDetail" resultType="com.sv.dto.api.MemberEnterOrderDTO">
|
||||
select
|
||||
t.id as id,
|
||||
ue.id as lessonId,
|
||||
ue.`name` as lessonName,
|
||||
ue.list_image as lessonImage,
|
||||
t.last_enter as lastEnter,
|
||||
t.order_start as startTime,
|
||||
t.last_out as endTime,
|
||||
(select IFNULL(sum(ot.price),0) from sv_order ot
|
||||
where ot.member_id = #{memberId,jdbcType=INTEGER} and (ot.order_sn = t.order_sn or ot.order_sn = t.order_add_sn)
|
||||
) as price,
|
||||
t.paying,
|
||||
t.order_sn as orderSn,
|
||||
t.`status`,
|
||||
t.created_time as createTime,
|
||||
1 as payType,
|
||||
ue.address as address,
|
||||
ue.longitude,
|
||||
ue.latitude
|
||||
from sv_barcode_order_time t LEFT JOIN sv_venue ue on t.venue_id = ue.id
|
||||
where t.member_id = #{memberId,jdbcType=INTEGER}
|
||||
and t.id = #{enterId,jdbcType=INTEGER}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user