購入処理で購入数量が予定数量に満たない場合,残り数量を買うものリストに残すように修正

feature-backend-tobuy-amount-fix
Masaharu.Kato 4 months ago
parent d74ac7995a
commit 3e16bc22d6
  1. 11
      backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
  2. 22
      backend/src/main/java/com/example/todoapp/service/ToBuysService.java

@ -47,6 +47,17 @@ public interface ToBuysRepository extends JpaRepository<ToBuys, Integer> {
*/
@Query("SELECT t FROM ToBuys t WHERE t.user.id = :userId ORDER BY t.tobuyId ASC")
List<ToBuys> findByUserIdOrderByTobuyIdAsc(@Param("userId") Long userId);
/**
* 指定された買うものIDに基づいて買うものでの数量を更新
*
* @param tobuyId 買うものID
* @param amount 買うもの数量
* @return 更新された行数
*/
@Modifying
@Query("UPDATE ToBuys t SET t.amount = :amount WHERE t.tobuyId = :tobuyId")
int updateAmountByTobuyId(Long tobuyId, int amount);
/**
* 指定された買うものIDに基づいて買うものリストを削除

@ -171,6 +171,16 @@ public class ToBuysService {
return toBuysRepository.findByUserIdOrderByTobuyIdAsc(user.getId());
}
/**
* 指定された購入リストIDに基づいて数量を変更する
*
* @param tobuyId 購入リストID
*/
@Transactional
public int updateToBuysAmountByTobuyId(Long tobuyId, int amount) {
return toBuysRepository.updateAmountByTobuyId(tobuyId, amount);
}
/**
* 指定された購入リストIDに基づいて買うものを削除する
*
@ -207,9 +217,17 @@ public class ToBuysService {
stock.setBuyDate(dto.getBuyDate());
stock.setExpDate(dto.getExpDate());
// 買うものリストから削除
// まだ買うべき数量を計算
int remainAmount = Math.max(tobuy.getAmount() - dto.getAmount(), 0);
System.out.println("remainAmount=" + remainAmount);
// 買うものリストから削除または数量変更
System.out.println("tobuy.getTobuyId()=" + tobuy.getTobuyId());
deleteToBuysByTobuyId(tobuy.getTobuyId());
if (remainAmount > 0) {
updateToBuysAmountByTobuyId(tobuy.getTobuyId(), remainAmount);
} else {
deleteToBuysByTobuyId(tobuy.getTobuyId());
}
// データベースに保存
return stocksRepository.save(stock);

Loading…
Cancel
Save