Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 1 #37

Open
wants to merge 54 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
b7a885a
temp
lukehongg Jan 26, 2023
63ad26e
Merge pull request #1 from lukehongg/temp
lukehongg Jan 26, 2023
d0b0b83
init
lukehongg Jan 26, 2023
cd69ab5
init
lukehongg Jan 26, 2023
c0a687e
init (#2)
lukehongg Jan 26, 2023
983003d
Temp2 (#3)
shinel98 Jan 26, 2023
b3670fc
Temp2 (#4)
shinel98 Jan 26, 2023
937c35b
Init e (#5)
lukehongg Jan 26, 2023
8b2c5fb
Feat/#6 (#7)
shinel98 Jan 27, 2023
bbd9f9f
Init e (#8)
lukehongg Jan 27, 2023
e6ac785
#7 (#9)
lukehongg Jan 27, 2023
0b05e51
로그인 API 구현 (#11)
shinel98 Jan 27, 2023
9c5533d
Feat/#10 (#12)
shinel98 Jan 27, 2023
f156fbc
Feat/#13 (#14)
shinel98 Jan 27, 2023
1d8f30b
Feat/#7 (#15)
lukehongg Jan 27, 2023
42c8490
Feat/#13 (#16)
shinel98 Jan 27, 2023
7119b26
Feat/#13 (#18)
shinel98 Jan 27, 2023
905129f
[#19] (#20)
lukehongg Jan 27, 2023
733480d
Feat/#13 (#22)
shinel98 Jan 27, 2023
80f95f0
.
lukehongg Jan 27, 2023
3e0330e
[#23] (#24)
lukehongg Jan 27, 2023
3b962df
[#23]
lukehongg Jan 27, 2023
d2955ae
Feat/crossorigin (#25)
lukehongg Jan 27, 2023
ec4abbe
Merge branch 'dev' of https://github.com/lukehongg/GreenPoint-server …
lukehongg Jan 27, 2023
1efefb2
Feat/#13 (#26)
shinel98 Jan 27, 2023
4993bb4
Feat/#13 (#27)
shinel98 Jan 27, 2023
8ab6b45
Merge branch 'dev' of https://github.com/lukehongg/GreenPoint-server …
lukehongg Jan 27, 2023
4c3771f
Feat/merge (#28)
lukehongg Jan 27, 2023
b4aedea
Merge branch 'dev' of https://github.com/lukehongg/GreenPoint-server …
lukehongg Jan 27, 2023
a82c641
Feat/merge2 (#29)
lukehongg Jan 27, 2023
8ddfb0f
Merge branch 'dev' of https://github.com/lukehongg/GreenPoint-server …
lukehongg Jan 27, 2023
4abe7a7
Feat/merge3 (#30)
lukehongg Jan 27, 2023
04f2af1
Merge branch 'dev' of https://github.com/lukehongg/GreenPoint-server …
lukehongg Jan 27, 2023
b15bead
Feat/#13 (#31)
shinel98 Jan 27, 2023
9500804
Feat/#13 (#32)
shinel98 Jan 27, 2023
3891402
Merge branch 'dev' of https://github.com/lukehongg/GreenPoint-server …
lukehongg Jan 27, 2023
f3bafa2
store API 수정
lukehongg Jan 27, 2023
2f8a61d
Feat/#13 (#33)
shinel98 Jan 27, 2023
70aa836
final (#34)
lukehongg Jan 27, 2023
118c24c
Version 1 (#35) (#36)
lukehongg Jan 31, 2023
5ba778d
final
lukehongg Jan 31, 2023
35d3aa8
Merge branch 'dev' of https://github.com/lukehongg/GreenPoint-server …
lukehongg Jan 31, 2023
dba7597
Create README.md
lukehongg Sep 7, 2023
dc9f4b5
Update README.md
lukehongg Sep 7, 2023
ad4149a
Update README.md
lukehongg Sep 7, 2023
02b3671
Update README.md
lukehongg Sep 7, 2023
a33b696
Update README.md
lukehongg Sep 7, 2023
1e343bf
Update README.md
lukehongg Sep 7, 2023
f6f926e
Update README.md
lukehongg Sep 7, 2023
95077fe
Update README.md
lukehongg Sep 7, 2023
aaae2e0
Update README.md
lukehongg Sep 7, 2023
1a31467
Update README.md
lukehongg Sep 7, 2023
df2256c
Update README.md
lukehongg Sep 7, 2023
e537ce4
Update .gitignore
lukehongg Sep 7, 2023
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
Binary file added .DS_Store
Binary file not shown.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ bin/
out/
!**/src/main/**/out/
!**/src/test/**/out/
application.properties


### NetBeans ###
/nbproject/private/
Expand Down
57 changes: 57 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
![image](https://github.com/NORITHON/GreenPoint-server/assets/79990740/68f096d6-6d4d-4a85-9572-e189e09b4086)

<hr>

### MEMBER

![image](https://github.com/NORITHON/GreenPoint-server/assets/79990740/0af33839-5f10-42d4-84e6-e888ae877ca3)

<hr>


### Green Point
- Green Point는 친환경 포인트 적립 어플리케이션입니다.
- Green Point는 **기후 변화 대응**이라는 주제를 해결하기 위해 가맹점과 소비자이라는 두 타겟 고객을 설정하여 각 타겟에 맞는 서비스를 구현했습니다.
- 가맹점에게 키오스크 웹페이지를 제공하여 고객이 **"친환경"** 소비를 실천할때 포인트를 적립해주는 기능을 제공
- 소비자에게 자신의 적립 현황 조회 및 Green Point 가맹점 조회 기능을 제공

<br>

![스크린샷 2023-09-07 오후 11 58 50](https://github.com/NORITHON/GreenPoint-server/assets/79990740/5ed8d10f-b0c2-4e3e-9b16-5d450bfc5772)

![스크린샷 2023-09-07 오후 11 58 57](https://github.com/NORITHON/GreenPoint-server/assets/79990740/f22bf5f3-8a8e-4f2b-8eda-3eb5d9529fd9)



<hr>

### 주요 기능

## 소비자
- 소비자는 React Native로 구현한 어플리케이션 서비스를 기반으로 자신이 친환경 소비를 할 때 적립되는 Green Point를 조회할 수 있으며 현재 자신의 Green Level을 확인할 수 있습니다. 또한, Green Point 가맹점들을 조회하여 자신이 원하는 소비에 맞는 가맹정음 조회할 수 있고 **그린 캘린더** 기능을 이용하여 자신이 적립한 Green Point를 일별로 확인할 수 있습니다.


![스크린샷 2023-09-07 오후 11 59 04](https://github.com/NORITHON/GreenPoint-server/assets/79990740/333ecfec-00cd-4802-9ffa-d88879ef177d)

![스크린샷 2023-09-07 오후 11 59 18](https://github.com/NORITHON/GreenPoint-server/assets/79990740/54f59ca9-7e61-410c-ac16-d49501fde95a)

![스크린샷 2023-09-07 오후 11 59 26](https://github.com/NORITHON/GreenPoint-server/assets/79990740/856cbfb6-46f6-48df-b9d7-d822fb56255b)

## 가맹점
- React로 구현한 키오스크 페이지에서는 관리자는 신메뉴를 직접 추가할 수 있고
- 소비자는 메뉴를 장바구니에 답고 **실시간**으로 선택한 메뉴의 가격을 확인할 수 있으며 최종적으로 결제를 할 수 있습니다.
- 결제 시스템은 카카오페이를 구현했으며 소비자는 자신의 휴대폰번호를 입력하면 현재 적립되어있는 포인트를 조회할 수 있고 현재 보유중인 포인트를 원하는 만큼 사용할 수 있도록 구현하였습니다.
- 결제 시 가맹점에서는 사용자가 선택한 **친환경 옵션**에 따라 사용자에게 Green Point를 적립해줄 수 있습니다.

![스크린샷 2023-09-07 오후 11 59 10](https://github.com/NORITHON/GreenPoint-server/assets/79990740/905dcc41-3c56-4ef6-84dd-231060648f79)

![스크린샷 2023-09-07 오후 11 59 34](https://github.com/NORITHON/GreenPoint-server/assets/79990740/af8cb409-8170-45f6-b3d8-cdba3ea99d0f)

![스크린샷 2023-09-07 오후 11 59 41](https://github.com/NORITHON/GreenPoint-server/assets/79990740/d77b9bae-9bab-4342-bb81-b6c4650db004)







8 changes: 8 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id 'java'
id 'org.springframework.boot' version '2.7.8'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'war'
}

group = 'com.greenpoint'
Expand All @@ -14,13 +15,20 @@ configurations {
}
}

bootWar {
enabled = true
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.3'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3'
implementation 'org.springframework.boot:spring-boot-starter'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
Expand Down
13 changes: 12 additions & 1 deletion src/main/java/com/greenpoint/server/ServerApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,23 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@SpringBootApplication
public class ServerApplication {
@EnableJpaAuditing
public class ServerApplication extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ServerApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}

}



Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.greenpoint.server.admin.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@CrossOrigin
@RequestMapping("/api")
public class AdminController {

}
34 changes: 34 additions & 0 deletions src/main/java/com/greenpoint/server/admin/model/Admin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.greenpoint.server.admin.model;


import com.greenpoint.server.common.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Where(clause = "deleted = false")
@SQLDelete(sql = "UPDATE admin SET deleted = true Where id = ?")
public class Admin extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String adminID;
private String password;


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.greenpoint.server.admin.repository;


import com.greenpoint.server.admin.model.Admin;
import org.springframework.data.jpa.repository.JpaRepository;

public interface AdminRepository extends JpaRepository<Admin, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.greenpoint.server.admin.service;

import org.springframework.stereotype.Service;

@Service
public class AdminService {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package com.greenpoint.server.auth.controller;

import com.greenpoint.server.auth.response.AccountResponse;
import com.greenpoint.server.auth.response.LoginResponse;
import com.greenpoint.server.auth.service.UserService;
import com.greenpoint.server.customer.model.Customer;
import com.greenpoint.server.customer.repository.CustomerRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

@RestController
@RequiredArgsConstructor
@CrossOrigin
@RequestMapping("/api")
public class UserController {
@Autowired
private UserService userService;

@GetMapping("/login")
public ResponseEntity<LoginResponse> getLogin(@RequestParam("code") String code) {

boolean isRegistered;
Object[] obArr = new Object[2];
Customer userInfo = new Customer();
obArr = userService.saveUser(code);
System.out.println("obArr = " + obArr);
userInfo = (Customer) obArr[0];
isRegistered = (boolean) obArr[1];
LoginResponse loginResponse = new LoginResponse(userInfo.getKakaoId(), userInfo.getKakaoToken(), userInfo.getNickname(), userInfo.getImage(), isRegistered);
return ResponseEntity.ok(loginResponse);
}

@PostMapping("/makeAccount")
public ResponseEntity<AccountResponse> makeAccount(@RequestBody HashMap<String, String> param) {
Boolean result;
System.out.println("param = " + param);
result = userService.getUserInfoByForm(param);
if(result == false) {
AccountResponse accountResponse = new AccountResponse(false);
return ResponseEntity.ok(accountResponse);
}
AccountResponse accountResponse = new AccountResponse(true);
return ResponseEntity.ok(accountResponse);
}

@Transactional
@DeleteMapping("/deleteMember")
public String deleteAccount(@RequestParam("id") Long id){
String resultCode = "";
int result = userService.memberDelete(id);
if(result == 0){
resultCode = "회원 탈퇴 실패";

} else {
// session.removeAttribute("sessionId");
resultCode = "회원 탈퇴 성공";
}
return resultCode;
}

}

19 changes: 19 additions & 0 deletions src/main/java/com/greenpoint/server/auth/model/KakaoProfile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.greenpoint.server.auth.model;

import lombok.Data;

@Data
public class KakaoProfile {
private Long id;
private Properties properties;



@Data
public class Properties {
public String nickname;
public String profile_image; // 이미지 경로 필드1
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//
//package com.greenpoint.server.auth.repository;
//
//import com.greenpoint.server.customer.model.Customer;
//import org.springframework.data.jpa.repository.JpaRepository;
//
//public interface UserRepository extends JpaRepository<Customer, Long> {
//
//
//}

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.greenpoint.server.auth.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class AccountResponse {
// private String nickname;
// private String contact;
private boolean isRegistered;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.greenpoint.server.auth.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class LoginResponse {
private Long kakaoId;
private String token;
private String nickname;
private String image;
private boolean isRegistered;
}
Loading