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
82 changes: 73 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,86 @@ 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.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1ODU5OTEwLCJleHAiOjE2ODU5NDYzMTB9.4zQXp3peOCB4YOeD-wpeDTtTuASe4qbkTC-Divnj570

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

### 역옥션 수정( 유저 )
PUT http://localhost:8080/auction
Content-Type: application/json
X-AUTH-TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkNFdqdHRxUzZteHEzYmF5Qm1paldBPT0iLCJqdGkiOiJDbVlEdjVNSzVZVXlpazhLR05Ed293PT0iLCJyb2xlcyI6IkNVU1RPTUVSIiwiaWF0IjoxNjg1ODU5OTEwLCJleHAiOjE2ODU5NDYzMTB9.4zQXp3peOCB4YOeD-wpeDTtTuASe4qbkTC-Divnj570

{
"auctionCategory": "BAGS",
"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
}

#####################################
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;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ public enum ErrorCode {
NOT_ENOUGH_BALANCE(HttpStatus.BAD_REQUEST, "잔액이 부족합니다."),

// auction
NOT_FOUND_AUCTION(HttpStatus.BAD_REQUEST,"입찰 실패 : 해당 역경매 글이 존재하지 않습니다.");
NOT_FOUND_AUCTION(HttpStatus.BAD_REQUEST,"입찰 실패 : 해당 역경매 글이 존재하지 않습니다."),
NOT_ENOUGH_QTY(HttpStatus.BAD_REQUEST, "등록 실패 : 수량은 1개 이상부터 등록이 가능합니다."),
NOT_ENOUGH_PRICE(HttpStatus.BAD_REQUEST, "등록 실패 : 가격은 0원 이상부터 등록이 가능합니다.");

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
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 @@ -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
@@ -0,0 +1,14 @@
package com.example.wantedmarket.order.domain.controller.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DeleteAuctionForm {
private Long auctionNumber;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.example.wantedmarket.order.domain.controller.dto;

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

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UpdateAuctionForm {
private Long auctionNumber;
private AuctionCategory auctionCategory;
private Long auctionPrice;
private String auctionTitle;
private Long auctionQty;
private String auctionDescription;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

import com.example.wantedmarket.order.domain.common.AuctionCategory;
import com.example.wantedmarket.order.domain.controller.dto.AuctionDto;
import com.example.wantedmarket.user.domain.controller.dto.SignUpForm;
import com.example.wantedmarket.user.domain.model.User;
import com.example.wantedmarket.util.BooleanToYNConverter;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
Expand All @@ -21,6 +21,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.envers.AuditOverride;
import org.hibernate.envers.Audited;

Expand All @@ -35,28 +36,35 @@
public class Auction extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long auction_number;
private String user_id;
@Column(name ="auction_number", unique = true)
private Long auctionNumber;

private String userId;

@Enumerated(value = EnumType.STRING)
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;

@Convert(converter = BooleanToYNConverter.class)
private Boolean auctionActive;

@OneToMany(mappedBy = "auction", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@OrderBy("bid_record asc") // 가격 정렬
private List<Bid> bid;
private List<Bid> bids;


public static Auction from(String userId, AuctionDto dto) {
return Auction.builder()
.user_id(userId)
.userId(userId)
.auctionCategory(dto.getAuctionCategory())
.auction_price(dto.getAuction_price())
.auction_title(dto.getAuction_title())
.auction_qty(dto.getAuction_qty())
.auction_description(dto.getAuction_description())
.auctionPrice(dto.getAuctionPrice())
.auctionTitle(dto.getAuctionTitle())
.auctionQty(dto.getAuctionQty())
.auctionDescription(dto.getAuctionDescription())
.auctionActive(true)
.build();
}
}
Loading