diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java index 8d61b56d..dd5ef507 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java @@ -50,7 +50,7 @@ public class AppDiningPlatesController { @GetMapping("/checkBind") @Operation(summary = "验证餐盘绑定") public CommonResult checkBind(String diningPlatesNum) { - return success(diningPlatesService.aPPCheckBind(diningPlatesNum)); + return success(diningPlatesService.appCheckBind(diningPlatesNum)); } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java index e12b3811..51d6f4d9 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java @@ -87,5 +87,5 @@ public interface DiningPlatesService { Boolean checkBind(String diningPlatesNum); - AppUserInfoCardVO aPPCheckBind(String diningPlatesNum); + AppUserInfoCardVO appCheckBind(String diningPlatesNum); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java index d535f4be..f50009ea 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -139,38 +140,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.lambdaQuery() .eq(MemberUserDO::getCardId, cardId) .last("limit 1")); - checkMemberUser(memberUserDO); - diningPlatesDO.setUserId(memberUserDO.getId()); - diningPlatesDO.setStatus(DiningPlatesDO.USE); - diningPlatesDO.setBindingTime(LocalDateTime.now()); - int i = diningPlatesMapper.updateById(diningPlatesDO); + checkMemberUser(memberUserDO,false); + //余额验证 + BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId()); + checkMoney(money); - //创建初始订单 - DishOrderDO dishOrderDO = new DishOrderDO(); - dishOrderDO.setDiningPlatesNum(diningPlatesNum); - dishOrderDO.setOrderStatus(DishOrderDO.INCOMPLETE); - dishOrderDO.setUserId(memberUserDO.getId()); - dishOrderMapper.insert(dishOrderDO); - - //设置总价 - stringRedisTemplate.opsForValue().set(diningPlatesNum, "0"); - AppUserInfoCardVO data = new AppUserInfoCardVO(); - data.setName(memberUserDO.getNickname()); - data.setMoney(cardService.getMoneyByUserId(memberUserDO.getId())); - return data; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public AppUserInfoCardVO bindByFace(String diningPlatesNum, Long faceId) { - DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.lambdaQuery() - .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) - .last("limit 1")); - checkDiningPlates(diningPlatesDO); - MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.lambdaQuery() - .eq(MemberUserDO::getFaceId, faceId) - .last("limit 1")); - checkMemberUser(memberUserDO); diningPlatesDO.setUserId(memberUserDO.getId()); diningPlatesDO.setStatus(DiningPlatesDO.USE); diningPlatesDO.setBindingTime(LocalDateTime.now()); @@ -187,7 +161,42 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { stringRedisTemplate.opsForValue().set(diningPlatesNum, "0"); AppUserInfoCardVO data = new AppUserInfoCardVO(); data.setName(memberUserDO.getNickname()); - data.setMoney(cardService.getMoneyByUserId(memberUserDO.getId())); + data.setMoney(money); + return data; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public AppUserInfoCardVO bindByFace(String diningPlatesNum, Long faceId) { + DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.lambdaQuery() + .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) + .last("limit 1")); + checkDiningPlates(diningPlatesDO); + MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.lambdaQuery() + .eq(MemberUserDO::getFaceId, faceId) + .last("limit 1")); + checkMemberUser(memberUserDO,true); + //余额验证 + BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId()); + checkMoney(money); + + diningPlatesDO.setUserId(memberUserDO.getId()); + diningPlatesDO.setStatus(DiningPlatesDO.USE); + diningPlatesDO.setBindingTime(LocalDateTime.now()); + diningPlatesMapper.updateById(diningPlatesDO); + + //创建初始订单 + DishOrderDO dishOrderDO = new DishOrderDO(); + dishOrderDO.setDiningPlatesNum(diningPlatesNum); + dishOrderDO.setOrderStatus(DishOrderDO.INCOMPLETE); + dishOrderDO.setUserId(memberUserDO.getId()); + dishOrderMapper.insert(dishOrderDO); + + //设置总价 + stringRedisTemplate.opsForValue().set(diningPlatesNum, "0"); + AppUserInfoCardVO data = new AppUserInfoCardVO(); + data.setName(memberUserDO.getNickname()); + data.setMoney(money); return data; } @Override @@ -201,7 +210,7 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { return true; } @Override - public AppUserInfoCardVO aPPCheckBind(String diningPlatesNum) { + public AppUserInfoCardVO appCheckBind(String diningPlatesNum) { DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.lambdaQuery() .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) .last("limit 1")); @@ -226,12 +235,22 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { } } - public void checkMemberUser(MemberUserDO memberUserDO) { - if(memberUserDO == null){ - throw new ServiceException(20005, "该人脸未绑定用户"); + public void checkMemberUser(MemberUserDO memberUserDo,Boolean isFace) { + if(memberUserDo == null){ + if (isFace){ + throw new ServiceException(20005, "该人脸未绑定用户"); + }else { + throw new ServiceException(20006, "该卡未绑定用户"); + } } - if (StrUtil.isBlank(memberUserDO.getCardId())) { + if (StrUtil.isBlank(memberUserDo.getCardId())) { throw new ServiceException(20002, "请先绑定餐卡"); } } + + public void checkMoney(BigDecimal money) { + if (money.compareTo(new BigDecimal("30")) < 0) { + throw new ServiceException(20007, "余额不足30元,请充值"); + } + } } \ No newline at end of file