diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java index e43d9fbe..5ca8b350 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java @@ -87,7 +87,7 @@ public class AnchorController extends BaseController { if(user == null){ return R.fail("用户不存在"); } - anchorService.joinAnchor(user.getId()); + anchorService.joinAnchor(user.getId(),true); return R.ok(); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/commom/anchor/CheckAnchorAutoResp.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/commom/anchor/CheckAnchorAutoResp.java new file mode 100644 index 00000000..390fbfe6 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/commom/anchor/CheckAnchorAutoResp.java @@ -0,0 +1,13 @@ +package com.ruoyi.cai.dto.commom.anchor; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CheckAnchorAutoResp { + // 是否忽略数据 + private Boolean ignore; + // 是否加入成功 + private Boolean joinSuccess; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/LockManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/LockManager.java index dccabf9b..41b3d7f7 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/LockManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/LockManager.java @@ -9,6 +9,7 @@ public class LockManager { public static final String LOCK_ADD_USER_GREET_REDIS = RedisHttpConstant.REDIS_P + "lock:addUserGreet:%s"; public static final String LOCK_SEND_GREET_REDIS = RedisHttpConstant.REDIS_P + "lock:sendGreet:%s"; public static final String LOCK_SEND_GUARD_REDIS = RedisHttpConstant.REDIS_P + "lock:sendGuard:%s"; + public static final String LOCK_JOIN_ANCHOR_REDIS = RedisHttpConstant.REDIS_P + "lock:joinAnchor:%s"; public static final String LOCK_SEND_GIFT_REDIS = RedisHttpConstant.REDIS_P + "lock:sendGift:%s"; public static final String LOCK_VIDEO_SETTLE_REDIS = RedisHttpConstant.REDIS_P + "lock:videoSettle:%s"; public static final String LOCK_ONLINE_LOGIN_NOTICE_REDIS = RedisHttpConstant.REDIS_P + "lockHand:loginFansNotice:%s"; @@ -44,4 +45,8 @@ public class LockManager { public static String getLoginNoticeFansLock(Long userId){ return String.format(LOCK_ONLINE_LOGIN_NOTICE_REDIS,userId); } + + public static String getJoinAnchor(Long userId){ + return String.format(LOCK_JOIN_ANCHOR_REDIS,userId); + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorApplyService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorApplyService.java index da26ccb9..b842ae1b 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorApplyService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorApplyService.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.AnchorApply; import com.ruoyi.cai.dto.admin.vo.AnchorApplyAdminVo; import com.ruoyi.cai.dto.app.vo.AnchorJoinHomeVo; +import com.ruoyi.cai.dto.commom.anchor.CheckAnchorAutoResp; import com.ruoyi.common.core.domain.PageQuery; +import org.springframework.transaction.annotation.Transactional; /** * 播主申请管理Service接口 @@ -23,6 +25,9 @@ public interface AnchorApplyService extends IService { boolean joinAnchor(Long userId); + @Transactional(rollbackFor = Exception.class) + CheckAnchorAutoResp checkAnchorAuto(Long userId); + void auditAnchorSuccess(Long id); void auditAnchorFail(Long id); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorService.java index f8022f6b..a9f4fa54 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorService.java @@ -16,7 +16,7 @@ import com.ruoyi.common.core.domain.PageQuery; */ public interface AnchorService extends IService { - void joinAnchor(Long userId); + void joinAnchor(Long userId,boolean autoFinishStatus); boolean closeAnchor(Long userId); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorApplyServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorApplyServiceImpl.java index dca7d7e5..2bb294ae 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorApplyServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorApplyServiceImpl.java @@ -8,9 +8,11 @@ import com.ruoyi.cai.domain.AnchorApply; import com.ruoyi.cai.domain.User; import com.ruoyi.cai.dto.admin.vo.AnchorApplyAdminVo; import com.ruoyi.cai.dto.app.vo.AnchorJoinHomeVo; +import com.ruoyi.cai.dto.commom.anchor.CheckAnchorAutoResp; import com.ruoyi.cai.enums.AuditStatusEnum; import com.ruoyi.cai.enums.GenderEnum; import com.ruoyi.cai.enums.SystemConfigEnum; +import com.ruoyi.cai.manager.LockManager; import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.mapper.AnchorApplyMapper; import com.ruoyi.cai.notice.YunxinHttpService; @@ -19,6 +21,8 @@ import com.ruoyi.cai.service.AnchorService; import com.ruoyi.cai.service.UserService; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.exception.ServiceException; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,6 +46,8 @@ public class AnchorApplyServiceImpl extends ServiceImpl impleme private UserService userService; @Autowired private SystemConfigManager systemConfigManager; + @Autowired + private YunxinHttpService yunxinHttpService; @Override @Transactional(rollbackFor = Exception.class) - public void joinAnchor(Long userId){ + public void joinAnchor(Long userId,boolean autoFinishStatus){ User user = userService.getById(userId); Anchor anchor = this.getByUserId(userId); if(user == null){ @@ -57,12 +60,14 @@ public class AnchorServiceImpl extends ServiceImpl impleme throw new ServiceException("加入主播失败"); } // 将用户的协议都自动完成 - userService.update(Wrappers.lambdaUpdate(User.class) - .eq(User::getId,user.getId()) - .set(User::getCameraStatus,1) - .set(User::getFinishStatus,1) - .set(User::getAgreeProtocol,1) - .set(User::getAvatarState,1)); + if(autoFinishStatus){ + userService.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId,user.getId()) + .set(User::getCameraStatus,1) + .set(User::getFinishStatus,1) + .set(User::getAgreeProtocol,1) + .set(User::getAvatarState,1)); + } Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.DEFAULT_ANCHOR_PRICE); Anchor save = new Anchor(); save.setUserId(user.getId()); @@ -71,6 +76,7 @@ public class AnchorServiceImpl extends ServiceImpl impleme save.setGuardRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GUARD_PRICE)); save.setGiftRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GIFT_PRICE)); this.save(save); + yunxinHttpService.passAnchorSendMessage(userId); } @Override diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java index 2c7a5342..6cbe6804 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.cai.dto.admin.vo.UserCameraAuditAdminVo; import com.ruoyi.cai.dto.app.vo.CameraAuditVo; import com.ruoyi.cai.enums.AuditStatusEnum; import com.ruoyi.cai.mapper.UserCameraAuditMapper; +import com.ruoyi.cai.service.AnchorApplyService; import com.ruoyi.cai.service.UserCameraAuditService; import com.ruoyi.cai.service.UserService; import com.ruoyi.common.core.domain.PageQuery; @@ -45,6 +46,8 @@ public class UserCameraAuditServiceImpl extends ServiceImpl implements UserPictureAuditService { + @Autowired + private AnchorApplyService anchorApplyService; + @Override public UserPictureAudit getOneUserAuditRunningPic(Integer type, Long userId) { return this.getOne(Wrappers.lambdaQuery(UserPictureAudit.class) @@ -57,6 +61,11 @@ public class UserPictureAuditServiceImpl extends ServiceImpl implements Us this.update(Wrappers.lambdaUpdate(User.class) .eq(User::getId,userId) .set(User::getAgreeProtocol,1)); + try { + anchorApplyService.checkAnchorAuto(userId); + }catch (Exception e){ + log.error("检查是否自动主播失败!",e); + } return true; }