瀏覽代碼

Merge branch 'hch' of http://git.workervip.com/hechenghang/Small_goose

caolinxuan 2 周之前
父節點
當前提交
57009e4a2c
共有 64 個文件被更改,包括 404 次插入77 次删除
  1. 4 0
      pom.xml
  2. 18 0
      src/main/java/com/zhentao/config/CorsConfig.java
  3. 1 8
      src/main/java/com/zhentao/controller/LoginController.java
  4. 7 3
      src/main/java/com/zhentao/controller/WechatLoginController.java
  5. 1 1
      src/main/java/com/zhentao/domain/course/Merchant.java
  6. 1 1
      src/main/java/com/zhentao/domain/course/MerchantAdmin.java
  7. 1 1
      src/main/java/com/zhentao/domain/course/MerchantShop.java
  8. 1 1
      src/main/java/com/zhentao/domain/course/Product.java
  9. 1 1
      src/main/java/com/zhentao/domain/course/ProductCategory.java
  10. 1 1
      src/main/java/com/zhentao/domain/course/ProductSku.java
  11. 1 1
      src/main/java/com/zhentao/domain/user/GooseUser.java
  12. 1 1
      src/main/java/com/zhentao/domain/user/UserDetail.java
  13. 1 1
      src/main/java/com/zhentao/domain/user/UserLabel.java
  14. 1 1
      src/main/java/com/zhentao/domain/user/UserLocation.java
  15. 1 1
      src/main/java/com/zhentao/domain/user/UserLogin.java
  16. 39 0
      src/main/java/com/zhentao/dto/AppIdSecretValidator.java
  17. 14 0
      src/main/java/com/zhentao/dto/LoginReqDto.java
  18. 2 2
      src/main/java/com/zhentao/mapper/GooseUserMapper.java
  19. 2 2
      src/main/java/com/zhentao/mapper/MerchantAdminMapper.java
  20. 2 2
      src/main/java/com/zhentao/mapper/MerchantMapper.java
  21. 2 2
      src/main/java/com/zhentao/mapper/MerchantShopMapper.java
  22. 2 2
      src/main/java/com/zhentao/mapper/ProductCategoryMapper.java
  23. 2 2
      src/main/java/com/zhentao/mapper/ProductMapper.java
  24. 2 2
      src/main/java/com/zhentao/mapper/ProductSkuMapper.java
  25. 2 2
      src/main/java/com/zhentao/mapper/UserDetailMapper.java
  26. 2 2
      src/main/java/com/zhentao/mapper/UserLabelMapper.java
  27. 2 2
      src/main/java/com/zhentao/mapper/UserLocationMapper.java
  28. 2 2
      src/main/java/com/zhentao/mapper/UserLoginMapper.java
  29. 1 1
      src/main/java/com/zhentao/service/GooseUserService.java
  30. 1 1
      src/main/java/com/zhentao/service/MerchantAdminService.java
  31. 1 1
      src/main/java/com/zhentao/service/MerchantService.java
  32. 1 1
      src/main/java/com/zhentao/service/MerchantShopService.java
  33. 1 1
      src/main/java/com/zhentao/service/ProductCategoryService.java
  34. 1 1
      src/main/java/com/zhentao/service/ProductService.java
  35. 1 1
      src/main/java/com/zhentao/service/ProductSkuService.java
  36. 1 1
      src/main/java/com/zhentao/service/UserDetailService.java
  37. 1 1
      src/main/java/com/zhentao/service/UserLabelService.java
  38. 1 1
      src/main/java/com/zhentao/service/UserLocationService.java
  39. 1 1
      src/main/java/com/zhentao/service/UserLoginService.java
  40. 1 1
      src/main/java/com/zhentao/service/impl/GooseUserServiceImpl.java
  41. 1 1
      src/main/java/com/zhentao/service/impl/MerchantAdminServiceImpl.java
  42. 1 1
      src/main/java/com/zhentao/service/impl/MerchantServiceImpl.java
  43. 1 1
      src/main/java/com/zhentao/service/impl/MerchantShopServiceImpl.java
  44. 1 1
      src/main/java/com/zhentao/service/impl/ProductCategoryServiceImpl.java
  45. 1 1
      src/main/java/com/zhentao/service/impl/ProductServiceImpl.java
  46. 1 1
      src/main/java/com/zhentao/service/impl/ProductSkuServiceImpl.java
  47. 1 1
      src/main/java/com/zhentao/service/impl/UserDetailServiceImpl.java
  48. 1 1
      src/main/java/com/zhentao/service/impl/UserLabelServiceImpl.java
  49. 1 1
      src/main/java/com/zhentao/service/impl/UserLocationServiceImpl.java
  50. 1 1
      src/main/java/com/zhentao/service/impl/UserLoginServiceImpl.java
  51. 7 0
      src/main/java/com/zhentao/util/RRException.java
  52. 136 0
      src/main/java/com/zhentao/util/SnowflakeIdGenerator.java
  53. 112 0
      src/main/java/com/zhentao/util/TokenUtils.java
  54. 1 1
      src/main/resources/mapper/GooseUserMapper.xml
  55. 1 1
      src/main/resources/mapper/MerchantAdminMapper.xml
  56. 1 1
      src/main/resources/mapper/MerchantMapper.xml
  57. 1 1
      src/main/resources/mapper/MerchantShopMapper.xml
  58. 1 1
      src/main/resources/mapper/ProductCategoryMapper.xml
  59. 1 1
      src/main/resources/mapper/ProductMapper.xml
  60. 1 1
      src/main/resources/mapper/ProductSkuMapper.xml
  61. 1 1
      src/main/resources/mapper/UserDetailMapper.xml
  62. 1 1
      src/main/resources/mapper/UserLabelMapper.xml
  63. 1 1
      src/main/resources/mapper/UserLocationMapper.xml
  64. 1 1
      src/main/resources/mapper/UserLoginMapper.xml

+ 4 - 0
pom.xml

@@ -76,6 +76,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-json</artifactId>
         </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+        </dependency>
         <!-- ini格式处理 -->
         <dependency>
             <groupId>org.ini4j</groupId>

+ 18 - 0
src/main/java/com/zhentao/config/CorsConfig.java

@@ -0,0 +1,18 @@
+package com.zhentao.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsConfig implements WebMvcConfigurer {
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("*")
+                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
+                .maxAge(3600);
+    }
+
+}

+ 1 - 8
src/main/java/com/zhentao/controller/LoginController.java

@@ -1,15 +1,8 @@
 package com.zhentao.controller;
 
-import com.zhentao.domain.GooseUser;
+import com.zhentao.domain.user.GooseUser;
 import com.zhentao.service.GooseUserService;
 import com.zhentao.util.ResultVo;
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.authc.IncorrectCredentialsException;
-import org.apache.shiro.authc.UnknownAccountException;
-import org.apache.shiro.authc.UsernamePasswordToken;
-import org.apache.shiro.subject.Subject;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;

+ 7 - 3
src/main/java/com/zhentao/controller/WechatLoginApplication.java → src/main/java/com/zhentao/controller/WechatLoginController.java

@@ -5,6 +5,7 @@ import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -15,14 +16,14 @@ import java.util.HashMap;
 import java.util.Map;
 
 @RestController
-public class WechatLoginApplication {
+public class WechatLoginController {
 
     private static final String APPID = "wxc8a6a80ca6808238";
     private static final String SECRET = "96f6ef6782c1080b1c33016c0d0555b5";
     private static final ObjectMapper objectMapper = new ObjectMapper(); // JSON 解析器
 
     @PostMapping("/api/wx-login")
-    public Map<String, Object> wxLogin(@RequestBody Map<String, String> requestData) {
+    public Map<String, Object> wxLogin( @RequestBody Map<String, String> requestData) {
         String code = requestData.get("code");
         System.out.println(code);
         if (code == null) {
@@ -34,7 +35,6 @@ public class WechatLoginApplication {
                 "&secret=" + SECRET +
                 "&js_code=" + code +
                 "&grant_type=authorization_code";
-
         RestTemplate restTemplate = new RestTemplate();
         HttpHeaders headers = new HttpHeaders();
         HttpEntity<String> entity = new HttpEntity<>(headers);
@@ -44,6 +44,8 @@ public class WechatLoginApplication {
             ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
             String responseBody = response.getBody();
 
+            System.out.println(responseBody);
+
             // 手动解析 JSON
             Map<String, Object> result = objectMapper.readValue(responseBody, Map.class);
             System.out.println(result);
@@ -63,6 +65,8 @@ public class WechatLoginApplication {
     // 构建成功响应
     private Map<String, Object> buildSuccessResponse(String openid, String sessionKey) {
         Map<String, Object> response = new HashMap<>();
+        System.out.println("openid:"+openid);
+        System.out.println("sessionKey:"+sessionKey);
         response.put("openid", openid);
         response.put("session_key", sessionKey);
         return response;

+ 1 - 1
src/main/java/com/zhentao/domain/Merchant.java → src/main/java/com/zhentao/domain/course/Merchant.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.course;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/MerchantAdmin.java → src/main/java/com/zhentao/domain/course/MerchantAdmin.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.course;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/MerchantShop.java → src/main/java/com/zhentao/domain/course/MerchantShop.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.course;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/Product.java → src/main/java/com/zhentao/domain/course/Product.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.course;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/ProductCategory.java → src/main/java/com/zhentao/domain/course/ProductCategory.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.course;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/ProductSku.java → src/main/java/com/zhentao/domain/course/ProductSku.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.course;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/GooseUser.java → src/main/java/com/zhentao/domain/user/GooseUser.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.user;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/UserDetail.java → src/main/java/com/zhentao/domain/user/UserDetail.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.user;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/UserLabel.java → src/main/java/com/zhentao/domain/user/UserLabel.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.user;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/UserLocation.java → src/main/java/com/zhentao/domain/user/UserLocation.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.user;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 1 - 1
src/main/java/com/zhentao/domain/UserLogin.java → src/main/java/com/zhentao/domain/user/UserLogin.java

@@ -1,4 +1,4 @@
-package com.zhentao.domain;
+package com.zhentao.domain.user;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;

+ 39 - 0
src/main/java/com/zhentao/dto/AppIdSecretValidator.java

@@ -0,0 +1,39 @@
+package com.zhentao.dto;
+
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class AppIdSecretValidator {
+    private static final String APPID = "wxc8a6a80ca6808238";
+    private static final String SECRET = "96f6ef6782c1080b1c33016c0d0555b5";
+
+    public static void main(String[] args) {
+        String url = "https://api.weixin.qq.com/cgi-bin/token?" +
+                "grant_type=client_credential" +
+                "&appid=" + APPID +
+                "&secret=" + SECRET;
+
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        HttpEntity<String> entity = new HttpEntity<>(headers);
+
+        try {
+            ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
+            String responseBody = response.getBody();
+            System.out.println("微信接口响应内容: " + responseBody);
+            if (responseBody.contains("access_token")) {
+                System.out.println("APPID 和 SECRET 匹配,成功获取 access_token");
+            } else {
+                System.out.println("APPID 和 SECRET 可能不匹配,响应中未包含 access_token");
+            }
+        } catch (Exception e) {
+            System.out.println("请求微信接口失败: " + e.getMessage());
+        }
+    }
+}

+ 14 - 0
src/main/java/com/zhentao/dto/LoginReqDto.java

@@ -0,0 +1,14 @@
+package com.zhentao.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class LoginReqDto implements Serializable {
+    @NotNull(message = "code不能为空")
+    private String code;
+
+
+}

+ 2 - 2
src/main/java/com/zhentao/mapper/GooseUserMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.GooseUser;
+import com.zhentao.domain.user.GooseUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【goose_user】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.GooseUser
+* @Entity com.zhentao.user.GooseUser
 */
 public interface GooseUserMapper extends BaseMapper<GooseUser> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/MerchantAdminMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.MerchantAdmin;
+import com.zhentao.domain.course.MerchantAdmin;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【merchant_admin(商家管理员表)】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.MerchantAdmin
+* @Entity com.zhentao.course.MerchantAdmin
 */
 public interface MerchantAdminMapper extends BaseMapper<MerchantAdmin> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/MerchantMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.Merchant;
+import com.zhentao.domain.course.Merchant;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【merchant(商家表)】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.Merchant
+* @Entity com.zhentao.course.Merchant
 */
 public interface MerchantMapper extends BaseMapper<Merchant> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/MerchantShopMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.MerchantShop;
+import com.zhentao.domain.course.MerchantShop;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【merchant_shop(商家店铺表)】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.MerchantShop
+* @Entity com.zhentao.course.MerchantShop
 */
 public interface MerchantShopMapper extends BaseMapper<MerchantShop> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/ProductCategoryMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.ProductCategory;
+import com.zhentao.domain.course.ProductCategory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【product_category(商品分类表)】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.ProductCategory
+* @Entity com.zhentao.course.ProductCategory
 */
 public interface ProductCategoryMapper extends BaseMapper<ProductCategory> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/ProductMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.Product;
+import com.zhentao.domain.course.Product;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【product(商品基本信息表)】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.Product
+* @Entity com.zhentao.course.Product
 */
 public interface ProductMapper extends BaseMapper<Product> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/ProductSkuMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.ProductSku;
+import com.zhentao.domain.course.ProductSku;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【product_sku(商品SKU表)】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.ProductSku
+* @Entity com.zhentao.course.ProductSku
 */
 public interface ProductSkuMapper extends BaseMapper<ProductSku> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/UserDetailMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.UserDetail;
+import com.zhentao.domain.user.UserDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【user_detail(用户实名认证详细表)】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.UserDetail
+* @Entity com.zhentao.user.UserDetail
 */
 public interface UserDetailMapper extends BaseMapper<UserDetail> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/UserLabelMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.UserLabel;
+import com.zhentao.domain.user.UserLabel;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【user_label】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.UserLabel
+* @Entity com.zhentao.user.UserLabel
 */
 public interface UserLabelMapper extends BaseMapper<UserLabel> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/UserLocationMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.UserLocation;
+import com.zhentao.domain.user.UserLocation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【user_location】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.UserLocation
+* @Entity com.zhentao.user.UserLocation
 */
 public interface UserLocationMapper extends BaseMapper<UserLocation> {
 

+ 2 - 2
src/main/java/com/zhentao/mapper/UserLoginMapper.java

@@ -1,13 +1,13 @@
 package com.zhentao.mapper;
 
-import com.zhentao.domain.UserLogin;
+import com.zhentao.domain.user.UserLogin;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
 * @author 31810
 * @description 针对表【user_login】的数据库操作Mapper
 * @createDate 2025-05-06 12:01:03
-* @Entity com.zhentao.domain.UserLogin
+* @Entity com.zhentao.user.UserLogin
 */
 public interface UserLoginMapper extends BaseMapper<UserLogin> {
 

+ 1 - 1
src/main/java/com/zhentao/service/GooseUserService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.GooseUser;
+import com.zhentao.domain.user.GooseUser;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhentao.util.ResultVo;
 

+ 1 - 1
src/main/java/com/zhentao/service/MerchantAdminService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.MerchantAdmin;
+import com.zhentao.domain.course.MerchantAdmin;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/MerchantService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.Merchant;
+import com.zhentao.domain.course.Merchant;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/MerchantShopService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.MerchantShop;
+import com.zhentao.domain.course.MerchantShop;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/ProductCategoryService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.ProductCategory;
+import com.zhentao.domain.course.ProductCategory;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/ProductService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.Product;
+import com.zhentao.domain.course.Product;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/ProductSkuService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.ProductSku;
+import com.zhentao.domain.course.ProductSku;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/UserDetailService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.UserDetail;
+import com.zhentao.domain.user.UserDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/UserLabelService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.UserLabel;
+import com.zhentao.domain.user.UserLabel;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/UserLocationService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.UserLocation;
+import com.zhentao.domain.user.UserLocation;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/UserLoginService.java

@@ -1,6 +1,6 @@
 package com.zhentao.service;
 
-import com.zhentao.domain.UserLogin;
+import com.zhentao.domain.user.UserLogin;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 1 - 1
src/main/java/com/zhentao/service/impl/GooseUserServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.GooseUser;
+import com.zhentao.domain.user.GooseUser;
 import com.zhentao.service.GooseUserService;
 import com.zhentao.mapper.GooseUserMapper;
 import com.zhentao.util.ResultVo;

+ 1 - 1
src/main/java/com/zhentao/service/impl/MerchantAdminServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.MerchantAdmin;
+import com.zhentao.domain.course.MerchantAdmin;
 import com.zhentao.service.MerchantAdminService;
 import com.zhentao.mapper.MerchantAdminMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/MerchantServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.Merchant;
+import com.zhentao.domain.course.Merchant;
 import com.zhentao.service.MerchantService;
 import com.zhentao.mapper.MerchantMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/MerchantShopServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.MerchantShop;
+import com.zhentao.domain.course.MerchantShop;
 import com.zhentao.service.MerchantShopService;
 import com.zhentao.mapper.MerchantShopMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/ProductCategoryServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.ProductCategory;
+import com.zhentao.domain.course.ProductCategory;
 import com.zhentao.service.ProductCategoryService;
 import com.zhentao.mapper.ProductCategoryMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/ProductServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.Product;
+import com.zhentao.domain.course.Product;
 import com.zhentao.service.ProductService;
 import com.zhentao.mapper.ProductMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/ProductSkuServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.ProductSku;
+import com.zhentao.domain.course.ProductSku;
 import com.zhentao.service.ProductSkuService;
 import com.zhentao.mapper.ProductSkuMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/UserDetailServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.UserDetail;
+import com.zhentao.domain.user.UserDetail;
 import com.zhentao.service.UserDetailService;
 import com.zhentao.mapper.UserDetailMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/UserLabelServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.UserLabel;
+import com.zhentao.domain.user.UserLabel;
 import com.zhentao.service.UserLabelService;
 import com.zhentao.mapper.UserLabelMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/UserLocationServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.UserLocation;
+import com.zhentao.domain.user.UserLocation;
 import com.zhentao.service.UserLocationService;
 import com.zhentao.mapper.UserLocationMapper;
 import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/zhentao/service/impl/UserLoginServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhentao.domain.UserLogin;
+import com.zhentao.domain.user.UserLogin;
 import com.zhentao.service.UserLoginService;
 import com.zhentao.mapper.UserLoginMapper;
 import org.springframework.stereotype.Service;

+ 7 - 0
src/main/java/com/zhentao/util/RRException.java

@@ -0,0 +1,7 @@
+package com.zhentao.util;
+
+public class RRException extends Throwable {
+    public RRException(String s, int i) {
+
+    }
+}

+ 136 - 0
src/main/java/com/zhentao/util/SnowflakeIdGenerator.java

@@ -0,0 +1,136 @@
+package com.zhentao.util;
+
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+
+public class SnowflakeIdGenerator {
+    // 基础配置(Java 8+)
+    private static final long EPOCH = 1288834974657L; // 2010-11-04 00:00:00 UTC
+    private static final int DATACENTER_ID_BITS = 5;
+    private static final int WORKER_ID_BITS = 5;
+    private static final int SEQUENCE_BITS = 12;
+    // 位运算掩码
+    private static final long DATACENTER_ID_MASK = (1L << DATACENTER_ID_BITS) - 1;
+    private static final long WORKER_ID_MASK = (1L << WORKER_ID_BITS) - 1;
+    private static final long SEQUENCE_MASK = (1L << SEQUENCE_BITS) - 1;
+
+    // 位移偏移量
+    private static final int WORKER_ID_SHIFT = SEQUENCE_BITS;
+    private static final int DATACENTER_ID_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS;
+    private static final int TIMESTAMP_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS + DATACENTER_ID_BITS;
+
+    private final long datacenterId;
+    private final long workerId;
+    private long sequence = 0L;
+    private long lastTimestamp = -1L;
+
+    private final Object lock = new Object();
+
+    public SnowflakeIdGenerator(long datacenterId, long workerId) {
+        if ((datacenterId & DATACENTER_ID_MASK) != datacenterId) {
+            throw new IllegalArgumentException("DataCenter ID 必须在 0-31 之间");
+        }
+        if ((workerId & WORKER_ID_MASK) != workerId) {
+            throw new IllegalArgumentException("Worker ID 必须在 0-31 之间");
+        }
+        this.datacenterId = datacenterId;
+        this.workerId = workerId;
+    }
+
+    public synchronized long nextId() {
+        long currentTimestamp = timeGen();
+
+        if (currentTimestamp < lastTimestamp) {
+            throw new IllegalStateException(
+                    String.format("时钟回退 %d 毫秒,禁止生成ID(上次: %d,当前: %d)",
+                            lastTimestamp - currentTimestamp, lastTimestamp, currentTimestamp));
+        }
+
+        if (currentTimestamp == lastTimestamp) {
+            sequence = (sequence + 1) & SEQUENCE_MASK;
+            if (sequence == 0) {
+                currentTimestamp = waitNextMillis(lastTimestamp);
+            }
+        } else {
+            sequence = 0;
+        }
+
+        lastTimestamp = currentTimestamp;
+
+        return ((currentTimestamp - EPOCH) << TIMESTAMP_SHIFT) |
+                (datacenterId << DATACENTER_ID_SHIFT) |
+                (workerId << WORKER_ID_SHIFT) |
+                sequence;
+    }
+
+    private long waitNextMillis(long lastTimestamp) {
+        long timestamp = timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = System.currentTimeMillis(); // 改用更可靠的时间源
+        }
+        return timestamp;
+    }
+
+    private long timeGen() {
+        return System.currentTimeMillis();
+    }
+
+    // 添加 parseId 方法
+    public static SnowflakeMeta parseId(long snowflakeId) {
+        long sequence = snowflakeId & SEQUENCE_MASK;
+        long workerId = (snowflakeId >> WORKER_ID_SHIFT) & WORKER_ID_MASK;
+        long datacenterId = (snowflakeId >> DATACENTER_ID_SHIFT) & DATACENTER_ID_MASK;
+        long timestamp = (snowflakeId >> TIMESTAMP_SHIFT) + EPOCH;
+
+        return new SnowflakeMeta(
+                timestamp,
+                datacenterId,
+                workerId,
+                sequence,
+                LocalDateTime.ofEpochSecond(timestamp / 1000, 0, ZoneOffset.ofHours(8))
+        );
+    }
+    public static Long getSnowId(){
+        SnowflakeIdGenerator generator=new SnowflakeIdGenerator(1,1);
+        Long id=generator.nextId();
+        SnowflakeMeta meta=SnowflakeIdGenerator.parseId(id);
+        return id;
+    }
+    // ---------------- 修复:添加完整的getter方法 ----------------
+    public static class SnowflakeMeta {
+        private final long timestamp;
+        private final long datacenterId;
+        private final long workerId;
+        private final long sequence;
+        private final LocalDateTime dateTime;
+
+        public SnowflakeMeta(long timestamp, long datacenterId, long workerId, long sequence, LocalDateTime dateTime) {
+            this.timestamp = timestamp;
+            this.datacenterId = datacenterId;
+            this.workerId = workerId;
+            this.sequence = sequence;
+            this.dateTime = dateTime;
+        }
+
+        // 显式定义getter(修复爆红)
+        public long getTimestamp() {
+            return timestamp;
+        }
+
+        public long getDatacenterId() {
+            return datacenterId;
+        }
+
+        public long getWorkerId() {
+            return workerId;
+        }
+
+        public long getSequence() {
+            return sequence;
+        }
+
+        public LocalDateTime getDateTime() {
+            return dateTime;
+        }
+    }
+}

+ 112 - 0
src/main/java/com/zhentao/util/TokenUtils.java

@@ -0,0 +1,112 @@
+package com.zhentao.util;
+
+
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.JwtBuilder;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+import java.security.Key;
+import java.util.Date;
+
+/**
+ * 生成Token工具类
+ */
+public class TokenUtils {
+
+    /**
+     * 签名秘钥
+     */
+    public static final String SECRET = "cjyfutu1688";
+
+    /**
+     * 生成token
+     * @param id 一般传入userName
+     * @return
+     */
+    public static String createJwtToken(String id){
+        String issuer = "www.futureading.com";
+        String subject = "65532781@qq.com";
+        long ttlMillis = System.currentTimeMillis();
+        return createJwtToken(id, issuer, subject, ttlMillis);
+    }
+
+    /**
+     * 生成Token
+     *
+     * @param id
+     *            编号
+     * @param issuer
+     *            该JWT的签发者,是否使用是可选的
+     * @param subject
+     *            该JWT所面向的用户,是否使用是可选的;
+     * @param ttlMillis
+     *            签发时间
+     * @return token String
+     */
+    public static String createJwtToken(String id, String issuer, String subject, long ttlMillis) {
+
+        // 签名算法 ,将对token进行签名
+        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+
+        // 生成签发时间
+        long nowMillis = System.currentTimeMillis();
+        Date now = new Date(nowMillis);
+
+        // 通过秘钥签名JWT
+        byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(SECRET);
+        Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
+
+        // Let's set the JWT Claims
+        JwtBuilder builder = Jwts.builder().setId(id)
+                .setIssuedAt(now)
+                .setSubject(subject)
+                .setIssuer(issuer)
+                .signWith(signatureAlgorithm, signingKey);
+
+        // if it has been specified, let's add the expiration
+        if (ttlMillis >= 0) {
+            long expMillis = nowMillis + ttlMillis;
+            Date exp = new Date(expMillis);
+            builder.setExpiration(exp);
+        }
+
+        // Builds the JWT and serializes it to a compact, URL-safe string
+        return builder.compact();
+
+    }
+
+    // Sample method to validate and read the JWT
+    public static Claims parseJWT(String jwt) {
+        // This line will throw an exception if it is not a signed JWS (as expected)
+        Claims claims = Jwts.parser()
+                .setSigningKey(DatatypeConverter.parseBase64Binary(SECRET))
+                .parseClaimsJws(jwt).getBody();
+        return claims;
+    }
+
+    public static Long getUserId(String token) throws RRException {
+        Claims claims = null;
+        try {
+            claims = TokenUtils.parseJWT(token);
+        } catch (Exception e) {
+            throw new RRException("token错误,请重新登录",101);
+        }
+
+        if(null==claims) {
+            throw new RRException("token错误,请重新登录",101);
+        }
+        String id = claims.getId();
+        Long userId=Long.valueOf(id);
+
+        return userId;
+
+
+    }
+
+    public static void main(String[] args) {
+        System.out.println(TokenUtils.createJwtToken("admin"));
+    }
+}

+ 1 - 1
src/main/resources/mapper/GooseUserMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.GooseUserMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.GooseUser">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.user.GooseUser">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="username" column="username" jdbcType="VARCHAR"/>
             <result property="password" column="password" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/MerchantAdminMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.MerchantAdminMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.MerchantAdmin">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.course.MerchantAdmin">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="merchantId" column="merchant_id" jdbcType="BIGINT"/>
             <result property="username" column="username" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/MerchantMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.MerchantMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.Merchant">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.course.Merchant">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="name" column="name" jdbcType="VARCHAR"/>
             <result property="logo" column="logo" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/MerchantShopMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.MerchantShopMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.MerchantShop">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.course.MerchantShop">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="merchantId" column="merchant_id" jdbcType="BIGINT"/>
             <result property="name" column="name" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/ProductCategoryMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.ProductCategoryMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.ProductCategory">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.course.ProductCategory">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="parentId" column="parent_id" jdbcType="BIGINT"/>
             <result property="name" column="name" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/ProductMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.ProductMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.Product">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.course.Product">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="categoryId" column="category_id" jdbcType="BIGINT"/>
             <result property="name" column="name" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/ProductSkuMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.ProductSkuMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.ProductSku">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.course.ProductSku">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="productId" column="product_id" jdbcType="BIGINT"/>
             <result property="sn" column="sn" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/UserDetailMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.UserDetailMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.UserDetail">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.user.UserDetail">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="userId" column="user_id" jdbcType="INTEGER"/>
             <result property="name" column="name" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/UserLabelMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.UserLabelMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.UserLabel">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.user.UserLabel">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="labelName" column="label_name" jdbcType="VARCHAR"/>
             <result property="userNum" column="user_num" jdbcType="INTEGER"/>

+ 1 - 1
src/main/resources/mapper/UserLocationMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.UserLocationMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.UserLocation">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.user.UserLocation">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="userId" column="user_id" jdbcType="BIGINT"/>
             <result property="appId" column="app_id" jdbcType="VARCHAR"/>

+ 1 - 1
src/main/resources/mapper/UserLoginMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhentao.mapper.UserLoginMapper">
 
-    <resultMap id="BaseResultMap" type="com.zhentao.domain.UserLogin">
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.user.UserLogin">
             <id property="id" column="id" jdbcType="BIGINT"/>
             <result property="openId" column="open_id" jdbcType="VARCHAR"/>
             <result property="unionId" column="union_id" jdbcType="VARCHAR"/>