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;
|
2026-02-08 20:18:28 +08:00
|
|
|
|
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> {
|
|
|
|
|
|
|
2026-02-26 21:53:06 +08:00
|
|
|
|
// 原子扣减积分:当 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
|
|
|
|
// 根据用户的手机号查询用户
|
2026-02-08 20:18:28 +08:00
|
|
|
|
default UserModel queryWithPhoneNumber(String phoneNumber) {
|
|
|
|
|
|
return selectOne(Wrappers.<UserModel>lambdaQuery()
|
|
|
|
|
|
.eq(UserModel::getMobile, phoneNumber));
|
|
|
|
|
|
}
|
2025-08-01 13:59:30 +08:00
|
|
|
|
|
|
|
|
|
|
}
|