Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 100 additions & 9 deletions scratch_user.http
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### 회원 가입 ( 유저 )
### 회원 가입 ( 유저1 )
POST http://localhost:8080/sign-up/user
Content-Type: application/json

Expand All @@ -11,7 +11,21 @@ Content-Type: application/json
"userId": "user"
}

### 로그인 ( 유저 )

### 회원 가입 ( 유저2 )
POST http://localhost:8080/sign-up/user
Content-Type: application/json

{
"email": "second@naver.com",
"name": "name",
"nickName": "nickname",
"password": 1,
"phone": "010-8888-8888",
"userId": "second"
}

### 로그인 ( 유저1 )
POST http://localhost:8080/sign-in/user
Content-Type: application/json

Expand All @@ -20,36 +34,113 @@ Content-Type: application/json
"userId": "user"
}

### 로그인 ( 유저2 )
POST http://localhost:8080/sign-in/user
Content-Type: application/json

{
"password": 1,
"userId": "second"
}

### 회원 정보 조회 ( 유저 )
GET http://localhost:8080/user/get-info
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg0NzgwODc4LCJleHAiOjE2ODQ4NjcyNzh9.RRmPsfyOTOaNAhDmj46My2N4g5hRB8iM8c3ynxPCJoQ
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1ODg3MTU1LCJleHAiOjE2ODU5NzM1NTV9.-1tGp4hFzX6WCEEhv-mC2QCeCXcozaK56rGj0Grw5Bg

### 잔액 변경 ( 유저 )
POST http://localhost:8080/user/balance
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg0NzgwMTA4LCJleHAiOjE2ODQ4NjY1MDh9.Hxl9-D34o91lcmQC40lbbQrghovwkp_24-EU6Sf78yQ
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1ODg3MTU1LCJleHAiOjE2ODU5NzM1NTV9.-1tGp4hFzX6WCEEhv-mC2QCeCXcozaK56rGj0Grw5Bg

{
"from": "admin",
"message": "잔액변경",
"money": 1000
}

### 회원 정보수정 (유저)
PUT http://localhost:8080/user/
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1ODg3MTU1LCJleHAiOjE2ODU5NzM1NTV9.-1tGp4hFzX6WCEEhv-mC2QCeCXcozaK56rGj0Grw5Bg

{
"email": "string",
"name": "string",
"nickName": "string",
"password": "string",
"phone": "string",
"profile": "string"
}



### 회원 삭제 ( 유저 )
DELETE http://localhost:8080/user/
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1ODkwMDIyLCJleHAiOjE2ODU5NzY0MjJ9.XYJETzVqfSAEy1lo_FGunAF7pzrJMnByo19cTcy94Z4

### 역옥션 등록( 유저 )
POST http://localhost:8080/auction
Content-Type: application/json
X-AUTH-TOKEN:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg0OTU3MTE5LCJleHAiOjE2ODUwNDM1MTl9.jWJ4Qi0W3HKnlw5kLRyjFQLekuC98aVNCdbAiaO0Imc
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1OTAzOTU1LCJleHAiOjE2ODU5OTAzNTV9.AGXRkXQLTS3yJC8RoforQi9zAQbdzTIJxq_AY3bsmOM

{
"auctionCategory": "BAGS",
"auctionDescription": "string",
"auctionPrice": 1000,
"auctionQty": 10,
"auctionTitle": "켈비클라인가방"
}

### 역옥션 수정( 유저 )
PUT http://localhost:8080/auction
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1OTAzOTU1LCJleHAiOjE2ODU5OTAzNTV9.AGXRkXQLTS3yJC8RoforQi9zAQbdzTIJxq_AY3bsmOM

{
"auctionCategory": "BAGS",
"auction_description": "string",
"auction_price": 1000,
"auction_qty": 1,
"auction_title": "켈빈클라인 가방"
"auctionNumber": 1,
"auctionDescription": "string",
"auctionPrice": 10000,
"auctionQty": 10,
"auctionTitle": "string"
}

### 역옥션 삭제( 유저 )
DELETE http://localhost:8080/auction
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1ODU5Nzc1LCJleHAiOjE2ODU5NDYxNzV9.1NH1T33X5iX0B4J054mVOTXWcZhhWi7KSS4A2JMVg2s

{
"auctionNumber": 1
}


### 입찰 ( 유저 )

< {%
request.variables.set("number", "1")
%}

POST http://localhost:8080/bid/auction/{{number}}
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1OTAzOTU1LCJleHAiOjE2ODU5OTAzNTV9.AGXRkXQLTS3yJC8RoforQi9zAQbdzTIJxq_AY3bsmOM

{
"bid_record": 999999,
"conditions": "NEW",
"description": "새거입니다."
}


### 입찰 취소( 유저 )
DELETE http://localhost:8080/bid/
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ6Q0diclhScGJ3cmU1MFU5eVNmM2VBPT0iLCJqdGkiOiJTdWJIZUtVUlJyZVFZK1dTT25Ca3RnPT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1OTA0NDE4LCJleHAiOjE2ODU5OTA4MTh9.8F1fuLZvVaJt9KT6JVXS7E88CGEeZj4_rlALnfrk12o

{
"id": 6
}

#####################################
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
package com.example.wantedmarket.config;

import static com.example.wantedmarket.exception.ErrorCode.NOT_FOUND_USER;

import com.example.wantedmarket.exception.CustomException;
import com.example.wantedmarket.user.domain.common.UserVo;
import com.example.wantedmarket.user.domain.common.UserType;
import com.example.wantedmarket.user.domain.model.User;
import com.example.wantedmarket.user.domain.service.UserService;
import com.example.wantedmarket.util.Aes256Util;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.Objects;
import org.springframework.beans.factory.annotation.Autowired;

public class JwtAuthenticationProvider {

private String secretKey = "secretKey";
private long tokenValidTime = 1000L * 60 * 60 * 24;
private UserService userService;

@Autowired
public void setUserService(UserService userService){
this.userService = userService;
}


public String createToken(String userPk, Long id, UserType userType){
Claims claims = Jwts.claims().setSubject(Aes256Util.encrypt(userPk))
Expand All @@ -40,8 +53,14 @@ public boolean validateToken(String jwtToken){
public UserVo getUserVo(String token){
Claims c = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token)
.getBody();
return new UserVo(Long.valueOf(Objects.requireNonNull(Aes256Util
UserVo userVo = new UserVo(Long.valueOf(Objects.requireNonNull(Aes256Util
.decrypt(c.getId()))), Aes256Util.decrypt(c.getSubject()));

if(!userService.validUser(userVo.getUserId()).getActive()){
throw new CustomException(NOT_FOUND_USER);
}

return userVo;
}

}
10 changes: 9 additions & 1 deletion src/main/java/com/example/wantedmarket/exception/ErrorCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,15 @@ public enum ErrorCode {
NOT_ENOUGH_BALANCE(HttpStatus.BAD_REQUEST, "잔액이 부족합니다."),

// auction
NOT_FOUND_AUCTION(HttpStatus.BAD_REQUEST,"입찰 실패 : 해당 역경매 글이 존재하지 않습니다.");

NOT_ENOUGH_QTY(HttpStatus.BAD_REQUEST, "등록 실패 : 수량은 1개 이상부터 등록이 가능합니다."),
NOT_ENOUGH_PRICE(HttpStatus.BAD_REQUEST, "등록 실패 : 가격은 0원 이상부터 등록이 가능합니다."),

// bid
NOT_FOUND_AUCTION(HttpStatus.BAD_REQUEST,"입찰 실패 : 해당 역경매 글이 존재하지 않습니다."),
HIGH_BID_PRICE(HttpStatus.BAD_REQUEST,"입찰 실패 : 요청 입찰 가격이 현재 최저 입찰가보다 높습니다."),
NOT_FOUND_BID(HttpStatus.BAD_REQUEST,"삭제 실패 : 입찰 가격 삭제가 실패하였습니다.");

private final HttpStatus httpStatus;
private final String detail;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

public enum AuctionCategory {
CLOTHES, SHOES, ELECTRONICS, BAGS, COMPUTERS, COSMETICS, BOOKS, FURNITURE,
INFORMATION, Education, FOODS, TIME, CAMPING, CARS, BICYCLES, WATCHES,
INFORMATION, EDUCATION, FOODS, TIME, CAMPING, CARS, BICYCLES, WATCHES,
MEDICINES, STATIONARY;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.example.wantedmarket.order.domain.common;

public enum Conditions {
NEW, USED_LIKE_NEW, USED_VERY_GOOD, USED_GOOD, USED_ACCEPTABLE, USED_DAMAGED;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,19 @@

import com.example.wantedmarket.config.JwtAuthenticationProvider;
import com.example.wantedmarket.order.domain.controller.dto.AuctionDto;
import com.example.wantedmarket.order.domain.model.Auction;
import com.example.wantedmarket.order.domain.controller.dto.DeleteAuctionForm;
import com.example.wantedmarket.order.domain.controller.dto.UpdateAuctionForm;
import com.example.wantedmarket.order.domain.service.AuctionService;
import com.example.wantedmarket.user.domain.common.UserVo;
import com.example.wantedmarket.user.domain.user.ChangeBalanceForm;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/auction")
Expand All @@ -28,4 +31,19 @@ public ResponseEntity<AuctionDto> post(@RequestHeader(name = "X-AUTH-TOKEN") Str
UserVo vo = provider.getUserVo(token);
return ResponseEntity.ok(AuctionDto.from(auctionService.postAuction(vo.getUserId(),dto)));
}

@PutMapping
public ResponseEntity<AuctionDto> put(@RequestHeader(name = "X-AUTH-TOKEN") String token,
@RequestBody UpdateAuctionForm dto){
UserVo vo = provider.getUserVo(token);
return ResponseEntity.ok(AuctionDto.from(auctionService.modifyAuction(vo.getUserId(), dto)));
}

@DeleteMapping
public ResponseEntity<?> delete(@RequestHeader(name = "X-AUTH-TOKEN") String token,
@RequestBody DeleteAuctionForm dto){
UserVo vo = provider.getUserVo(token);
auctionService.deleteAuction(vo.getUserId(), dto);
return ResponseEntity.ok().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@

import com.example.wantedmarket.config.JwtAuthenticationProvider;
import com.example.wantedmarket.order.domain.controller.dto.BidDto;
import com.example.wantedmarket.order.domain.controller.dto.BidForm;
import com.example.wantedmarket.order.domain.controller.dto.DeleteAuctionForm;
import com.example.wantedmarket.order.domain.controller.dto.DeleteBidForm;
import com.example.wantedmarket.order.domain.model.Bid;
import com.example.wantedmarket.order.domain.service.BidService;
import com.example.wantedmarket.user.domain.common.UserVo;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
Expand All @@ -26,9 +30,16 @@ public class BidContorller {
@PostMapping("/auction/{number}")
public ResponseEntity<BidDto> bidding(@RequestHeader(name = "X-AUTH-TOKEN") String token,
@PathVariable Long number,
@RequestParam(value = "bidding price")Long bid) {
@RequestBody BidForm dto) {
UserVo vo = provider.getUserVo(token);
return ResponseEntity.ok(BidDto.from(bidService.bidSave(vo.getUserId(), number, bid)));
return ResponseEntity.ok(BidDto.from(bidService.bidSave(vo.getUserId(), number, dto.toService())));
}

@DeleteMapping
public void deleteBid(@RequestHeader(name = "X-AUTH-TOKEN") String token,
@RequestBody DeleteBidForm form){
UserVo vo = provider.getUserVo(token);
bidService.bidDelete(vo.getUserId(), form);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,17 @@
@Builder
public class AuctionDto {
@ApiModelProperty(hidden = true)
private String user_id;
private String userId;
private AuctionCategory auctionCategory;
private Long auction_price;
private String auction_title;
private Long auction_qty;
private String auction_description;
private Long auctionPrice;
private String auctionTitle;
private Long auctionQty;
private String auctionDescription;


public static AuctionDto from(Auction auction){
return new AuctionDto(auction.getUser_id(), auction.getAuctionCategory(),
auction.getAuction_price(), auction.getAuction_title(),
auction.getAuction_qty(), auction.getAuction_description());
return new AuctionDto(auction.getUserId(), auction.getAuctionCategory(),
auction.getAuctionPrice(), auction.getAuctionTitle(),
auction.getAuctionQty(), auction.getAuctionDescription());
}




}
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
package com.example.wantedmarket.order.domain.controller.dto;

import com.example.wantedmarket.order.domain.common.Conditions;
import com.example.wantedmarket.order.domain.model.Auction;
import com.example.wantedmarket.order.domain.model.Bid;
import com.example.wantedmarket.user.domain.model.User;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Builder
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class BidDto {
private Long auctionId;
private Long bid_record;
private User user;
private Auction auction;
private Conditions conditions;
private String description;

public static BidDto from(Bid bid){
return new BidDto(bid.getBid_record(), bid.getUser(), bid.getAuction());
return BidDto.builder()
.auctionId(bid.getAuction().getAuctionNumber())
.bid_record(bid.getBid_record())
.conditions(bid.getConditions())
.description(bid.getDescription())
.build();
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.example.wantedmarket.order.domain.controller.dto;

import com.example.wantedmarket.order.domain.common.Conditions;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class BidForm {
private Long bid_record;
private Conditions conditions;
private String description;

public BidForm toService(){
return new BidForm(bid_record, conditions, description);
}
}
Loading