diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AnchorController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AnchorController.java index 1f204548..3a911911 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AnchorController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AnchorController.java @@ -3,24 +3,23 @@ package com.ruoyi.cai.controller.admin; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.cai.domain.Anchor; +import com.ruoyi.cai.domain.User; import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo; import com.ruoyi.cai.service.AnchorService; +import com.ruoyi.cai.service.UserService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.util.Arrays; /** * 女神列表 @@ -35,6 +34,7 @@ import java.util.Arrays; public class AnchorController extends BaseController { private final AnchorService caiAnchorService; + private final UserService userService; /** * 查询女神列表列表 @@ -59,20 +59,19 @@ public class AnchorController extends BaseController { return R.ok(caiAnchorService.getById(id)); } - /** - * 新增女神列表 - */ @SaCheckPermission("cai:anchor:add") @Log(title = "女神列表", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody Anchor bo) { - return toAjax(caiAnchorService.save(bo)); + public R add(@RequestBody AnchorAdminVo bo) { + User user = userService.getByUserCode(bo.getUsercode()); + if(user == null){ + return R.fail("用户不存在"); + } + caiAnchorService.joinAnchor(user.getId()); + return R.ok(); } - /** - * 修改女神列表 - */ @SaCheckPermission("cai:anchor:edit") @Log(title = "女神列表", businessType = BusinessType.UPDATE) @RepeatSubmit() @@ -81,16 +80,13 @@ public class AnchorController extends BaseController { return toAjax(caiAnchorService.updateById(bo)); } - /** - * 删除女神列表 - * - * @param ids 主键串 - */ @SaCheckPermission("cai:anchor:remove") @Log(title = "女神列表", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Integer[] ids) { - return toAjax(caiAnchorService.removeBatchByIds(Arrays.asList(ids))); + @DeleteMapping("/{userId}") + public R remove(@NotNull(message = "主键不能为空") + @PathVariable Long userId) { + + caiAnchorService.closeAnchor(userId); + return R.ok(); } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserAlbumController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserAlbumController.java index 614e35d4..3c767cfb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserAlbumController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserAlbumController.java @@ -1,6 +1,7 @@ package com.ruoyi.cai.controller.admin; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.domain.UserAlbum; @@ -76,10 +77,11 @@ public class UserAlbumController extends BaseController { @RepeatSubmit() @PutMapping("/audit") public R audit(@RequestBody UserAlbum bo) { - Wrappers.lambdaUpdate(UserAlbum.class) - .eq(UserAlbum::getId,bo.getId()) - .set(UserAlbum::getAuditStatus,bo.getAuditStatus()) + LambdaUpdateWrapper update = Wrappers.lambdaUpdate(UserAlbum.class) + .eq(UserAlbum::getId, bo.getId()) + .set(UserAlbum::getAuditStatus, bo.getAuditStatus()) .set(UserAlbum::getAuditTime, LocalDateTime.now()); + userAlbumService.update(update); return R.ok(); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/GenderEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/GenderEnum.java new file mode 100644 index 00000000..2545b776 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/GenderEnum.java @@ -0,0 +1,19 @@ +package com.ruoyi.cai.enums; + +import lombok.Getter; + +@Getter +public enum GenderEnum { + NONE(0,"未知"), + WOMEN(1,"女"), + MAN(2,"男"), + ; + + private final Integer code; + private final String name; + + GenderEnum(Integer code, String name) { + this.code = code; + this.name = name; + } +} 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 424f9eff..98034ace 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 @@ -10,6 +10,10 @@ import lombok.Getter; */ public enum SystemConfigEnum { GUARD_PRICE("1314", "守护价格"), + DEFAULT_ANCHOR_PRICE("200","主播默认价格"), + DEFAULT_ANCHOR_GUARD_PRICE("0.5","主播默认守护提成"), + DEFAULT_ANCHOR_GIFT_PRICE("0.5","主播默认礼物提成"), + DEFAULT_ANCHOR_VIDEO_PRICE("0.5","主播默认视频提成"), DAY_MAX_DYNAMIC("10", "每日运行发布的最大动态数"), DEFAULT_VIDEO_INCOME_RATE("0.07", "默认分销好友视频提成"), DEFAULT_GIFT_INCOME_RATE("0.07", "默认分销好友礼物提成"), 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 20b864a6..d268679e 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,6 +16,10 @@ import com.ruoyi.common.core.domain.PageQuery; */ public interface AnchorService extends IService { + void joinAnchor(Long userId); + + void closeAnchor(Long userId); + Page pageAdmin(PageQuery pageQuery, AnchorAdminVo bo); Page pageApp(PageQuery pageQuery, AnchorListQuery query); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorServiceImpl.java index e6c63983..cf054085 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorServiceImpl.java @@ -4,13 +4,20 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.cai.domain.Anchor; +import com.ruoyi.cai.domain.User; import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo; import com.ruoyi.cai.dto.app.query.index.AnchorListQuery; import com.ruoyi.cai.dto.app.vo.AnchorListVo; +import com.ruoyi.cai.enums.GenderEnum; +import com.ruoyi.cai.enums.SystemConfigEnum; +import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.mapper.AnchorMapper; 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 lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -23,6 +30,66 @@ import org.springframework.stereotype.Service; @Service public class AnchorServiceImpl extends ServiceImpl implements AnchorService { + @Autowired + private UserService userService; + @Autowired + private SystemConfigManager systemConfigManager; + + @Override + public void joinAnchor(Long userId){ + User user = userService.getById(userId); + Anchor anchor = this.getByUserId(userId); + if(user == null){ + throw new ServiceException("用户不存在"); + } + if(user.getIsAnchor() == 1 || anchor != null){ + throw new ServiceException("改用户已经是主播"); + } + if(!GenderEnum.WOMEN.getCode().equals(user.getGender())){ + throw new ServiceException("只有女用户可以加入主播"); + } + boolean boo = userService.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId, user.getId()).eq(User::getIsAnchor, 0) + .set(User::getIsAnchor, 1)); + if(!boo){ + 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)); + Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.DEFAULT_ANCHOR_PRICE); + Anchor save = new Anchor(); + save.setUserId(user.getId()); + save.setPrice(price); + save.setVideoRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_VIDEO_PRICE)); + save.setGuardRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GUARD_PRICE)); + save.setGiftRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GIFT_PRICE)); + this.save(save); + } + + @Override + public void closeAnchor(Long userId){ + User user = userService.getById(userId); + Anchor anchor = this.getByUserId(userId); + if(user == null){ + throw new ServiceException("用户不存在"); + } + if(user.getIsAnchor() == 0){ + throw new ServiceException("该用户不是主播,无需取消"); + } + boolean boo = userService.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId, user.getId()).eq(User::getIsAnchor, 1) + .set(User::getIsAnchor, 0)); + if(!boo){ + throw new ServiceException("取消主播失败"); + } + this.removeById(anchor.getId()); + } + @Override public Page pageAdmin(PageQuery pageQuery, AnchorAdminVo bo) { return baseMapper.pageAdmin(pageQuery.build(),bo);