diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/RefreshOpController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/RefreshOpController.java index 53b40df3..3338dfd2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/RefreshOpController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/RefreshOpController.java @@ -1,6 +1,7 @@ package com.ruoyi.web.controller.cai.admin.op; +import com.ruoyi.cai.kit.ShareUrlKit; import com.ruoyi.cai.service.RankService; import com.ruoyi.common.core.domain.R; import lombok.RequiredArgsConstructor; @@ -24,6 +25,21 @@ public class RefreshOpController { @Autowired private RankService rankService; + @Autowired + private ShareUrlKit shareUrlKit; + + @GetMapping("/cleanShareUrlCacheByUsercode") + public R cleanShareUrlCacheByUsercode(String usercode){ + shareUrlKit.cleanShareUrlCacheByUsercode(usercode); + return R.ok(); + } + + @GetMapping("/cleanShareUrlCache") + public R cleanShareUrlCache(){ + shareUrlKit.cleanShareUrlCache(); + return R.ok(); + } + @GetMapping("/day") public R day(String date,Integer type) { diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java index 50c91490..30d44283 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java @@ -21,7 +21,11 @@ public enum SystemConfigEnum { OPEN_REGISTER("1", "开启注册",SystemConfigGroupEnum.BUSINESS, new BooleanSystemConfigCheck()), INIT_VIDEO_MESSAGE("提示:禁止任何涉黄、任何微信QQ引导到其它平台行为", "视频接通提示语",SystemConfigGroupEnum.BUSINESS), HOME_DIALOG_TEXT("我是弹窗说明", "首页弹窗内容",SystemConfigGroupEnum.BUSINESS,null,"textarea"), + SHARE_TYPE("0", "分享方式 1-分享链接 2-x4y生成",SystemConfigGroupEnum.BUSINESS), + Y4X_TYPE("10021", "y4x的Type",SystemConfigGroupEnum.BUSINESS), + Y4X_TOKEN("9d42f94ebb346cd6fcd6fb5b9cddcd16", "y4x的Token",SystemConfigGroupEnum.BUSINESS), SHARE_URL("https://h5.qx96688.com/index/invite/index", "分享链接",SystemConfigGroupEnum.BUSINESS), + SHARE_BASE_URL("https://www.baidu.com/#/share", "真实分享链接",SystemConfigGroupEnum.BUSINESS), OPEN_MESSAGE("1", "开启聊天功能",SystemConfigGroupEnum.BUSINESS), OPEN_VIDEO("1", "开启视频功能",SystemConfigGroupEnum.BUSINESS), // INVITE_GIFT_RATE("100", "礼物分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()), diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/kit/ShareUrlKit.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/kit/ShareUrlKit.java new file mode 100644 index 00000000..c7422300 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/kit/ShareUrlKit.java @@ -0,0 +1,109 @@ +package com.ruoyi.cai.kit; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.dynamic.datasource.annotation.Slave; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.domain.User; +import com.ruoyi.cai.enums.SystemConfigEnum; +import com.ruoyi.cai.manager.SystemConfigManager; +import com.ruoyi.cai.remote.Y4xClient; +import com.ruoyi.cai.remote.y4x.Y4xResponse; +import com.ruoyi.cai.service.UserService; +import com.ruoyi.cai.ws.constant.RedisConstant; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +@Component +@Slf4j +public class ShareUrlKit { + + @Autowired + private SystemConfigManager systemConfigManager; + @Autowired + private StringRedisTemplate stringRedisTemplate; + @Autowired + private Y4xClient y4xClient; + @Autowired + private UserService userService; + + private String getKey(String usercode){ + return String.format(RedisConstant.Y4X_REDIS_CACHE, usercode); + } + + public String getY4xCache(String usercode){ + String key = getKey(usercode); + return stringRedisTemplate.opsForValue().get(key); + } + + public void setY4xCache(String usercode,String url){ + String key = getKey(usercode); + stringRedisTemplate.opsForValue().set(key,url,20, TimeUnit.DAYS); + } + + public void cleanShareUrlCache(){ + log.info("清除用户分享链接缓存 - 开始"); + int current = 0; + while (true){ + current++; + Page page = new Page<>(current,100); + Page data = userService.page(page); + List records = data.getRecords(); + if(records.isEmpty()){ + break; + } + for (User record : records) { + try { + cleanShareUrlCacheByUsercode(record.getUsercode()); + }catch (Exception e){ + log.error("刷新用户分享链接缓存失败",e); + } + } + } + log.info("清除用户分享链接缓存 - 结束"); + } + + public void cleanShareUrlCacheByUsercode(String usercode){ + String key = getKey(usercode); + stringRedisTemplate.delete(key); + } + + public String getShareUrl(String usercode){ + String shareType = systemConfigManager.getSystemConfig(SystemConfigEnum.SHARE_TYPE); + if("2".equals(shareType)){ + String y4xCache = getY4xCache(usercode); + if(StringUtils.isNotBlank(y4xCache)){ + return y4xCache; + } + String shareBaseUrl = systemConfigManager.getSystemConfig(SystemConfigEnum.SHARE_BASE_URL); + String shareUrl = shareBaseUrl + "?from="+usercode; + String type = systemConfigManager.getSystemConfig(SystemConfigEnum.Y4X_TYPE); + String token = systemConfigManager.getSystemConfig(SystemConfigEnum.Y4X_TOKEN); + try { + Y4xResponse url = y4xClient.getUrl(type, token, shareUrl); + if(StringUtils.isBlank(url.getDwz())){ + log.error("y4x请求失败 response={}", JSON.toJSONString(url)); + return getShareUrlVVVV(usercode); + } + setY4xCache(usercode,url.getDwz()); + return url.getDwz(); + }catch (Exception e){ + log.error("y4x请求失败",e); + return getShareUrlVVVV(usercode); + } + } + return getShareUrlVVVV(usercode); + } + + public String getShareUrlVVVV(String usercode){ + String shareUrl = systemConfigManager.getSystemConfig(SystemConfigEnum.SHARE_URL); + return shareUrl + "?from="+usercode; + } + + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/remote/Y4xClient.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/remote/Y4xClient.java new file mode 100644 index 00000000..9ba69a21 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/remote/Y4xClient.java @@ -0,0 +1,22 @@ +package com.ruoyi.cai.remote; + + +import com.dtflys.forest.annotation.BaseRequest; +import com.dtflys.forest.annotation.Get; +import com.dtflys.forest.annotation.Var; +import com.ruoyi.cai.remote.y4x.Y4xResponse; +import com.ruoyi.yunxin.interceptor.GlodonTokenInterceptor; + +/** + * {"code":200,"dwz":"http:\/\/9a.y4x.cn\/6dKxHQX7"} + * http://ys.y4x.cn/api/url.php?type=10021&pattern=2&token=9d42f94ebb346cd6fcd6fb5b9cddcd16&url=https://www.abc.com + */ +@BaseRequest +public interface Y4xClient { + + @Get(url = "http://ys.y4x.cn/api/url.php?type={type}&pattern=2&token={token}&url={url}") + Y4xResponse getUrl(@Var("type") String type, + @Var("token") String token, + @Var("url") String url); + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/remote/y4x/Y4xResponse.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/remote/y4x/Y4xResponse.java new file mode 100644 index 00000000..eeb6527d --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/remote/y4x/Y4xResponse.java @@ -0,0 +1,9 @@ +package com.ruoyi.cai.remote.y4x; + +import lombok.Data; + +@Data +public class Y4xResponse { + private Integer code; + private String dwz; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserInviteServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserInviteServiceImpl.java index b50f4695..4528e74c 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserInviteServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserInviteServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.cai.service.impl; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -12,6 +13,7 @@ import com.ruoyi.cai.dto.app.vo.invite.InviteHomeVo; import com.ruoyi.cai.dto.app.vo.user.UserListVo; import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.executor.ExecutorConstant; +import com.ruoyi.cai.kit.ShareUrlKit; import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.mapper.UserInviteMapper; import com.ruoyi.cai.service.UserInviteService; @@ -44,17 +46,18 @@ public class UserInviteServiceImpl extends ServiceImpl