This commit is contained in:
777
2025-05-08 18:56:37 +08:00
parent 715f6b5693
commit c5fe9e1837
7 changed files with 167 additions and 3 deletions

View File

@@ -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<Void> cleanShareUrlCacheByUsercode(String usercode){
shareUrlKit.cleanShareUrlCacheByUsercode(usercode);
return R.ok();
}
@GetMapping("/cleanShareUrlCache")
public R<Void> cleanShareUrlCache(){
shareUrlKit.cleanShareUrlCache();
return R.ok();
}
@GetMapping("/day")
public R<Void> day(String date,Integer type) {

View File

@@ -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()),

View File

@@ -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<User> page = new Page<>(current,100);
Page<User> data = userService.page(page);
List<User> 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;
}
}

View File

@@ -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);
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.cai.remote.y4x;
import lombok.Data;
@Data
public class Y4xResponse {
private Integer code;
private String dwz;
}

View File

@@ -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<UserInviteMapper, UserInv
private SystemConfigManager systemConfigManager;
@Autowired
private UserService userService;
@Autowired
private ShareUrlKit shareUrlKit;
@Override
public InviteHomeVo inviteHome(Long userId) {
User user = userService.getById(userId);
String shareUrl = shareUrlKit.getShareUrl(user.getUsercode());
Integer firstPayAward = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.FAST_PAY_AWARD);
String shareUrlBase = systemConfigManager.getSystemConfig(SystemConfigEnum.SHARE_URL);
BigDecimal payIncomeRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_PAY_INCOME_RATE);
BigDecimal videoIncomeRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_VIDEO_INCOME_RATE);
BigDecimal anchorVideoRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_VIDEO_PRICE);
String shareUrl = shareUrlBase + "?from="+user.getUsercode();
InviteHomeVo vo = new InviteHomeVo();
List<String> reward = new ArrayList<>();
reward.add("1、邀请主播认证通过奖励#300#"+caiProperties.getCoinName());

View File

@@ -10,4 +10,5 @@ public class RedisConstant {
public static final String CALLER_ROOM_DATA = REDIS_P + "caller:%s";
public static final String USER_ROOM_DATA = REDIS_P + "room:%s:%s";
public static final String INIT_ROOM_LOCK = REDIS_P + "lock:initRoom:%s-%s";
public static final String Y4X_REDIS_CACHE = REDIS_P + "shareUrl:y4x:%s";
}