魔法值

This commit is contained in:
zengtao01
2024-04-12 15:17:30 +08:00
parent 861707acd5
commit a57a7d6e93
10 changed files with 118 additions and 51 deletions

View File

@ -60,10 +60,23 @@ public interface ErrorCodeConstants {
ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_004_013_001, "订单不存在"); ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_004_013_001, "订单不存在");
ErrorCode ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_004_013_002, "订单明细不存在"); ErrorCode ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_004_013_002, "订单明细不存在");
ErrorCode RECHARGE_AMOUNT_NOT_EXISTS = new ErrorCode(1_004_013_003, "订单明细不存在"); ErrorCode RECHARGE_AMOUNT_NOT_EXISTS = new ErrorCode(1_004_013_003, "订单明细不存在");
ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_013_004, "订单明细不存在"); //ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_013_004, "订单明细不存在");
ErrorCode USER_EXPAND_NOT_EXISTS = new ErrorCode(1_004_013_005, "订单明细不存在"); ErrorCode USER_EXPAND_NOT_EXISTS = new ErrorCode(1_004_013_005, "订单明细不存在");
ErrorCode USER_PREFERENCE_NOT_EXISTS = new ErrorCode(1_004_013_006, "订单明细不存在"); ErrorCode USER_PREFERENCE_NOT_EXISTS = new ErrorCode(1_004_013_006, "订单明细不存在");
ErrorCode ALLOC_NOT_EXISTS = new ErrorCode(1_004_013_007, "订单明细不存在"); ErrorCode ALLOC_NOT_EXISTS = new ErrorCode(1_004_013_007, "订单明细不存在");
ErrorCode STORE_EVALUATE_NOT_EXISTS = new ErrorCode(1_004_013_008, "订单明细不存在"); ErrorCode STORE_EVALUATE_NOT_EXISTS = new ErrorCode(1_004_013_008, "订单明细不存在");
ErrorCode STORE_COMPLAIN_NOT_EXISTS = new ErrorCode(1_004_013_009, "订单明细不存在"); ErrorCode STORE_COMPLAIN_NOT_EXISTS = new ErrorCode(1_004_013_009, "订单明细不存在");
ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_099_000, "餐盘不存在");
ErrorCode DINING_PLATES_ALREADY_BIND = new ErrorCode(1_004_099_001, "餐盘已被绑定");
ErrorCode CARD_NOT_BIND = new ErrorCode(1_004_099_002, "请先绑定餐卡");
ErrorCode DINING_PLATES_NOT_BIND = new ErrorCode(1_004_099_003, "餐盘未绑定");
ErrorCode ORDER_ALREADY_COMPLETE = new ErrorCode(1_004_099_004, "该餐盘订单已完成,请重新绑定餐盘");
ErrorCode FACE_NOT_BIND_USER = new ErrorCode(1_004_099_005, "该人脸未绑定用户");
ErrorCode CARD_NOT_BIND_USER = new ErrorCode(1_004_099_006, "该卡未绑定用户");
ErrorCode INSUFFICIENT_BALANCE = new ErrorCode(1_004_099_007, "余额不足30元,请充值");
ErrorCode CARD_ALREADY_BIND = new ErrorCode(1_004_099_008, "卡号已绑定");
} }

View File

@ -42,12 +42,8 @@ public class BalanceDeductionJob implements JobHandler {
/** /**
* 20分钟之后自动解绑并扣款 * 20分钟之后自动解绑并扣款
*/ */
private static final Integer EXPIRATION_TIME = 1; private static final Integer EXPIRATION_TIME = 20;
/**
* 每次删除间隔的条数,如果值太高可能会造成数据库的压力过大
*/
private static final Integer DELETE_LIMIT = 100;
@Override @Override
@TenantIgnore @TenantIgnore

View File

@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper; import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
import cn.iocoder.yudao.module.member.enums.CostTypeEnum; import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.service.user.MemberUserService; import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -123,7 +124,7 @@ public class CardServiceImpl implements CardService {
@Override @Override
public BigDecimal getMoneyByUserId(Long userId) { public BigDecimal getMoneyByUserId(Long userId) {
CardDO lastCardDO = cardMapper.selectOne(Wrappers.<CardDO>lambdaQuery().eq(CardDO::getUserId, userId) CardDO lastCardDO = cardMapper.selectOne(Wrappers.<CardDO>lambdaQuery().eq(CardDO::getUserId, userId)
.orderByDesc(CardDO::getCreateTime).last("limit 1")); .orderByDesc(CardDO::getCreateTime).last(MemberConstants.LIMIT_ONE));
if (lastCardDO == null || lastCardDO.getMoney() == null) { if (lastCardDO == null || lastCardDO.getMoney() == null) {
return BigDecimal.ZERO; return BigDecimal.ZERO;
} }
@ -137,7 +138,7 @@ public class CardServiceImpl implements CardService {
*/ */
public CardDO getLastCardDO() { public CardDO getLastCardDO() {
CardDO lastCardDO = cardMapper.selectOne(Wrappers.<CardDO>lambdaQuery().eq(CardDO::getUserId, SecurityFrameworkUtils.getLoginUserId()) CardDO lastCardDO = cardMapper.selectOne(Wrappers.<CardDO>lambdaQuery().eq(CardDO::getUserId, SecurityFrameworkUtils.getLoginUserId())
.orderByDesc(CardDO::getCreateTime).last("limit 1")); .orderByDesc(CardDO::getCreateTime).last(MemberConstants.LIMIT_ONE));
return lastCardDO; return lastCardDO;
} }
@ -149,7 +150,7 @@ public class CardServiceImpl implements CardService {
@Override @Override
public AppCardMonthVO getMonthMoney(Long userId, String flag, String time) { public AppCardMonthVO getMonthMoney(Long userId, String flag, String time) {
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(MemberConstants.TIME_FORMAT);
LocalDate parse = LocalDate.parse(time, dateFormatter); LocalDate parse = LocalDate.parse(time, dateFormatter);
// 获取指定日期所在月份的第一天 // 获取指定日期所在月份的第一天

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.member.service.diningplates; package cn.iocoder.yudao.module.member.service.diningplates;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesPageReqVO;
@ -14,6 +13,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper;
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
import cn.iocoder.yudao.module.member.service.card.CardService; import cn.iocoder.yudao.module.member.service.card.CardService;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
@ -27,7 +27,7 @@ import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.DINING_PLATES_NOT_EXISTS; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
/** /**
* 餐盘 Service 实现类 * 餐盘 Service 实现类
@ -135,11 +135,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
public AppUserInfoCardVO bind(String diningPlatesNum, String cardId) { public AppUserInfoCardVO bind(String diningPlatesNum, String cardId) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery() DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
checkDiningPlates(diningPlatesDO); checkDiningPlates(diningPlatesDO);
MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.<MemberUserDO>lambdaQuery() MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.<MemberUserDO>lambdaQuery()
.eq(MemberUserDO::getCardId, cardId) .eq(MemberUserDO::getCardId, cardId)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
checkMemberUser(memberUserDO,false); checkMemberUser(memberUserDO,false);
//余额验证 //余额验证
BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId()); BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId());
@ -170,11 +170,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
public AppUserInfoCardVO bindByFace(String diningPlatesNum, Long faceId) { public AppUserInfoCardVO bindByFace(String diningPlatesNum, Long faceId) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery() DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
checkDiningPlates(diningPlatesDO); checkDiningPlates(diningPlatesDO);
MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.<MemberUserDO>lambdaQuery() MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.<MemberUserDO>lambdaQuery()
.eq(MemberUserDO::getFaceId, faceId) .eq(MemberUserDO::getFaceId, faceId)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
checkMemberUser(memberUserDO,true); checkMemberUser(memberUserDO,true);
//余额验证 //余额验证
BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId()); BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId());
@ -203,7 +203,7 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
public Boolean checkBind(String diningPlatesNum) { public Boolean checkBind(String diningPlatesNum) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery() DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
if (diningPlatesDO == null || diningPlatesDO.getUserId() == null) { if (diningPlatesDO == null || diningPlatesDO.getUserId() == null) {
return false; return false;
} }
@ -213,9 +213,9 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
public AppUserInfoCardVO appCheckBind(String diningPlatesNum) { public AppUserInfoCardVO appCheckBind(String diningPlatesNum) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery() DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
if (diningPlatesDO == null || diningPlatesDO.getUserId() == null) { if (diningPlatesDO == null || diningPlatesDO.getUserId() == null) {
throw new ServiceException(20003, "餐盘未绑定"); throw exception(DINING_PLATES_NOT_BIND);
} }
MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId()); MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId());
@ -228,29 +228,29 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
public void checkDiningPlates(DiningPlatesDO diningPlatesDO) { public void checkDiningPlates(DiningPlatesDO diningPlatesDO) {
if(diningPlatesDO == null) { if(diningPlatesDO == null) {
throw new ServiceException(20000, "餐盘不存在"); throw exception(DINING_PLATES_NOT_EXISTS);
} }
if (diningPlatesDO.getUserId() != null) { if (diningPlatesDO.getUserId() != null) {
throw new ServiceException(20001, "餐盘已被绑定"); throw exception(DINING_PLATES_ALREADY_BIND);
} }
} }
public void checkMemberUser(MemberUserDO memberUserDo,Boolean isFace) { public void checkMemberUser(MemberUserDO memberUserDo,Boolean isFace) {
if(memberUserDo == null){ if(memberUserDo == null){
if (isFace){ if (isFace){
throw new ServiceException(20005, "该人脸未绑定用户"); throw exception(FACE_NOT_BIND_USER);
}else { }else {
throw new ServiceException(20006, "该卡未绑定用户"); throw exception(CARD_NOT_BIND_USER);
} }
} }
if (StrUtil.isBlank(memberUserDo.getCardId())) { if (StrUtil.isBlank(memberUserDo.getCardId())) {
throw new ServiceException(20002, "请先绑定餐卡"); throw exception(CARD_NOT_BIND);
} }
} }
public void checkMoney(BigDecimal money) { public void checkMoney(BigDecimal money) {
if (money.compareTo(new BigDecimal("30")) < 0) { if (money.compareTo(MemberConstants.ALARM_BALANCE) < 0) {
throw new ServiceException(20007, "余额不足30元,请充值"); throw exception(INSUFFICIENT_BALANCE);
} }
} }
} }

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.member.service.orderdetail; package cn.iocoder.yudao.module.member.service.orderdetail;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO;
@ -12,6 +11,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; import cn.iocoder.yudao.module.system.api.carteen.CarteenApi;
import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto;
import cn.iocoder.yudao.module.system.api.dish.DishesApi; import cn.iocoder.yudao.module.system.api.dish.DishesApi;
@ -31,7 +31,7 @@ import java.math.RoundingMode;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ORDER_DETAIL_NOT_EXISTS; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
/** /**
* 订单明细 Service 实现类 * 订单明细 Service 实现类
@ -73,15 +73,15 @@ public class OrderDetailServiceImpl implements OrderDetailService {
//判定餐盘是否绑定 //判定餐盘是否绑定
Boolean b = diningPlatesService.checkBind(createReqVO.getDiningPlatesNum()); Boolean b = diningPlatesService.checkBind(createReqVO.getDiningPlatesNum());
if(!b){ if(!b){
throw new ServiceException(20003,"餐盘未绑定"); throw exception(DINING_PLATES_NOT_BIND);
} }
//餐盘号去获取订单 //餐盘号去获取订单
DishOrderDO dishOrderDO = dishOrderMapper.selectOne(Wrappers.<DishOrderDO>lambdaQuery().eq(DishOrderDO::getDiningPlatesNum, createReqVO.getDiningPlatesNum()) DishOrderDO dishOrderDO = dishOrderMapper.selectOne(Wrappers.<DishOrderDO>lambdaQuery().eq(DishOrderDO::getDiningPlatesNum, createReqVO.getDiningPlatesNum())
.eq(DishOrderDO::getOrderStatus, DishOrderDO.INCOMPLETE) .eq(DishOrderDO::getOrderStatus, DishOrderDO.INCOMPLETE)
.orderByDesc(DishOrderDO::getCreateTime) .orderByDesc(DishOrderDO::getCreateTime)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
if(dishOrderDO==null){ if(dishOrderDO==null){
throw new ServiceException(20004,"该餐盘订单已完成,请重新绑定餐盘"); throw exception(ORDER_ALREADY_COMPLETE);
} }
DishesRespDto dish = dishesApi.getDish(createReqVO.getDishesId()); DishesRespDto dish = dishesApi.getDish(createReqVO.getDishesId());

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.member.service.storeevaluate; package cn.iocoder.yudao.module.member.service.storeevaluate;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
@ -10,6 +9,7 @@ import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEva
import cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo.AppStoreEvaluateSaveReqVO; import cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo.AppStoreEvaluateSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO;
import cn.iocoder.yudao.module.member.dal.mysql.storeevaluate.StoreEvaluateMapper; import cn.iocoder.yudao.module.member.dal.mysql.storeevaluate.StoreEvaluateMapper;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -78,7 +78,7 @@ public class StoreEvaluateServiceImpl implements StoreEvaluateService {
StoreEvaluateDO storeEvaluateDO = storeEvaluateMapper.selectOne(Wrappers.<StoreEvaluateDO>lambdaQuery() StoreEvaluateDO storeEvaluateDO = storeEvaluateMapper.selectOne(Wrappers.<StoreEvaluateDO>lambdaQuery()
.eq(StoreEvaluateDO::getUserId, createReqVO.getUserId()) .eq(StoreEvaluateDO::getUserId, createReqVO.getUserId())
.eq(createReqVO.getStoreId() != null,StoreEvaluateDO::getStoreId,createReqVO.getStoreId()) .eq(createReqVO.getStoreId() != null,StoreEvaluateDO::getStoreId,createReqVO.getStoreId())
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
if(storeEvaluateDO == null){ if(storeEvaluateDO == null){
StoreEvaluateDO add = new StoreEvaluateDO(); StoreEvaluateDO add = new StoreEvaluateDO();
BeanUtil.copyProperties(createReqVO,add); BeanUtil.copyProperties(createReqVO,add);
@ -98,7 +98,7 @@ public class StoreEvaluateServiceImpl implements StoreEvaluateService {
StoreEvaluateDO storeEvaluateDO = storeEvaluateMapper.selectOne(Wrappers.<StoreEvaluateDO>lambdaQuery() StoreEvaluateDO storeEvaluateDO = storeEvaluateMapper.selectOne(Wrappers.<StoreEvaluateDO>lambdaQuery()
.eq(StoreEvaluateDO::getUserId, loginUserId) .eq(StoreEvaluateDO::getUserId, loginUserId)
.eq(storeId != null,StoreEvaluateDO::getStoreId,storeId) .eq(storeId != null,StoreEvaluateDO::getStoreId,storeId)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
return storeEvaluateDO; return storeEvaluateDO;
} }
} }

View File

@ -9,7 +9,6 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.*; import cn.hutool.core.util.*;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
@ -41,6 +40,7 @@ import cn.iocoder.yudao.module.member.service.card.CardService;
import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.order.OrderService;
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
import cn.iocoder.yudao.module.member.service.userexpand.UserExpandService; import cn.iocoder.yudao.module.member.service.userexpand.UserExpandService;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi; import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi;
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO; import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi;
@ -390,7 +390,7 @@ public class MemberUserServiceImpl implements MemberUserService {
public Boolean bindCard(String cardId) { public Boolean bindCard(String cardId) {
List<MemberUserDO> memberUserDOS = memberUserMapper.selectList(Wrappers.<MemberUserDO>lambdaQuery().eq(MemberUserDO::getCardId, cardId)); List<MemberUserDO> memberUserDOS = memberUserMapper.selectList(Wrappers.<MemberUserDO>lambdaQuery().eq(MemberUserDO::getCardId, cardId));
if(memberUserDOS.size()>0){ if(memberUserDOS.size()>0){
throw new ServiceException(600,"卡号已绑定"); throw exception(CARD_ALREADY_BIND);
} }
MemberUserDO memberUserDO = memberUserMapper.selectById(SecurityFrameworkUtils.getLoginUserId()); MemberUserDO memberUserDO = memberUserMapper.selectById(SecurityFrameworkUtils.getLoginUserId());
memberUserDO.setCardId(cardId); memberUserDO.setCardId(cardId);
@ -406,10 +406,8 @@ public class MemberUserServiceImpl implements MemberUserService {
@Override @Override
public List<AppNutritionDayVo> nutritionDay(String start, String end) { public List<AppNutritionDayVo> nutritionDay(String start, String end) {
List<AppNutritionDayVo> result = new ArrayList<>(); List<AppNutritionDayVo> result = new ArrayList<>();
//获取日期的订单
//String start = time+" 00:00:00"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(MemberConstants.TIME_FORMAT);
//String end = time+" 23:59:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime startTime = LocalDateTime.parse(start, formatter); LocalDateTime startTime = LocalDateTime.parse(start, formatter);
LocalDateTime endTime = LocalDateTime.parse(end, formatter); LocalDateTime endTime = LocalDateTime.parse(end, formatter);
@ -477,8 +475,8 @@ public class MemberUserServiceImpl implements MemberUserService {
//获取日期的订单 //获取日期的订单
//String newStart = start + " 00:00:00"; //String newStart = start + " 00:00:00";
//String newEnd = end + " 23:59:59"; //String newEnd = end + " 23:59:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(MemberConstants.TIME_FORMAT);
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT);
LocalDateTime startTime = LocalDateTime.parse(start, formatter); LocalDateTime startTime = LocalDateTime.parse(start, formatter);
LocalDateTime endTime = LocalDateTime.parse(end, formatter); LocalDateTime endTime = LocalDateTime.parse(end, formatter);
List<DishOrderDO> dishOrderDOS = orderService.getDishOrderByTime(startTime, endTime); List<DishOrderDO> dishOrderDOS = orderService.getDishOrderByTime(startTime, endTime);
@ -575,12 +573,12 @@ public class MemberUserServiceImpl implements MemberUserService {
//判断是否需要 科学膳食小建议 //判断是否需要 科学膳食小建议
if(Boolean.TRUE.equals(bol)){ if(Boolean.TRUE.equals(bol)){
Map<String, String> build = MapUtil.builder(new HashMap<String, String>()).build(); Map<String, String> build = MapUtil.builder(new HashMap<String, String>()).build();
if(sum<=5000){ if(sum<=MemberConstants.STANDARDS){
build.put("prompt","您本周摄入的热量不达标,饮食均衡才能保证每天活动的能量和营养素供应充足,减肥也要吃饱,吃好哦。建议多吃肉类、水果以及根茎类的蔬菜。以上建议不成为医疗建议"); build.put("prompt",MemberConstants.INSUFFICIENT_PROPOSAL);
}else if(sum<10000){ }else if(sum<MemberConstants.EXCEED_STANDARDS){
build.put("prompt","您本周摄入的热量达标,饮食均衡才能保证每天活动的能量和营养素供应充足,减肥也要吃饱,吃好哦。建议多吃谷类、水果以及根茎类的蔬菜。以上建议不成为医疗建议"); build.put("prompt",MemberConstants.STANDARDS_PROPOSAL);
}else{ }else{
build.put("prompt","您本周摄入的热量超标,饮食均衡才能保证每天活动的能量和营养素供应充足,减肥也要吃饱,吃好哦。建议多吃水果,少吃肉类以及根茎类的蔬菜。以上建议不成为医疗建议"); build.put("prompt",MemberConstants.EXCEED_PROPOSAL);
} }
maps.add(build); maps.add(build);
} }
@ -651,7 +649,7 @@ public class MemberUserServiceImpl implements MemberUserService {
MemberUserDO memberUserDO = memberUserMapper.selectById(userId); MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
if(memberUserDO == null){ if(memberUserDO == null){
throw new ServiceException(601,"用户不存在"); throw exception(USER_NOT_EXISTS);
} }
if(memberUserDO.getFaceId()!=null){ if(memberUserDO.getFaceId()!=null){
memberUserMapper.deleteFace(memberUserDO.getFaceId()); memberUserMapper.deleteFace(memberUserDO.getFaceId());

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandS
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO; import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO;
import cn.iocoder.yudao.module.member.dal.mysql.userexpand.UserExpandMapper; import cn.iocoder.yudao.module.member.dal.mysql.userexpand.UserExpandMapper;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -75,7 +76,7 @@ public class UserExpandServiceImpl implements UserExpandService {
public void updateUserExpandByuserId(Long userId, AppMemberUserUpdateReqVO reqVO) { public void updateUserExpandByuserId(Long userId, AppMemberUserUpdateReqVO reqVO) {
UserExpandDO userExpandDO = userExpandMapper.selectOne(Wrappers.<UserExpandDO>lambdaQuery() UserExpandDO userExpandDO = userExpandMapper.selectOne(Wrappers.<UserExpandDO>lambdaQuery()
.eq(UserExpandDO::getUserId, userId) .eq(UserExpandDO::getUserId, userId)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
if(userExpandDO == null){ if(userExpandDO == null){
UserExpandDO add = new UserExpandDO(); UserExpandDO add = new UserExpandDO();
BeanUtil.copyProperties(reqVO,add); BeanUtil.copyProperties(reqVO,add);
@ -91,7 +92,7 @@ public class UserExpandServiceImpl implements UserExpandService {
public UserExpandDO getUserExpandByuserId(Long userId) { public UserExpandDO getUserExpandByuserId(Long userId) {
UserExpandDO userExpandDO = userExpandMapper.selectOne(Wrappers.<UserExpandDO>lambdaQuery() UserExpandDO userExpandDO = userExpandMapper.selectOne(Wrappers.<UserExpandDO>lambdaQuery()
.eq(UserExpandDO::getUserId, userId) .eq(UserExpandDO::getUserId, userId)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
return userExpandDO; return userExpandDO;
} }
} }

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPre
import cn.iocoder.yudao.module.member.controller.app.userpreference.vo.AppUserPreferenceSaveReqVO; import cn.iocoder.yudao.module.member.controller.app.userpreference.vo.AppUserPreferenceSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userpreference.UserPreferenceDO; import cn.iocoder.yudao.module.member.dal.dataobject.userpreference.UserPreferenceDO;
import cn.iocoder.yudao.module.member.dal.mysql.userpreference.UserPreferenceMapper; import cn.iocoder.yudao.module.member.dal.mysql.userpreference.UserPreferenceMapper;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -75,7 +76,7 @@ public class UserPreferenceServiceImpl implements UserPreferenceService {
public Boolean saveOrUpdate(AppUserPreferenceSaveReqVO updateReqVO) { public Boolean saveOrUpdate(AppUserPreferenceSaveReqVO updateReqVO) {
UserPreferenceDO userPreferenceDO = userPreferenceMapper.selectOne(Wrappers.<UserPreferenceDO>lambdaQuery() UserPreferenceDO userPreferenceDO = userPreferenceMapper.selectOne(Wrappers.<UserPreferenceDO>lambdaQuery()
.eq(UserPreferenceDO::getUserId, updateReqVO.getUserId()) .eq(UserPreferenceDO::getUserId, updateReqVO.getUserId())
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
Boolean result = true; Boolean result = true;
if(userPreferenceDO == null){ if(userPreferenceDO == null){
UserPreferenceDO add = new UserPreferenceDO(); UserPreferenceDO add = new UserPreferenceDO();
@ -93,7 +94,7 @@ public class UserPreferenceServiceImpl implements UserPreferenceService {
public UserPreferenceDO getUserPreferenceByUserId(Long userId) { public UserPreferenceDO getUserPreferenceByUserId(Long userId) {
UserPreferenceDO userPreferenceDO = userPreferenceMapper.selectOne(Wrappers.<UserPreferenceDO>lambdaQuery() UserPreferenceDO userPreferenceDO = userPreferenceMapper.selectOne(Wrappers.<UserPreferenceDO>lambdaQuery()
.eq(UserPreferenceDO::getUserId, userId) .eq(UserPreferenceDO::getUserId, userId)
.last("limit 1")); .last(MemberConstants.LIMIT_ONE));
return userPreferenceDO; return userPreferenceDO;
} }
} }

View File

@ -0,0 +1,57 @@
package cn.iocoder.yudao.module.member.util;
import java.math.BigDecimal;
/**
* @author zt
* @description <description class purpose>
* @since 2024/4/12
*/
public class MemberConstants {
/**
* 报警余额
*/
public static final BigDecimal ALARM_BALANCE = new BigDecimal("30");
/**
* 时间格式
*/
public static final String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
/**
* 日期格式
*/
public static final String DATE_FORMAT = "yyyy-MM-dd";
/**
* limit
*/
public static final String LIMIT_ONE = "limit 1";
/**
* 热量达标量
*/
public static final Integer STANDARDS = 5000;
/**
* 热量超标量
*/
public static final Integer EXCEED_STANDARDS = 10000;
/**
* 热量不足建议
*/
public static final String INSUFFICIENT_PROPOSAL = "您本周摄入的热量不达标,饮食均衡才能保证每天活动的能量和营养素供应充足,减肥也要吃饱,吃好哦。建议多吃肉类、水果以及根茎类的蔬菜。以上建议不成为医疗建议";
/**
* 热量达标建议
*/
public static final String STANDARDS_PROPOSAL = "您本周摄入的热量达标,饮食均衡才能保证每天活动的能量和营养素供应充足,减肥也要吃饱,吃好哦。建议多吃谷类、水果以及根茎类的蔬菜。以上建议不成为医疗建议";
/**
* 热量超标建议
*/
public static final String EXCEED_PROPOSAL = "您本周摄入的热量超标,饮食均衡才能保证每天活动的能量和营养素供应充足,减肥也要吃饱,吃好哦。建议多吃水果,少吃肉类以及根茎类的蔬菜。以上建议不成为医疗建议";
}