增加根据管理员id查询门店接口
This commit is contained in:
@ -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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@ -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<List<CompanyStoreDTO>> listStoresByManage(@RequestParam(value = "managerId", required = false) Integer managerId){
|
||||
if (managerId == null ) {
|
||||
SimpleUserInfoDTO simpleUserInfoDTO = jwtUtil.getUserInfoFromToken();
|
||||
managerId = simpleUserInfoDTO.getUserId();
|
||||
}
|
||||
return Result.ok(storeService.listStoresByManage(managerId));
|
||||
}
|
||||
}
|
||||
|
||||
29
src/main/java/com/sczx/store/dto/SimpleUserInfoDTO.java
Normal file
29
src/main/java/com/sczx/store/dto/SimpleUserInfoDTO.java
Normal file
@ -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;
|
||||
}
|
||||
@ -20,4 +20,6 @@ import java.util.List;
|
||||
*/
|
||||
public interface CompanyStoreMapper extends BaseMapper<CompanyStorePO> {
|
||||
IPage<CompanyStoreDTO> listStoresByBBoxWithDistance(Page<CompanyStoreDTO> page, @Param("storeDistanceReq") StoreDistanceReq storeDistanceReq);
|
||||
|
||||
List<CompanyStoreDTO> listStoresByManage(@Param("managerId") Integer managerId);
|
||||
}
|
||||
|
||||
@ -19,4 +19,6 @@ import java.util.List;
|
||||
public interface CompanyStoreRepo extends IService<CompanyStorePO> {
|
||||
|
||||
IPage<CompanyStoreDTO> listStoresByBBoxWithDistance(StoreDistanceReq storeDistanceReq,Integer pageNo, Integer pageSize);
|
||||
|
||||
List<CompanyStoreDTO> listStoresByManage(Integer managerId);
|
||||
}
|
||||
|
||||
@ -30,4 +30,9 @@ public class CompanyStoreRepoImpl extends ServiceImpl<CompanyStoreMapper, Compan
|
||||
Page<CompanyStoreDTO> page = new Page<>(pageNo, pageSize);
|
||||
return this.getBaseMapper().listStoresByBBoxWithDistance(page, storeDistanceReq);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompanyStoreDTO> listStoresByManage(Integer managerId) {
|
||||
return this.getBaseMapper().listStoresByManage(managerId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<CompanyStoreDTO> listStoresByManage(Integer managerId);
|
||||
}
|
||||
|
||||
@ -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<CompanyStoreDTO> listStoresByManage(Integer managerId) {
|
||||
|
||||
return companyStoreRepo.listStoresByManage(managerId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<String, Object> 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> T getClaim(String token, String claimKey, Class<T> clazz) {
|
||||
return Jwts.parserBuilder()
|
||||
.setSigningKey(key)
|
||||
.build()
|
||||
.parseClaimsJws(token)
|
||||
.getBody()
|
||||
.get(claimKey, clazz);
|
||||
}
|
||||
|
||||
// 从 token 中提取某个对象类型的字段(支持复杂对象)
|
||||
public <T> T getClaimFromToken(String token, String claimKey, Class<T> 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不存在");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,4 +58,37 @@
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
<select id="listStoresByManage" resultType="com.sczx.store.dto.CompanyStoreDTO">
|
||||
SELECT
|
||||
t.id,
|
||||
t.name,
|
||||
t.contact_person,
|
||||
t.phone,
|
||||
t.contact_person2,
|
||||
t.phone2,
|
||||
t.province_id,
|
||||
t.province_name,
|
||||
t.city_id,
|
||||
t.city_name,
|
||||
t.area_id,
|
||||
t.area_name,
|
||||
t.address,
|
||||
t.detailed_address,
|
||||
t.image,
|
||||
t.latitude,
|
||||
t.longitude,
|
||||
t.day_time,
|
||||
t.start_time,
|
||||
t.end_time,
|
||||
t.label,
|
||||
t.status
|
||||
FROM
|
||||
zc_company_store t
|
||||
JOIN
|
||||
zc_base_user_store s
|
||||
ON t.id = s.store_id
|
||||
WHERE
|
||||
s.user_id = #{managerId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user