diff --git a/diet-core/src/main/java/com/mathvision/diet/domain/UserDO.java b/diet-core/src/main/java/com/mathvision/diet/domain/UserDO.java index 9881c3c..30fd986 100644 --- a/diet-core/src/main/java/com/mathvision/diet/domain/UserDO.java +++ b/diet-core/src/main/java/com/mathvision/diet/domain/UserDO.java @@ -28,6 +28,6 @@ public class UserDO { @JSONField(serialize = false) public boolean isAdmin() { - return vender == null; + return vender == null || vender.getId() == null; } } \ No newline at end of file diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/DishRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/DishRepository.java index 7731fc9..5f5e38b 100644 --- a/diet-dao/src/main/java/com/mathvision/diet/repository/DishRepository.java +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/DishRepository.java @@ -4,16 +4,19 @@ import com.mathvision.diet.entity.Dish; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; +import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; public interface DishRepository extends JpaRepository, JpaSpecificationExecutor { + @Transactional long deleteByVender(Long vender); @Query("select new Dish(d.id, d.name, d.marks, d.ingredient) from Dish d where d.name like ?1 order by d.id DESC") List findByNameLikeOrderByIdDesc(String name); boolean existsByVenderAndNameAndIdNot(Long vender, String name, Long id); boolean existsByVenderAndIdIn(Long vender, Collection ids); + @Transactional long deleteByIdInAndVender(Collection ids, Long vender); @Query("select d from Dish d where d.vender = ?1 and d.id in ?2") List findByVenderAndIdIn(Long vender, Collection ids); diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/IngredientMarkRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/IngredientMarkRepository.java index 473ff9c..f1bfb8c 100644 --- a/diet-dao/src/main/java/com/mathvision/diet/repository/IngredientMarkRepository.java +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/IngredientMarkRepository.java @@ -9,7 +9,10 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.transaction.annotation.Transactional; public interface IngredientMarkRepository extends JpaRepository, JpaSpecificationExecutor { + @Transactional long deleteByIngredient(String ingredient); + + @Transactional long deleteByVender(Long vender); @Transactional @Modifying diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/MenuDishRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/MenuDishRepository.java index d01824e..28d0c13 100644 --- a/diet-dao/src/main/java/com/mathvision/diet/repository/MenuDishRepository.java +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/MenuDishRepository.java @@ -3,18 +3,23 @@ package com.mathvision.diet.repository; import com.mathvision.diet.entity.MenuDish; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; public interface MenuDishRepository extends JpaRepository, JpaSpecificationExecutor { + @Transactional long deleteByVender(Long vender); MenuDish findByMenuAndVenderAndDayAndDishAndMeal(Long menu, Long vender, Long day, Long dish, String meal); List findByMenuAndVenderAndDay(Long menu, Long vender, Long day); List findByMenuAndVender(Long menu, Long vender); MenuDish findByIdAndVender(Long id, Long vender); List findByMenu(Long menu); + @Transactional long deleteByMenuAndDayGreaterThanAndMealNotIn(Long menu, Long day, Collection meals); + @Transactional long deleteByMenuAndVender(Long menu, Long vender); + @Transactional long deleteByMenu(Long menu); } \ No newline at end of file diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/MenuRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/MenuRepository.java index 45819f6..5782237 100644 --- a/diet-dao/src/main/java/com/mathvision/diet/repository/MenuRepository.java +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/MenuRepository.java @@ -16,6 +16,7 @@ import java.util.Map; public interface MenuRepository extends JpaRepository, JpaSpecificationExecutor { List findByNutrient(Long nutrient); + @Transactional long deleteByVender(Long vender); @Query(value = "select m.id from menu m " + "where m.vender = ?1 and m.status = ?2 and (WEEKDAY(NOW()) + 1) <= m.day and now() between m.start_time and m.end_time " + @@ -42,6 +43,7 @@ public interface MenuRepository extends JpaRepository, JpaSpecificat @Modifying @Query("update Menu m set m.status = ?1, m.startTime = ?2, m.endTime = ?3, m.operate = ?4 where m.id = ?5") int updateStatusAndStartTimeAndEndTimeAndOperateById(MenuStatus status, Instant startTime, Instant endTime, String operate, Long id); + @Transactional long deleteByIdAndVender(Long id, Long vender); Menu findByIdAndVender(Long id, Long vender); diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/RoleRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/RoleRepository.java index c9a4e4d..3e2e56e 100644 --- a/diet-dao/src/main/java/com/mathvision/diet/repository/RoleRepository.java +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/RoleRepository.java @@ -26,6 +26,7 @@ public interface RoleRepository extends JpaRepository, JpaSpecificat @Query("update Role r set r.roleName = ?1, r.operate = ?2 where r.id = ?3 and r.vender = ?4 and r.roleType != '系统'") int updateRoleNameAndOperateByIdAndVenderAndRoleTypeNot(String roleName, String operate, Long id, Long vender); + @Transactional @Query("DELETE FROM Role d WHERE d.id = ?1 AND d.vender = ?2 AND ?3 != d.roleType") long deleteByIdAndVenderAndRoleTypeNot(Long id, Long vender, RoleType roleType); List findByVender(Long vender); diff --git a/diet-web/src/main/java/com/mathvision/diet/utils/JWTUtils.java b/diet-web/src/main/java/com/mathvision/diet/utils/JWTUtils.java index 83bcbcf..5f44b46 100644 --- a/diet-web/src/main/java/com/mathvision/diet/utils/JWTUtils.java +++ b/diet-web/src/main/java/com/mathvision/diet/utils/JWTUtils.java @@ -37,7 +37,7 @@ public class JWTUtils { boolean isAdmin = decodedJWT.getClaim("isAdmin").asBoolean(); String uid = decodedJWT.getClaim("uid").asString(); Long rid = decodedJWT.getClaim("rid").asLong(); - Vender vender = Vender.builder().id(decodedJWT.getClaim("vender").isMissing() ? null : decodedJWT.getClaim("vender").asLong()).build(); + Vender vender = decodedJWT.getClaim("vender").isMissing() || decodedJWT.getClaim("vender").asLong() == null ? null : Vender.builder().id(decodedJWT.getClaim("vender").isMissing() ? null : decodedJWT.getClaim("vender").asLong()).build(); List roleItems = JSON.parseArray(decodedJWT.getClaim("items").asString(), Long.class).stream().map(id -> RoleItem.builder().id(id).build()).collect(Collectors.toList()); UserDO userDO = UserDO.builder().uid(uid).roleId(rid).roleItems(roleItems).vender(vender).build(); return userDO == null || isAdmin != userDO.isAdmin() ? null : userDO;