朱天祥 пре 9 месеци
родитељ
комит
0c1ce3e557
58 измењених фајлова са 48 додато и 22 уклоњено
  1. BIN
      pictures/02ab31d4-b06b-4671-ba70-18c9e2119f81.png
  2. BIN
      pictures/0b72f8a7-65e6-4f95-8080-7af7513e73ce.png
  3. BIN
      pictures/0c39c303-21ee-4d4e-ac31-7f82059de935.png
  4. BIN
      pictures/1f1e33a7-ec89-42d8-bd0c-ae04d1aeb827.png
  5. BIN
      pictures/20f21a5a-ee51-4ce0-82d4-2eb8b36bf78e.png
  6. BIN
      pictures/2b03774f-edd1-40c6-8761-b1b9cb76fd0d.png
  7. BIN
      pictures/2d13f692-a37e-4128-bb3e-2768a4d8fe76.png
  8. BIN
      pictures/358350b9-28fd-4376-8ff7-089a43ae9767.png
  9. BIN
      pictures/3fded08a-e643-4c66-9c2d-329b93d9eadf.png
  10. BIN
      pictures/4029206a-5727-446d-a33d-dcf3f1607201.png
  11. BIN
      pictures/4a3a08db-1f30-4ed8-9f28-7a0e491feed2.png
  12. BIN
      pictures/500a1855-8498-4a5d-997f-824058239c77.png
  13. BIN
      pictures/54797d70-aa13-46ad-a49d-560272e32689.png
  14. BIN
      pictures/54e78461-4956-48db-9eb2-b3676329dad3.png
  15. BIN
      pictures/57ab7945-7483-43aa-b206-50ec431b2267.png
  16. BIN
      pictures/5e6b100b-694e-4549-a133-9513d35f3e11.png
  17. BIN
      pictures/5f7dc5a9-f39a-4ab5-9431-62646a775346.png
  18. BIN
      pictures/5f97a6bf-fb0c-4e46-ba1f-c587dcbdd8b2.png
  19. BIN
      pictures/6021e3eb-8fe8-420a-9edb-812bc3910d5a.png
  20. BIN
      pictures/6667ac92-2f41-455f-8c49-ff3af2544e0c.png
  21. BIN
      pictures/6fe48754-b089-440f-a1c9-6298371fae6a.png
  22. BIN
      pictures/7a5e1a42-c436-4c35-95e5-b130d7b7d916.png
  23. BIN
      pictures/7b1e52fd-674d-46ca-8288-6da81c6b5bd5.png
  24. BIN
      pictures/83570b19-1d0e-40f9-937d-f58aebfc1a3a.png
  25. BIN
      pictures/85ee1a21-d9a9-4926-9007-be4ab3271054.png
  26. BIN
      pictures/89ad8264-076e-4470-a053-b78d0271b945.png
  27. BIN
      pictures/8aa1df20-b93c-4340-b336-0b736b3af9cd.png
  28. BIN
      pictures/8c0a1a48-6483-410a-9565-02896fcdcc89.png
  29. BIN
      pictures/8f45e0d4-8606-4c62-8ff3-e27863ad9280.png
  30. BIN
      pictures/985ede9f-a38e-4c9c-94d6-11b22b272004.png
  31. BIN
      pictures/ae15d76b-d287-42c5-bdfb-6c1a9469b525.png
  32. BIN
      pictures/b099a833-feee-4b7c-8065-b33b90204493.png
  33. BIN
      pictures/b4fade07-8681-4848-a003-fcc60353e80e.png
  34. BIN
      pictures/b88a8de4-f172-43c6-93eb-d9457517c189.png
  35. BIN
      pictures/bce9c501-8ba7-4e32-a81a-f4bca06a3caa.png
  36. BIN
      pictures/d0e83aba-3ee9-41a4-9bb7-250ef742ffe5.png
  37. BIN
      pictures/d500db37-73ab-4988-99f8-39f7231f132b.png
  38. BIN
      pictures/d95e60b4-effe-44b8-b1f3-29c2556c9c9e.png
  39. BIN
      pictures/da07c6d7-42d9-48b7-8584-666446f5dcbf.png
  40. BIN
      pictures/dcbdd874-4406-4003-bf60-2e03a5b70868.png
  41. BIN
      pictures/dfdeb489-c5d8-46dd-a32a-c39d2568e25e.png
  42. BIN
      pictures/ed2aef5c-e30d-4e34-ae69-d622fe6d0da9.png
  43. BIN
      pictures/f0e5c97e-d827-4ed9-a6bc-4ab14b369292.png
  44. BIN
      pictures/f5bd42ba-1194-47f2-ba69-55e509082333.png
  45. BIN
      pictures/f6b8153f-b3e7-4f6c-889c-170a29a38c7f.png
  46. BIN
      pictures/f731135b-812e-4019-9834-05739f058abb.png
  47. BIN
      pictures/f80405a6-cfe7-460e-95a3-86c16dd1de32.png
  48. BIN
      pictures/f902d0e4-0527-49b4-a9f4-e3c5925b211a.png
  49. +2
    -0
      src/main/java/cn/edu/ecnu/stu/bookstore/component/Constants.java
  50. +4
    -2
      src/main/java/cn/edu/ecnu/stu/bookstore/mapper/OrderMapper.java
  51. +4
    -0
      src/main/java/cn/edu/ecnu/stu/bookstore/mapper/StoreMapper.java
  52. +1
    -1
      src/main/java/cn/edu/ecnu/stu/bookstore/mapper/UserMapper.java
  53. +2
    -0
      src/main/java/cn/edu/ecnu/stu/bookstore/pojo/Order.java
  54. +28
    -15
      src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java
  55. +1
    -1
      src/main/resources/application.yml
  56. +4
    -0
      src/main/resources/mapper/OrderMapper.xml
  57. +2
    -2
      src/main/resources/mapper/UserMapper.xml
  58. +0
    -1
      src/test/java/cn/edu/ecnu/stu/bookstore/BuyerTest.java

BIN
pictures/02ab31d4-b06b-4671-ba70-18c9e2119f81.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/0b72f8a7-65e6-4f95-8080-7af7513e73ce.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/0c39c303-21ee-4d4e-ac31-7f82059de935.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/1f1e33a7-ec89-42d8-bd0c-ae04d1aeb827.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/20f21a5a-ee51-4ce0-82d4-2eb8b36bf78e.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/2b03774f-edd1-40c6-8761-b1b9cb76fd0d.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/2d13f692-a37e-4128-bb3e-2768a4d8fe76.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/358350b9-28fd-4376-8ff7-089a43ae9767.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/3fded08a-e643-4c66-9c2d-329b93d9eadf.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/4029206a-5727-446d-a33d-dcf3f1607201.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/4a3a08db-1f30-4ed8-9f28-7a0e491feed2.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/500a1855-8498-4a5d-997f-824058239c77.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/54797d70-aa13-46ad-a49d-560272e32689.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/54e78461-4956-48db-9eb2-b3676329dad3.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/57ab7945-7483-43aa-b206-50ec431b2267.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/5e6b100b-694e-4549-a133-9513d35f3e11.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/5f7dc5a9-f39a-4ab5-9431-62646a775346.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/5f97a6bf-fb0c-4e46-ba1f-c587dcbdd8b2.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/6021e3eb-8fe8-420a-9edb-812bc3910d5a.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/6667ac92-2f41-455f-8c49-ff3af2544e0c.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/6fe48754-b089-440f-a1c9-6298371fae6a.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/7a5e1a42-c436-4c35-95e5-b130d7b7d916.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/7b1e52fd-674d-46ca-8288-6da81c6b5bd5.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/83570b19-1d0e-40f9-937d-f58aebfc1a3a.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/85ee1a21-d9a9-4926-9007-be4ab3271054.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/89ad8264-076e-4470-a053-b78d0271b945.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/8aa1df20-b93c-4340-b336-0b736b3af9cd.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/8c0a1a48-6483-410a-9565-02896fcdcc89.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/8f45e0d4-8606-4c62-8ff3-e27863ad9280.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/985ede9f-a38e-4c9c-94d6-11b22b272004.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/ae15d76b-d287-42c5-bdfb-6c1a9469b525.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/b099a833-feee-4b7c-8065-b33b90204493.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/b4fade07-8681-4848-a003-fcc60353e80e.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/b88a8de4-f172-43c6-93eb-d9457517c189.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/bce9c501-8ba7-4e32-a81a-f4bca06a3caa.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/d0e83aba-3ee9-41a4-9bb7-250ef742ffe5.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/d500db37-73ab-4988-99f8-39f7231f132b.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/d95e60b4-effe-44b8-b1f3-29c2556c9c9e.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/da07c6d7-42d9-48b7-8584-666446f5dcbf.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/dcbdd874-4406-4003-bf60-2e03a5b70868.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/dfdeb489-c5d8-46dd-a32a-c39d2568e25e.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/ed2aef5c-e30d-4e34-ae69-d622fe6d0da9.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/f0e5c97e-d827-4ed9-a6bc-4ab14b369292.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/f5bd42ba-1194-47f2-ba69-55e509082333.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/f6b8153f-b3e7-4f6c-889c-170a29a38c7f.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/f731135b-812e-4019-9834-05739f058abb.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/f80405a6-cfe7-460e-95a3-86c16dd1de32.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

BIN
pictures/f902d0e4-0527-49b4-a9f4-e3c5925b211a.png Прегледај датотеку

Before After
Width: 260  |  Height: 268  |  Size: 28 KiB

+ 2
- 0
src/main/java/cn/edu/ecnu/stu/bookstore/component/Constants.java Прегледај датотеку

@ -27,4 +27,6 @@ public interface Constants {
String BALANCE_ERROR = "余额不足";
String URL_PREFIX = "http://127.0.0.1:8080";
String ORDER_NON_EXIST_ERROR = "订单不存在";
String ORDER_HAS_PAID_ERROR = "订单已支付";
}

+ 4
- 2
src/main/java/cn/edu/ecnu/stu/bookstore/mapper/OrderMapper.java Прегледај датотеку

@ -12,9 +12,9 @@ import java.util.Map;
@Mapper
public interface OrderMapper {
@Insert("insert into t_order(order_id, buyer_id, from_address, to_address, price, status, store_id, create_time) values " +
@Insert("insert into t_order(order_id, buyer_id, from_address, to_address, price, status, store_id) values " +
"(#{order.orderId}, #{order.buyerId}, #{order.fromAddress}, #{order.toAddress}, #{order.price}, #{order.status.value}, " +
"#{order.storeId}, #{order.createTime})")
"#{order.storeId})")
int insert(@Param("order")Order order);
int insertOrderBook(@Param("orderId") String orderId, @Param("books") List<Map<String, Object>> books);
@ -26,4 +26,6 @@ public interface OrderMapper {
void updateOrderStatus(@Param("orderId") String orderId, @Param("status") OrderStatus status);
List<Order> select(@Param("buyerId") Integer buyerId, @Param("status") OrderStatus status);
Order selectById(@Param("orderId") String orderId);
}

+ 4
- 0
src/main/java/cn/edu/ecnu/stu/bookstore/mapper/StoreMapper.java Прегледај датотеку

@ -17,4 +17,8 @@ public interface StoreMapper {
@Insert("insert into t_store(store_id, seller_id) values(#{store.storeId}, #{store.sellerId})")
int insert(@Param("store") Store store);
@Select("select store_id, seller_id, create_time from t_store where store_id = #{storeId}")
Store getStoreById(@Param("storeId") String storeId);
}

+ 1
- 1
src/main/java/cn/edu/ecnu/stu/bookstore/mapper/UserMapper.java Прегледај датотеку

@ -32,5 +32,5 @@ public interface UserMapper {
int minusBalance(@Param("userId") int userId, @Param("price") BigDecimal price);
@Update("update t_user set balance = balance + #{addValue} where id = #{userId}")
void addFunds(@Param("userId") Integer userId,@Param("addValue") BigDecimal addValue);
void addBalance(@Param("userId") Integer userId,@Param("addValue") BigDecimal addValue);
}

+ 2
- 0
src/main/java/cn/edu/ecnu/stu/bookstore/pojo/Order.java Прегледај датотеку

@ -1,6 +1,7 @@
package cn.edu.ecnu.stu.bookstore.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -10,6 +11,7 @@ import java.sql.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Order {
private String orderId;

+ 28
- 15
src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java Прегледај датотеку

@ -4,11 +4,9 @@ import cn.edu.ecnu.stu.bookstore.component.AppException;
import cn.edu.ecnu.stu.bookstore.component.Constants;
import cn.edu.ecnu.stu.bookstore.mapper.BookMapper;
import cn.edu.ecnu.stu.bookstore.mapper.OrderMapper;
import cn.edu.ecnu.stu.bookstore.mapper.StoreMapper;
import cn.edu.ecnu.stu.bookstore.mapper.UserMapper;
import cn.edu.ecnu.stu.bookstore.pojo.Book;
import cn.edu.ecnu.stu.bookstore.pojo.Order;
import cn.edu.ecnu.stu.bookstore.pojo.OrderStatus;
import cn.edu.ecnu.stu.bookstore.pojo.User;
import cn.edu.ecnu.stu.bookstore.pojo.*;
import cn.edu.ecnu.stu.bookstore.pojo.vo.NewOrderVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@ -34,6 +32,9 @@ public class BuyerService {
private UserMapper userMapper;
@Autowired
private StoreMapper storeMapper;
@Autowired
private PasswordEncoder encoder;
@Autowired
@ -49,12 +50,16 @@ public class BuyerService {
bookMap.put((String) map.get("id"), (Integer) map.get("count"));
}
String storeId = newOrderVO.getStoreId();
Store store = storeMapper.getStoreById(storeId);
if(store == null)
throw new AppException(Constants.CLIENT_ERROR, Constants.STORE_NON_EXIST_ERROR);
buyerService.insertOrder(storeId, bookMap, bookList);
buyerService.insertOrder(store, bookMap, bookList);
}
@Transactional
public void insertOrder(String storeId, HashMap<String, Integer> bookMap, List<Map<String, Object>> bookList) {
public void insertOrder(Store store, HashMap<String, Integer> bookMap, List<Map<String, Object>> bookList) {
String storeId = store.getStoreId();
List<Book> books = bookMapper.batchSelect(storeId, bookMap.keySet());
if(books.size() != bookList.size())
throw new AppException(Constants.CLIENT_ERROR, Constants.BOOK_ERROR);
@ -73,9 +78,11 @@ public class BuyerService {
}
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String orderId = UUID.randomUUID().toString();
Order order = new Order(orderId, user.getId(), null, null, sum, OrderStatus.WAIT_PAYMENT, storeId, null);
Order order = Order.builder().orderId(orderId).buyerId(user.getId()).storeId(storeId)
.price(sum).status(OrderStatus.WAIT_PAYMENT)
.build();
orderMapper.insert(order);
orderMapper.insertOrderBook(order.getOrderId(), list);
orderMapper.insertOrderBook(orderId, list);
for (Map<String, Object> map : list) {
Book book = (Book)map.get("book");
bookMapper.minusStockLevel(book.getBookId(), (int)map.get("count"));
@ -86,23 +93,29 @@ public class BuyerService {
User user = userMapper.selectOneById(userId);
if(!encoder.matches(password, user.getPassword()))
throw new AppException(Constants.CLIENT_ERROR, Constants.PASSWORD_ERROR);
BigDecimal price = orderMapper.selectPrice(orderId);
if(price.compareTo(user.getBalance()) > 0)
Order order = orderMapper.selectById(orderId);
if(order == null)
throw new AppException(Constants.CLIENT_ERROR, Constants.ORDER_NON_EXIST_ERROR);
if(!order.getStatus().equals(OrderStatus.WAIT_PAYMENT))
throw new AppException(Constants.CLIENT_ERROR, Constants.ORDER_HAS_PAID_ERROR);
if(order.getPrice().compareTo(user.getBalance()) > 0)
throw new AppException(Constants.CLIENT_ERROR, Constants.BALANCE_ERROR);
buyerService.updateBalanceAndOrder(orderId, userId, price);
buyerService.updateBalanceAndOrder(storeMapper.getStoreById(order.getStoreId()).getSellerId(), order);
}
@Transactional
public void updateBalanceAndOrder(String orderId, Integer userId, BigDecimal price) {
orderMapper.updateOrderStatus(orderId, OrderStatus.WAIT_SEND);
userMapper.minusBalance(userId, price);
public void updateBalanceAndOrder(Integer sellerId, Order order) {
orderMapper.updateOrderStatus(order.getOrderId(), OrderStatus.WAIT_SEND);
BigDecimal price = order.getPrice();
userMapper.minusBalance(order.getBuyerId(), price);
userMapper.addBalance(sellerId, price);
}
public void addFunds(String username, String password, BigDecimal addValue) {
User user = userMapper.selectOneByName(username);
if(!encoder.matches(password, user.getPassword()))
throw new AppException(Constants.CLIENT_ERROR, Constants.PASSWORD_ERROR);
userMapper.addFunds(user.getId(), addValue);
userMapper.addBalance(user.getId(), addValue);
}

+ 1
- 1
src/main/resources/application.yml Прегледај датотеку

@ -16,6 +16,6 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
redis:
host: 106.75.98.95
host: 106.75.116.246
port: 6379
password: qwe030318

+ 4
- 0
src/main/resources/mapper/OrderMapper.xml Прегледај датотеку

@ -25,4 +25,8 @@
select order_id, buyer_id, from_address, to_address, price, status, store_id, create_time from t_order
where buyer_id = #{buyerId} and status = #{status.value}
</select>
<select id="selectById" resultMap="orderMap">
select order_id, buyer_id, from_address, to_address, price, status, store_id, create_time from t_order
where order_id = #{orderId}
</select>
</mapper>

+ 2
- 2
src/main/resources/mapper/UserMapper.xml Прегледај датотеку

@ -4,8 +4,8 @@
<mapper namespace="cn.edu.ecnu.stu.bookstore.mapper.UserMapper">
<insert id="insert" useGeneratedKeys="true">
insert into t_user(username, password, balance, address, phone)
values (#{user.username}, #{user.password}, #{user.balance}, #{user.address}, #{user.phone})
insert into t_user(username, password, address, phone)
values (#{user.username}, #{user.password}, #{user.address}, #{user.phone})
</insert>
<delete id="delete">

+ 0
- 1
src/test/java/cn/edu/ecnu/stu/bookstore/BuyerTest.java Прегледај датотеку

@ -10,7 +10,6 @@ import com.alibaba.fastjson.JSONObject;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.*;

Loading…
Откажи
Сачувај