This commit is contained in:
张良(004796)
2024-02-01 18:18:32 +08:00
parent a9d0a51bc1
commit ae6409aa21
19 changed files with 214 additions and 45 deletions

View File

@@ -1,14 +1,17 @@
package com.ruoyi.web.controller.cai.app;
import com.ruoyi.cai.dto.app.query.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.AlbumResetReq;
import com.ruoyi.cai.domain.UserAlbum;
import com.ruoyi.cai.dto.app.query.album.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.IdRes;
import com.ruoyi.cai.dto.app.query.UserUpdateReq;
import com.ruoyi.cai.dto.app.query.user.UserUpdateAvatarReq;
import com.ruoyi.cai.dto.app.query.user.UserUpdateReq;
import com.ruoyi.cai.dto.app.query.member.UpdateNoGreet;
import com.ruoyi.cai.dto.app.query.member.UpdateRankHideReq;
import com.ruoyi.cai.dto.app.vo.CurrentUserInfoVo;
import com.ruoyi.cai.dto.app.vo.user.CurrentUserUpdateInfoVo;
import com.ruoyi.cai.dto.app.vo.user.MemberInfoVo;
import com.ruoyi.cai.dto.app.vo.user.UserAlbumAuditVo;
import com.ruoyi.cai.dto.app.vo.user.UserAvatarMinVo;
import com.ruoyi.cai.manager.CurrentUserManager;
import com.ruoyi.cai.service.UserAlbumService;
import com.ruoyi.cai.service.UserMemberService;
@@ -25,8 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/user")
@Tag(name = "用户相关接口")
@@ -105,6 +106,15 @@ public class UserAppController {
return R.ok(currentUserManager.finishUser(res));
}*/
@PostMapping("/updateAvatar")
@Operation(summary = "修改当前用户头像")
@Log(title = "修改当前用户头像", businessType = BusinessType.OTHER, isSaveDb = true)
public R<UserAvatarMinVo> updateAvatar(@Validated @RequestBody UserUpdateAvatarReq res){
res.setUserId(LoginHelper.getUserId());
UserAvatarMinVo vo = currentUserManager.updateAvatar(res);
return R.ok(vo);
}
@PostMapping("/update")
@Operation(summary = "修改当前用户信息")
@Log(title = "修改当前用户信息", businessType = BusinessType.OTHER, isSaveDb = true)
@@ -123,9 +133,15 @@ public class UserAppController {
@PostMapping("/album/add")
@Operation(summary = "新增相册")
@Log(title = "新增相册", businessType = BusinessType.OTHER, isSaveDb = true)
public R<Boolean> userAlbumAdd(@RequestBody AlbumAddReq res){
public R<UserAlbumAuditVo> userAlbumAdd(@RequestBody AlbumAddReq res){
res.setUserId(LoginHelper.getUserId());
return R.ok(userAlbumService.addAlbum(res));
UserAlbum userAlbum = userAlbumService.addAlbum(res);
UserAlbumAuditVo vo = new UserAlbumAuditVo();
vo.setId(userAlbum.getId());
vo.setUserId(userAlbum.getUserId());
vo.setUrl(userAlbum.getUrl());
vo.setAuditStatus(userAlbum.getAuditStatus());
return R.ok(vo);
}
/*@PostMapping("/album/reset")

View File

@@ -34,7 +34,7 @@ public class UserAlbum implements Serializable {
*/
private String url;
private Integer auditStatus;
private Integer ignoreAudit;
private Boolean ignoreAudit;
/**
* 审核时间
*/
@@ -46,6 +46,7 @@ public class UserAlbum implements Serializable {
private Integer orderBy;
@Deprecated
private Boolean showHome;
private LocalDateTime createTime;

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.math.BigDecimal;
@@ -18,9 +19,8 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @date 2024-02-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cai_user_picture_audit")
public class UserPictureAudit extends BaseEntity {
public class UserPictureAudit implements Serializable {
private static final long serialVersionUID=1L;
@@ -37,6 +37,8 @@ public class UserPictureAudit extends BaseEntity {
* 用户ID
*/
private Long userId;
private String beforeUrl;
/**
*
*/
@@ -48,7 +50,7 @@ public class UserPictureAudit extends BaseEntity {
/**
* 是否免审核
*/
private Integer igoreAudit;
private Boolean ignoreAudit;
/**
* 审核时间
*/
@@ -58,4 +60,6 @@ public class UserPictureAudit extends BaseEntity {
*/
private String auditRemark;
private LocalDateTime createTime;
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.cai.dto.app.query.album;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class AlbumAddReq {
@Schema(description = "用户ID",hidden = true)
private Long userId;
@Schema(description = "url")
private String url;
private Integer orderBy = 0;
}

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cai.dto.app.query;
package com.ruoyi.cai.dto.app.query.album;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

View File

@@ -1,15 +1,15 @@
package com.ruoyi.cai.dto.app.query;
package com.ruoyi.cai.dto.app.query.album;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class AlbumAddReq {
public class AlbumUpdateReq {
@Schema(description = "用户ID",hidden = true)
private Long userId;
@Schema(description = "id")
private Long id;
@Schema(description = "url")
private String url;
private Integer orderBy;
private Integer orderBy = 0;
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.cai.dto.app.query.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class UserUpdateAvatarReq {
@Schema(description = "用户ID",hidden = true)
private Long userId;
@Schema(description = "头像")
private String avatar;
}

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cai.dto.app.query;
package com.ruoyi.cai.dto.app.query.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -20,6 +20,6 @@ public class UserUpdateReq {
private LocalDate birthday;
@Schema(description = "性别")
private Integer gender;
@Schema(description = "头像")
@Schema(description = "头像",hidden = true)
private String avatar;
}

View File

@@ -87,7 +87,7 @@ public class CurrentUserUpdateInfoVo implements Serializable {
* 相册
*/
@Schema(description = "相册")
private List<UserAlbumDTO> userAlbumList;
private List<UserAlbumAuditVo> userAlbumList;
@Schema(description = "头像修改模型")

View File

@@ -0,0 +1,17 @@
package com.ruoyi.cai.dto.app.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class UserAlbumAuditVo {
@Schema(description = "相册ID")
private Long id;
@Schema(description = "用户名称")
private Long userId;
@Schema(description = "相册URL")
private String url;
@Schema(description = "状态 0-未审核 1-审核通过 2-审核未通过")
private Integer auditStatus;
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.cai.dto.app.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class UserAvatarMinVo {
@Schema(description = "头像")
private String avatar;
@Schema(description = "状态 0-未审核 1-审核通过 2-审核未通过")
private Integer auditStatus;
}

View File

@@ -21,6 +21,10 @@ public enum SystemConfigEnum {
// INVITE_GIFT_RATE("100", "礼物分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()),
// INVITE_GUARD_RATE("100", "守护分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()),
// INVITE_VIDEO_RATE("100", "视频分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()),
ANCHOR_AVATAR_IGNORE_AUDIT("0", "开启主播头像免审核",SystemConfigGroupEnum.BUSINESS, new BooleanSystemConfigCheck()),
ANCHOR_ALBUM_AVATAR_IGNORE_AUDIT("0", "开启主播相册免审核",SystemConfigGroupEnum.BUSINESS, new BooleanSystemConfigCheck()),
NO_ANCHOR_AVATAR_IGNORE_AUDIT("0", "开启非主播头像免审核",SystemConfigGroupEnum.BUSINESS, new BooleanSystemConfigCheck()),
NO_ANCHOR_ALBUM_AVATAR_IGNORE_AUDIT("0", "开启非主播头像免审核",SystemConfigGroupEnum.BUSINESS, new BooleanSystemConfigCheck()),
REGISTER_AWARD("88", "注册奖励",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
FAST_PAY_AWARD("300", "首充奖励",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
GUARD_PRICE("1314", "守护价格",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),

View File

@@ -0,0 +1,16 @@
package com.ruoyi.cai.enums.user;
import lombok.Getter;
@Getter
public enum UserPictureAuditType {
AVATAR(1,"头像"),
;
private final Integer code;
private final String text;
UserPictureAuditType(Integer code, String text) {
this.code = code;
this.text = text;
}
}

View File

@@ -7,16 +7,15 @@ import com.ruoyi.cai.auth.CaiLoginManager;
import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.dto.app.query.AccountAliBankCardRes;
import com.ruoyi.cai.dto.app.query.AnchorUpdateReq;
import com.ruoyi.cai.dto.app.query.UserUpdateReq;
import com.ruoyi.cai.dto.app.query.member.UpdateNoGreet;
import com.ruoyi.cai.dto.app.query.member.UpdateRankHideReq;
import com.ruoyi.cai.dto.app.query.user.UserUpdateAvatarReq;
import com.ruoyi.cai.dto.app.query.user.UserUpdateReq;
import com.ruoyi.cai.dto.app.vo.AnchorVo;
import com.ruoyi.cai.dto.app.vo.CurrentUserInfoVo;
import com.ruoyi.cai.dto.app.vo.user.CurrentUserUpdateInfoVo;
import com.ruoyi.cai.dto.app.vo.user.UserAccountVo;
import com.ruoyi.cai.dto.app.vo.user.UserAlbumDTO;
import com.ruoyi.cai.dto.app.vo.user.UserCountVo;
import com.ruoyi.cai.dto.app.vo.user.*;
import com.ruoyi.cai.enums.AuditStatusEnum;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.enums.user.UserPictureAuditType;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.UserUtil;
@@ -27,12 +26,14 @@ import com.ruoyi.yunxin.client.ImUserRefClient;
import com.ruoyi.yunxin.req.UpdateUinfoReq;
import com.ruoyi.yunxin.resp.YxCommonR;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@Component
@@ -76,14 +77,30 @@ public class CurrentUserManager {
Long userId = LoginHelper.getUserId();
User user = userService.getById(userId);
CurrentUserUpdateInfoVo res = BeanConvertUtil.convertTo(user, CurrentUserUpdateInfoVo::new);
UserPictureAudit audit = userPictureAuditService.getOneUserAuditRunningPic(UserPictureAuditType.AVATAR.getCode(), res.getUserId());
CurrentUserUpdateInfoVo.Avatar avatar = new CurrentUserUpdateInfoVo.Avatar();
avatar.setAvatar(user.getAvatar());
if(audit == null){
avatar.setAvatar(user.getAvatar());
avatar.setAuditStatus(AuditStatusEnum.SUCCESS.getCode());
} else {
avatar.setAvatar(audit.getUrl());
avatar.setAuditStatus(AuditStatusEnum.AUDITING.getCode());
}
res.setAuditAvatar(avatar);
res.setUserId(userId);
Anchor anchor = anchorService.getByUserId(userId);
res.setOpenVideoStatus(anchor == null ? 1 : anchor.getOpenVideoStatus());
List<UserAlbum> userAlbums = userAlbumService.listByUserId(userId);
res.setUserAlbumList(BeanConvertUtil.convertListTo(userAlbums, UserAlbumDTO::new));
List<UserAlbumAuditVo> userAlbumAuditList = new ArrayList<>();
for (UserAlbum userAlbum : userAlbums) {
UserAlbumAuditVo userAlbumAudit = new UserAlbumAuditVo();
userAlbumAudit.setId(userAlbum.getId());
userAlbumAudit.setUserId(userAlbum.getUserId());
userAlbumAudit.setUrl(userAlbum.getUrl());
userAlbumAudit.setAuditStatus(userAlbum.getAuditStatus());
userAlbumAuditList.add(userAlbumAudit);
}
res.setUserAlbumList(userAlbumAuditList);
return res;
}
@@ -215,5 +232,36 @@ public class CurrentUserManager {
accountBankcardService.saveOrUpdate(bankcard);
}
@Autowired
private UserPictureAuditService userPictureAuditService;
@Autowired
private SystemConfigManager systemConfigManager;
public UserAvatarMinVo updateAvatar(UserUpdateAvatarReq res) {
UserPictureAudit audit = userPictureAuditService.getOneUserAuditRunningPic(UserPictureAuditType.AVATAR.getCode(), res.getUserId());
if(audit != null){
throw new ServiceException("头像正在审核中,请审核后修改");
}
User user = userService.getById(res.getUserId());
boolean ignoreAudit;
if(user.getIsAnchor() == 1){
ignoreAudit = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.ANCHOR_AVATAR_IGNORE_AUDIT);
}else{
ignoreAudit = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.NO_ANCHOR_AVATAR_IGNORE_AUDIT);
}
UserAvatarMinVo vo = new UserAvatarMinVo();
vo.setAvatar(res.getAvatar());
if(!ignoreAudit){
UserPictureAudit save = new UserPictureAudit();
save.setType(UserPictureAuditType.AVATAR.getCode());
save.setUserId(res.getUserId());
save.setBeforeUrl(user.getAvatar());
save.setUrl(res.getAvatar());
save.setAuditStatus(AuditStatusEnum.AUDITING.getCode());
userPictureAuditService.save(save);
vo.setAuditStatus(AuditStatusEnum.AUDITING.getCode());
}
vo.setAuditStatus(AuditStatusEnum.SUCCESS.getCode());
return vo;
}
}

View File

@@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.UserAlbum;
import com.ruoyi.cai.dto.admin.vo.UserAlbumAdminVo;
import com.ruoyi.cai.dto.app.query.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.AlbumResetReq;
import com.ruoyi.cai.dto.app.query.album.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.album.AlbumResetReq;
import com.ruoyi.cai.dto.app.query.album.AlbumUpdateReq;
import com.ruoyi.common.core.domain.PageQuery;
import java.util.List;
@@ -19,13 +20,13 @@ import java.util.List;
public interface UserAlbumService extends IService<UserAlbum> {
List<String> getUserAlbum(Long userId, Integer anchor);
List<String> getUserAlbumSuccess(Long userId, Integer anchor);
List<UserAlbum> listByUserId(Long userId);
boolean addAlbum(AlbumAddReq res);
UserAlbum addAlbum(AlbumAddReq res);
boolean updateAlbum(AlbumAddReq res);
boolean updateAlbum(AlbumUpdateReq res);
boolean removeAlbum(Long id);

View File

@@ -10,4 +10,5 @@ import com.ruoyi.cai.domain.UserPictureAudit;
* @date 2024-02-01
*/
public interface UserPictureAuditService extends IService<UserPictureAudit> {
UserPictureAudit getOneUserAuditRunningPic(Integer type, Long userId);
}

View File

@@ -4,10 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.User;
import com.ruoyi.cai.domain.UserAlbum;
import com.ruoyi.cai.dto.admin.vo.UserAlbumAdminVo;
import com.ruoyi.cai.dto.app.query.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.AlbumResetReq;
import com.ruoyi.cai.dto.app.query.album.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.album.AlbumResetReq;
import com.ruoyi.cai.dto.app.query.album.AlbumUpdateReq;
import com.ruoyi.cai.enums.AuditStatusEnum;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.UserAlbumMapper;
import com.ruoyi.cai.service.UserAlbumService;
import com.ruoyi.cai.service.UserService;
@@ -31,11 +36,13 @@ import java.util.stream.Collectors;
public class UserAlbumServiceImpl extends ServiceImpl<UserAlbumMapper, UserAlbum> implements UserAlbumService {
@Autowired
private UserService userService;
@Autowired
private SystemConfigManager systemConfigManager;
@Override
public List<String> getUserAlbum(Long userId,Integer anchor){
public List<String> getUserAlbumSuccess(Long userId, Integer anchor){
LambdaQueryWrapper<UserAlbum> eq = Wrappers.lambdaQuery(UserAlbum.class)
.select(UserAlbum::getUrl)
.eq(UserAlbum::getShowHome,true)
.eq(UserAlbum::getAuditStatus,AuditStatusEnum.SUCCESS.getCode())
.eq(UserAlbum::getUserId, userId);
List<UserAlbum> list = this.list(eq);
return list.stream().map(UserAlbum::getUrl).collect(Collectors.toList());
@@ -47,23 +54,31 @@ public class UserAlbumServiceImpl extends ServiceImpl<UserAlbumMapper, UserAlbum
}
@Override
public boolean addAlbum(AlbumAddReq res) {
public UserAlbum addAlbum(AlbumAddReq res) {
User user = userService.getById(res.getUserId());
boolean ignoreAudit;
if(user.getIsAnchor() == 1){
ignoreAudit = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.ANCHOR_ALBUM_AVATAR_IGNORE_AUDIT);
}else{
ignoreAudit = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.NO_ANCHOR_ALBUM_AVATAR_IGNORE_AUDIT);
}
UserAlbum album = new UserAlbum();
album.setUserId(res.getUserId());
album.setUrl(res.getUrl());
album.setOrderBy(res.getOrderBy());
album.setShowHome(true);
album.setAuditStatus(ignoreAudit ? AuditStatusEnum.SUCCESS.getCode():AuditStatusEnum.AUDITING.getCode());
album.setIgnoreAudit(ignoreAudit);
this.save(album);
return true;
return album;
}
@Override
public boolean updateAlbum(AlbumAddReq res) {
@Deprecated
public boolean updateAlbum(AlbumUpdateReq res) {
UserAlbum album = new UserAlbum();
album.setId(res.getId());
album.setUrl(res.getUrl());
album.setOrderBy(res.getOrderBy());
album.setShowHome(true);
this.updateById(album);
return true;
}

View File

@@ -1,7 +1,9 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.UserPictureAudit;
import com.ruoyi.cai.enums.AuditStatusEnum;
import com.ruoyi.cai.mapper.UserPictureAuditMapper;
import com.ruoyi.cai.service.UserPictureAuditService;
import org.springframework.stereotype.Service;
@@ -15,4 +17,12 @@ import org.springframework.stereotype.Service;
@Service
public class UserPictureAuditServiceImpl extends ServiceImpl<UserPictureAuditMapper,UserPictureAudit> implements UserPictureAuditService {
@Override
public UserPictureAudit getOneUserAuditRunningPic(Integer type, Long userId) {
return this.getOne(Wrappers.lambdaQuery(UserPictureAudit.class)
.eq(UserPictureAudit::getAuditStatus, AuditStatusEnum.AUDITING)
.eq(UserPictureAudit::getType,type)
.eq(UserPictureAudit::getUserId,userId)
.last("limit 1"));
}
}

View File

@@ -15,7 +15,6 @@ 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.UserListVo;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.manager.CurrentUserManager;
import com.ruoyi.cai.mapper.UserMapper;
import com.ruoyi.cai.notice.YunxinHttpService;
import com.ruoyi.cai.service.*;
@@ -164,7 +163,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
vo.setCityId(user.getCityId());
vo.setFansNum(userFollowService.getFansNumByUserId(userId));
vo.setStar(userFollowService.checkStar(currentUserId, userId));
vo.setAlbumList(userAlbumService.getUserAlbum(userId, user.getIsAnchor()));
vo.setAlbumList(userAlbumService.getUserAlbumSuccess(userId, user.getIsAnchor()));
// 在线状态
OnlineStatusVo onlineStatusVo;
if(user.getIsAnchor() == 1 && anchor != null){