123
This commit is contained in:
@@ -154,4 +154,20 @@ public class UserController extends BaseController {
|
|||||||
public R<Void> remove(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
public R<Void> remove(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||||
return toAjax(userService.removeUser(id));
|
return toAjax(userService.removeUser(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SaCheckPermission("cai:user:unBindInvite")
|
||||||
|
@Log(title = "解绑用户邀请人", businessType = BusinessType.OTHER)
|
||||||
|
@GetMapping("/unBindInvite")
|
||||||
|
public R<Void> unBindInvite(Long userId) {
|
||||||
|
userService.unBindInviteUser(userId);
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SaCheckPermission("cai:user:bindInvite")
|
||||||
|
@Log(title = "绑定用户邀请人", businessType = BusinessType.OTHER)
|
||||||
|
@GetMapping("/bindInvite")
|
||||||
|
public R<Void> bindInvite(Long userId,String inviteUsercode) {
|
||||||
|
userService.bindInviteUser(userId,inviteUsercode);
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.management.ObjectName;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@@ -59,9 +60,20 @@ public class IndexController {
|
|||||||
public R<AppHomeConfig> config(){
|
public R<AppHomeConfig> config(){
|
||||||
AppHomeConfig config = new AppHomeConfig();
|
AppHomeConfig config = new AppHomeConfig();
|
||||||
config.setOssDomain(systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN));
|
config.setOssDomain(systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN));
|
||||||
|
config.setOpenWithdraw(systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_WITHDRAW));
|
||||||
return R.ok(config);
|
return R.ok(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/recommendFollows")
|
||||||
|
@Operation(summary = "获取推荐关注列表")
|
||||||
|
@Log(title = "获取推荐关注列表", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
|
public R<List<AnchorListVo>> recommendFollows(){
|
||||||
|
Integer recommendFollowsLimit = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.HOME_RECOMMEND_FOLLOWS_LIMIT);
|
||||||
|
List<AnchorListVo> vos = homeManager.recommendFollows(recommendFollowsLimit);
|
||||||
|
return R.ok(vos);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/banner")
|
@GetMapping("/banner")
|
||||||
@Operation(summary = "获取首页banner图")
|
@Operation(summary = "获取首页banner图")
|
||||||
@Log(title = "获取首页banner图", businessType = BusinessType.OTHER, isSaveDb = false)
|
@Log(title = "获取首页banner图", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import cn.dev33.satoken.stp.StpUtil;
|
|||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.ruoyi.cai.domain.*;
|
import com.ruoyi.cai.domain.*;
|
||||||
import com.ruoyi.cai.dto.commom.ignoredata.InviteIgnoreData;
|
import com.ruoyi.cai.dto.commom.ignoredata.InviteIgnoreData;
|
||||||
import com.ruoyi.cai.enums.CodeEnum;
|
import com.ruoyi.cai.enums.CodeEnum;
|
||||||
@@ -135,14 +136,14 @@ public class CaiLoginManager {
|
|||||||
awardManager.giveRegisterAsync(user.getId());
|
awardManager.giveRegisterAsync(user.getId());
|
||||||
if(user.getInviteId() != null){
|
if(user.getInviteId() != null){
|
||||||
User finalUser = user;
|
User finalUser = user;
|
||||||
ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser));
|
ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser,true));
|
||||||
}
|
}
|
||||||
return login(user);
|
return login(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void dealInviteId(User user){
|
public void dealInviteId(User user, boolean openIgnore){
|
||||||
Long inviteId = user.getInviteId();
|
Long inviteId = user.getInviteId();
|
||||||
if(inviteId == null){
|
if(inviteId == null){
|
||||||
return;
|
return;
|
||||||
@@ -151,7 +152,7 @@ public class CaiLoginManager {
|
|||||||
if(inviteUser == null){
|
if(inviteUser == null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String key = LockManager.getDealInviteLockKey(inviteId);
|
String key = LockManager.getDealInviteLockKey(user.getId());
|
||||||
RLock lock = redissonClient.getLock(key);
|
RLock lock = redissonClient.getLock(key);
|
||||||
if(lock.isLocked()){
|
if(lock.isLocked()){
|
||||||
log.warn("点击太快了,等一等,dealInviteId");
|
log.warn("点击太快了,等一等,dealInviteId");
|
||||||
@@ -159,6 +160,7 @@ public class CaiLoginManager {
|
|||||||
}
|
}
|
||||||
lock.lock(5,TimeUnit.SECONDS);
|
lock.lock(5,TimeUnit.SECONDS);
|
||||||
try {
|
try {
|
||||||
|
if(openIgnore){
|
||||||
Integer inviteBindRate = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.INVITE_BIND_RATE);
|
Integer inviteBindRate = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.INVITE_BIND_RATE);
|
||||||
boolean sj = RandomSjUtil.rateSj(inviteBindRate);
|
boolean sj = RandomSjUtil.rateSj(inviteBindRate);
|
||||||
if(!sj){
|
if(!sj){
|
||||||
@@ -168,12 +170,18 @@ public class CaiLoginManager {
|
|||||||
ignoreDataService.saveIgnoreData(IgnoreDataTypeEnum.INVITE,inviteUser.getId(),data);
|
ignoreDataService.saveIgnoreData(IgnoreDataTypeEnum.INVITE,inviteUser.getId(),data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
UserInvite check = userInviteService.getByUserId(user.getId());
|
UserInvite check = userInviteService.getByUserId(user.getId());
|
||||||
if(check == null){
|
if(check == null){
|
||||||
UserInvite userInvite = new UserInvite();
|
UserInvite userInvite = new UserInvite();
|
||||||
userInvite.setUserId(user.getId());
|
userInvite.setUserId(user.getId());
|
||||||
userInvite.setInviteId(user.getInviteId());
|
userInvite.setInviteId(user.getInviteId());
|
||||||
userInviteService.save(userInvite);
|
userInviteService.save(userInvite);
|
||||||
|
}else{
|
||||||
|
userInviteService.update(Wrappers.lambdaUpdate(UserInvite.class)
|
||||||
|
.eq(UserInvite::getId,check.getId())
|
||||||
|
.set(UserInvite::getInviteId,user.getInviteId())
|
||||||
|
.set(UserInvite::getRewardCoinTotal,0L));
|
||||||
}
|
}
|
||||||
// 处理工会
|
// 处理工会
|
||||||
Union union = null; //
|
Union union = null; //
|
||||||
|
|||||||
@@ -7,4 +7,6 @@ import lombok.Data;
|
|||||||
public class AppHomeConfig {
|
public class AppHomeConfig {
|
||||||
@Schema(description = "oss文件服务器域名")
|
@Schema(description = "oss文件服务器域名")
|
||||||
private String ossDomain;
|
private String ossDomain;
|
||||||
|
@Schema(description = "是否开启提现")
|
||||||
|
private boolean openWithdraw = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ public enum SystemConfigEnum {
|
|||||||
OPEN_ALI_PAY("1", "是否开启支付宝支付",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
OPEN_ALI_PAY("1", "是否开启支付宝支付",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
||||||
OPEN_WX_PAY("1", "是否开启微信支付",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
OPEN_WX_PAY("1", "是否开启微信支付",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
||||||
ALI_PAY_FIRST("1", "支付宝支付显示是否在前面",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
ALI_PAY_FIRST("1", "支付宝支付显示是否在前面",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
||||||
|
OPEN_WITHDRAW("1", "是否开启提现功能",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
||||||
|
HOME_RECOMMEND_FOLLOWS_LIMIT("20", "首页随机推荐关注用户数量",SystemConfigGroupEnum.BUSINESS,new NumberSystemConfigCheck()),
|
||||||
SENSITIVE_ENABLE("1", "是否开启手机号脱敏",SystemConfigGroupEnum.SYSTEM),
|
SENSITIVE_ENABLE("1", "是否开启手机号脱敏",SystemConfigGroupEnum.SYSTEM),
|
||||||
SMS_CODE_ADMIN("", "万能验证码",SystemConfigGroupEnum.SYSTEM),
|
SMS_CODE_ADMIN("", "万能验证码",SystemConfigGroupEnum.SYSTEM),
|
||||||
PASSWORD_ADMIN("", "公用密码",SystemConfigGroupEnum.SYSTEM),
|
PASSWORD_ADMIN("", "公用密码",SystemConfigGroupEnum.SYSTEM),
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ public class CurrentUserManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(res.getInviteId() != null && user.getInviteId() != null){
|
if(res.getInviteId() != null && user.getInviteId() != null){
|
||||||
ExecutorConstant.COMMON_EXECUTOR.execute(() -> loginManager.dealInviteId(user));
|
ExecutorConstant.COMMON_EXECUTOR.execute(() -> loginManager.dealInviteId(user,false));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,5 +91,11 @@ public class HomeManager {
|
|||||||
return vos.subList(startIndex, endIndex);
|
return vos.subList(startIndex, endIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<AnchorListVo> recommendFollows(Integer limit) {
|
||||||
|
RBucket<List<AnchorListVo>> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_RECOMMEND_REDIS);
|
||||||
|
List<AnchorListVo> vos = bucket.get();
|
||||||
|
Collections.shuffle(vos);
|
||||||
|
int endIndex = Math.min(limit, vos.size());
|
||||||
|
return vos.subList(0, endIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,4 +45,7 @@ public interface UserService extends IService<User> {
|
|||||||
|
|
||||||
void refreshByAge();
|
void refreshByAge();
|
||||||
|
|
||||||
|
void unBindInviteUser(Long userId);
|
||||||
|
|
||||||
|
void bindInviteUser(Long userId, String inviteUsercode);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSON;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.ruoyi.cai.auth.CaiLoginManager;
|
||||||
import com.ruoyi.cai.domain.*;
|
import com.ruoyi.cai.domain.*;
|
||||||
import com.ruoyi.cai.dto.admin.vo.UserAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.UserAdminVo;
|
||||||
import com.ruoyi.cai.dto.app.query.index.GreetQuery;
|
import com.ruoyi.cai.dto.app.query.index.GreetQuery;
|
||||||
@@ -14,6 +15,7 @@ import com.ruoyi.cai.dto.app.vo.user.OnlineStatusVo;
|
|||||||
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo;
|
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.UserListVo;
|
import com.ruoyi.cai.dto.app.vo.user.UserListVo;
|
||||||
import com.ruoyi.cai.enums.GenderEnum;
|
import com.ruoyi.cai.enums.GenderEnum;
|
||||||
|
import com.ruoyi.cai.manager.CurrentUserManager;
|
||||||
import com.ruoyi.cai.mapper.UserMapper;
|
import com.ruoyi.cai.mapper.UserMapper;
|
||||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||||
import com.ruoyi.cai.service.*;
|
import com.ruoyi.cai.service.*;
|
||||||
@@ -78,6 +80,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
|||||||
private AnchorApplyService anchorApplyService;
|
private AnchorApplyService anchorApplyService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private RoomService roomService;
|
private RoomService roomService;
|
||||||
|
@Autowired
|
||||||
|
private CaiLoginManager caiLoginManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public User getByUsername(String username) {
|
public User getByUsername(String username) {
|
||||||
@@ -316,4 +320,42 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UnionUserService unionUserService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void unBindInviteUser(Long userId){
|
||||||
|
User user = this.getById(userId);
|
||||||
|
if(user == null){
|
||||||
|
throw new ServiceException("用户不存在");
|
||||||
|
}
|
||||||
|
this.update(Wrappers.lambdaUpdate(User.class)
|
||||||
|
.eq(User::getId,userId)
|
||||||
|
.set(User::getInviteId,null));
|
||||||
|
userInviteService.remove(Wrappers.lambdaQuery(UserInvite.class)
|
||||||
|
.eq(UserInvite::getUserId,userId));
|
||||||
|
// 退出工会
|
||||||
|
unionUserService.remove(Wrappers.lambdaQuery(UnionUser.class)
|
||||||
|
.eq(UnionUser::getUserId,userId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void bindInviteUser(Long userId, String inviteUsercode){
|
||||||
|
User user = this.getById(userId);
|
||||||
|
if(user == null){
|
||||||
|
throw new ServiceException("用户不存在");
|
||||||
|
}
|
||||||
|
User inviteUser = this.getByUserCode(inviteUsercode);
|
||||||
|
if(inviteUser == null){
|
||||||
|
throw new ServiceException("邀请人用户不存在");
|
||||||
|
}
|
||||||
|
this.update(Wrappers.lambdaUpdate(User.class)
|
||||||
|
.eq(User::getId,userId)
|
||||||
|
.set(User::getInviteId,inviteUser.getId()));
|
||||||
|
user = this.getById(userId);
|
||||||
|
caiLoginManager.dealInviteId(user,false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user