image.png

    1. <html lang="en">
    2. <head><title>snackMachine</title></head>
    3. <body>
    4. <table style="width:100%">
    5. <tr>
    6. <td><span>Chocolate price:$<span id="chocolatePrice"></span></span>
    7. </td>
    8. <td><span>Soda price:$<span id="sodaPrice"></span></span></td>
    9. <td><span>Gum price:$<span id="gumPrice"></span></span></td>
    10. </tr>
    11. <tr>
    12. <td><span>Chocolate quantity:<span id="chocolateQuantity"></span>
    13. </span></td>
    14. <td><span>Soda quantity:<span id="sodaQuantity"></span></span></td>
    15. <td><span>Gum quantity:<span id="gumQuantity"></span></span></td>
    16. </tr>
    17. <tr>
    18. <td>
    19. <button id="btnBuyChocolate">Buy a Chocolate</button>
    20. </td>
    21. <td>
    22. <button id="btnBuySoda">Buy a Soda</button>
    23. </td>
    24. <td>
    25. <button id="btnBuyGum">Buy a Gum</button>
    26. </td>
    27. </tr>
    28. <tr>
    29. </table>
    30. </br>
    31. </br>
    32. </br>
    33. <span>Money inserted :$<span id="moneyInserted"></span></span>
    34. </br>
    35. <table style="width:100%">
    36. </tr>
    37. <td>
    38. <button id="btnInsertCent">Insert 1 cent coin</button>
    39. </td>
    40. <td>
    41. <button id="btnInsertTenCent">Insert 10 cent coin</button>
    42. </td>
    43. <td>
    44. <button id="btnInsertQuarter">Insert 25 cent coin</button>
    45. </td>
    46. </tr>
    47. </tr>
    48. <td>
    49. <button id="btnInsertDollar">Insert 1 dollar note</button>
    50. </td>
    51. <td>
    52. <button id="btnInsertFiveDollar">Insert 5 dollar note</button>
    53. </td>
    54. <td>
    55. <button id="btnInsertTwentyDollar">Insert 20 dollar
    56. note
    57. </button>
    58. </td>
    59. </tr>
    60. </table>
    61. </br>
    62. </br>
    63. <button id="btnReturnMoney">Return Money</button>
    64. </br>
    65. </br>
    66. </br>
    67. <div>No of coins and notes in Snack machine :</div>
    68. <table style="width:100%">
    69. </tr>
    70. <td>No. of 1 cent coin : <span id="cent"></span></td>
    71. <td>No. of 10 cent coin : <span id="tenCent"></span></td>
    72. <td>No. of 25 cent coin : <span id="quarter"></span></td>
    73. </tr>
    74. </tr>
    75. <td>No. of 1 dollar note : <span id="dollar"></span></td>
    76. <td>No. of 5 dollar note : <span id="fiveDollar"></span></td>
    77. <td>No. of 20 dollar note : <span id="twentyDollar"></span></td>
    78. </tr>
    79. </table>
    80. <script src="../common/jquery-3.6.0.min.js"></script>
    81. <script src="snackMachine.js"></script>
    82. </body>
    83. </html>
    1. let searchParams = new URLSearchParams(window.location.search)
    2. let param = '';
    3. if (searchParams.has('id')) {
    4. param = searchParams.get('id')
    5. } else {
    6. param = '1';
    7. }
    8. const rootURI = "http://localhost:23333/snackmachines/" + param;
    9. getSnackMachine();
    10. function getSnackMachine() {
    11. $.get(rootURI, function (data, status) {
    12. console.log(data);
    13. $('#moneyInserted').html(data.moneyInTransaction);
    14. $('#chocolatePrice').html(data.slotDtoList[0].price);
    15. $('#sodaPrice').html(data.slotDtoList[1].price);
    16. $('#gumPrice').html(data.slotDtoList[2].price);
    17. $('#chocolateQuantity').html(data.slotDtoList[0].quantity);
    18. $('#sodaQuantity').html(data.slotDtoList[1].quantity);
    19. $('#gumQuantity').html(data.slotDtoList[2].quantity);
    20. $('#cent').html(data.oneCentCount);
    21. $('#tenCent').html(data.tenCentCount);
    22. $('#quarter').html(data.quarterCount);
    23. $('#dollar').html(data.oneDollarCount);
    24. $('#fiveDollar').html(data.fiveDollarCount);
    25. $('#twentyDollar').html(data.twentyDollarCount);
    26. });
    27. }
    28. $("button").click(function () {
    29. switch (this.id) {
    30. case "btnInsertCent" :
    31. insert("Cent")
    32. break;
    33. case "btnInsertTenCent" :
    34. insert("TenCent")
    35. break;
    36. case "btnInsertQuarter" :
    37. insert("Quarter")
    38. break;
    39. case "btnInsertDollar" :
    40. insert("Dollar")
    41. break;
    42. case "btnInsertFiveDollar" :
    43. insert("FiveDollar")
    44. break;
    45. case "btnInsertTwentyDollar" :
    46. insert("TwentyDollar")
    47. break;
    48. case "btnReturnMoney" :
    49. returnMoney()
    50. break;
    51. case "btnBuyChocolate" :
    52. buy("1")
    53. break;
    54. case "btnBuySoda" :
    55. buy("2")
    56. break;
    57. case "btnBuyGum" :
    58. buy("3")
    59. break;
    60. default :
    61. break;
    62. }
    63. });
    64. function insert(coinOrNote) {
    65. $.ajax({
    66. url: rootURI + '/moneyInTransaction/' + coinOrNote,
    67. type: 'PUT',
    68. success: function (result) {
    69. }
    70. });
    71. location.reload();
    72. }
    73. function returnMoney() {
    74. $.ajax({
    75. url: rootURI + '/moneyInTransaction',
    76. type: 'PUT',
    77. success: function (result) {
    78. }
    79. });
    80. location.reload();
    81. }
    82. function buy(position) {
    83. $.ajax({
    84. url: rootURI + '/' + position,
    85. type: 'PUT',
    86. success: function (result) {
    87. }
    88. });
    89. location.reload();
    90. }
    1. package com.lugew.springbootddd;
    2. import com.lugew.springbootddd.snackmachine.SnackMachine;
    3. import lombok.RequiredArgsConstructor;
    4. import org.springframework.web.bind.annotation.*;
    5. import java.util.ArrayList;
    6. import java.util.List;
    7. import static com.lugew.springbootddd.snackmachine.Money.*;
    8. /**
    9. * @author 夏露桂
    10. * @since 2021/6/10 11:55
    11. */
    12. @RestController
    13. @RequestMapping("snackmachines")
    14. @RequiredArgsConstructor
    15. public class SnackMachineController {
    16. private final SnackMachineRepository snackMachineRepository;
    17. @GetMapping()
    18. @ResponseBody
    19. public List<SnackMachineDto> getSnackMachines() {
    20. List<SnackMachineDto> list = new ArrayList<>();
    21. snackMachineRepository.findAll().forEach(list::add);
    22. return list;
    23. }
    24. @GetMapping("/{id}")
    25. @ResponseBody
    26. public SnackMachineDto getSnackMachine(@PathVariable("id") long id) {
    27. return snackMachineRepository.findById(id).orElse(null);
    28. }
    29. @PutMapping("/{id}/moneyInTransaction/{coinOrNote}")
    30. public void insertCoinOrNote(@PathVariable("id") long id, @PathVariable("coinOrNote") String coinOrNote) {
    31. SnackMachineDto snackMachineDto =
    32. snackMachineRepository.findById(id).orElse(null);
    33. SnackMachine snackMachine = snackMachineDto.convertToSnackMachine();
    34. if (coinOrNote.equalsIgnoreCase("Cent")) snackMachine.insertMoney(Cent);
    35. else if (coinOrNote.equalsIgnoreCase("TenCent"))
    36. snackMachine.insertMoney(TenCent);
    37. else if (coinOrNote.equalsIgnoreCase("Quarter"))
    38. snackMachine.insertMoney(Quarter);
    39. else if (coinOrNote.equalsIgnoreCase("Dollar"))
    40. snackMachine.insertMoney(Dollar);
    41. else if (coinOrNote.equalsIgnoreCase("FiveDollar"))
    42. snackMachine.insertMoney(FiveDollar);
    43. else if (coinOrNote.equalsIgnoreCase("TwentyDollar"))
    44. snackMachine.insertMoney(TwentyDollar);
    45. snackMachineRepository.save(snackMachine.convertToSnackMachineDto());
    46. }
    47. @PutMapping("/{id}/moneyInTransaction")
    48. public void returnMoney(@PathVariable("id") long id) {
    49. SnackMachineDto snackMachineDto =
    50. snackMachineRepository.findById(id).orElse(null);
    51. SnackMachine snackMachine = snackMachineDto.convertToSnackMachine();
    52. snackMachine.returnMoney();
    53. snackMachineRepository.save(snackMachine.convertToSnackMachineDto());
    54. }
    55. @PutMapping("/{id}/{slotNumber}")
    56. public void buySnack(@PathVariable("id") long id, @PathVariable("slotNumber")
    57. int slotNumber) {
    58. SnackMachineDto snackMachineDto =
    59. snackMachineRepository.findById(id).orElse(null);
    60. SnackMachine snackMachine = snackMachineDto.convertToSnackMachine();
    61. snackMachine.buySnack(slotNumber);
    62. snackMachineRepository.save(snackMachine.convertToSnackMachineDto());
    63. }
    64. }

    image.png