Ver Fonte

修改parent_id

username há 6 anos atrás
pai
commit
1d5a8cc76c

+ 2 - 2
src/main/java/com/izouma/immall/Application.java → src/main/java/com/izouma/immall/ImmallApplication.java

@@ -8,10 +8,10 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
 @SpringBootApplication
 @EnableJpaAuditing
 @EnableSwagger2
-public class Application {
+public class ImmallApplication {
 
     public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
+        SpringApplication.run(ImmallApplication.class, args);
     }
 
 }

+ 6 - 3
src/main/java/com/izouma/immall/domain/User.java

@@ -72,12 +72,15 @@ public class User extends BaseEntity implements Serializable {
 
     private String email;
 
-    @Searchable
+/*    @Searchable
     @ApiModelProperty("邀请码")
-    private int invitationCode;
+    private Integer invitationCode;*/
+
+    @Searchable
+    @ApiModelProperty("邀请人UserId")
+    private Long parentId;
 
     @ApiModelProperty( "用户余额")
     private BigDecimal money;
 
-
 }

+ 58 - 0
src/main/java/com/izouma/immall/domain/VipUser.java

@@ -0,0 +1,58 @@
+package com.izouma.immall.domain;
+
+import com.izouma.immall.enums.VipType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Map;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Where(clause = "enabled = 1")
+@ApiModel(value = "用户", description = "用户")
+public class VipUser extends BaseEntity implements Serializable {
+    @ApiModelProperty("用户Id")
+    private Long userId;
+
+/*    @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH})
+    @JoinTable(
+            name = "vip_authority",
+            joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))},
+            inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))})
+    @ExcelIgnore
+    private Set<VipAuthority> vipAuthorities = new HashSet<>();*/
+
+    @ApiModelProperty("会员类型")
+    @Enumerated(EnumType.STRING)
+    private VipType vipType;
+
+    @ApiModelProperty("会员开始时间")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty("会员结束时间")
+    private LocalDateTime endTime;
+
+    private String openId;
+
+    @Column(nullable = false)
+    private Boolean enabled = true;
+
+    private Long gitId;
+
+    private Long gitCount;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private User user;
+}

+ 24 - 0
src/main/java/com/izouma/immall/enums/VipType.java

@@ -0,0 +1,24 @@
+package com.izouma.immall.enums;
+
+public enum VipType {
+    /*
+    超值大礼包,其他VIP可升级为此VIP
+     */
+    VIP_FULL,
+    /*
+    面膜包年
+     */
+    VIP_MASK,
+    /*
+    护肤包年
+     */
+    VIP_SKINCARE,
+    /*
+    洗护包年
+     */
+    VIP_WASH,
+    /*
+    洁面乳包年
+     */
+    VIP_CLEANSER;
+}

+ 9 - 1
src/main/java/com/izouma/immall/repo/UserRepo.java

@@ -4,16 +4,24 @@ import com.izouma.immall.domain.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
+import java.util.List;
+
 
 public interface UserRepo extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
     User findByUsername(String username);
 
     //根据邀请码查找用户
-    User findByInvitationCode(String invitationCode);
+//    User findByInvitationCode(String invitationCode);
 
 //    List<User> findAllByAuthoritiesContains(VipAuthority authority);
 
     User findByOpenId(String openId);
 
     User findByPhone(String phone);
+
+    //查找重复邀请码是否已存在
+//    Boolean existsByInvitationCode(Integer invitationCode);
+
+    //查找父类(邀请人)的信息
+    List<User> findAllById(Long parentId);
 }

+ 38 - 0
src/main/java/com/izouma/immall/repo/VipUserRepo.java

@@ -0,0 +1,38 @@
+package com.izouma.immall.repo;
+
+import com.izouma.immall.domain.VipUser;
+import com.izouma.immall.enums.VipType;
+import com.izouma.immall.security.VipAuthority;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import javax.transaction.Transactional;
+import java.time.LocalDateTime;
+import java.util.List;
+
+public interface VipUserRepo extends JpaRepository<VipUser, Long>, JpaSpecificationExecutor<VipUser> {
+    List<VipUser> findAllByUserId(Long userId);
+
+//    List<VipUser> findAllByVipAuthoritiesContains(VipAuthority vipAuthority);
+
+//    List<VipUser> findAllByStartTime(LocalDateTime startTime);
+
+    List<VipUser> findAllByVipType(VipType vipType);
+
+    List<VipUser> findByOpenId(String OpenId);
+
+//    void saveByUserId(String userId);
+
+//    List<VipUser> findAllByStartTimeBetweenEndTime(LocalDateTime startTime, LocalDateTime endTime);
+
+    @Query("update VipUser t set t.enabled = false where t.id = ?1 ")
+    @Modifying
+    @Transactional
+    void deleteById(Long id);
+
+    List<VipUser> findAllByUserIdAndEnabledFalse(Long userId);
+
+    List<VipUser> findAllByOpenIdAndEnabledFalse(String openId);
+}

+ 0 - 81
src/main/java/com/izouma/immall/security/JwtUser.java

@@ -1,81 +0,0 @@
-package com.izouma.immall.security;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.izouma.immall.domain.User;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.time.ZoneId;
-import java.util.Collection;
-import java.util.Date;
-
-/**
- * Created by stephan on 20.03.16.
- */
-public class JwtUser implements UserDetails {
-
-    private static final long serialVersionUID = 5803985158027956021L;
-
-    private final Collection<? extends GrantedAuthority> authorities;
-    private final Date                                   lastPasswordResetDate;
-    private       User                                   user;
-
-    public JwtUser(User user, Collection<? extends GrantedAuthority> authorities) {
-        this.authorities = authorities;
-        this.lastPasswordResetDate = Date.from(user.getCreatedAt().atZone(ZoneId.systemDefault()).toInstant());
-        this.user = user;
-    }
-
-    @JsonIgnore
-    public Long getId() {
-        return user.getId();
-    }
-
-    @Override
-    public String getUsername() {
-        return user.getUsername();
-    }
-
-    @JsonIgnore
-    @Override
-    public boolean isAccountNonExpired() {
-        return true;
-    }
-
-    @JsonIgnore
-    @Override
-    public boolean isAccountNonLocked() {
-        return true;
-    }
-
-    @JsonIgnore
-    @Override
-    public boolean isCredentialsNonExpired() {
-        return true;
-    }
-
-    @JsonIgnore
-    @Override
-    public String getPassword() {
-        return user.getPassword();
-    }
-
-    @Override
-    public Collection<? extends GrantedAuthority> getAuthorities() {
-        return authorities;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return user.getEnabled();
-    }
-
-    @JsonIgnore
-    public Date getLastPasswordResetDate() {
-        return lastPasswordResetDate;
-    }
-
-    public User getUser() {
-        return user;
-    }
-}

+ 0 - 26
src/main/java/com/izouma/immall/security/JwtUserDetailsService.java

@@ -1,26 +0,0 @@
-package com.izouma.immall.security;
-
-import com.izouma.immall.domain.User;
-import com.izouma.immall.repo.UserRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-@AllArgsConstructor
-@Service("jwtUserDetailsService")
-public class JwtUserDetailsService implements UserDetailsService {
-    private UserRepo userRepo;
-
-    @Override
-    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
-        User user = userRepo.findByUsername(username);
-
-        if (user == null) {
-            throw new UsernameNotFoundException(String.format("No user found with username '%s'.", username));
-        } else {
-            return JwtUserFactory.create(user);
-        }
-    }
-}

+ 0 - 28
src/main/java/com/izouma/immall/security/JwtUserFactory.java

@@ -1,28 +0,0 @@
-package com.izouma.immall.security;
-
-import com.izouma.immall.domain.User;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-public final class JwtUserFactory {
-
-    private JwtUserFactory() {
-    }
-
-    public static JwtUser create(User user) {
-        return new JwtUser(user, mapToGrantedAuthorities(user.getAuthorities()));
-    }
-
-    private static List<GrantedAuthority> mapToGrantedAuthorities(Set<VipAuthority> authorities) {
-        if (authorities != null) {
-            return authorities.stream()
-                              .map(authority -> new SimpleGrantedAuthority(authority.getName()))
-                              .collect(Collectors.toList());
-        }
-        return null;
-    }
-}

+ 55 - 31
src/main/java/com/izouma/immall/service/UserService.java

@@ -2,10 +2,10 @@ package com.izouma.immall.service;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import com.izouma.immall.config.Constants;
 import com.izouma.immall.domain.User;
-import com.izouma.immall.security.VipAuthority;
 import com.izouma.immall.exception.BusinessException;
 import com.izouma.immall.repo.UserRepo;
 import com.izouma.immall.service.sms.SmsService;
@@ -19,6 +19,7 @@ import me.chanjar.weixin.mp.bean.result.WxMpUser;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -42,18 +43,20 @@ public class UserService {
         User user = userRepo.findByOpenId(wxMpUser.getOpenId());
         if (user == null) {
             user = User.builder()
-                       .username(UUID.randomUUID().toString())
-                       .nickname(wxMpUser.getNickname())
-                       .avatar(wxMpUser.getHeadImgUrl())
-                       .sex(wxMpUser.getSexDesc())
-                       .country(wxMpUser.getCountry())
-                       .province(wxMpUser.getProvince())
-                       .city(wxMpUser.getCity())
-                       .openId(wxMpUser.getOpenId())
-                       .language(wxMpUser.getLanguage())
-                       .enabled(true)
-                       .authorities(Collections.singleton(VipAuthority.builder().name("NO_VIP").build()))
-                       .build();
+                    .username(UUID.randomUUID().toString())
+                    .nickname(wxMpUser.getNickname())
+                    .avatar(wxMpUser.getHeadImgUrl())
+                    .sex(wxMpUser.getSexDesc())
+                    .country(wxMpUser.getCountry())
+                    .province(wxMpUser.getProvince())
+                    .city(wxMpUser.getCity())
+                    .openId(wxMpUser.getOpenId())
+                    .language(wxMpUser.getLanguage())
+                    .enabled(true)
+//                       .invitationCode(invitation())
+                    .money(BigDecimal.ZERO)
+//                       .authorities(Collections.singleton(VipAuthority.builder().name("NO_VIP").build()))
+                    .build();
             userRepo.save(user);
         }
         return user;
@@ -69,13 +72,15 @@ public class UserService {
                 return userInfo;
             }
             userInfo = User.builder()
-                           .username(UUID.randomUUID().toString())
-                           .nickname("用户" + RandomStringUtils.randomAlphabetic(6))
-                           .openId(openId)
-                           .avatar(Constants.DEFAULT_AVATAR)
-                           .enabled(true)
-                           .authorities(Collections.singleton(VipAuthority.builder().name("NO_VIP").build()))
-                           .build();
+                    .username(UUID.randomUUID().toString())
+                    .nickname("用户" + RandomStringUtils.randomAlphabetic(6))
+                    .openId(openId)
+                    .avatar(Constants.DEFAULT_AVATAR)
+                    .enabled(true)
+//                           .invitationCode(invitation())
+                    .money(BigDecimal.ZERO)
+//                           .authorities(Collections.singleton(VipAuthority.builder().name("NO_VIP").build()))
+                    .build();
             userInfo = userRepo.save(userInfo);
             return userInfo;
         } catch (WxErrorException e) {
@@ -94,8 +99,11 @@ public class UserService {
         // 解密用户信息
         WxMaUserInfo wxUserInfo = wxMaService.getUserService().getUserInfo(sessionKey, encryptedData, iv);
         User user = userRepo.findByOpenId(wxUserInfo.getOpenId());
+        WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
+        String phone = phoneNoInfo.getPhoneNumber();
 
         String avatarUrl = Constants.DEFAULT_AVATAR;
+
         try {
             String path = "image/avatar/" +
                     new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) +
@@ -109,17 +117,20 @@ public class UserService {
         if (user == null) {
 
             user = User.builder()
-                       .username(UUID.randomUUID().toString())
-                       .nickname(wxUserInfo.getNickName())
-                       .openId(wxUserInfo.getOpenId())
-                       .avatar(avatarUrl)
-                       .sex(wxUserInfo.getGender())
-                       .country(wxUserInfo.getCountry())
-                       .province(wxUserInfo.getProvince())
-                       .city(wxUserInfo.getCity())
-                       .enabled(true)
-                       .authorities(Collections.singleton(VipAuthority.builder().name("NO_VIP").build()))
-                       .build();
+                    .username(UUID.randomUUID().toString())
+                    .nickname(wxUserInfo.getNickName())
+                    .openId(wxUserInfo.getOpenId())
+                    .avatar(avatarUrl)
+                    .sex(wxUserInfo.getGender())
+                    .country(wxUserInfo.getCountry())
+                    .province(wxUserInfo.getProvince())
+                    .city(wxUserInfo.getCity())
+                    .enabled(true)
+                    .money(BigDecimal.ZERO)
+//                       .invitationCode(invitation())
+                    .phone(phone)
+//                       .authorities(Collections.singleton(VipAuthority.builder().name("NO_VIP").build()))
+                    .build();
             user = userRepo.save(user);
 
         } else {
@@ -129,6 +140,7 @@ public class UserService {
             user.setCountry(wxUserInfo.getCountry());
             user.setProvince(wxUserInfo.getProvince());
             user.setCity(wxUserInfo.getCity());
+            user.setPhone(phone);
             user = userRepo.save(user);
         }
 
@@ -153,4 +165,16 @@ public class UserService {
             userRepo.save(root);
         }
     }*/
+
+    /*
+    查看邀请码是否已存在
+     */
+/*    private Integer invitation(){
+        Integer invitationCode =(int) ((Math.random() * 9 + 1) * Math.pow(10, 8 - 1));
+        while(userRepo.existsByInvitationCode(invitationCode)){
+            invitationCode =(int) ((Math.random() * 9 + 1) * Math.pow(10, 8 - 1));
+        }
+        return invitationCode;
+    }*/
+
 }

+ 63 - 0
src/main/java/com/izouma/immall/service/VipUserService.java

@@ -0,0 +1,63 @@
+package com.izouma.immall.service;
+
+import com.izouma.immall.domain.User;
+import com.izouma.immall.domain.VipUser;
+import com.izouma.immall.enums.VipType;
+import com.izouma.immall.exception.BusinessException;
+import com.izouma.immall.repo.UserRepo;
+import com.izouma.immall.repo.VipUserRepo;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+@Slf4j
+@AllArgsConstructor
+public class VipUserService {
+    @Autowired
+    private VipUserRepo vipUserRepo;
+
+    @Autowired
+    private UserRepo userRepo;
+
+    public VipUser buy(Long userId, VipType vipType) {
+        if (userId == null) {
+            new BusinessException("用户错误");
+        }
+        if (vipType == null) {
+            new BusinessException("Vip类型错误");
+        }
+        if (vipUserRepo.findAllByUserId(userId) == null) {
+            User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+            LocalDateTime now = LocalDateTime.now();
+            VipUser vipUser = VipUser.builder()
+                    .userId(userId)
+                    .vipType(vipType)
+                    .startTime(now)
+                    .endTime(now.plusYears(1L))
+                    .openId(user.getOpenId())
+                    .enabled(true)
+                    .build();
+            return vipUser;
+        }
+        return null;
+    }
+
+    public Boolean isVip(Long userId, VipType vipType) {
+        List<VipUser> vipUsers = vipUserRepo.findAllByUserId(userId);
+        if (vipUsers != null) {
+            LocalDateTime now = LocalDateTime.now();
+            for (VipUser vip : vipUsers) {
+                LocalDateTime endTime = vip.getEndTime();
+
+
+            }
+        }
+        return true;
+    }
+}

+ 0 - 1
src/main/java/com/izouma/immall/utils/SecurityUtils.java

@@ -1,7 +1,6 @@
 package com.izouma.immall.utils;
 
 import com.izouma.immall.domain.BackUser;
-import com.izouma.immall.domain.User;
 import com.izouma.immall.security.JwtBackUser;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;

+ 0 - 95
src/main/java/com/izouma/immall/web/AuthenticationController.java

@@ -1,95 +0,0 @@
-package com.izouma.immall.web;
-
-import com.izouma.immall.domain.User;
-import com.izouma.immall.exception.AuthenticationException;
-import com.izouma.immall.security.JwtTokenUtil;
-import com.izouma.immall.security.JwtUserDetailsService;
-import com.izouma.immall.security.JwtUserFactory;
-import com.izouma.immall.service.UserService;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.DisabledException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Objects;
-
-@Slf4j
-@AllArgsConstructor
-@RestController
-@RequestMapping("/auth")
-public class AuthenticationController {
-    private AuthenticationManager authenticationManager;
-    private JwtTokenUtil          jwtTokenUtil;
-    private JwtUserDetailsService userDetailsService;
-    private UserService           userService;
-
-    @PostMapping("/login")
-    public String loginByUserPwd(String username, String password, Integer expiration) {
-        try {
-            authenticate(username, password);
-            final UserDetails userDetails = userDetailsService.loadUserByUsername(username);
-            return jwtTokenUtil.generateToken(userDetails);
-        } catch (Exception e) {
-            log.error("loginByUserPwd", e);
-            throw new AuthenticationException("用户名或密码错误", e);
-        }
-    }
-
-    @PostMapping("/phoneLogin")
-    @ApiOperation(value = "手机号登录")
-    public String phoneLogin(String phone) {
-        try {
-            User user = userService.loginByPhone(phone);
-            return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
-        } catch (Exception e) {
-            log.error("loginByPhone", e);
-            throw new AuthenticationException("登陆错误", e);
-        }
-    }
-
-    @PostMapping("/mpLogin")
-    @ApiOperation(value = "公众号登录")
-    public String mpLogin(String code) {
-        try {
-            User user = userService.loginMp(code);
-            return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
-        } catch (Exception e) {
-            log.error("loginByCode", e);
-            throw new AuthenticationException("登陆错误", e);
-        }
-    }
-
-    @PostMapping("/maLogin")
-    @ApiOperation(value = "小程序登录")
-    public String maLogin(String code) {
-        try {
-            User user = userService.loginMa(code);
-            return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
-        } catch (Exception e) {
-            log.error("loginByCode", e);
-            throw new AuthenticationException("登陆错误", e);
-        }
-    }
-
-    /**
-     * Authenticates the user. If something is wrong, an {@link AuthenticationException} will be thrown
-     */
-    private void authenticate(String username, String password) {
-        Objects.requireNonNull(username);
-        Objects.requireNonNull(password);
-        try {
-            authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
-        } catch (DisabledException e) {
-            throw new AuthenticationException("User is disabled!", e);
-        } catch (BadCredentialsException e) {
-            throw new AuthenticationException("Bad credentials!", e);
-        }
-    }
-}

+ 5 - 5
src/main/java/com/izouma/immall/web/BackUserController.java

@@ -29,7 +29,7 @@ public class BackUserController extends BaseController {
     private BackUserRepo backUserRepo;
     private BackUserService backUserService;
 
-    @PostMapping("/back/register")
+    @PostMapping("/register")
     public BackUser register(@RequestParam String username,
                          @RequestParam String password) {
         BackUser user = BackUser.builder()
@@ -43,7 +43,7 @@ public class BackUserController extends BaseController {
     }
 
     @PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/back/save")
+    @PostMapping("/save")
     public BackUser save(@RequestBody BackUser user) {
         if (user.getId() != null) {
             BackUser orig = backUserRepo.findById(user.getId()).orElseThrow(new BusinessException("无记录"));
@@ -53,19 +53,19 @@ public class BackUserController extends BaseController {
         return backUserRepo.save(user);
     }
 
-    @GetMapping("/back/my")
+    @GetMapping("/my")
     public BackUser my() {
         return backUserRepo.findById(SecurityUtils.getAuthenticatedUser().getId()).orElseThrow(new BusinessException("用户不存在"));
     }
 
     @PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/back/all")
+    @GetMapping("/all")
     public Page<BackUser> all(PageQuery pageQuery) {
         return backUserRepo.findAll(toSpecification(pageQuery, BackUser.class), toPageRequest(pageQuery));
     }
 
     @PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/back/get/{id}")
+    @GetMapping("/get/{id}")
     public BackUser get(@PathVariable Long id) {
         return backUserRepo.findById(id).orElseThrow(new BusinessException("无记录"));
     }

+ 22 - 4
src/main/java/com/izouma/immall/web/UserController.java

@@ -10,6 +10,7 @@ import com.izouma.immall.service.UserService;
 import com.izouma.immall.utils.ObjUtils;
 import com.izouma.immall.utils.SecurityUtils;
 import com.izouma.immall.utils.excel.ExcelUtils;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
@@ -26,10 +27,11 @@ import java.util.List;
 @RestController
 @RequestMapping("/user")
 public class UserController extends BaseController {
-    private UserRepo    userRepo;
+    private UserRepo userRepo;
     private UserService userService;
 
-    @PostMapping("/register")
+
+/*    @PostMapping("/register")
     public User register(@RequestParam String username,
                          @RequestParam String password) {
         User user = User.builder()
@@ -37,10 +39,11 @@ public class UserController extends BaseController {
                         .nickname(username)
                         .password(new BCryptPasswordEncoder().encode(password))
                         .enabled(true)
-                        .authorities(Collections.singleton(new VipAuthority(VipAuthority.NAMES.NO_VIP.name())))
+//                        .authorities(Collections.singleton(new VipAuthority(VipAuthority.NAMES.NO_VIP.name())))
                         .build();
         return userRepo.save(user);
-    }
+    }*/
+
 
 /*
     @PreAuthorize("hasRole('ADMIN')")
@@ -55,10 +58,12 @@ public class UserController extends BaseController {
     }
 */
 
+/*
     @GetMapping("/my")
     public User my() {
         return userRepo.findById(SecurityUtils.getAuthenticatedUser().getId()).orElseThrow(new BusinessException("用户不存在"));
     }
+*/
 
 /*
     @PreAuthorize("hasRole('ADMIN')")
@@ -95,4 +100,17 @@ public class UserController extends BaseController {
         throw new BusinessException("获取用户信息失败");
     }
 
+    @PostMapping("/myFans")
+    @ApiModelProperty(value = "获取我的粉丝")
+    public List<User> findParentId(Long parentId) {
+        if (parentId == null) {
+            new BusinessException("用户错误");
+        }
+        if (userRepo.findById(parentId) == null) {
+            new BusinessException("用户不存在");
+        }
+        List<User> children = userRepo.findAllById(parentId);
+        return children;
+    }
+
 }

+ 18 - 0
src/main/java/com/izouma/immall/web/VipUserController.java

@@ -0,0 +1,18 @@
+package com.izouma.immall.web;
+
+import com.izouma.immall.domain.VipUser;
+import com.izouma.immall.service.VipUserService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/vip")
+public class VipUserController extends BaseController {
+    private VipUserService vipUserService;
+    @GetMapping("/buy")
+    public VipUser buyVip(){
+        return null;
+    }
+
+}

+ 1 - 1
src/main/resources/application.yaml

@@ -1,5 +1,5 @@
 server:
-    port: 8080
+    port: 8090
     servlet:
         context_path: /
     compression:

+ 1 - 1
src/test/java/com/izouma/immall/ApplicationTests.java → src/test/java/com/izouma/immall/ImmallApplicationTests.java

@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class ApplicationTests {
+public class ImmallApplicationTests {
 
     @Test
     public void contextLoads() {

+ 55 - 0
src/test/java/com/izouma/immall/repo/VipUserRepoTest.java

@@ -0,0 +1,55 @@
+package com.izouma.immall.repo;
+
+import com.izouma.immall.domain.VipUser;
+import com.izouma.immall.enums.VipType;
+import com.izouma.immall.security.VipAuthority;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class VipUserRepoTest {
+    @Autowired
+    private VipUserRepo vipUserRepo;
+
+    @Test
+    public void AddVip() {
+        LocalDateTime now = LocalDateTime.now();
+        Set<VipAuthority> authorities = new HashSet<>();
+        authorities.add(new VipAuthority(VipAuthority.NAMES.VIP_MASK.name()));
+        VipUser vip = VipUser.builder()
+                .userId(5L)
+                .startTime(now)
+                .endTime(now.plusYears(1L))
+                .vipType(VipType.VIP_CLEANSER)
+                .openId("1111")
+                .enabled(true)
+                .build();
+        vipUserRepo.save(vip);
+    }
+
+    @Test
+    public void findOpenId() {
+        List<VipUser> byOpenId = vipUserRepo.findByOpenId("111");
+        System.out.println(byOpenId);
+    }
+
+    @Test
+    public void findUserId() {
+        List<VipUser> list = vipUserRepo.findAllByUserId(5L);
+        System.out.println(list);
+    }
+
+    @Test
+    public void outTime(){
+
+    }
+}

+ 2 - 2
src/test/java/com/izouma/immall/service/sms/SmsServiceTest.java

@@ -1,10 +1,10 @@
 package com.izouma.immall.service.sms;
 
-import com.izouma.immall.ApplicationTests;
+import com.izouma.immall.ImmallApplicationTests;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
-public class SmsServiceTest extends ApplicationTests {
+public class SmsServiceTest extends ImmallApplicationTests {
     @Autowired
     private SmsService smsService;