diff --git a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/Aliyun.java b/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/Aliyun.java deleted file mode 100644 index e1746300f67d8a86bdb46ed5ba0d491d3207b51e..0000000000000000000000000000000000000000 --- a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/Aliyun.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.roncoo.education.common.core.aliyun; - -import lombok.Data; -import lombok.experimental.Accessors; - -import java.io.Serializable; - -/** - * @author wujing - */ -@Data -@Accessors(chain = true) -public class Aliyun implements Serializable { - - private static final long serialVersionUID = 1L; - - private String aliyunAccessKeyId; - private String aliyunAccessKeySecret; - private String aliyunOssUrl; - private String aliyunOssEndpoint; - private String aliyunOssBucket; - -// // 短信签名 -// private String aliyunSmsSignName; -// private String aliyunSmsAccessKeyId; -// private String aliyunSmsAccessKeySecret; -// private String aliyunSmsAuthCode; - -} diff --git a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/AliyunOssUtil.java b/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/AliyunOssUtil.java deleted file mode 100644 index 7b62909922e121e72bc68f7698caa24c21c6fb54..0000000000000000000000000000000000000000 --- a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/AliyunOssUtil.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.roncoo.education.common.core.aliyun; - -import cn.hutool.core.util.IdUtil; -import com.aliyun.oss.OSS; -import com.aliyun.oss.OSSClientBuilder; -import com.aliyun.oss.model.CannedAccessControlList; -import com.aliyun.oss.model.GeneratePresignedUrlRequest; -import com.aliyun.oss.model.ObjectMetadata; -import com.aliyun.oss.model.PutObjectResult; -import lombok.extern.slf4j.Slf4j; -import org.springframework.util.StringUtils; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Date; - -/** - * @author fengyw - */ -@Slf4j -public final class AliyunOssUtil { - - private final static String PREFIX = "education"; - - private AliyunOssUtil() { - } - - public static String getUrlSign(Aliyun aliyun, String url, Date expires) { - GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(aliyun.getAliyunOssBucket(), url.replace(aliyun.getAliyunOssUrl(), "")); - generatePresignedUrlRequest.setExpiration(expires); - return url + "?" + getOssClient(aliyun.getAliyunOssEndpoint(), aliyun.getAliyunAccessKeyId(), aliyun.getAliyunAccessKeySecret()).generatePresignedUrl(generatePresignedUrlRequest).getQuery(); - } - - public static String uploadPic(File file, Aliyun aliyun) { - // 上传 - try { - String name = file.getName(); - String filePath = PREFIX + "/" + IdUtil.simpleUUID() + name.substring(name.lastIndexOf(".")); - getOssClient(aliyun.getAliyunOssEndpoint(), aliyun.getAliyunAccessKeyId(), aliyun.getAliyunAccessKeySecret()).putObject(aliyun.getAliyunOssBucket(), filePath, file); - return aliyun.getAliyunOssUrl() + filePath; - } catch (Exception e) { - log.error("上传失败", e); - return ""; - } - } - - public static String uploadPic(MultipartFile file, Aliyun aliyun) { - // 上传 - InputStream in = null; - try { - in = file.getInputStream(); - String name = file.getOriginalFilename(); - String filePath = PREFIX + "/" + IdUtil.simpleUUID() + name.substring(name.lastIndexOf(".")); - getOssClient(aliyun.getAliyunOssEndpoint(), aliyun.getAliyunAccessKeyId(), aliyun.getAliyunAccessKeySecret()).putObject(aliyun.getAliyunOssBucket(), filePath, in); - return aliyun.getAliyunOssUrl() + filePath; - } catch (Exception e) { - log.error("上传失败", e); - return ""; - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - } - } - } - } - - public static String uploadDoc(File file, Aliyun aliyun) { - // 上传 - try { - String name = file.getName(); - String filePath = PREFIX + "/" + IdUtil.simpleUUID() + name.substring(name.lastIndexOf(".")); - putObjectForFile(aliyun.getAliyunOssEndpoint(), aliyun.getAliyunAccessKeyId(), aliyun.getAliyunAccessKeySecret(), aliyun.getAliyunOssBucket(), filePath, new FileInputStream(file), file.getName()); - return aliyun.getAliyunOssUrl() + filePath; - } catch (Exception e) { - log.error("上传失败", e); - return ""; - } - } - - public static String uploadDoc(MultipartFile file, Aliyun aliyun) { - InputStream in = null; - // 上传 - try { - in = file.getInputStream(); - String name = file.getOriginalFilename(); - String filePath = PREFIX + "/" + IdUtil.simpleUUID() + name.substring(name.lastIndexOf(".")); - putObjectForFile(aliyun.getAliyunOssEndpoint(), aliyun.getAliyunAccessKeyId(), aliyun.getAliyunAccessKeySecret(), aliyun.getAliyunOssBucket(), filePath, in, file.getOriginalFilename()); - return aliyun.getAliyunOssUrl() + filePath; - } catch (Exception e) { - log.error("上传失败", e); - return ""; - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - } - } - } - } - - /** - * 根据url删除 - * - * @param url - */ - public static void delete(String url, Aliyun aliyun) { - try { - String filePath = url.replace(aliyun.getAliyunOssUrl(), ""); - deleteObject(aliyun.getAliyunOssBucket(), filePath, aliyun); - } catch (Exception e) { - log.error("上传失败", e); - } - } - - private static String check(String url, String ossUrl) { - String key = url.replace(ossUrl, ""); - if (key.startsWith("http")) { - if (ossUrl.startsWith("https")) { - ossUrl = "http" + ossUrl.substring(5, ossUrl.length()); - } else { - ossUrl = "https" + ossUrl.substring(4, ossUrl.length()); - } - } - return key.replace(ossUrl, ""); - } - - - /** - * 文件存储入OSS - * - * @param bucketName - * @param key - * @param inputStream - */ - private static PutObjectResult putObjectForFile(String endpoint, String keyId, String keySecret, String bucketName, String key, InputStream inputStream, String fileName) { - OSS ossClient = getOssClient(endpoint, keyId, keySecret); - ObjectMetadata meta = new ObjectMetadata(); - meta.setContentEncoding("UTF-8"); - if (StringUtils.hasText(fileName)) { - meta.setContentDisposition("attachment;filename={}".replace("{}", fileName)); - meta.setObjectAcl(CannedAccessControlList.Private); - } - return ossClient.putObject(bucketName, key, inputStream, meta); - } - - private static OSS getOssClient(String endpoint, String keyId, String keySecret) { - return new OSSClientBuilder().build(endpoint, keyId, keySecret); - } - - /** - * 删除Bucket中的Object - * - * @param bucketName - * @param key - * @throws IOException - */ - private static void deleteObject(String bucketName, String key, Aliyun aliyun) throws IOException { - getOssClient(aliyun.getAliyunOssEndpoint(), aliyun.getAliyunAccessKeyId(), aliyun.getAliyunAccessKeySecret()).deleteObject(bucketName, key); - } - -} diff --git a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/AliyunSmsUtil.java b/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/AliyunSmsUtil.java deleted file mode 100644 index 1b56b88e20ee088b87163977de9fee37519e52db..0000000000000000000000000000000000000000 --- a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/aliyun/AliyunSmsUtil.java +++ /dev/null @@ -1,62 +0,0 @@ -//package com.roncoo.education.common.core.aliyun; -// -//import cn.hutool.json.JSONObject; -//import cn.hutool.json.JSONUtil; -//import com.aliyuncs.CommonRequest; -//import com.aliyuncs.DefaultAcsClient; -//import com.aliyuncs.IAcsClient; -//import com.aliyuncs.http.MethodType; -//import com.aliyuncs.profile.DefaultProfile; -//import com.aliyuncs.profile.IClientProfile; -//import lombok.extern.slf4j.Slf4j; -// -///** -// * @author fengyw -// */ -//@Slf4j -//public final class AliyunSmsUtil { -// -// private AliyunSmsUtil() { -// } -// -// /** -// * 发送验证码 -// * -// * @param mobile -// * @param code -// * @param aliyun -// */ -// public static Boolean sendVerCode(String mobile, String code, Aliyun aliyun) { -// String templateParam = "{\"code\":\"{code}\"}".replace("{code}", code); -// return send(mobile, templateParam, aliyun.getAliyunSmsSignName(), aliyun.getAliyunSmsAuthCode(), aliyun.getAliyunSmsAccessKeyId(), aliyun.getAliyunSmsAccessKeySecret()); -// } -// -// private static Boolean send(String phone, String templateParam, String signName, String templateCode, String accessKeyId, String accessKeySecret) { -// System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); -// System.setProperty("sun.net.client.defaultReadTimeout", "10000"); -// IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); -// IAcsClient acsClient = new DefaultAcsClient(profile); -// // 组装请求对象 -// CommonRequest request = new CommonRequest(); -// request.setSysMethod(MethodType.POST); -// request.setSysDomain("dysmsapi.aliyuncs.com"); -// request.setSysVersion("2017-05-25"); -// request.setSysAction("SendSms"); -// request.putQueryParameter("RegionId", "cn-hangzhou"); -// request.putQueryParameter("PhoneNumbers", phone); -// request.putQueryParameter("SignName", signName); -// request.putQueryParameter("TemplateCode", templateCode); -// request.putQueryParameter("TemplateParam", templateParam); -// try { -// JSONObject resultJson = JSONUtil.parseObj(acsClient.getCommonResponse(request).getData()); -// if (!"OK".equals(resultJson.getStr("Code"))) { -// log.error("短信发送错误={}", resultJson.getStr("Message")); -// return false; -// } -// return true; -// } catch (Exception e) { -// log.error("系统繁忙", e); -// return false; -// } -// } -//} diff --git a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/tools/Constants.java b/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/tools/Constants.java index f3134a0374d561d2c18acfa087d7d13155042042..029dfbfb5e359891d85363b0ac059372fabc9c54 100644 --- a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/tools/Constants.java +++ b/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/tools/Constants.java @@ -26,9 +26,19 @@ public final class Constants { String ADMINI_MENU = "admin::menu::"; String ADMIN_VERI_CODE = "admin::ver::code::"; String USER_STUDY = "user::study::"; + /** + * 资源 + */ String RESOURCE = "resource::"; + /** + * 学习进度 + */ String PROGRESS = "progress::"; + /** + * 短信验证码 + */ String CODE = "code::"; + String CODE_STAT = "code::stat::"; } } diff --git a/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/cache/CacheRedis.java b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/cache/CacheRedis.java index 191e33fe383e1f9506bf13e3aa123c9e5d435e25..b52d7b3cb46423fd89177c7e52cf9e78de8d9b0a 100644 --- a/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/cache/CacheRedis.java +++ b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/cache/CacheRedis.java @@ -28,9 +28,9 @@ public class CacheRedis { */ public T set(String key, T t) { if (t != null) { - String value = JSUtil.toJsonString(t); - if (t instanceof String) { - value = t.toString(); + String value = t.toString(); + if (!(t instanceof String)) { + value = JSUtil.toJsonString(t); } stringRedisTemplate.opsForValue().set(key, value, timeToLive, TimeUnit.MILLISECONDS); } @@ -42,9 +42,9 @@ public class CacheRedis { */ public T set(String key, T t, int time, TimeUnit timeUnit) { if (t != null) { - String value = JSUtil.toJsonString(t); - if (t instanceof String) { - value = t.toString(); + String value = t.toString(); + if (!(t instanceof String)) { + value = JSUtil.toJsonString(t); } stringRedisTemplate.opsForValue().set(key, value, time, timeUnit); } @@ -58,7 +58,7 @@ public class CacheRedis { return null; } - public T getByJson(String key, Class clazz) { + public T get(String key, Class clazz) { String value = get(key); if (StringUtils.hasText(value)) { return JSUtil.parseObject(value, clazz); @@ -66,12 +66,13 @@ public class CacheRedis { return null; } + public List list(String key, Class clazz) { + return JSUtil.parseArray(get(key), clazz); + } + public void delete(String key) { stringRedisTemplate.delete(key); } - public List listByJson(String key, Class clazz) { - return JSUtil.parseArray(get(key), clazz); - } } diff --git a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/sms/SmsConfig.java b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/sms/SmsConfig.java similarity index 93% rename from roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/sms/SmsConfig.java rename to roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/sms/SmsConfig.java index 9e4ae3df610366b8af2adc07d7a5af83624953ce..f192eac9077cbdc9b7e9351901979602a1f84130 100644 --- a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/sms/SmsConfig.java +++ b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/sms/SmsConfig.java @@ -1,4 +1,4 @@ -package com.roncoo.education.common.core.sms; +package com.roncoo.education.common.sms; import lombok.Data; import lombok.experimental.Accessors; diff --git a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/sms/SmsUtil.java b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/sms/SmsUtil.java similarity index 99% rename from roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/sms/SmsUtil.java rename to roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/sms/SmsUtil.java index 6b226ac98922aeb62e74a7c32f20279cdc609086..295236cbe44bb2dc9820a6d78431bd8c00ea2c1e 100644 --- a/roncoo-education-common/roncoo-education-common-core/src/main/java/com/roncoo/education/common/core/sms/SmsUtil.java +++ b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/sms/SmsUtil.java @@ -1,4 +1,4 @@ -package com.roncoo.education.common.core.sms; +package com.roncoo.education.common.sms; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; diff --git a/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/Upload.java b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/Upload.java index 81dbc4d6381160b2dab1c1fa75aba77db737c119..6feaa0397da7251014db718138267523bca19b35 100644 --- a/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/Upload.java +++ b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/Upload.java @@ -34,4 +34,13 @@ public class Upload implements Serializable { private String minioSecretKey; private String minioDomain; private String minioBucket; + + /** + * OSS + */ + private String aliyunOssEndpoint; + private String aliyunAccessKeyId; + private String aliyunAccessKeySecret; + private String aliyunOssUrl; + private String aliyunOssBucket; } diff --git a/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/impl/AliyunUploadImpl.java b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/impl/AliyunUploadImpl.java index 02c07b3458e255c5d2133e6fb9b6e41f1316af48..ff2775c03b7e25b8af2c7f579d3db74e00f24601 100644 --- a/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/impl/AliyunUploadImpl.java +++ b/roncoo-education-common/roncoo-education-common-service/src/main/java/com/roncoo/education/common/upload/impl/AliyunUploadImpl.java @@ -1,14 +1,19 @@ package com.roncoo.education.common.upload.impl; -import com.roncoo.education.common.core.aliyun.Aliyun; -import com.roncoo.education.common.core.aliyun.AliyunOssUtil; -import com.roncoo.education.common.core.tools.BeanUtil; +import cn.hutool.core.util.IdUtil; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.CannedAccessControlList; +import com.aliyun.oss.model.ObjectMetadata; import com.roncoo.education.common.upload.Upload; import com.roncoo.education.common.upload.UploadFace; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; + /** * @author fengyw */ @@ -16,16 +21,45 @@ import org.springframework.web.multipart.MultipartFile; @Component(value = "aliyun") public class AliyunUploadImpl implements UploadFace { + private final static String PREFIX = "education"; + @Override public String uploadPic(MultipartFile file, Upload upload) { - Aliyun aliyun = BeanUtil.copyProperties(upload, Aliyun.class); - return AliyunOssUtil.uploadPic(file, aliyun); + return putObject(file, upload, CannedAccessControlList.PublicRead); } @Override public String uploadDoc(MultipartFile file, Upload upload) { - Aliyun aliyun = BeanUtil.copyProperties(upload, Aliyun.class); - return AliyunOssUtil.uploadDoc(file, aliyun); + return putObject(file, upload, CannedAccessControlList.Private); } + /** + * 存入OSS + */ + private static String putObject(MultipartFile file, Upload upload, CannedAccessControlList cannedAcl) { + InputStream inputStream = null; + // 上传 + try { + inputStream = file.getInputStream(); + String name = file.getOriginalFilename(); + String filePath = PREFIX + "/" + IdUtil.simpleUUID() + name.substring(name.lastIndexOf(".")); + OSS ossClient = new OSSClientBuilder().build(upload.getAliyunOssEndpoint(), upload.getAliyunAccessKeyId(), upload.getAliyunAccessKeySecret()); + ObjectMetadata meta = new ObjectMetadata(); + meta.setContentEncoding("UTF-8"); + meta.setContentDisposition("attachment;filename={}".replace("{}", name)); + meta.setObjectAcl(cannedAcl); + ossClient.putObject(upload.getAliyunOssBucket(), filePath, inputStream, meta); + return upload.getAliyunOssUrl() + filePath; + } catch (Exception e) { + log.error("上传失败", e); + return ""; + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + } + } + } + } } diff --git a/roncoo-education-feign/roncoo-education-feign-system/src/main/java/com/roncoo/education/system/feign/interfaces/IFeignSysConfig.java b/roncoo-education-feign/roncoo-education-feign-system/src/main/java/com/roncoo/education/system/feign/interfaces/IFeignSysConfig.java index 17030cada9c58852700a0e0dd6905a95cf6238ee..c4e56a217b013a112053712c8aed6545a93aacd6 100644 --- a/roncoo-education-feign/roncoo-education-feign-system/src/main/java/com/roncoo/education/system/feign/interfaces/IFeignSysConfig.java +++ b/roncoo-education-feign/roncoo-education-feign-system/src/main/java/com/roncoo/education/system/feign/interfaces/IFeignSysConfig.java @@ -1,6 +1,6 @@ package com.roncoo.education.system.feign.interfaces; -import com.roncoo.education.common.core.sms.SmsConfig; +import com.roncoo.education.common.sms.SmsConfig; import com.roncoo.education.system.feign.interfaces.vo.PayConfig; import com.roncoo.education.system.feign.interfaces.vo.SysConfig; import com.roncoo.education.system.feign.interfaces.vo.VodConfig; diff --git a/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/job/UserStudyJob.java b/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/job/UserStudyJob.java index 6ea081f76cfd309bc0d02ded3357e5cb14b95089..f9e0cc2358b2ae5c9be7006654f01b59074314db 100644 --- a/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/job/UserStudyJob.java +++ b/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/job/UserStudyJob.java @@ -41,7 +41,7 @@ public class UserStudyJob { for (String key : keys) { if (cacheRedis.getStringRedisTemplate().getExpire(key, TimeUnit.MINUTES) < 1439) { // 默认过期时间为60分钟,若剩余时间小于59分,则处理 - AuthUserStudyReq req = cacheRedis.getByJson(key, AuthUserStudyReq.class); + AuthUserStudyReq req = cacheRedis.get(key, AuthUserStudyReq.class); UserStudy userStudy = userStudyDao.getById(req.getStudyId()); if (ResourceTypeEnum.VIDEO.getCode().equals(req.getResourceType()) || ResourceTypeEnum.AUDIO.getCode().equals(req.getResourceType())) { userStudy.setProgress(req.getCurrentDuration().divide(req.getTotalDuration(), BigDecimal.ROUND_CEILING).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); diff --git a/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/service/api/biz/ApiUserStudyBiz.java b/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/service/api/biz/ApiUserStudyBiz.java index 72f70342f61df696252172c1d75c5f0e7cae59a2..08a27397a633d89cb6784bf9e72964a3224501fd 100644 --- a/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/service/api/biz/ApiUserStudyBiz.java +++ b/roncoo-education-service/roncoo-education-service-course/src/main/java/com/roncoo/education/course/service/api/biz/ApiUserStudyBiz.java @@ -78,7 +78,7 @@ public class ApiUserStudyBiz extends BaseBiz { } private Resource getByResource(AuthUserStudyReq req) { - Resource resource = cacheRedis.getByJson(Constants.RedisPre.RESOURCE + req.getResourceId(), Resource.class); + Resource resource = cacheRedis.get(Constants.RedisPre.RESOURCE + req.getResourceId(), Resource.class); if (ObjectUtil.isEmpty(resource)) { resource = resourceDao.getById(req.getResourceId()); cacheRedis.set(Constants.RedisPre.RESOURCE + req.getResourceId(), resource, 1, TimeUnit.HOURS); @@ -87,7 +87,7 @@ public class ApiUserStudyBiz extends BaseBiz { } private UserStudy getUserStudy(AuthUserStudyReq req) { - UserStudy userStudy = cacheRedis.getByJson(Constants.RedisPre.USER_STUDY + req.getStudyId(), UserStudy.class); + UserStudy userStudy = cacheRedis.get(Constants.RedisPre.USER_STUDY + req.getStudyId(), UserStudy.class); if (ObjectUtil.isEmpty(userStudy)) { userStudy = dao.getById(req.getStudyId()); cacheRedis.set(Constants.RedisPre.USER_STUDY + req.getStudyId(), userStudy, 1, TimeUnit.HOURS); diff --git a/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/FeignSysConfigController.java b/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/FeignSysConfigController.java index c32b17dc8a7c8e628f86ddf8453a97f2b91f0acb..32672f54f6306fd0fecb8ceb80d6430aa398a279 100644 --- a/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/FeignSysConfigController.java +++ b/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/FeignSysConfigController.java @@ -1,6 +1,6 @@ package com.roncoo.education.system.feign; -import com.roncoo.education.common.core.sms.SmsConfig; +import com.roncoo.education.common.sms.SmsConfig; import com.roncoo.education.system.feign.biz.FeignSysConfigBiz; import com.roncoo.education.system.feign.interfaces.IFeignSysConfig; import com.roncoo.education.system.feign.interfaces.vo.PayConfig; diff --git a/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/biz/FeignSysConfigBiz.java b/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/biz/FeignSysConfigBiz.java index dd4aa79a3bdfecd3657e222f6500ea45d0b5768b..b0d5a10d6eb58d24aca94f14b6a48da812d50e96 100644 --- a/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/biz/FeignSysConfigBiz.java +++ b/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/feign/biz/FeignSysConfigBiz.java @@ -1,9 +1,9 @@ package com.roncoo.education.system.feign.biz; -import com.roncoo.education.common.core.sms.SmsConfig; import com.roncoo.education.common.pay.util.AliPayConfig; import com.roncoo.education.common.pay.util.WxPayConfig; import com.roncoo.education.common.service.BaseBiz; +import com.roncoo.education.common.sms.SmsConfig; import com.roncoo.education.system.feign.interfaces.vo.PayConfig; import com.roncoo.education.system.feign.interfaces.vo.SysConfig; import com.roncoo.education.system.feign.interfaces.vo.VodConfig; diff --git a/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/service/api/ApiCommonController.java b/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/service/api/ApiCommonController.java index 133dd8732313a627d551b92445d4b2a10c998502..73228835881ab4c3f115bded5d9ccc57e8905a72 100644 --- a/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/service/api/ApiCommonController.java +++ b/roncoo-education-service/roncoo-education-service-system/src/main/java/com/roncoo/education/system/service/api/ApiCommonController.java @@ -48,7 +48,7 @@ public class ApiCommonController { } } - @ApiOperation(value = "获取验证码", notes = "获取图片验证码") + @ApiOperation(value = "获取图片验证码", notes = "获取图片验证码") @GetMapping(value = "/code") public Result getVerCode() { CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20); diff --git a/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/ApiUsersController.java b/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/ApiUsersController.java index 492a45f67e804916c85b812a61532869dd4f8d55..33add28e50cc2d092b79113a4e5e812761d720b8 100644 --- a/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/ApiUsersController.java +++ b/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/ApiUsersController.java @@ -29,9 +29,9 @@ public class ApiUsersController { private ApiUsersBiz biz; /** - * 注册验证码发送接口 + * 验证码发送接口(注册验证码 + 重置密码验证码) */ - @ApiOperation(value = "注册验证码发送接口", notes = "发送手机验证码") + @ApiOperation(value = "验证码发送接口", notes = "发送手机验证码") @RequestMapping(value = "/send/code", method = RequestMethod.POST) public Result sendCode(@RequestBody SendCodeReq req) { return biz.sendCode(req); diff --git a/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/biz/ApiUsersBiz.java b/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/biz/ApiUsersBiz.java index f2b7e4a8bc31a0ea5bfa3e52ef97a5977feec1a8..8c62d07968ed4ca38f98d429c92813359329bc1d 100644 --- a/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/biz/ApiUsersBiz.java +++ b/roncoo-education-service/roncoo-education-service-user/src/main/java/com/roncoo/education/user/service/api/biz/ApiUsersBiz.java @@ -8,9 +8,9 @@ import cn.hutool.extra.servlet.ServletUtil; import com.roncoo.education.common.cache.CacheRedis; import com.roncoo.education.common.core.base.Result; import com.roncoo.education.common.core.enums.LoginStatusEnum; -import com.roncoo.education.common.core.sms.SmsUtil; import com.roncoo.education.common.core.tools.*; import com.roncoo.education.common.service.BaseBiz; +import com.roncoo.education.common.sms.SmsUtil; import com.roncoo.education.system.feign.interfaces.IFeignSysConfig; import com.roncoo.education.user.dao.LogLoginDao; import com.roncoo.education.user.dao.UsersDao; @@ -53,7 +53,6 @@ public class ApiUsersBiz extends BaseBiz { if (!StringUtils.hasText(req.getMobile())) { return Result.error("手机号不能为空"); } - // 验证码校验 String redisCode = cacheRedis.get(Constants.RedisPre.CODE + req.getMobile()); if (!StringUtils.hasText(redisCode)) { @@ -62,6 +61,8 @@ public class ApiUsersBiz extends BaseBiz { if (!req.getCode().equals(redisCode)) { return Result.error("验证码不正确"); } + // 删除验证码缓存 + cacheRedis.delete(Constants.RedisPre.CODE + req.getMobile()); if (!StringUtils.hasText(req.getMobilePwd())) { return Result.error("密码不能为空"); @@ -96,8 +97,6 @@ public class ApiUsersBiz extends BaseBiz { if (!StringUtils.hasText(req.getPassword())) { return Result.error("密码不能为空"); } - // 密码错误次数校验 - // 用户校验 Users user = userDao.getByMobile(req.getMobile()); if (null == user) { @@ -155,15 +154,41 @@ public class ApiUsersBiz extends BaseBiz { String code = NOUtil.getVerCode(); log.warn("手机号:{},验证码:{}", req.getMobile(), code); - // 正常应该是发送成功才放入缓存,这里方便没有短信通道的情况下,也能测试注册 + // 验证码发送次数校验 + if (!sendCodeCheck(req.getMobile())) { + return Result.error("验证码发送次数过多,请稍后再试"); + } + + // 正常应该是发送成功才放入缓存,这里方便没有短信通道的情况下,也能测试注册(上线需要删除,并打开下面) cacheRedis.set(Constants.RedisPre.CODE + req.getMobile(), code, 5, TimeUnit.MINUTES); if (SmsUtil.sendVerCode(req.getMobile(), code, feignSysConfig.getSms())) { + // 发送成功才放入缓存 + // cacheRedis.set(Constants.RedisPre.CODE + req.getMobile(), code, 5, TimeUnit.MINUTES); return Result.success("发送成功"); } return Result.error("发送失败"); } + /** + * 5分钟内,同一个手机号不能超2次发送验证码 + * + * @param mobile + */ + private Boolean sendCodeCheck(String mobile) { + String count = cacheRedis.get(Constants.RedisPre.CODE_STAT + mobile); + if (StringUtils.hasText(count)) { + int countNum = Integer.valueOf(count); + if (countNum < 2) { + cacheRedis.set(Constants.RedisPre.CODE_STAT + mobile, countNum++); + return Boolean.TRUE; + } + } else { + cacheRedis.set(Constants.RedisPre.CODE_STAT + mobile, 1); + } + return Boolean.FALSE; + } + public Result password(PasswordReq req) { // 验证码校验 String redisCode = cacheRedis.get(Constants.RedisPre.CODE + req.getMobile()); @@ -173,7 +198,10 @@ public class ApiUsersBiz extends BaseBiz { if (!req.getCode().equals(redisCode)) { return Result.error("验证码不正确"); } - if (StringUtils.isEmpty(req.getMobilePwd())) { + // 删除验证码缓存 + cacheRedis.delete(Constants.RedisPre.CODE + req.getMobile()); + + if (!StringUtils.hasText(req.getMobilePwd())) { return Result.error("密码不能为空"); } // 密码校验