// Path: lolibox-server/src/main/java/io/loli/box/exception/UserExistsException.java
// public class UserExistsException extends Exception {
//     public UserExistsException() {
//         super();
//     }
// 
//     public UserExistsException(String reason) {
//         super(reason);
//     }
// }
// 
// Path: lolibox-server/src/main/java/io/loli/box/entity/User.java
// @Entity
// @Table(name = "user_accounts")
// public class User {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     private Long id;
// 
//     @Column(name = "email", length = 100, nullable = false, unique = true)
//     private String email;
// 
//     @Column(name = "user_name", length = 100, nullable = false,unique = true)
//     private String userName;
// 
//     @Column(name = "password", length = 255)
//     private String password;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "role", length = 20, nullable = false)
//     private Role role;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "sign_in_provider", length = 20)
//     private SocialMediaService signInProvider;
// 
//     @Column(name = "create_date")
//     private Date createDate = new Date();
// 
//     public Date getCreateDate() {
//         return createDate;
//     }
// 
//     public void setCreateDate(Date createDate) {
//         this.createDate = createDate;
//     }
// 
//     public User() {
// 
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getUserName() {
//         return userName;
//     }
// 
//     public void setUserName(String userName) {
//         this.userName = userName;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public Role getRole() {
//         return role;
//     }
// 
//     public void setRole(Role role) {
//         this.role = role;
//     }
// 
//     public SocialMediaService getSignInProvider() {
//         return signInProvider;
//     }
// 
//     public void setSignInProvider(SocialMediaService signInProvider) {
//         this.signInProvider = signInProvider;
//     }
// }
// 
// Path: lolibox-server/src/main/java/io/loli/box/dao/UserRepository.java
// public interface UserRepository extends JpaRepository<User, Long> {
// 
//     public User findByEmail(String email);
// 
//     public User findByUserName(String userName);
// 
//     User findByEmailOrUserName(String email, String name);
// }


import io.loli.box.exception.UserExistsException;
import io.loli.box.entity.User;
import io.loli.box.dao.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
package io.loli.box.service.impl;



/**
 * @author choco
 */
@Service
public class UserService {

    @Autowired
// Path: lolibox-server/src/main/java/io/loli/box/exception/UserExistsException.java
// public class UserExistsException extends Exception {
//     public UserExistsException() {
//         super();
//     }
// 
//     public UserExistsException(String reason) {
//         super(reason);
//     }
// }
// 
// Path: lolibox-server/src/main/java/io/loli/box/entity/User.java
// @Entity
// @Table(name = "user_accounts")
// public class User {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     private Long id;
// 
//     @Column(name = "email", length = 100, nullable = false, unique = true)
//     private String email;
// 
//     @Column(name = "user_name", length = 100, nullable = false,unique = true)
//     private String userName;
// 
//     @Column(name = "password", length = 255)
//     private String password;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "role", length = 20, nullable = false)
//     private Role role;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "sign_in_provider", length = 20)
//     private SocialMediaService signInProvider;
// 
//     @Column(name = "create_date")
//     private Date createDate = new Date();
// 
//     public Date getCreateDate() {
//         return createDate;
//     }
// 
//     public void setCreateDate(Date createDate) {
//         this.createDate = createDate;
//     }
// 
//     public User() {
// 
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getUserName() {
//         return userName;
//     }
// 
//     public void setUserName(String userName) {
//         this.userName = userName;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public Role getRole() {
//         return role;
//     }
// 
//     public void setRole(Role role) {
//         this.role = role;
//     }
// 
//     public SocialMediaService getSignInProvider() {
//         return signInProvider;
//     }
// 
//     public void setSignInProvider(SocialMediaService signInProvider) {
//         this.signInProvider = signInProvider;
//     }
// }
// 
// Path: lolibox-server/src/main/java/io/loli/box/dao/UserRepository.java
// public interface UserRepository extends JpaRepository<User, Long> {
// 
//     public User findByEmail(String email);
// 
//     public User findByUserName(String userName);
// 
//     User findByEmailOrUserName(String email, String name);
// }


// Path: lolibox-server/src/main/java/io/loli/box/service/impl/UserService.java
import io.loli.box.exception.UserExistsException;
import io.loli.box.entity.User;
import io.loli.box.dao.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;

package io.loli.box.service.impl;



/**
 * @author choco
 */
@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;