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 4565b05..b871566 100644 --- a/api/src/main/java/com/sv/api/controller/VenueController.java +++ b/api/src/main/java/com/sv/api/controller/VenueController.java @@ -210,11 +210,22 @@ public class VenueController extends BaseApiController { */ @RequestMapping(value = "/venue/basketball/pay", method = RequestMethod.POST) @AccessToken - public ResponseDTO recharge(@RequestParam("rechargeId") Integer rechargeId){ - Venue venue = new Venue(); - // TODO + public ResponseDTO recharge(@RequestParam("venueId") Integer venueId){ + Device byDevice = deviceService.findByDevice(venueId); + BasketEnterResult join = new BasketEnterResult(); + if (byDevice == null) { + join.setFlg(999); + join.setMsg("通讯异常,门禁设备离线中"); + return ResponseDTO.ok().addAttribute("join", join); + } + String doorSn = byDevice.getName(); + boolean lockStat = doorLockUtil.checkDoorLock(doorSn); + if (lockStat) { + throw new ServiceException("有人正在使用门禁,请稍后再试"); + } + Integer memberId = getMemberIdByAccessToken(); return ResponseDTO.ok(). - addAttribute("pay",orderService.createEnterVenueOrder(venue,getLoginMemberId(), PayTypeEnum.WEI_XIN,new BigDecimal(10))); + addAttribute("pay",orderService.createEnterVenueOrder(venueId, memberId, PayTypeEnum.WEI_XIN,new BigDecimal(10))); } } 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 140955a..cbfa439 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 @@ -179,7 +179,7 @@ public class ServerMessageHandlerAdapter implements MessageService { memberEnterVenueLogService.save(memberEnterVenueLog); doorLockUtil.lockDoor(doorSn); writeOffCode(barcode); - logger.info("用户" + member.getId() + "&" + member.getNickname() + "入场"); + logger.info("用户" + member.getId() + "&" + member.getNickname() + "入场"); ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.ENTER_DOOR,"OK")); } } diff --git a/entity/src/main/java/com/sv/dto/BasketEnterResult.java b/entity/src/main/java/com/sv/dto/BasketEnterResult.java index 0c6f13c..848f792 100644 --- a/entity/src/main/java/com/sv/dto/BasketEnterResult.java +++ b/entity/src/main/java/com/sv/dto/BasketEnterResult.java @@ -1,6 +1,7 @@ package com.sv.dto; import java.io.Serializable; +import java.math.BigDecimal; public class BasketEnterResult implements Serializable { /** @@ -10,6 +11,16 @@ public class BasketEnterResult implements Serializable { private String msg; + private BigDecimal money; + + public BigDecimal getMoney() { + return money; + } + + public void setMoney(BigDecimal money) { + this.money = money; + } + public Integer getFlg() { return flg; } diff --git a/service/src/main/java/com/sv/service/api/MemberCardOrderService.java b/service/src/main/java/com/sv/service/api/MemberCardOrderService.java index 999507b..355c2ad 100644 --- a/service/src/main/java/com/sv/service/api/MemberCardOrderService.java +++ b/service/src/main/java/com/sv/service/api/MemberCardOrderService.java @@ -181,7 +181,7 @@ public class MemberCardOrderService extends BaseServiceImpl { // memberCardService.createCard(order,totalPrice); // 4.调支付 - OrderPaySignResponse.WechatPayParam wechatPayParam = createUnifiedOrder(order.getOrderSn(), memberId,ip); + OrderPaySignResponse.WechatPayParam wechatPayParam = createUnifiedOrder(order.getOrderSn(), memberId,ip,"购买商品"); return wechatPayParam; } @@ -220,12 +220,12 @@ public class MemberCardOrderService extends BaseServiceImpl { * @return */ @Transactional - public OrderPaySignResponse.WechatPayParam createUnifiedOrder(String orderSn, Integer memberId, String ip) { + public OrderPaySignResponse.WechatPayParam createUnifiedOrder(String orderSn, Integer memberId, String ip,String orderTitle) { Order order = orderService.findOrderSn(orderSn, memberId); if (order == null){ throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.ORDER_ERROR); } - return wechatPayService.createUnifiedOrder(orderSn, order.getPrice(), ip, "JSAPI", memberId); + return wechatPayService.createUnifiedOrder(orderSn, order.getPrice(), ip, memberId,orderTitle); } /** diff --git a/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java b/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java index 3e7ff69..e0a49ad 100644 --- a/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java +++ b/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java @@ -287,7 +287,7 @@ public class MemberLessonTicketService extends BaseServiceImpl { memberService.updateMoney(memberId, order.getPrice().negate()); paySuccess(order); } else { - wechatPayParam = memberCardOrderService.createUnifiedOrder(order.getOrderSn(), memberId, ip); + wechatPayParam = memberCardOrderService.createUnifiedOrder(order.getOrderSn(), memberId, ip,"购买商品"); } } redisLock.unlock(); 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 c701594..d179b66 100644 --- a/service/src/main/java/com/sv/service/api/OrderService.java +++ b/service/src/main/java/com/sv/service/api/OrderService.java @@ -10,6 +10,7 @@ import com.sv.dto.api.wechat.OrderPaySignResponse; import com.sv.entity.*; import com.sv.exception.api.ExceptionCodeTemplate; import com.sv.mapper.OrderMapper; +import com.sv.mapper.VenueMapper; import com.sv.service.api.config.WechatPayService; import com.ydd.framework.core.common.Pagination; import com.ydd.framework.core.exception.ServiceException; @@ -44,6 +45,8 @@ public class OrderService extends BaseServiceImpl { @Resource private OrderMapper orderMapper; @Resource + private VenueMapper venueMapper; + @Resource private WechatPayService wechatPayService; @Resource private RechargeService rechargeService; @@ -224,7 +227,7 @@ public class OrderService extends BaseServiceImpl { orderMapper.insert(order); // 调微信 - OrderPaySignResponse.WechatPayParam wechatPayParam = memberCardOrderService.createUnifiedOrder(order.getOrderSn(), memberId,ip); + OrderPaySignResponse.WechatPayParam wechatPayParam = memberCardOrderService.createUnifiedOrder(order.getOrderSn(), memberId,ip,"余额充值"); return wechatPayParam; } @@ -240,12 +243,14 @@ public class OrderService extends BaseServiceImpl { /** * 生成进场订单 - * @param venue * @param memberId * @return */ - @Deprecated - public String createEnterVenueOrder(Venue venue, Integer memberId,PayTypeEnum payTypeEnum,BigDecimal price){ + public OrderPaySignResponse.WechatPayParam createEnterVenueOrder(Integer venueId, Integer memberId,PayTypeEnum payTypeEnum,BigDecimal price){ + Venue venue = venueMapper.findById(venueId); + if (venue == null) { + throw new ServiceException("未找到该场馆"); + } //创建订单 Order order = new Order(); order.setOrderSn(createSn()); @@ -257,15 +262,12 @@ public class OrderService extends BaseServiceImpl { order.setPlatformId(venue.getPlatformId()); order.setMemberId(memberId); orderMapper.insert(order); - - //扣除用户余额 - if(payTypeEnum.value.equals(PayTypeEnum.BALANCE.value)) { - memberMoneyLogService.create(memberId, venue.getPlatformId(), MoneyLogEnum.JOIN.value, price.negate(), PayTypeEnum.BALANCE.value, null, venue.getId(), venue.getType(), null); - } - //TODO 调用微信支付 不用这个方法,需要新增方法,把商品的信息进行调整 最好有空把充值的内容也更新一下 - OrderPaySignResponse.WechatPayParam wechatPayParam = memberCardOrderService.createUnifiedOrder(order.getOrderSn(), memberId,"ip"); - - return order.getOrderSn(); + //扣除用户余额 目前篮球订单不支持余额支付 +// if(payTypeEnum.value.equals(PayTypeEnum.BALANCE.value)) { +// memberMoneyLogService.create(memberId, venue.getPlatformId(), MoneyLogEnum.JOIN.value, price.negate(), PayTypeEnum.BALANCE.value, null, venue.getId(), venue.getType(), null); +// } + OrderPaySignResponse.WechatPayParam wechatPayParam = memberCardOrderService.createUnifiedOrder(order.getOrderSn(), memberId,"ip","入场结算订单"); + return wechatPayParam; } } diff --git a/service/src/main/java/com/sv/service/api/config/WechatPayService.java b/service/src/main/java/com/sv/service/api/config/WechatPayService.java index cec99d8..f00c44a 100644 --- a/service/src/main/java/com/sv/service/api/config/WechatPayService.java +++ b/service/src/main/java/com/sv/service/api/config/WechatPayService.java @@ -57,7 +57,7 @@ public class WechatPayService extends BaseServiceImpl { * @return */ @Transactional - public OrderPaySignResponse.WechatPayParam createUnifiedOrder(String orderSn, BigDecimal money, String ip, String tradeType, Integer memberId) { + public OrderPaySignResponse.WechatPayParam createUnifiedOrder(String orderSn, BigDecimal money, String ip, Integer memberId, String orderTitle) { OrderPaySignResponse.WechatPayParam wechatPayParam; try { // 设置过期时间 @@ -73,7 +73,7 @@ public class WechatPayService extends BaseServiceImpl { weChatPayHelper.setMchId(payConfig.getMchId()); weChatPayHelper.setKey(payConfig.getKey()); weChatPayHelper.setParameter("nonce_str", nonceStr); - weChatPayHelper.setParameter("body", "购买商品"); + weChatPayHelper.setParameter("body", orderTitle); weChatPayHelper.setParameter("detail", "商品"); weChatPayHelper.setParameter("out_trade_no", orderSn); String payMoney = money.multiply(new BigDecimal(100)) @@ -82,7 +82,7 @@ public class WechatPayService extends BaseServiceImpl { weChatPayHelper.setParameter("spbill_create_ip", ip); weChatPayHelper.setParameter("time_start", DateFormatUtils.format(current, "yyyyMMddHHmmss")); weChatPayHelper.setParameter("notify_url", payConfig.getNotifyUrl()); - weChatPayHelper.setParameter("trade_type", tradeType); + weChatPayHelper.setParameter("trade_type", "JSAPI"); // 目前写死 //使用公众号的appid MemberAuth memberAuth = memberAuthService.findByMemberId(memberId); weChatPayHelper.setParameter("openid", memberAuth.getAuthId());