diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberRightsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberRightsServiceImpl.java index 025933b..bba8d33 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberRightsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberRightsServiceImpl.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -100,14 +101,21 @@ public class MemberRightsServiceImpl extends ServiceImpl rights = list(lambdaQueryWrapper); + //取出最大值 + if (!rights.isEmpty()) { + List maxRights = getRightsValueZeroOrMax(rights); + MemberRights max = maxRights.get(0); + if (!("02".equals(max.getRightsType()) && max.getRightsValue() == 0)) { + int result = max.getRemaining() - deplete; + if (result == 0) { + throw new Exception("今日次数已达上限"); + } + max.setRemaining(result); + updateById(max); } - rights.setRemaining(result); - updateById(rights); + } else { + throw new Exception("未查询到权限"); } } catch (Exception e) { throw new Exception(e.getMessage()); @@ -115,6 +123,35 @@ public class MemberRightsServiceImpl extends ServiceImpl + **/ + private List getRightsValueZeroOrMax(List rights) { + // 先找 rightsValue==0 的数据 + List zeroList = rights.stream() + .filter(r -> r.getRightsValue() == 0) + .collect(Collectors.toList()); + + if (!zeroList.isEmpty()) { + // 有 0 的返回所有 0 的数据 + return zeroList; + } + + // 没 0,再找最大值 + int max = rights.stream() + .mapToInt(MemberRights::getRightsValue) + .max() + .orElse(Integer.MIN_VALUE); + + return rights.stream() + .filter(r -> r.getRightsValue() == max) + .collect(Collectors.toList()); + } + /** * 定时任务重置剩余值 *