From 77e5e0918131fa60a4fca8f075ab9ae6199cac54 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 16 八月 2024 15:27:06 +0800 Subject: [PATCH] 小程序登录 --- ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java | 4 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 14 ++-- ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 58 ++++++++++++++++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 15 +++- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java | 51 +++++++++++++++++ ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java | 12 ++++ 6 files changed, 141 insertions(+), 13 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java new file mode 100644 index 0000000..2f01d93 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java @@ -0,0 +1,51 @@ +package com.ruoyi.system.api.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户信息 小程序登录使用 + * + * @author 无关风月 + */ +@Data +public class LoginUserApplet implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 用户唯一标识 + */ + private String token; + /** + * 用户姓名 + */ + private String name; + + /** + * 用户名id + */ + private Integer userid; + + /** + * 用户名 + */ + private String phone; + /** + * 登录时间 + */ + private Long loginTime; + + /** + * 过期时间 + */ + private Long expireTime; + + /** + * 登录IP地址 + */ + private String ipaddr; + + + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java index c122e52..8f56ebf 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java @@ -36,6 +36,10 @@ * 用户标识 */ public static final String USER_KEY = "user_key"; + /** + * 小程序登录用户标识 + */ + public static final String USER_APPLET_KEY = "user_applet_key"; /** * 登录用户 diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java index d984892..b5f5b92 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java @@ -64,6 +64,17 @@ } /** + * 小程序根据令牌获取用户标识 + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserKeyApplet(String token) + { + Claims claims = parseToken(token); + return getValue(claims, SecurityConstants.USER_APPLET_KEY); + } + /** * 根据令牌获取用户ID * * @param token 令牌 @@ -75,6 +86,7 @@ return getValue(claims, SecurityConstants.DETAILS_USER_ID); } + /** * 根据身份信息获取用户ID * diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java index 139ee8b..2d7cae5 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java @@ -4,6 +4,8 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; + +import com.ruoyi.system.api.model.LoginUserApplet; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ruoyi.common.core.constant.CacheConstants; @@ -64,7 +66,53 @@ rspMap.put("expires_in", expireTime); return rspMap; } - + /** + * 创建小程序令牌 + */ + public Map<String, Object> createTokenApplet(LoginUserApplet loginUser) { + String token = IdUtils.fastUUID(); + Integer userId = loginUser.getUserid(); + String name = loginUser.getName(); + loginUser.setToken(token); + loginUser.setIpaddr(IpUtils.getIpAddr()); + refreshToken1(loginUser); + // Jwt存储信息 + Map<String, Object> claimsMap = new HashMap<String, Object>(); + claimsMap.put(SecurityConstants.USER_APPLET_KEY, token); + claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); + claimsMap.put(SecurityConstants.DETAILS_USERNAME, name); + // 接口返回信息 + Map<String, Object> rspMap = new HashMap<String, Object>(); + rspMap.put("access_token", JwtUtils.createToken(claimsMap)); + rspMap.put("expires_in", expireTime); + return rspMap; + } + public LoginUserApplet getLoginUserApplet() { + return getLoginUserAppletToken(ServletUtils.getRequest()); + } + public LoginUserApplet getLoginUserAppletToken(HttpServletRequest request) { + // 获取请求携带的令牌 + String token = SecurityUtils.getToken(request); + return getLoginUserApplet(token); + } + /** + * 小程序 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUserApplet getLoginUserApplet(String token) { + LoginUserApplet user = null; + try { + if (StringUtils.isNotEmpty(token)) { + String userkey = JwtUtils.getUserKeyApplet(token); + user = redisService.getCacheObject(getTokenKey(userkey)); + return user; + } + } catch (Exception e) { + e.printStackTrace(); + } + return user; + } /** * 获取用户身份信息 * @@ -161,7 +209,13 @@ String userKey = getTokenKey(loginUser.getToken()); redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); } - + public void refreshToken1(LoginUserApplet dto) { + dto.setLoginTime(System.currentTimeMillis()); + dto.setExpireTime(dto.getLoginTime() + expireTime * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + String userKey = getTokenKey(dto.getToken()); + redisService.setCacheObject(userKey, dto, expireTime, TimeUnit.MINUTES); + } private String getTokenKey(String token) { return ACCESS_TOKEN + token; diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java index 26d4687..a85603f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java @@ -5,10 +5,13 @@ import com.ruoyi.account.api.dto.CouponListDto; import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.model.TAppCoupon; +import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; +import com.ruoyi.account.api.vo.CarListVO; import com.ruoyi.account.api.vo.CouponListVOVO; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.account.service.TAppCouponService; +import com.ruoyi.account.service.TAppUserCarService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; @@ -43,6 +46,8 @@ @Autowired private OtherClient otherClient; + @Autowired + private TAppUserCarService appUserCarService; /** * 查询用户可用优惠券数量 * @param dto @@ -55,14 +60,16 @@ return AjaxResult.ok(res); } /** - * - * @param dto + * 选择车辆列表 * @return */ @ApiOperation(value = "选择车辆列表", tags = {"小程序-扫一扫"}) @PostMapping(value = "/scan/carList") - public AjaxResult<CouponListVOVO> carList(@RequestBody CouponListDto dto) { - return AjaxResult.success(); + public AjaxResult<List<TAppUserCar>> carList() { + // todo 用户id + List<TAppUserCar> appUserId = appUserCarService.list(new QueryWrapper<TAppUserCar>() + .eq("app_user_id", 11)); + return AjaxResult.ok(appUserId); } /** diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index 6209a9a..aa1eb3b 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.model.Site; @@ -16,10 +17,7 @@ import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; import com.ruoyi.chargingPile.domain.SiteMenu; -import com.ruoyi.chargingPile.service.IPartnerService; -import com.ruoyi.chargingPile.service.ISiteService; -import com.ruoyi.chargingPile.service.TChargingGunService; -import com.ruoyi.chargingPile.service.TChargingPileService; +import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.GeodesyUtil; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -69,7 +67,9 @@ @Resource private TChargingGunService chargingGunService; - + @Autowired + private TParkingLotService parkingLotService; + @@ -91,7 +91,6 @@ public AjaxResult<PageInfo<SiteVO>> pageList(@Validated @RequestBody SiteQuery query){ return AjaxResult.success(siteService.pageList(query)); } - @ApiOperation(value = "获取站点详细信息", tags = {"小程序-站点管理-站点详情"}) @PostMapping("/getDetailById") public AjaxResult<SiteDetailVO> getDetailById(@Validated @RequestBody SiteDetailQuery query){ @@ -100,7 +99,8 @@ Map<String, Double> distance = GeodesyUtil.getDistance(query.getLat() + "," + query.getLon(), siteDetailVO.getLat() + "," + siteDetailVO.getLon()); siteDetailVO.setDistance(distance.get("WGS84")); // 查询绑定车牌提示文案 - TParkingLot parkingLot = parkingLotClient.getLotBySiteId(query.getSiteId()).getData(); + TParkingLot parkingLot = parkingLotService.getOne(Wrappers.lambdaQuery(TParkingLot.class) + .eq(TParkingLot::getSiteId, query.getSiteId())); if(Objects.nonNull(parkingLot)){ siteDetailVO.setRemark(parkingLot.getRemark()); } -- Gitblit v1.7.1