xuhy
2026-02-11 b2ce03bd96f5c4f337bf3a811aab540a5494743f
小程序加锁
2个文件已修改
30 ■■■■■ 已修改文件
ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -2,6 +2,8 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.constant.AmountConstant;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
@@ -11,8 +13,13 @@
import com.ruoyi.common.core.domain.model.LoginAppBody;
import com.ruoyi.common.core.domain.model.LoginUserApplet;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.OrderNos;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.framework.web.service.TokenService;
@@ -33,17 +40,16 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 登录验证
@@ -115,9 +121,13 @@
//        }
//        AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey,  data.getIv());
//        appletUserDecodeData.setOpenId(openid);
        // 先使用openId和当前手机号进行查询
        String uuid = UUID.fastUUID().toString();
        boolean lock = redisCache.trylockLoop(CacheConstants.LOGIN_LOCK_KEY + openid, uuid, 60);
        // 先使用openId进行查询
        TAppUser sysAppUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class)
                .and(e->e.eq(TAppUser::getOpenId, openid)));
                .eq(TAppUser::getOpenId, openid));
        if (lock){
            try {
        if (sysAppUser==null){
            sysAppUser = new TAppUser();
//            sysAppUser.setPhoneNumber(appletUserDecodeData.getPhoneNumber());
@@ -134,6 +144,10 @@
            sysAppUser.setOpenId(openid);
            appUserService.updateById(sysAppUser);
        }
            }finally {
                redisCache.unlock(CacheConstants.LOGIN_LOCK_KEY + openid,uuid);
            }
        }
        LoginUserApplet loginUserApplet = new LoginUserApplet();
        TAppUserResp sysUserResp = new TAppUserResp();
        BeanUtils.copyProperties(sysAppUser, sysUserResp);
ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
@@ -46,5 +46,5 @@
    public static final String BILL_UPDATE_LOCK_KEY = "bill_update_lock:";
    public static final String COMPLETE_PAY_LOCK_KEY = "complete_pay_lock:";
    public static final String LOGIN_LOCK_KEY = "login_lock:";
}