Files
pkAssistant/src/main/java/vvpkassistant/User/mapper/UserDao.java

33 lines
1.2 KiB
Java
Raw Normal View History

2025-08-01 15:10:15 +08:00
package vvpkassistant.User.mapper;
2025-08-01 13:59:30 +08:00
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
2025-08-01 13:59:30 +08:00
import org.apache.ibatis.annotations.Mapper;
2025-08-01 15:10:15 +08:00
import vvpkassistant.User.model.UserModel;
2025-08-01 13:59:30 +08:00
@Mapper
public interface UserDao extends BaseMapper<UserModel> {
// 原子扣减积分:当 points >= cost 时扣减,返回受影响行数(1=成功0=积分不足/用户不存在)
default int decreasePointsIfEnough(Integer userId, int cost) {
return update(null, Wrappers.<UserModel>lambdaUpdate()
.eq(UserModel::getId, userId)
.ge(UserModel::getPoints, cost)
.setSql("points = points - " + cost));
}
// 原子增加积分:返回受影响行数(1=成功0=用户不存在)
default int increasePoints(Integer userId, int amount) {
return update(null, Wrappers.<UserModel>lambdaUpdate()
.eq(UserModel::getId, userId)
.setSql("points = points + " + amount));
}
2025-08-01 13:59:30 +08:00
// 根据用户的手机号查询用户
default UserModel queryWithPhoneNumber(String phoneNumber) {
return selectOne(Wrappers.<UserModel>lambdaQuery()
.eq(UserModel::getMobile, phoneNumber));
}
2025-08-01 13:59:30 +08:00
}