This commit is contained in:
zengtao01
2024-04-11 16:29:19 +08:00
parent 17f4e5ee78
commit 45f0373541
3 changed files with 58 additions and 39 deletions

View File

@ -50,7 +50,7 @@ public class AppDiningPlatesController {
@GetMapping("/checkBind")
@Operation(summary = "验证餐盘绑定")
public CommonResult<AppUserInfoCardVO> checkBind(String diningPlatesNum) {
return success(diningPlatesService.aPPCheckBind(diningPlatesNum));
return success(diningPlatesService.appCheckBind(diningPlatesNum));
}
}

View File

@ -87,5 +87,5 @@ public interface DiningPlatesService {
Boolean checkBind(String diningPlatesNum);
AppUserInfoCardVO aPPCheckBind(String diningPlatesNum);
AppUserInfoCardVO appCheckBind(String diningPlatesNum);
}

View File

@ -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.<MemberUserDO>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.<DiningPlatesDO>lambdaQuery()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
.last("limit 1"));
checkDiningPlates(diningPlatesDO);
MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.<MemberUserDO>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.<DiningPlatesDO>lambdaQuery()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
.last("limit 1"));
checkDiningPlates(diningPlatesDO);
MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.<MemberUserDO>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.<DiningPlatesDO>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元,请充值");
}
}
}