From f0ef32ffc605e8d06883d0841c0977ae379a5cdf Mon Sep 17 00:00:00 2001 From: limqhz <540344226@qq.com> Date: Sat, 2 Sep 2023 11:31:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=90=8E=E5=8F=B0-=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=E6=89=AB=E6=8F=8F=E4=BB=A3=E7=A0=81=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96-=E7=AE=80=E5=8C=96=EF=BC=8C=E5=BE=85?= =?UTF-8?q?=E5=A4=84=E7=90=86=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sv/api/controller/VenueController.java | 14 +- .../netty/controller/QREnterController.java | 27 +- .../netty/netty/service/MessageService.java | 3 - .../impl/AppMessageHandlerAdapter.java | 18 -- entity/src/main/java/com/enums/EnterEnum.java | 42 +++ .../main/java/com/sv/dto/BarCodeResult.java | 39 +++ .../src/main/java/com/sv/dto/EnterResult.java | 24 -- .../main/java/com/sv/dto/api/VenueDTO.java | 13 + .../java/com/sv/netty/config/MessageType.java | 1 - .../sv/oms/controller/MemberController.java | 1 - .../com/sv/service/api/MemberService.java | 27 +- .../com/sv/service/api/QRCodeService.java | 74 ----- .../java/com/sv/service/api/VenueService.java | 299 +++++++----------- .../com/sv/service/common/FaceService.java | 1 + .../sv/service/message/WeiXinSendUtils.java | 6 +- 15 files changed, 238 insertions(+), 351 deletions(-) create mode 100644 entity/src/main/java/com/enums/EnterEnum.java create mode 100644 entity/src/main/java/com/sv/dto/BarCodeResult.java delete mode 100644 entity/src/main/java/com/sv/dto/EnterResult.java delete mode 100644 service/src/main/java/com/sv/service/api/QRCodeService.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 e176f69..40619a2 100644 --- a/api/src/main/java/com/sv/api/controller/VenueController.java +++ b/api/src/main/java/com/sv/api/controller/VenueController.java @@ -83,7 +83,8 @@ public class VenueController extends BaseApiController { */ @RequestMapping(value = "/venue/detail", method = RequestMethod.POST) public ResponseDTO detail(@RequestParam("venueId") Integer venueId) { - return ResponseDTO.ok().addAttribute("venues", venueService.findByVenueId(venueId)); + Integer loginMemberId = getLoginMemberId(); + return ResponseDTO.ok().addAttribute("venues", venueService.findByVenueId(venueId,loginMemberId)); } /** @@ -97,5 +98,16 @@ public class VenueController extends BaseApiController { return ResponseDTO.ok().addAttribute("flg", venueService.join(getMemberIdByAccessToken(), venueId)); } + /** + * 我要进场 + * + * @param venueId 场馆Id + * @return + */ + @RequestMapping(value = "/venue/out", method = RequestMethod.GET) + public ResponseDTO out(@RequestParam("venueId") Integer venueId) { + return ResponseDTO.ok().addAttribute("flg", venueService.join(getMemberIdByAccessToken(), venueId)); + } + } diff --git a/api/src/main/java/com/sv/netty/controller/QREnterController.java b/api/src/main/java/com/sv/netty/controller/QREnterController.java index e887a24..f2c3a57 100644 --- a/api/src/main/java/com/sv/netty/controller/QREnterController.java +++ b/api/src/main/java/com/sv/netty/controller/QREnterController.java @@ -3,10 +3,8 @@ package com.sv.netty.controller; import com.sv.entity.Venue; import com.sv.netty.config.NettyConstant; import com.sv.netty.netty.service.MessageService; -import com.sv.service.api.QRCodeService; import com.ydd.framework.core.common.dto.ResponseDTO; import com.ydd.framework.core.controller.BaseApiController; -import com.ydd.framework.core.exception.ServiceException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; @@ -21,8 +19,6 @@ public class QREnterController extends BaseApiController { private final Logger logger = LoggerFactory.getLogger(QREnterController.class); @Resource - private QRCodeService qrCodeService; - @Resource private MessageService messageService; /** * 进场指令发布 @@ -32,8 +28,7 @@ public class QREnterController extends BaseApiController { Integer memberId = getMemberIdByAccessToken(); Integer venueId = getVenueId(deviceId); String deviceName = getDeviceName(deviceId); - Venue venue = qrCodeService.initEnter(venueId, deviceName,memberId); - qrCodeService.unBindMember(venueId, deviceName); + Venue venue = new Venue();// TODO if (venue!=null){ if (true){ // 出场 @@ -46,26 +41,6 @@ public class QREnterController extends BaseApiController { return ResponseDTO.ok(); } - /** - * 扫码结果页初始化 - * 需要进场的场馆信息 - */ - @RequestMapping(value = "/qrCode/init", method = RequestMethod.GET) - public ResponseDTO initEnter(@RequestParam("deviceId")String deviceId) { - try { - Integer memberId = getMemberIdByAccessToken(); - Integer venueId = getVenueId(deviceId); - String deviceName = getDeviceName(deviceId); - Venue venue = qrCodeService.initEnter(venueId, deviceName,memberId); - qrCodeService.bindMember(venueId, deviceName,memberId); - messageService.sendLoading(deviceName, venueId, memberId); - return ResponseDTO.ok().addAttribute("venueInit", venue); - }catch(ServiceException e){ - return ResponseDTO.ok().addAttribute("InitError",e.getMessage()); - } - } - - /** * 根据字符串获取场馆 * @param deviceId diff --git a/api/src/main/java/com/sv/netty/netty/service/MessageService.java b/api/src/main/java/com/sv/netty/netty/service/MessageService.java index 4aff7dd..600be66 100644 --- a/api/src/main/java/com/sv/netty/netty/service/MessageService.java +++ b/api/src/main/java/com/sv/netty/netty/service/MessageService.java @@ -35,9 +35,6 @@ public interface MessageService { * @return */ Set countConnection(); - - boolean sendLoading(String deviceName, Integer venueId, Integer memberId); - /** * 出场 * @param deviceName diff --git a/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java b/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java index 52e195b..64b18e8 100644 --- a/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java +++ b/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java @@ -100,24 +100,6 @@ public class AppMessageHandlerAdapter implements MessageService { } } - /** - * 通知客户端进入加载页面 - * @param memberId - * @return - */ - @Override - public boolean sendLoading(String deviceName, Integer venueId,Integer memberId) { - Member thisMember = memberService.findByMember(memberId); - if (thisMember!=null){ - String nickname = thisMember.getNickname(); - VenueMessage venueMessage = new VenueMessage(MessageType.LOAD,"欢迎光临!" + nickname + ",请您60s内操作进场。"); - Channel currentChannel = getCurrentChannel(deviceName, venueId); - ServerMessageUtils.INSTANCE.sendMsg(currentChannel,venueMessage); - return true; - } - return false; - } - /** * 测试客户端连接 * @return diff --git a/entity/src/main/java/com/enums/EnterEnum.java b/entity/src/main/java/com/enums/EnterEnum.java new file mode 100644 index 0000000..1c2c704 --- /dev/null +++ b/entity/src/main/java/com/enums/EnterEnum.java @@ -0,0 +1,42 @@ +package com.enums; + +/** + * Enum - 入场标志 + * + */ +public enum EnterEnum { + ENTER(0, "入场"), + OUT(1, "出场"); + public Integer value; + public String name; + + EnterEnum(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 EnterEnum getByValue(Integer value) { + for (EnterEnum type : EnterEnum.values()) { + if (type.value.equals(value)) { + return type; + } + } + return null; + } +} diff --git a/entity/src/main/java/com/sv/dto/BarCodeResult.java b/entity/src/main/java/com/sv/dto/BarCodeResult.java new file mode 100644 index 0000000..5e4f950 --- /dev/null +++ b/entity/src/main/java/com/sv/dto/BarCodeResult.java @@ -0,0 +1,39 @@ +package com.sv.dto; + +import java.io.Serializable; + +public class BarCodeResult implements Serializable { + + private String barcode; + + /** + * 0 - 成功 1 - 失败 + */ + private String code; + + private String msg; + + public String getBarcode() { + return barcode; + } + + public void setBarcode(String barcode) { + this.barcode = barcode; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } +} diff --git a/entity/src/main/java/com/sv/dto/EnterResult.java b/entity/src/main/java/com/sv/dto/EnterResult.java deleted file mode 100644 index a4ee37e..0000000 --- a/entity/src/main/java/com/sv/dto/EnterResult.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.sv.dto; - -import java.math.BigDecimal; - -public class EnterResult { - private Integer status; - private BigDecimal money; - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public BigDecimal getMoney() { - return money; - } - - public void setMoney(BigDecimal money) { - this.money = money; - } -} diff --git a/entity/src/main/java/com/sv/dto/api/VenueDTO.java b/entity/src/main/java/com/sv/dto/api/VenueDTO.java index 33b2f3c..500fa2a 100644 --- a/entity/src/main/java/com/sv/dto/api/VenueDTO.java +++ b/entity/src/main/java/com/sv/dto/api/VenueDTO.java @@ -183,6 +183,11 @@ public class VenueDTO implements Serializable { */ private List venuePriceList; + /** + * 展示出厂还是入场按钮 + */ + private Integer enterFlag; + /** * 设置 * @@ -637,4 +642,12 @@ public class VenueDTO implements Serializable { public void setCopyControl(Integer copyControl) { this.copyControl = copyControl; } + + public Integer getEnterFlag() { + return enterFlag; + } + + public void setEnterFlag(Integer enterFlag) { + this.enterFlag = enterFlag; + } } diff --git a/netty-model/src/main/java/com/sv/netty/config/MessageType.java b/netty-model/src/main/java/com/sv/netty/config/MessageType.java index 1552005..7f70b2c 100644 --- a/netty-model/src/main/java/com/sv/netty/config/MessageType.java +++ b/netty-model/src/main/java/com/sv/netty/config/MessageType.java @@ -2,7 +2,6 @@ package com.sv.netty.config; public enum MessageType { LINK("连接"), - LOAD("加载"), OPEN_DOOR("开门"), FAILED("开门校验失败"); diff --git a/oms/src/main/java/com/sv/oms/controller/MemberController.java b/oms/src/main/java/com/sv/oms/controller/MemberController.java index 628e956..771b28c 100644 --- a/oms/src/main/java/com/sv/oms/controller/MemberController.java +++ b/oms/src/main/java/com/sv/oms/controller/MemberController.java @@ -2,7 +2,6 @@ package com.sv.oms.controller; import com.sv.entity.Member; import com.sv.service.api.MemberService; -import com.sv.service.common.FaceService; import com.ydd.framework.core.common.Pagination; import com.ydd.framework.core.common.dto.ResponseDTO; import com.ydd.framework.core.entity.enums.StatusEnum; diff --git a/service/src/main/java/com/sv/service/api/MemberService.java b/service/src/main/java/com/sv/service/api/MemberService.java index 2833d5d..abfaa37 100644 --- a/service/src/main/java/com/sv/service/api/MemberService.java +++ b/service/src/main/java/com/sv/service/api/MemberService.java @@ -14,7 +14,6 @@ import com.sv.exception.api.ExceptionCodeTemplate; import com.sv.mapper.MemberMapper; import com.sv.service.common.ApiConstants; import com.sv.service.common.CaptchaCacheServiceImpl; -import com.sv.service.common.FaceService; import com.sv.service.common.OSSClientUtil; import com.ydd.framework.core.common.Pagination; import com.ydd.framework.core.common.utils.ValidationUtils; @@ -59,8 +58,8 @@ public class MemberService extends BaseServiceImpl { @Resource private OSSClientUtil ossClientUtil; - @Resource - private FaceService faceService; +// @Resource +// private FaceService faceService; @Resource private CaptchaCacheServiceImpl captchaCacheService; @Resource @@ -503,17 +502,17 @@ public class MemberService extends BaseServiceImpl { String imgUrl = ossClientUtil.uploadImg(new BufferedInputStream(inputStream), file.getOriginalFilename()); logger.info(memberId + "上传oss文件成功." + imgUrl); Integer subjectId = null; - if (faceService.login()){ - ByteArrayInputStream byteArrayInputStream = getByteArrayInputStream(file); - Integer faceId = faceService.uploadFace(byteArrayInputStream); - logger.info(memberId + "& faceId ===" + faceId); - subjectId = faceService.addSubject(faceId, member); - logger.info(memberId + "& subjectId ===" + subjectId); - } - if (memberFaceInfo != null) { - //删除原有的subject - faceService.deleteSubject(memberFaceInfo.getFaceId()); - } +// if (faceService.login()){ +// ByteArrayInputStream byteArrayInputStream = getByteArrayInputStream(file); +// Integer faceId = faceService.uploadFace(byteArrayInputStream); +// logger.info(memberId + "& faceId ===" + faceId); +// subjectId = faceService.addSubject(faceId, member); +// logger.info(memberId + "& subjectId ===" + subjectId); +// } +// if (memberFaceInfo != null) { +// //删除原有的subject +// faceService.deleteSubject(memberFaceInfo.getFaceId()); +// } setMemberFaceInfo(subjectId, imgUrl, memberId, platformId); } } catch (FaceServiceException e) { diff --git a/service/src/main/java/com/sv/service/api/QRCodeService.java b/service/src/main/java/com/sv/service/api/QRCodeService.java deleted file mode 100644 index c623114..0000000 --- a/service/src/main/java/com/sv/service/api/QRCodeService.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.sv.service.api; - -import com.enums.VenueTypeEnum; -import com.sv.entity.Device; -import com.sv.entity.Venue; -import com.sv.mapper.DeviceMapper; -import com.sv.mapper.VenueMapper; -import com.ydd.framework.core.exception.ServiceException; -import org.apache.commons.lang.time.DateUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.Date; - -/** - * 小程序扫二维码处理 - */ -@Service("qrCodeService") -@Transactional(readOnly = true) -public class QRCodeService { - private final Logger logger = LoggerFactory.getLogger(ProtocolService.class); - - @Resource - private VenueMapper venueMapper; - @Resource - private DeviceMapper deviceMapper; - - public Venue initEnter(Integer venueId,String deviceName,Integer memberId) throws ServiceException{ - Integer integer = deviceMapper.checkDevice(deviceName, venueId); - if (integer != 1){ - throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.DEVICE_ERROR); - } - Device device = deviceMapper.findByDevice(deviceName, venueId); - if (device == null){ - throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.DEVICE_ERROR); - }else { - Date bindTime = device.getBindTime(); - Integer bindMember = device.getBindMember(); - if (bindTime != null && bindMember != null){ - Date now = new Date(); - Date endTime = DateUtils.addSeconds(bindTime, 60); - if (bindMember == memberId && now.after(endTime)){ - // 设备绑定人员是自己 但是绑定时间已经超过了一分钟 - throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.OPERATE_TIMEOUT_ERROR); - }else if (bindMember != memberId && now.before(endTime)){ - // 设备绑定的人不是自己,并且呢人家的操作时间还没有结束呢(还没有解绑) - throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.BIND_ERROR); - } - } - } - Venue venue = venueMapper.findById(venueId); - if (venue==null){ - throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.VENUE_ERROR); - } - if (!VenueTypeEnum.FITNESS.value.equals(venue.getType())){ - throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.VENUE_TYPE_ERROR); - } - return venue; - } - - @Transactional - public void bindMember(Integer venueId,String deviceName,Integer memberId){ - deviceMapper.bindMember(memberId, venueId, deviceName); - } - - @Transactional - public void unBindMember(Integer venueId,String deviceName){ - deviceMapper.unBindMember(venueId, deviceName); - } - -} diff --git a/service/src/main/java/com/sv/service/api/VenueService.java b/service/src/main/java/com/sv/service/api/VenueService.java index 88bfff6..b462ecd 100644 --- a/service/src/main/java/com/sv/service/api/VenueService.java +++ b/service/src/main/java/com/sv/service/api/VenueService.java @@ -2,7 +2,7 @@ package com.sv.service.api; import com.enums.*; import com.github.pagehelper.PageHelper; -import com.sv.dto.EnterResult; +import com.sv.dto.*; import com.sv.dto.api.MemberCardDTO; import com.sv.dto.api.MemberCardVenuesDTO; import com.sv.dto.api.VenueDTO; @@ -11,7 +11,6 @@ import com.sv.exception.api.ExceptionCodeTemplate; import com.sv.mapper.VenueMapper; import com.sv.service.api.util.DateUtilCard; import com.sv.service.api.util.GeoHashUtils; -import com.sv.service.common.FaceService; import com.sv.service.oms.DeviceService; import com.ydd.framework.core.common.Pagination; import com.ydd.framework.core.common.utils.ValidationUtils; @@ -65,10 +64,6 @@ public class VenueService extends BaseServiceImpl { @Resource private VenuePriceService venuePriceService; - @Resource - private FaceService faceService; - - /** * 更新场馆 * @@ -123,8 +118,13 @@ public class VenueService extends BaseServiceImpl { * @param id 编号 * @return 场馆 */ - public VenueDTO findByVenueId(Integer id) { - return venueMapper.findByVenueId(id); + public VenueDTO findByVenueId(Integer id,Integer memberId) { + VenueDTO getVenue = venueMapper.findByVenueId(id); + if (VenueTypeEnum.BASKETBALL.getValue().equals(getVenue.getType())){ + MemberEnterVenueLog memberLastLog = memberEnterVenueLogService.findMemberLastLog(memberId, id); + getVenue.setEnterFlag(memberLastLog.getType()); + } + return getVenue; } /** @@ -243,15 +243,114 @@ public class VenueService extends BaseServiceImpl { } // 3.判断用户有没有人脸识别的图像,根据用户ID查找,一个用户只能有一条 - MemberFaceInfo memberFaceInfo = memberFaceInfoService.findByMemberId(memberId); - if (memberFaceInfo == null) { - flag = 1; - return flag; - } +// MemberFaceInfo memberFaceInfo = memberFaceInfoService.findByMemberId(memberId); +// if (memberFaceInfo == null) { +// flag = 1; +// return flag; +// } return flag; } + /** + * 我要出场 + * @param memberId + * @param venueId + * @return + */ + public BarCodeResult out(Integer memberId, Integer venueId) { + BarCodeResult result = new BarCodeResult(); + result.setCode("0"); + // 判断用户是否登录 + if (memberId == null) { + throw new ServiceException(com.ydd.framework.core.exception.ExceptionCodeTemplate.NEED_LOGIN); + } + //参数校验 + ValidationUtils.assertNotNull(venueId); + Venue venue = venueMapper.findById(venueId); + synchronized (("enter" + memberId).intern()) { + // 查询当前时间内,场馆对应的价格(健身房没有价格) + Member member = memberService.findByMember(memberId); + memberService.verify(member); + // 记录用户进场记录 + MemberEnterVenueLog log = new MemberEnterVenueLog(); + log.setMemberId(member.getId()); + log.setVeneuType(venue.getType()); + log.setVenueId(venue.getId()); + log.setPlatformId(member.getPlatformId()); + log.setType(0); + //进场之前 查看是否有会员卡 + List cards = memberCardService.findByMemberId(venue.getId(), member.getId()); + if (cards.size() > 0) { + MemberCard useCard = null; + //有会员卡 查看是否有免费卡 + List freeCard = cards.stream().filter(free -> VipTypeEnum.FREECARD.value.equals(free.getCardType())).collect(Collectors.toList()); + //有会员卡 查看是否有单次卡 + List onceCard = cards.stream().filter(free -> + VipTypeEnum.ONCECARD.value.equals(free.getCardType()) || VipTypeEnum.PUB_ONCECARD.value.equals(free.getCardType())).collect(Collectors.toList()); + boolean canUseFree = false; + if (freeCard !=null && freeCard.size() > 0){ + for (MemberCard f : freeCard){ + if (memberEnterVenueLogService.isFreeCardUseful(f.getId())){ + canUseFree = true; + // 如果有一张可以用的免费卡就用免费卡 + useCard = f; + } + } + } + if (!canUseFree) { + if (onceCard != null && onceCard.size() > 0) + // 不能用免费卡,优先单次卡,取第一张可用的单次卡 + useCard = onceCard.get(0); + } else { + // 单次卡和免费卡都不能用,随意用一张季卡或者年卡 + useCard = cards.get(0); + } + if (useCard != null) { + //使用会员卡入场 + logger.info("用户" + member.getNickname() + "使用" + useCard.getCardType() + "入场"); + log.setMemberCardId(useCard.getId()); + log.setPayType(EnterVenuePayTypeEnum.MEMBER_CARD.value); + String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.MEMBER_CARD, BigDecimal.ZERO); + // 会员卡入场,增加记录 + createMemberMoneyLog(MoneyLogEnum.JOIN.value, venue.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.MEMBER_CARD.value, useCard.getCardType(), + venue.getId(), venue.getType()); + log.setOrderSn(orderSn); + memberEnterVenueLogService.save(log); + // 如果是单次卡,清除单次卡 + if (VipTypeEnum.ONCECARD.value.equals(useCard.getCardType()) + || VipTypeEnum.PUB_ONCECARD.value.equals(useCard.getCardType())){ + memberCardService.delete(useCard.getId()); + } + result.setBarcode("test123456"); + }else { + //查无可用会员卡 + logger.info("用户" + member.getNickname() + "您好!请先购买会员卡再进场"); + result.setCode("1"); + result.setMsg("未查询到会员卡,请先购买"); + } + }else { + //判断余额是否够 TODO 应该从入场订单里面去取 + String time = DateUtilCard.nowTime().toString(); + VenuePrice venuePrice = venuePriceService.findPrice(venueId, time); + if (memberService.isMoneyEnough(member.getId(), venuePrice.getPrice())) { + logger.info("用户" + member.getNickname() + "使用余额进场"); + String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.BALANCE, venuePrice.getPrice()); + log.setOrderSn(orderSn); + log.setPayType(EnterVenuePayTypeEnum.WEI_XIN.value); + memberEnterVenueLogService.save(log); + result.setBarcode("test123456"); + } else { + //余额不足 + logger.error("用户" + member.getNickname() + "余额不足进场失败"); + result.setCode("1"); + result.setMsg("余额不足,请先充值"); + } + } + } + return result; + } + /** * api * 查询我的会员卡 @@ -299,108 +398,6 @@ public class VenueService extends BaseServiceImpl { return StringUtils.isNotBlank(longitude) && StringUtils.isNotBlank(latitude); } - /** - * 人脸失败用户入场(篮球场) - * - * @param faceId - * @param deviceId - * @return 0成功 -1失败 - */ - @Transactional(rollbackFor = Exception.class) - public synchronized EnterResult enterVenue(Integer faceId, Integer deviceId) { - EnterResult result = new EnterResult(); - synchronized (("enter" + faceId.toString()).intern()) { - Date now = new Date(); - Device device = deviceService.findById(deviceId); - Venue venue = venueMapper.findById(device.getVenueId()); - // 查询当前时间内,场馆对应的价格 - String time = DateUtilCard.nowTime().toString(); - VenuePrice venuePrice = venuePriceService.findPrice(device.getVenueId(), time); - if (venuePrice == null) { - logger.info("场馆暂未开放"); - result.setStatus(-2); - return result; - } - if (venue.getStatus().intValue() == 1) { - logger.info(venue.getName() + "被禁用,入场失败"); - result.setStatus(-2); - return result; - } - Member member = memberService.findByFaceId(faceId); - memberService.verify(member); - if (venue == null || member == null) { - result.setStatus(-1); - return result; - } - //判断8小时之内 是否连续进场 - MemberEnterVenueLog enterVenueLog = memberEnterVenueLogService.findMemberLastLog(member.getId(), device.getVenueId()); - MemberEnterVenueLog log = new MemberEnterVenueLog(); - log.setMemberId(member.getId()); - log.setVeneuType(device.getVenueType()); - log.setVenueId(device.getVenueId()); - log.setPlatformId(member.getPlatformId()); - if (enterVenueLog != null) { - if ((now.getTime() - enterVenueLog.getCreatedTime().getTime()) <= (8 * 60 * 60 * 1000)) { - //小于8小时直接进场 - log.setOrderSn(""); - logger.info("用户:" + member.getNickname() + "小于8小时直接进场"); - memberEnterVenueLogService.save(log); - result.setStatus(0); - return result; - } - } - //进场之前 查看是否有会员卡 - List cards = memberCardService.findByMemberId(device.getVenueId(), member.getId()); - if (cards.size() > 0) { - //有会员卡 查看是否是免费卡 【// 发现这里的逻辑不是优先使用免费卡】 - MemberCard useCard = null; - for (MemberCard card : cards) { - if (!VipTypeEnum.FREECARD.value.equals(card.getCardType())) { - useCard = card; - break; - } else { - //查看该免费卡是否可用 (一天用一次) - if (memberEnterVenueLogService.isFreeCardUseful(card.getId())) { - useCard = card; - break; - } - } - } - if (useCard != null) { - //使用会员卡入场 - logger.info("用户" + member.getNickname() + "使用" + useCard.getCardType() + "入场"); - log.setMemberCardId(useCard.getId()); - log.setPayType(EnterVenuePayTypeEnum.MEMBER_CARD.value); - String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.MEMBER_CARD, venuePrice.getPrice()); - // 会员卡入场,增加记录 - createMemberMoneyLog(MoneyLogEnum.JOIN.value, venue.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.MEMBER_CARD.value, useCard.getCardType(), - venue.getId(), venue.getType()); - log.setOrderSn(orderSn); - memberEnterVenueLogService.save(log); - result.setStatus(1); - return result; - } - } - //没有会员卡 扣余额 - //判断余额是否够 - if (memberService.isMoneyEnough(member.getId(), venuePrice.getPrice())) { - logger.info("用户" + member.getNickname() + "使用余额进场"); - result.setMoney(venuePrice.getPrice()); - String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.BALANCE, venuePrice.getPrice()); - log.setOrderSn(orderSn); - log.setPayType(EnterVenuePayTypeEnum.WEI_XIN.value); - memberEnterVenueLogService.save(log); - result.setStatus(2); - return result; - } else { - //余额不足 - logger.info("用户" + member.getNickname() + "余额不足进场失败"); - result.setStatus(-2); - return result; - } - } - } - /** * 二维码入场-判断是否成功入场 * @@ -408,77 +405,7 @@ public class VenueService extends BaseServiceImpl { */ @Transactional public synchronized boolean qrCodeEnterVenue(Integer memberId, String deviceName,Integer venueId,Venue venue) { - synchronized (("enter" + memberId).intern()) { - Device device = deviceService.findByDevice(deviceName,venueId); - // 查询当前时间内,场馆对应的价格(健身房没有价格) - if (venue.getStatus().intValue() == 1) { - logger.info(venue.getName() + "被禁用,入场失败"); - return false; - } - Member member = memberService.findByMember(memberId); - memberService.verify(member); - // 记录用户进场记录 - MemberEnterVenueLog log = new MemberEnterVenueLog(); - log.setMemberId(member.getId()); - log.setVeneuType(device.getVenueType()); - log.setVenueId(device.getVenueId()); - log.setPlatformId(member.getPlatformId()); - log.setType(0); - //进场之前 查看是否有会员卡 - List cards = memberCardService.findByMemberId(device.getVenueId(), member.getId()); - if (cards.size() > 0) { - MemberCard useCard = null; - //有会员卡 查看是否有免费卡 - List freeCard = cards.stream().filter(free -> VipTypeEnum.FREECARD.value.equals(free.getCardType())).collect(Collectors.toList()); - //有会员卡 查看是否有单次卡 - List onceCard = cards.stream().filter(free -> - VipTypeEnum.ONCECARD.value.equals(free.getCardType()) || VipTypeEnum.PUB_ONCECARD.value.equals(free.getCardType())).collect(Collectors.toList()); - boolean canUseFree = false; - if (freeCard !=null && freeCard.size() > 0){ - for (MemberCard f : freeCard){ - if (memberEnterVenueLogService.isFreeCardUseful(f.getId())){ - canUseFree = true; - // 如果有一张可以用的免费卡就用免费卡 - useCard = f; - } - } - } - if (!canUseFree) { - if (onceCard != null && onceCard.size() > 0) - // 不能用免费卡,优先单次卡,取第一张可用的单次卡 - useCard = onceCard.get(0); - } else { - // 单次卡和免费卡都不能用,随意用一张季卡或者年卡 - useCard = cards.get(0); - } - if (useCard != null) { - //使用会员卡入场 - logger.info("用户" + member.getNickname() + "使用" + useCard.getCardType() + "入场"); - log.setMemberCardId(useCard.getId()); - log.setPayType(EnterVenuePayTypeEnum.MEMBER_CARD.value); - String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.MEMBER_CARD, BigDecimal.ZERO); - // 会员卡入场,增加记录 - createMemberMoneyLog(MoneyLogEnum.JOIN.value, venue.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.MEMBER_CARD.value, useCard.getCardType(), - venue.getId(), venue.getType()); - log.setOrderSn(orderSn); - memberEnterVenueLogService.save(log); - // 如果是单次卡,清除单次卡 - if (VipTypeEnum.ONCECARD.value.equals(useCard.getCardType()) - || VipTypeEnum.PUB_ONCECARD.value.equals(useCard.getCardType())){ - memberCardService.delete(useCard.getId()); - } - return true; - }else { - //查无可用会员卡 - logger.info("用户" + member.getNickname() + "您好!请先购买会员卡再进场"); - return false; - } - }else { - //没有可用会员卡 健身房也不支持扣余额 - logger.info("用户" + member.getNickname() + "您好!请先购买会员卡再进场"); - return false; - } - } + return false; } diff --git a/service/src/main/java/com/sv/service/common/FaceService.java b/service/src/main/java/com/sv/service/common/FaceService.java index 4d6eaf2..b1b7a8e 100644 --- a/service/src/main/java/com/sv/service/common/FaceService.java +++ b/service/src/main/java/com/sv/service/common/FaceService.java @@ -37,6 +37,7 @@ import java.util.ArrayList; import java.util.List; @Service +@Deprecated public class FaceService { private final Logger logger = LoggerFactory.getLogger(FaceService.class); diff --git a/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java b/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java index 89fa864..2c4ac68 100644 --- a/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java +++ b/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java @@ -43,9 +43,9 @@ public class WeiXinSendUtils implements InitializingBean { } private void getToken() { - //TODO - AccessTokenResponse accessToken = WeChatHelper.getAccessToken("wx51d82eba3f5f4858", "d28320bcb885cc208b6fde2253d8663e"); - token = accessToken.getAccessToken(); + //TODO 放开 +// AccessTokenResponse accessToken = WeChatHelper.getAccessToken("wx51d82eba3f5f4858", "d28320bcb885cc208b6fde2253d8663e"); +// token = accessToken.getAccessToken(); } @Scheduled(fixedDelay=60*60*1000)