Skip to content
This repository has been archived by the owner on Mar 4, 2022. It is now read-only.

Commit

Permalink
comment
Browse files Browse the repository at this point in the history
  • Loading branch information
itning committed Feb 12, 2020
1 parent 50238af commit 07e52ff
Show file tree
Hide file tree
Showing 8 changed files with 462 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

/**
* @author itning
Expand Down Expand Up @@ -44,4 +42,19 @@ public ResponseEntity<?> findByCommodityId(@MustUserLogin LoginUser loginUser,
Pageable pageable) {
return RestModel.ok(commentService.findByCommodityId(commodityId, pageable));
}

/**
* 新评价
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @param content 内容
* @return ResponseEntity
*/
@PostMapping("/comment")
public ResponseEntity<?> newComment(@MustUserLogin LoginUser loginUser,
@RequestParam String orderId,
@RequestParam String content) {
return RestModel.created(commentService.newComment(loginUser, orderId, content));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.sport.sportsmailserver.controller;

import com.sport.sportsmailserver.dto.LoginUser;
import com.sport.sportsmailserver.dto.RestModel;
import com.sport.sportsmailserver.security.MustUserLogin;
import com.sport.sportsmailserver.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

/**
* 订单
*
* @author itning
* @date 2020/2/12 19:02
*/
@RestController
public class OrderController {
private final OrderService orderService;

@Autowired
public OrderController(OrderService orderService) {
this.orderService = orderService;
}

/**
* 下订单
*
* @param loginUser 登录用户
* @param commodityId 商品ID
* @param count 数量
* @param address 收货地址
* @return ResponseEntity
*/
@PostMapping("/order")
public ResponseEntity<?> newOrder(@MustUserLogin LoginUser loginUser,
@RequestParam String commodityId,
@RequestParam int count,
@RequestParam String address) {
return RestModel.created(orderService.newOrder(loginUser, commodityId, count, address));
}

/**
* 获取所有订单
*
* @param loginUser 登录用户
* @param pageable 分页
* @return ResponseEntity
*/
@GetMapping("/orders")
public ResponseEntity<?> getAllOrders(@MustUserLogin LoginUser loginUser,
@RequestParam(required = false) int[] status,
@PageableDefault(
size = 20, sort = {"gmtModified"},
direction = Sort.Direction.DESC
)
Pageable pageable) {
return RestModel.ok(orderService.getAll(loginUser, status, pageable));
}

/**
* 用户删除订单
*
* @param loginUser 登录用户
* @param id 订单ID
* @return ResponseEntity
*/
@DeleteMapping("/order/{id}")
public ResponseEntity<?> delOrder(@MustUserLogin LoginUser loginUser, @PathVariable String id) {
orderService.delOrder(loginUser, id);
return RestModel.noContent();
}

/**
* 订单付款
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @return ResponseEntity
*/
@PostMapping("/order/pay")
public ResponseEntity<?> payOrder(@MustUserLogin LoginUser loginUser,
@RequestParam String orderId) {
return RestModel.created(orderService.pay(loginUser, orderId));
}

/**
* 订单发货
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @param expressInformation 快递信息
* @return ResponseEntity
*/
@PostMapping("/order/hip")
public ResponseEntity<?> hipOrder(@MustUserLogin LoginUser loginUser,
@RequestParam String orderId,
@RequestParam String expressInformation) {
return RestModel.created(orderService.ship(loginUser, orderId, expressInformation));
}

/**
* 订单确认收货
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @return ResponseEntity
*/
@PostMapping("/order/receipt")
public ResponseEntity<?> receiptOrder(@MustUserLogin LoginUser loginUser,
@RequestParam String orderId) {
return RestModel.created(orderService.receipt(loginUser, orderId));
}
}
48 changes: 48 additions & 0 deletions src/main/java/com/sport/sportsmailserver/entity/Order.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,54 @@
@Data
@Entity(name = "mail_order")
public class Order implements Serializable {
/**
* 订单状态
*/
public enum STATUS {
/**
* 0:订单已经被用户删除
*/
DEL_BY_USER(0),
/**
* 1:已下单(待付款)
*/
ORDERED(1),
/**
* 2:已付款(待发货)
*/
BUY(2),
/**
* 3:已发货(待收货)
*/
SHIP(3),
/**
* 4:已收货(待评价)
*/
RECEIPT(4),
/**
* 5:已评价(完成订单)
*/
EVALUATION(5),
/**
* 6:订单已经被商家删除
*/
DEL_BY_ADMIN(6),
/**
* 7:订单已经被商家和用户同时删除
*/
DEL_ALL(7);

private int status;

STATUS(int status) {
this.status = status;
}

public int getStatus() {
return status;
}
}

/**
* 订单ID
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

import com.sport.sportsmailserver.entity.Order;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/**
* @author itning
* @date 2020/2/11 21:19
*/
public interface OrderRepository extends JpaRepository<Order, String> {
public interface OrderRepository extends JpaRepository<Order, String>, JpaSpecificationExecutor<Order> {
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.sport.sportsmailserver.service;

import com.sport.sportsmailserver.dto.CommentDTO;
import com.sport.sportsmailserver.dto.LoginUser;
import com.sport.sportsmailserver.entity.Comment;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

Expand All @@ -19,4 +21,14 @@ public interface CommentService {
* @return 评论集合
*/
Page<CommentDTO> findByCommodityId(String commodityId, Pageable pageable);

/**
* 新评论
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @param content 内容
* @return 评论
*/
Comment newComment(LoginUser loginUser, String orderId, String content);
}
69 changes: 69 additions & 0 deletions src/main/java/com/sport/sportsmailserver/service/OrderService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.sport.sportsmailserver.service;

import com.sport.sportsmailserver.dto.LoginUser;
import com.sport.sportsmailserver.entity.Order;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

/**
* @author itning
* @date 2020/2/12 19:12
*/
public interface OrderService {
/**
* 下订单
*
* @param loginUser 登录用户
* @param commodityId 商品ID
* @param count 数量
* @param address 收货地址
* @return 新订单
*/
Order newOrder(LoginUser loginUser, String commodityId, int count, String address);

/**
* 获取所有订单
*
* @param loginUser 登录用户
* @param status 要的订单状态
* @param pageable 分页
* @return 所有订单
*/
Page<Order> getAll(LoginUser loginUser, int[] status, Pageable pageable);

/**
* 删除订单
*
* @param loginUser 登录用户
* @param orderId 订单ID
*/
void delOrder(LoginUser loginUser, String orderId);

/**
* 订单付款
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @return 订单
*/
Order pay(LoginUser loginUser, String orderId);

/**
* 订单发货
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @param expressInformation 快递信息
* @return 订单
*/
Order ship(LoginUser loginUser, String orderId, String expressInformation);

/**
* 订单确认收获
*
* @param loginUser 登录用户
* @param orderId 订单ID
* @return 订单
*/
Order receipt(LoginUser loginUser, String orderId);
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
package com.sport.sportsmailserver.service.impl;

import com.sport.sportsmailserver.dto.CommentDTO;
import com.sport.sportsmailserver.dto.LoginUser;
import com.sport.sportsmailserver.entity.Comment;
import com.sport.sportsmailserver.entity.Commodity;
import com.sport.sportsmailserver.entity.Order;
import com.sport.sportsmailserver.entity.User;
import com.sport.sportsmailserver.exception.IdNotFoundException;
import com.sport.sportsmailserver.exception.NullFiledException;
import com.sport.sportsmailserver.exception.SecurityServerException;
import com.sport.sportsmailserver.repository.CommentRepository;
import com.sport.sportsmailserver.repository.OrderRepository;
import com.sport.sportsmailserver.service.CommentService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -18,10 +28,12 @@
@Transactional(rollbackFor = Exception.class)
public class CommentServiceImpl implements CommentService {
private final CommentRepository commentRepository;
private final OrderRepository orderRepository;

@Autowired
public CommentServiceImpl(CommentRepository commentRepository) {
public CommentServiceImpl(CommentRepository commentRepository, OrderRepository orderRepository) {
this.commentRepository = commentRepository;
this.orderRepository = orderRepository;
}

@Override
Expand All @@ -40,6 +52,31 @@ public Page<CommentDTO> findByCommodityId(String commodityId, Pageable pageable)
});
}

@Override
public Comment newComment(LoginUser loginUser, String orderId, String content) {
if (StringUtils.isBlank(content)) {
throw new NullFiledException("评价内容不能为空");
}
Order order = orderRepository.findById(orderId).orElseThrow(() -> new IdNotFoundException("订单不存在"));
if (!order.getUser().getUsername().equals(loginUser.getUsername())) {
throw new SecurityServerException("操作失败", HttpStatus.FORBIDDEN);
}
if (order.getStatus() != Order.STATUS.RECEIPT.getStatus()) {
throw new SecurityServerException("重复评论或被删除", HttpStatus.BAD_REQUEST);
}
User user = new User();
user.setUsername(loginUser.getUsername());

order.setStatus(Order.STATUS.EVALUATION.getStatus());
Comment comment = new Comment();
comment.setCommodity(order.getCommodity());
comment.setUser(user);
comment.setContent(content);

orderRepository.save(order);
return commentRepository.save(comment);
}

private String generateAnonymousUserName(String username) {
if (username.length() < 2) {
username += "**";
Expand Down
Loading

0 comments on commit 07e52ff

Please sign in to comment.