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