From 89b057dfca7bc661a8e71753769367f1bb3d6ff9 Mon Sep 17 00:00:00 2001 From: Chopper Date: Fri, 9 Jul 2021 11:16:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E8=A7=84=E8=8C=83=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/pom.xml | 3 +- .../common/security/context/UserContext.java | 34 +++++++++++++----- .../security/context/UserContextInit.java | 36 ------------------- .../trigger/message/PromotionMessage.java | 8 ----- .../java/cn/lili/common/utils/BeanUtil.java | 14 -------- .../serviceimpl/PromotionServiceImpl.java | 31 ++++++++++++---- .../aop/aspect/PageViewInterceptor.java | 12 ++++--- 7 files changed, 59 insertions(+), 79 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/common/security/context/UserContextInit.java diff --git a/framework/pom.xml b/framework/pom.xml index ba3991db..de8a3431 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -14,6 +14,8 @@ jar + 1.8 + 1.9.6 4.13.40.ALL 5.1.48 @@ -39,7 +41,6 @@ 2.9.10 UTF-8 UTF-8 - 1.8 true 2.0.8 2.3.1 diff --git a/framework/src/main/java/cn/lili/common/security/context/UserContext.java b/framework/src/main/java/cn/lili/common/security/context/UserContext.java index f3c072ee..01c29910 100644 --- a/framework/src/main/java/cn/lili/common/security/context/UserContext.java +++ b/framework/src/main/java/cn/lili/common/security/context/UserContext.java @@ -9,6 +9,10 @@ import cn.lili.common.token.SecretKeyUtil; import com.google.gson.Gson; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; /** * 用户上下文 @@ -20,15 +24,15 @@ import io.jsonwebtoken.Jwts; */ public class UserContext { - private static AuthenticationHandler authenticationHandler; - - public static void setHolder(AuthenticationHandler authenticationHandler) { - UserContext.authenticationHandler = authenticationHandler; - } - - + /** + * 根据request获取用户信息 + * + * @return + */ public static AuthUser getCurrentUser() { - return authenticationHandler.getAuthUser(); + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String accessToken = request.getHeader(SecurityEnum.HEADER_TOKEN.getValue()); + return getAuthUser(accessToken); } @@ -44,6 +48,20 @@ public class UserContext { if (cache.keys("*" + accessToken).size() == 0) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } + return getAuthUser(accessToken); + } catch (Exception e) { + return null; + } + } + + /** + * 根据jwt获取token重的用户信息 + * + * @param accessToken token + * @return + */ + public static AuthUser getAuthUser(String accessToken) { + try { //获取token的信息 Claims claims = Jwts.parser() diff --git a/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java b/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java deleted file mode 100644 index a214eb60..00000000 --- a/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.lili.common.security.context; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -/** - * 给予用户上下文,初始化参数 - * - * @author Chopper - * @version v4.0 - * @Description: - * @since 2020/11/14 20:30 - */ -@Component -public class UserContextInit implements ApplicationRunner { - - /** - * 用户信息holder,认证信息的获取者 - */ - @Autowired - private AuthenticationHandler authenticationHandler; - - /** - * 在项目加载时指定认证信息获取者 - * 默认是由spring 安全上下文中获取 - * - * @param args - * @throws Exception - */ - @Override - public void run(ApplicationArguments args) { - UserContext.setHolder(authenticationHandler); - } -} diff --git a/framework/src/main/java/cn/lili/common/trigger/message/PromotionMessage.java b/framework/src/main/java/cn/lili/common/trigger/message/PromotionMessage.java index 7290b974..1ec5c1ae 100644 --- a/framework/src/main/java/cn/lili/common/trigger/message/PromotionMessage.java +++ b/framework/src/main/java/cn/lili/common/trigger/message/PromotionMessage.java @@ -1,7 +1,5 @@ package cn.lili.common.trigger.message; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -43,10 +41,4 @@ public class PromotionMessage { */ private Date endTime; - public UpdateWrapper updateWrapper() { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", promotionId); - updateWrapper.set("promotion_status", PromotionStatusEnum.valueOf(promotionStatus)); - return updateWrapper; - } } diff --git a/framework/src/main/java/cn/lili/common/utils/BeanUtil.java b/framework/src/main/java/cn/lili/common/utils/BeanUtil.java index 3ce1c762..fa3dc89a 100644 --- a/framework/src/main/java/cn/lili/common/utils/BeanUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/BeanUtil.java @@ -1,7 +1,5 @@ package cn.lili.common.utils; -import cn.hutool.json.JSONUtil; -import cn.lili.modules.payment.kit.dto.PayParam; import org.springframework.beans.BeanUtils; import java.lang.reflect.Field; @@ -117,16 +115,4 @@ public class BeanUtil { return t; } - public static void main(String[] args) throws IllegalAccessException { - PayParam payParam = new PayParam(); - payParam.setClientType("client"); - payParam.setOrderType(""); - payParam.setSn("sn"); - String val = formatKeyValuePair(payParam); - System.out.println(val); - - PayParam param = formatKeyValuePair(val, new PayParam()); - System.out.println(JSONUtil.toJsonStr(param)); - } - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java index be72adee..1ea81399 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java @@ -5,18 +5,22 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; -import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import cn.lili.modules.promotion.entity.dos.*; import cn.lili.modules.promotion.entity.enums.*; -import cn.lili.modules.promotion.entity.vos.*; +import cn.lili.modules.promotion.entity.vos.CouponVO; +import cn.lili.modules.promotion.entity.vos.PintuanVO; +import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; +import cn.lili.modules.promotion.entity.vos.SeckillVO; import cn.lili.modules.promotion.service.*; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; 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 lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; @@ -249,7 +253,7 @@ public class PromotionServiceImpl implements PromotionService { //写入促销状态 fullDiscountVO.setPromotionStatus(promotionMessage.getPromotionStatus()); //修改促销数据 - result = this.fullDiscountService.update(promotionMessage.updateWrapper()); + result = this.fullDiscountService.update(updateWrapper(promotionMessage)); //clone一个活动信息,用于存放与索引中 FullDiscountVO clone = ObjectUtil.clone(fullDiscountVO); clone.setPromotionGoodsList(null); @@ -285,7 +289,7 @@ public class PromotionServiceImpl implements PromotionService { } //修改优惠券 couponVO.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.couponService.update(promotionMessage.updateWrapper()); + result = this.couponService.update(updateWrapper(promotionMessage)); //优惠券活动结束,会员已领取未使用的优惠券状态修改为:已过期 if(couponVO.getPromotionStatus().equals(PromotionStatusEnum.END)){ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() @@ -324,7 +328,7 @@ public class PromotionServiceImpl implements PromotionService { return false; } pintuanVO.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.pintuanService.update(promotionMessage.updateWrapper()); + result = this.pintuanService.update(updateWrapper(promotionMessage)); this.promotionGoodsService.updateBatchById(pintuanVO.getPromotionGoodsList()); if (pintuanVO.getPromotionGoodsList() != null) { List promotionGoodsList = pintuanVO.getPromotionGoodsList(); @@ -357,7 +361,7 @@ public class PromotionServiceImpl implements PromotionService { //修改活动状态 seckill.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.seckillService.update(promotionMessage.updateWrapper()); + result = this.seckillService.update(updateWrapper(promotionMessage)); //判断参与活动的商品是否为空,如果为空则返回 if(seckill.getSeckillApplyList()==null){ @@ -412,7 +416,7 @@ public class PromotionServiceImpl implements PromotionService { return false; } pointsGoodsVO.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.pointsGoodsService.update(promotionMessage.updateWrapper()); + result = this.pointsGoodsService.update(updateWrapper(promotionMessage)); PointsGoods pointsGoods = JSONUtil.toBean(JSONUtil.toJsonStr(pointsGoodsVO), PointsGoods.class); this.goodsIndexService.updateEsGoodsIndex(pointsGoodsVO.getSkuId(), pointsGoods, esPromotionKey, null); this.mongoTemplate.save(pointsGoodsVO); @@ -463,4 +467,17 @@ public class PromotionServiceImpl implements PromotionService { log.error("当前" + type.name() + "活动ID为[" + id + "] 不存在,更改活动状态至[ " + status + " ]失败!"); throw new ServiceException(ResultCode.PROMOTION_STATUS_END); } + + + /** + * 根据消息,获取update wrapper + * @param + * @return + */ + private UpdateWrapper updateWrapper(PromotionMessage promotionMessage) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", promotionMessage.getPromotionId()); + updateWrapper.set("promotion_status", PromotionStatusEnum.valueOf(promotionMessage.getPromotionStatus())); + return updateWrapper; + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java b/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java index 465764ad..6d80bcf0 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java +++ b/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java @@ -54,10 +54,12 @@ public class PageViewInterceptor { switch (pageViewEnum) { case SKU: ResultMessage> skuRvt = (ResultMessage>) rvt; - GoodsSkuVO goodsSkuDetail = (GoodsSkuVO) skuRvt.getResult().get("data"); - storeId = goodsSkuDetail.getStoreId(); - goodsId = goodsSkuDetail.getGoodsId(); - break; + if (skuRvt != null && skuRvt.getResult() != null && skuRvt.getResult().containsKey("data")) { + GoodsSkuVO goodsSkuDetail = (GoodsSkuVO) skuRvt.getResult().get("data"); + storeId = goodsSkuDetail.getStoreId(); + goodsId = goodsSkuDetail.getGoodsId(); + break; + } case STORE: Map map = spelFormat(point); storeId = map.get("id"); @@ -84,7 +86,7 @@ public class PageViewInterceptor { //店铺UV 统计,则需要对id去重复,所以如下处理 cache.cumulative(CachePrefix.STORE_UV.getPrefix() + StatisticsSuffix.suffix(storeId), ip); } catch (Exception e) { - log.error("页面出错",e); + log.error("页面出错", e); } }