From 75942ecc2e438012c5ea876715966ace593565a0 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 11 四月 2025 15:17:41 +0800 Subject: [PATCH] 部分代码 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserServiceImpl.java | 129 +++++++----------------------------------- 1 files changed, 23 insertions(+), 106 deletions(-) diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserServiceImpl.java index e0a84d7..228a2ef 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserServiceImpl.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserServiceImpl.java @@ -1,38 +1,27 @@ package com.ruoyi.study.service.impl; import cn.hutool.core.util.RandomUtil; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.RedisConstants; -import com.ruoyi.common.core.constant.TokenConstants; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.study.domain.TUser; import com.ruoyi.study.dto.AppUserQuery; import com.ruoyi.study.mapper.TUserMapper; import com.ruoyi.study.service.ITUserService; -import com.ruoyi.study.utils.RandomVxUtil; -import com.ruoyi.study.utils.SignatureUtil; +import com.ruoyi.study.utils.HWSendSms; import com.ruoyi.study.vo.AppUserVO; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.util.EntityUtils; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.IOException; import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * <p> @@ -50,29 +39,29 @@ @Resource private TokenService tokenService; - /** - * 微信公众号的appid - */ - @Value("appId") - private String appId; - - /** - * 微信公众号的appSecret - */ - @Value("secret") - private String secret; - @Override public List<AppUserVO> listAll(AppUserQuery query) { return this.baseMapper.listAll(query); } + @Autowired + private HWSendSms hwSendSms; + + @Override - public Boolean phoneCode(String phone) { + public Boolean phoneCode(String phone) throws Exception { // 生成随机 6位数字 验证码 String phoneCode = RandomUtil.randomNumbers(6); - // todo 手机验证码暂时 123456 - phoneCode = "123456"; + String regex = Constants.PHONE; + // 编译正则表达式 + Pattern pattern = Pattern.compile(regex); + // 创建Matcher对象 + Matcher matcher = pattern.matcher(phone); + // 判断是否匹配 + if (!matcher.matches()) { + throw new GlobalException("手机号不合法!"); + } + hwSendSms.sendSms(phoneCode, phone); // 判断redis中是否存在手机验证码 Object phoneCodeRedis = redisTemplate.opsForValue().get(RedisConstants.PHONE_CODE + phone); if (phoneCodeRedis == null) { @@ -93,7 +82,7 @@ * key为 --> phone_code:手机号码 (phone_code表示该业务为 验证码登录) * value为 --> 随机验证码:时间戳 (时间戳用于计算是否超过1分钟的重发时间) */ - redisTemplate.opsForValue().set(RedisConstants.PHONE_CODE + phone, phoneCode + ":" + System.currentTimeMillis(), 3, TimeUnit.MINUTES); + redisTemplate.opsForValue().set(RedisConstants.PHONE_CODE + phone, phoneCode + ":" + System.currentTimeMillis(), 5, TimeUnit.MINUTES); String sendMessage = "验证码发送成功,您的验证码为:" + phoneCode + ",该验证码三分钟内有效,请及时完成登陆"; // todo 发送此消息 System.out.println(sendMessage); @@ -103,7 +92,7 @@ @Override public Boolean isVip() { TUser user = lambdaQuery().eq(TUser::getId, tokenService.getLoginUserStudy().getUserid()) - .eq(TUser::getDisabled, 0).one(); + .eq(TUser::getDisabled, 0).eq(TUser::getState,1).one(); // 是否为vip 逻辑 if (null == user) { return false; @@ -114,80 +103,8 @@ } @Override - public Map<String, Object> weiXinShare(String url) { - // 初始化微信API,并注册AppID - long timestamp = System.currentTimeMillis() / 1000; - String noncestr = RandomVxUtil.createRandomString(16); - String ticket = getTicket(getToken(appId, secret)); - String str = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "×tamp=" + timestamp + "&url=" + url; - // 获取加密后的签名 - String signature = SignatureUtil.getSignature(str); - Map<String, Object> map = new HashMap<>(); - map.put("appId", appId); - map.put("timestamp", timestamp); - map.put("nonceStr", noncestr); - map.put("signature", signature); - return map; - } - - public String getToken(String appid, String secret) { - //拼接访问地址 - String apiUrl = String.format(TokenConstants.VX_TOKEN_API_PREFIX, appid, secret); - HttpClient client = HttpClients.createDefault(); - //get请求 - HttpGet get = new HttpGet(apiUrl); - // 初始化解析json格式的对象 - String result = null; - try { - HttpResponse res = client.execute(get); - // 初始化响应内容 - String responseContent; - HttpEntity entity = res.getEntity(); - //设置编码格式 - responseContent = EntityUtils.toString(entity, "UTF-8"); - // 将json字符串转换为json对象 - JSONObject json = JSONObject.parseObject(responseContent); - if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { - if (json.get(Constants.ERR_CODE) != null) { - // 错误时微信会返回错误码等信息,{"errcode":40013,"errmsg":"invalid appid"} - throw new GlobalException("微信授权失败!"); - } else { - // 正常情况下{"access_token":"ACCESS_TOKEN","expires_in":7200} - result = String.valueOf(json.get("access_token")); - } - } - return result; - } catch (IOException e) { - throw new GlobalException("微信授权失败!"); - } - } - - public static String getTicket(String accessToken) { - String turl = String.format(TokenConstants.VX_TICKET_API_PREFIX, accessToken); - HttpClient client = HttpClients.createDefault(); - HttpGet get = new HttpGet(turl); - String result = null; - try { - HttpResponse res = client.execute(get); - // 响应内容 - String responseContent; - HttpEntity entity = res.getEntity(); - responseContent = EntityUtils.toString(entity, "UTF-8"); - JSONObject jsonObject = JSONObject.parseObject(responseContent); - // 将json字符串转换为json对象 - if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { - if (jsonObject.get(Constants.ERR_CODE) == null) { - // 错误时微信会返回错误码等信息,{"errcode":40013,"errmsg":"invalid appid"} - throw new GlobalException("微信授权失败!"); - } else { - // 正常情况下{"access_token":"ACCESS_TOKEN","expires_in":7200} - result = String.valueOf(jsonObject.get("ticket")); - } - } - return result; - } catch (IOException e) { - throw new GlobalException("微信授权失败!"); - } + public void updateOne(Integer id, Date vipEndTime,Date vipPayTime) { + this.baseMapper.updateOne(id,vipPayTime,vipPayTime); } } -- Gitblit v1.7.1