diff --git a/ysy-auth/src/main/java/com/ysy/auth/service/impl/AuthServiceImpl.java b/ysy-auth/src/main/java/com/ysy/auth/service/impl/AuthServiceImpl.java index 6c1d33e..3d459de 100644 --- a/ysy-auth/src/main/java/com/ysy/auth/service/impl/AuthServiceImpl.java +++ b/ysy-auth/src/main/java/com/ysy/auth/service/impl/AuthServiceImpl.java @@ -2,6 +2,7 @@ package com.ysy.auth.service.impl; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson2.JSON; +import com.ysy.common.contant.TokenConstants; import com.ysy.common.domain.dto.RiderDTO; import com.ysy.common.domain.po.Rider; import com.ysy.common.domain.result.R; @@ -17,6 +18,7 @@ import org.springframework.util.Assert; import java.util.HashMap; import java.util.Map; +import java.util.UUID; import java.util.concurrent.TimeUnit; @Service @@ -46,11 +48,15 @@ public class AuthServiceImpl implements AuthService { "密码错误"); //生成token - Map claim = BeanUtil.beanToMap(rider, new HashMap<>(), false, false); + Map claim = new HashMap<>(); + String tokenKey = UUID.randomUUID().toString(); + claim.put(TokenConstants.TOKEN_KEY, tokenKey); + claim.put(TokenConstants.USER_ID, rider.getRiderId()); + claim.put(TokenConstants.USER_NAME, rider.getRiderName()); String token = JwtUtil.createToken(claim); //登录成功存入缓存 - stringRedisTemplate.opsForValue().set(token, + stringRedisTemplate.opsForValue().set(TokenConstants.TOKEN_LOGIN + tokenKey, JSON.toJSONString(rider), 30, TimeUnit.MINUTES); diff --git a/ysy-common/src/main/java/com/ysy/common/contant/TokenConstants.java b/ysy-common/src/main/java/com/ysy/common/contant/TokenConstants.java new file mode 100644 index 0000000..eb50791 --- /dev/null +++ b/ysy-common/src/main/java/com/ysy/common/contant/TokenConstants.java @@ -0,0 +1,9 @@ +package com.ysy.common.contant; + +public class TokenConstants { + public final static String TOKEN = "token"; + public final static String TOKEN_LOGIN = "tokenLogin"; + public final static String TOKEN_KEY = "tokenKey"; + public final static String USER_ID = "userId"; + public final static String USER_NAME = "username"; +} diff --git a/ysy-gateway/src/main/java/com/ysy/gateway/filter/GlobalAuthFilter.java b/ysy-gateway/src/main/java/com/ysy/gateway/filter/GlobalAuthFilter.java index ca50421..d79dda9 100644 --- a/ysy-gateway/src/main/java/com/ysy/gateway/filter/GlobalAuthFilter.java +++ b/ysy-gateway/src/main/java/com/ysy/gateway/filter/GlobalAuthFilter.java @@ -1,5 +1,8 @@ package com.ysy.gateway.filter; +import com.auth0.jwt.interfaces.Claim; +import com.ysy.common.contant.TokenConstants; +import com.ysy.common.domain.po.Rider; import com.ysy.gateway.config.AuthProperties; import com.ysy.common.utils.gateway.GatewayUtils; import com.ysy.common.utils.jwt.JwtUtil; @@ -10,10 +13,14 @@ import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.annotation.Order; import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.http.HttpMethod; +import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; +import java.util.Map; + @Component @Order(1) @Slf4j @@ -26,9 +33,12 @@ public class GlobalAuthFilter implements GlobalFilter { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + //获取访问路径 - String path = exchange.getRequest().getPath().toString(); - log.info("访问服务路径:" + path); + String path = request.getPath().toString(); + HttpMethod method = request.getMethod(); + log.info("访问服务路径:[{}], 请求方式:[{}]", path, method); //匹配白名单 boolean matches = StringUtils.matches(path, authProperties.getExcludePaths()); @@ -39,21 +49,31 @@ public class GlobalAuthFilter implements GlobalFilter { } //获取token - String token = exchange.getRequest().getHeaders().get("token").get(0); + String token = request.getHeaders().getFirst(TokenConstants.TOKEN); if (token == null) - GatewayUtils.errorResponse(exchange, "请先登录"); + return GatewayUtils.errorResponse(exchange, "请先登录"); //jwt解析出错 + Claim claim = null; try { - JwtUtil.decodedJWT(token); + claim = JwtUtil.getClaim(token); } catch (Exception e) { - GatewayUtils.errorResponse(exchange, "身份不合法"); + return GatewayUtils.errorResponse(exchange, "身份不合法"); } - //缓存时间失效 - if (Boolean.FALSE.equals(stringRedisTemplate.hasKey(token))) - GatewayUtils.errorResponse(exchange, "会话已过期,请重新登录"); + Map map = claim.asMap(); + String tokenKey = map.get(TokenConstants.TOKEN_KEY).toString(); - return chain.filter(exchange); + //缓存时间失效 + if (Boolean.FALSE.equals(stringRedisTemplate.hasKey(TokenConstants.TOKEN_LOGIN + tokenKey))) + return GatewayUtils.errorResponse(exchange, "会话已过期,请重新登录"); + + ServerHttpRequest.Builder mutate = request.mutate(); + GatewayUtils.addHeader(mutate, TokenConstants.TOKEN_KEY, tokenKey); + GatewayUtils.addHeader(mutate, TokenConstants.USER_ID, map.get(TokenConstants.USER_ID)); + GatewayUtils.addHeader(mutate, TokenConstants.USER_NAME, map.get(TokenConstants.USER_NAME)); + + GatewayUtils.removeHeader(mutate, TokenConstants.TOKEN); + return chain.filter(exchange.mutate().request(mutate.build()).build()); } } diff --git a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/controller/ApplyController.java b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/controller/ApplyController.java index f01040b..9875103 100644 --- a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/controller/ApplyController.java +++ b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/controller/ApplyController.java @@ -19,4 +19,10 @@ public class ApplyController { IPage applyIPage = applyService.getApplyList(applyVO); return R.success("applyList", applyIPage); } + + @PostMapping("/add") + public R applyAdd(@RequestBody Apply apply) { + applyService.applyAdd(apply); + return R.success("添加成功"); + } } diff --git a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/mapper/ApplyMapper.java b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/mapper/ApplyMapper.java index 9e0a296..e366479 100644 --- a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/mapper/ApplyMapper.java +++ b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/mapper/ApplyMapper.java @@ -6,4 +6,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ApplyMapper extends BaseMapper { + } diff --git a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/ApplyService.java b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/ApplyService.java index fbc6fcb..c7aab80 100644 --- a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/ApplyService.java +++ b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/ApplyService.java @@ -3,9 +3,10 @@ package com.ysy.apply.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.ysy.common.domain.po.Apply; -import com.ysy.common.domain.result.R; import com.ysy.common.domain.vo.ApplyVO; public interface ApplyService extends IService { IPage getApplyList(ApplyVO applyVO); + + void applyAdd(Apply apply); } diff --git a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/impl/ApplyServiceImpl.java b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/impl/ApplyServiceImpl.java index 1dfe760..6709cb2 100644 --- a/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/impl/ApplyServiceImpl.java +++ b/ysy-modules/ysy-apply/src/main/java/com/ysy/apply/service/impl/ApplyServiceImpl.java @@ -2,13 +2,12 @@ package com.ysy.apply.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ysy.common.contant.TokenConstants; import com.ysy.common.domain.po.Apply; import com.ysy.common.domain.po.Rider; -import com.ysy.common.domain.result.R; import com.ysy.apply.mapper.ApplyMapper; import com.ysy.apply.service.ApplyService; import com.ysy.common.domain.vo.ApplyVO; @@ -18,8 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; -import java.util.List; - @Service public class ApplyServiceImpl extends ServiceImpl implements ApplyService { @@ -31,10 +28,10 @@ public class ApplyServiceImpl extends ServiceImpl implements @Override public IPage getApplyList(ApplyVO applyVO) { - String token = request.getHeader("token"); + String userId = request.getHeader(TokenConstants.USER_ID); - String jsonString = stringRedisTemplate.opsForValue().get(token); - Rider rider = JSON.parseObject(jsonString, Rider.class); +// String jsonString = stringRedisTemplate.opsForValue().get(token); +// Rider rider = JSON.parseObject(jsonString, Rider.class); IPage page = new Page<>(); page.setCurrent(applyVO.getPageNum()); @@ -50,11 +47,16 @@ public class ApplyServiceImpl extends ServiceImpl implements .and(a -> { a.eq(Apply::getRiderId, 0) .or(a1 -> - a1.eq(Apply::getRiderId, rider.getRiderId()) + a1.eq(Apply::getRiderId, userId) .eq(Apply::getState, 0)); }) .orderByDesc(Apply::getOrderTime); return page(page, lambdaQueryWrapper); } + + @Override + public void applyAdd(Apply apply) { + save(apply); + } } diff --git a/ysy-modules/ysy-system/src/main/java/com/ysy/system/controller/RiderController.java b/ysy-modules/ysy-system/src/main/java/com/ysy/system/controller/RiderController.java index bc952f8..716fd2e 100644 --- a/ysy-modules/ysy-system/src/main/java/com/ysy/system/controller/RiderController.java +++ b/ysy-modules/ysy-system/src/main/java/com/ysy/system/controller/RiderController.java @@ -1,12 +1,10 @@ package com.ysy.system.controller; +import com.ysy.common.domain.po.Rider; import com.ysy.common.domain.result.R; import com.ysy.system.service.RiderService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/rider") @@ -16,11 +14,23 @@ public class RiderController { @GetMapping("/get/{riderName}") public R getRiderByRiderName(@PathVariable String riderName) { - return riderService.getRiderByRiderName(riderName); + return R.success( + "rider", + riderService.getRiderByRiderName(riderName) + ); } - @GetMapping("/rider") + @GetMapping("/info") public R rider() { - return riderService.getRiderById(); + return R.success( + "rider", + riderService.getRiderById() + ); + } + + @PutMapping("/modify") + public R riderModify(@RequestParam Integer takeKilo, @RequestParam Integer takePrice) { + riderService.modify(takeKilo, takePrice); + return R.success(); } } diff --git a/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/RiderService.java b/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/RiderService.java index 88f687d..9a2f019 100644 --- a/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/RiderService.java +++ b/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/RiderService.java @@ -5,7 +5,9 @@ import com.ysy.common.domain.po.Rider; import com.ysy.common.domain.result.R; public interface RiderService extends IService { - R getRiderByRiderName(String riderName); + Rider getRiderByRiderName(String riderName); - R getRiderById(); + Rider getRiderById(); + + void modify(Integer takeKilo, Integer takePrice); } diff --git a/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/impl/RiderServiceImpl.java b/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/impl/RiderServiceImpl.java index d160020..38abe78 100644 --- a/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/impl/RiderServiceImpl.java +++ b/ysy-modules/ysy-system/src/main/java/com/ysy/system/service/impl/RiderServiceImpl.java @@ -2,8 +2,10 @@ package com.ysy.system.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ysy.common.contant.TokenConstants; import com.ysy.common.domain.po.Rider; import com.ysy.common.domain.result.R; import com.ysy.system.mapper.RiderMapper; @@ -19,24 +21,32 @@ public class RiderServiceImpl extends ServiceImpl implements @Autowired private HttpServletRequest request; - @Autowired - private StringRedisTemplate stringRedisTemplate; - @Override - public R getRiderByRiderName(String riderName) { + public Rider getRiderByRiderName(String riderName) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(StringUtils.isNotBlank(riderName), Rider::getRiderName, riderName); - Rider one = getOne(lambdaQueryWrapper); - return R.success("rider", one); + lambdaQueryWrapper.eq( + StringUtils.isNotBlank(riderName), + Rider::getRiderName, + riderName + ); + return getOne(lambdaQueryWrapper); } @Override - public R getRiderById() { - String token = request.getHeader("token"); + public Rider getRiderById() { + String userId = request.getHeader(TokenConstants.USER_ID); + return getById(userId); + } - String jsonString = stringRedisTemplate.opsForValue().get(token); - Rider rider = JSON.parseObject(jsonString, Rider.class); + @Override + public void modify(Integer takeKilo, Integer takePrice) { + String userId = request.getHeader(TokenConstants.USER_ID); - return R.success("rider", rider); + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.setSql("kilometer = kilometer + " + takeKilo + + ", left_money = left_money + " + takePrice) + .eq(Rider::getRiderId, userId); + boolean update = update(lambdaUpdateWrapper); + System.out.println(update); } }