diff --git a/src/main/java/com/sczx/store/controller/StoreManageController.java b/src/main/java/com/sczx/store/controller/StoreManageController.java
index 60642cf..c363e97 100644
--- a/src/main/java/com/sczx/store/controller/StoreManageController.java
+++ b/src/main/java/com/sczx/store/controller/StoreManageController.java
@@ -1,9 +1,19 @@
package com.sczx.store.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.sczx.store.common.Result;
+import com.sczx.store.dto.CompanyStoreDTO;
+import com.sczx.store.dto.SimpleUserInfoDTO;
+import com.sczx.store.dto.req.StoreDistanceReq;
+import com.sczx.store.service.StoreService;
+import com.sczx.store.util.JwtUtil;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
/**
*
@@ -15,7 +25,23 @@ import org.springframework.web.bind.annotation.RestController;
*/
@Api(value = "门店管理端接口", produces = "管理端接口")
@RestController
-@RequestMapping("/client")
+@RequestMapping("/store")
public class StoreManageController {
+ @Autowired
+ private StoreService storeService;
+
+ @Autowired
+ private JwtUtil jwtUtil;
+
+
+ @ApiOperation(value = "根据管理员信息获取门店列表")
+ @PostMapping("/listStoresByManage")
+ public Result> listStoresByManage(@RequestParam(value = "managerId", required = false) Integer managerId){
+ if (managerId == null ) {
+ SimpleUserInfoDTO simpleUserInfoDTO = jwtUtil.getUserInfoFromToken();
+ managerId = simpleUserInfoDTO.getUserId();
+ }
+ return Result.ok(storeService.listStoresByManage(managerId));
+ }
}
diff --git a/src/main/java/com/sczx/store/dto/SimpleUserInfoDTO.java b/src/main/java/com/sczx/store/dto/SimpleUserInfoDTO.java
new file mode 100644
index 0000000..036dd16
--- /dev/null
+++ b/src/main/java/com/sczx/store/dto/SimpleUserInfoDTO.java
@@ -0,0 +1,29 @@
+package com.sczx.store.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value = "基本用户信息")
+@Data
+public class SimpleUserInfoDTO {
+
+ @ApiModelProperty(value = "用户id")
+ private Integer userId;
+
+ @ApiModelProperty(value = "用户姓名")
+ private String userName;
+
+ @ApiModelProperty(value = "手机号")
+ private String phoneNumber;
+
+ @ApiModelProperty(value = "角色id")
+ private Integer roleId;
+
+
+ @ApiModelProperty(value = "小程序类型")
+ private String miniProgramType;
+
+ @ApiModelProperty("头像")
+ private String avatarUrl;
+}
diff --git a/src/main/java/com/sczx/store/mapper/CompanyStoreMapper.java b/src/main/java/com/sczx/store/mapper/CompanyStoreMapper.java
index 0cb3510..79a8542 100644
--- a/src/main/java/com/sczx/store/mapper/CompanyStoreMapper.java
+++ b/src/main/java/com/sczx/store/mapper/CompanyStoreMapper.java
@@ -20,4 +20,6 @@ import java.util.List;
*/
public interface CompanyStoreMapper extends BaseMapper {
IPage listStoresByBBoxWithDistance(Page page, @Param("storeDistanceReq") StoreDistanceReq storeDistanceReq);
+
+ List listStoresByManage(@Param("managerId") Integer managerId);
}
diff --git a/src/main/java/com/sczx/store/repository/CompanyStoreRepo.java b/src/main/java/com/sczx/store/repository/CompanyStoreRepo.java
index d7e71a4..0bb3522 100644
--- a/src/main/java/com/sczx/store/repository/CompanyStoreRepo.java
+++ b/src/main/java/com/sczx/store/repository/CompanyStoreRepo.java
@@ -19,4 +19,6 @@ import java.util.List;
public interface CompanyStoreRepo extends IService {
IPage listStoresByBBoxWithDistance(StoreDistanceReq storeDistanceReq,Integer pageNo, Integer pageSize);
+
+ List listStoresByManage(Integer managerId);
}
diff --git a/src/main/java/com/sczx/store/repository/impl/CompanyStoreRepoImpl.java b/src/main/java/com/sczx/store/repository/impl/CompanyStoreRepoImpl.java
index 4cec8cf..c2fdefa 100644
--- a/src/main/java/com/sczx/store/repository/impl/CompanyStoreRepoImpl.java
+++ b/src/main/java/com/sczx/store/repository/impl/CompanyStoreRepoImpl.java
@@ -30,4 +30,9 @@ public class CompanyStoreRepoImpl extends ServiceImpl page = new Page<>(pageNo, pageSize);
return this.getBaseMapper().listStoresByBBoxWithDistance(page, storeDistanceReq);
}
+
+ @Override
+ public List listStoresByManage(Integer managerId) {
+ return this.getBaseMapper().listStoresByManage(managerId);
+ }
}
diff --git a/src/main/java/com/sczx/store/service/StoreService.java b/src/main/java/com/sczx/store/service/StoreService.java
index 2613bdc..b246673 100644
--- a/src/main/java/com/sczx/store/service/StoreService.java
+++ b/src/main/java/com/sczx/store/service/StoreService.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sczx.store.dto.CompanyStoreDTO;
import com.sczx.store.dto.req.StoreDistanceReq;
+import java.util.List;
+
public interface StoreService {
/**
@@ -21,4 +23,12 @@ public interface StoreService {
* @return
*/
CompanyStoreDTO getStoreById(Integer id);
+
+
+ /**
+ * 根据管理员id获取门店信息
+ * @param managerId
+ * @return
+ */
+ List listStoresByManage(Integer managerId);
}
diff --git a/src/main/java/com/sczx/store/service/impl/StoreServiceImpl.java b/src/main/java/com/sczx/store/service/impl/StoreServiceImpl.java
index 75bb0e5..ea96ee6 100644
--- a/src/main/java/com/sczx/store/service/impl/StoreServiceImpl.java
+++ b/src/main/java/com/sczx/store/service/impl/StoreServiceImpl.java
@@ -3,16 +3,23 @@ package com.sczx.store.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sczx.store.convert.StoreConvert;
import com.sczx.store.dto.CompanyStoreDTO;
+import com.sczx.store.dto.SimpleUserInfoDTO;
import com.sczx.store.dto.req.StoreDistanceReq;
import com.sczx.store.po.CompanyStorePO;
import com.sczx.store.repository.CompanyStoreRepo;
import com.sczx.store.service.StoreService;
+import com.sczx.store.util.JwtUtil;
+import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.List;
+
@Service
public class StoreServiceImpl implements StoreService {
+
+
@Autowired
private CompanyStoreRepo companyStoreRepo;
@Override
@@ -28,4 +35,10 @@ public class StoreServiceImpl implements StoreService {
return StoreConvert.INSTANCE.poToDTO(companyStorePO);
}
+
+ @Override
+ public List listStoresByManage(Integer managerId) {
+
+ return companyStoreRepo.listStoresByManage(managerId);
+ }
}
diff --git a/src/main/java/com/sczx/store/util/JwtUtil.java b/src/main/java/com/sczx/store/util/JwtUtil.java
index fc784cd..bd7270f 100644
--- a/src/main/java/com/sczx/store/util/JwtUtil.java
+++ b/src/main/java/com/sczx/store/util/JwtUtil.java
@@ -1,5 +1,8 @@
package com.sczx.store.util;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Maps;
+import com.sczx.store.dto.SimpleUserInfoDTO;
import io.jsonwebtoken.JwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
@@ -7,9 +10,13 @@ import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
import javax.crypto.SecretKey;
+import javax.servlet.http.HttpServletRequest;
import java.util.Date;
+import java.util.Map;
/**
* @Author: 张黎
@@ -31,15 +38,37 @@ public class JwtUtil {
log.info("JWT 密钥:{}", secretKey);
}
- public String generateToken(String username, String role) {
+ public String generateToken(SimpleUserInfoDTO simpleUserInfoDTO, String subject){
+ Map claims = Maps.newHashMap();
+ claims.put("userInfo", simpleUserInfoDTO.getUserId());
return Jwts.builder()
- .setSubject(username)
- .claim("role", role)
+ .setClaims(claims) // 设置自定义 claims
+ .setSubject(subject)
.setExpiration(new Date(System.currentTimeMillis() + expiration))
.signWith(key, SignatureAlgorithm.HS512)
.compact();
}
+ // 从 token 中提取某个字段
+ public T getClaim(String token, String claimKey, Class clazz) {
+ return Jwts.parserBuilder()
+ .setSigningKey(key)
+ .build()
+ .parseClaimsJws(token)
+ .getBody()
+ .get(claimKey, clazz);
+ }
+
+ // 从 token 中提取某个对象类型的字段(支持复杂对象)
+ public T getClaimFromToken(String token, String claimKey, Class targetClass) {
+ return Jwts.parserBuilder()
+ .setSigningKey(key)
+ .build()
+ .parseClaimsJws(token)
+ .getBody()
+ .get(claimKey, targetClass);
+ }
+
public String extractUsername(String token) {
return Jwts.parserBuilder()
.setSigningKey(key)
@@ -60,4 +89,35 @@ public class JwtUtil {
return false;
}
}
+
+ public HttpServletRequest getCurrentRequest() {
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ return attributes != null ? attributes.getRequest() : null;
+ }
+
+ /**
+ * 获取当前请求的Authorization头内容
+ * @return Authorization头的值,如果不存在则返回null
+ */
+ public String getAuthorizationHeader() {
+ HttpServletRequest request = getCurrentRequest();
+ return request != null ? request.getHeader("Authorization") : null;
+ }
+
+ /**
+ * 从token中获取用户信息
+ * @return 用户信息
+ */
+ public SimpleUserInfoDTO getUserInfoFromToken() {
+ String authHeader = getAuthorizationHeader();
+ log.info("token:{}",authHeader);
+ if (authHeader != null && authHeader.startsWith("Bearer ")) {
+ String token = authHeader.substring(7);
+ String userInfoJson = getClaim(token, "userInfo", String.class);
+ // 进行token验证等操作
+ return JSONObject.parseObject(userInfoJson, SimpleUserInfoDTO.class);
+ }else {
+ throw new RuntimeException("token不存在");
+ }
+ }
}
diff --git a/src/main/resources/mapper/CompanyStoreMapper.xml b/src/main/resources/mapper/CompanyStoreMapper.xml
index d88b574..c304e3d 100644
--- a/src/main/resources/mapper/CompanyStoreMapper.xml
+++ b/src/main/resources/mapper/CompanyStoreMapper.xml
@@ -58,4 +58,37 @@
+
+