This commit is contained in:
dute7liang
2024-01-01 17:03:08 +08:00
parent 48d655f737
commit 0128d6437e
19 changed files with 276 additions and 29 deletions

View File

@@ -0,0 +1,96 @@
package com.ruoyi.cai.controller.admin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.UserGreet;
import com.ruoyi.cai.service.UserGreetService;
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;
/**
* 群发审核
*
* @author 77
* @date 2024-01-01
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cai/userGreet")
public class UserGreetController extends BaseController {
private final UserGreetService userGreetService;
/**
* 查询群发审核列表
*/
@SaCheckPermission("cai:userGreet:list")
@GetMapping("/list")
public TableDataInfo<UserGreet> list(UserGreet bo, PageQuery pageQuery) {
Page<UserGreet> page = userGreetService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
return TableDataInfo.build(page);
}
/**
* 获取群发审核详细信息
*
* @param id 主键
*/
@SaCheckPermission("cai:userGreet:query")
@GetMapping("/{id}")
public R<UserGreet> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Integer id) {
return R.ok(userGreetService.getById(id));
}
/**
* 新增群发审核
*/
@SaCheckPermission("cai:userGreet:add")
@Log(title = "群发审核", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserGreet bo) {
return toAjax(userGreetService.save(bo));
}
/**
* 修改群发审核
*/
@SaCheckPermission("cai:userGreet:edit")
@Log(title = "群发审核", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserGreet bo) {
return toAjax(userGreetService.updateById(bo));
}
/**
* 删除群发审核
*
* @param ids 主键串
*/
@SaCheckPermission("cai:userGreet:remove")
@Log(title = "群发审核", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Integer[] ids) {
return toAjax(userGreetService.removeBatchByIds(Arrays.asList(ids)));
}
}

View File

@@ -2,8 +2,9 @@ package com.ruoyi.cai.controller.app;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.Banner; import com.ruoyi.cai.domain.Banner;
import com.ruoyi.cai.dto.app.query.AnchorListQuery; import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
import com.ruoyi.cai.dto.app.query.UserQuery; import com.ruoyi.cai.dto.app.query.index.GreetQuery;
import com.ruoyi.cai.dto.app.query.index.UserQuery;
import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import com.ruoyi.cai.dto.app.vo.IndexBannerVo; import com.ruoyi.cai.dto.app.vo.IndexBannerVo;
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo; import com.ruoyi.cai.dto.app.vo.user.UserInfoVo;
@@ -49,19 +50,26 @@ public class IndexController {
} }
@GetMapping("/anchor/page") @GetMapping("/anchor/page")
@Operation(summary = "查询主播-分页") @Operation(summary = "首页查询主播接口-分页")
public TableDataInfo<AnchorListVo> page(PageQuery page, AnchorListQuery query){ public TableDataInfo<AnchorListVo> page(PageQuery page, AnchorListQuery query){
Page<AnchorListVo> res = anchorService.pageApp(page,query); Page<AnchorListVo> res = anchorService.pageApp(page,query);
return TableDataInfo.build(res); return TableDataInfo.build(res);
} }
@GetMapping("/user/page") @GetMapping("/user/page")
@Operation(summary = "用户全局查询-分页") @Operation(summary = "首页用户搜索接口-分页")
public TableDataInfo<UserListVo> page(PageQuery page, UserQuery query){ public TableDataInfo<UserListVo> page(PageQuery page, UserQuery query){
Page<UserListVo> res = userService.pageApp(page,query); Page<UserListVo> res = userService.pageApp(page,query);
return TableDataInfo.build(res); return TableDataInfo.build(res);
} }
@GetMapping("/user/greet/page")
@Operation(summary = "群打招呼界面-用户搜索接口")
public TableDataInfo<UserListVo> greetQuery(PageQuery page, GreetQuery query){
Page<UserListVo> res = userService.greetPageApp(page,query);
return TableDataInfo.build(res);
}
@GetMapping("/home/info") @GetMapping("/home/info")
@Operation(summary = "获取指定用户主页信息") @Operation(summary = "获取指定用户主页信息")
public R<UserInfoVo> info(Long userId){ public R<UserInfoVo> info(Long userId){

View File

@@ -0,0 +1,46 @@
package com.ruoyi.cai.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 群发审核对象 cai_user_greet
*
* @author 77
* @date 2024-01-01
*/
@Data
@TableName("cai_user_greet")
public class UserGreet implements Serializable {
private static final long serialVersionUID=1L;
/**
*
*/
@TableId(value = "id")
private Integer id;
/**
*
*/
private Integer userId;
/**
* 招呼类型: 0文本 1 语音 2 图片
*/
private Integer type;
/**
* 标题
*/
private String title;
/**
* 审核状态 0 审核中, 1 审核通过, 2 审核不通过
*/
private Integer status;
private LocalDateTime createTime;
}

View File

@@ -15,6 +15,8 @@ public class UserUpdateReq {
private String nickname; private String nickname;
@Schema(description = "生日") @Schema(description = "生日")
private LocalDateTime birthday; private LocalDateTime birthday;
@Schema(description = "性别")
private Integer gender;
@Schema(description = "头像") @Schema(description = "头像")
private String avatar; private String avatar;
} }

View File

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

View File

@@ -0,0 +1,13 @@
package com.ruoyi.cai.dto.app.query.index;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "群打招呼用户搜索")
public class GreetQuery {
@Schema(description = "城市")
private Long city;
@Schema(description = "搜索类型 1=活跃 2=同城")
private Integer type = 1;
}

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cai.dto.app.query; package com.ruoyi.cai.dto.app.query.index;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -11,7 +11,6 @@ public class UserQuery {
private String nickname; private String nickname;
@Schema(description = "蜜瓜号") @Schema(description = "蜜瓜号")
private String usercode; private String usercode;
@Schema(description = "性别") @Schema(description = "性别")
private Integer gender; private Integer gender;
} }

View File

@@ -13,6 +13,7 @@ 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.UserAlbumDTO;
import com.ruoyi.cai.dto.app.vo.user.UserCountVo; import com.ruoyi.cai.dto.app.vo.user.UserCountVo;
import com.ruoyi.cai.service.*; import com.ruoyi.cai.service.*;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.common.utils.BeanConvertUtil;
import com.ruoyi.yunxin.client.ImUserRefClient; import com.ruoyi.yunxin.client.ImUserRefClient;
@@ -115,6 +116,12 @@ public class CurrentUserManager {
updateFlag=true; updateFlag=true;
updateYunxin=true; updateYunxin=true;
} }
if(res.getGender() != null){
User user = userService.getById(res.getUserId());
if(user.getGender() != 0 && !user.getGender().equals(res.getGender())){
throw new ServiceException("性别不可以修改");
}
}
if(res.getCity() != null){ if(res.getCity() != null){
update.set(User::getCity,res.getCity()); update.set(User::getCity,res.getCity());
updateFlag=true; updateFlag=true;

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.Anchor; import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo; import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo;
import com.ruoyi.cai.dto.app.query.AnchorListQuery; import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cai.domain.UserGreet;
/**
* 群发审核Mapper接口
*
* @author 77
* @date 2024-01-01
*/
public interface UserGreetMapper extends BaseMapper<UserGreet> {
}

View File

@@ -4,7 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.UserAdminVo; import com.ruoyi.cai.dto.admin.vo.UserAdminVo;
import com.ruoyi.cai.dto.app.query.UserQuery; import com.ruoyi.cai.dto.app.query.index.GreetQuery;
import com.ruoyi.cai.dto.app.query.index.UserQuery;
import com.ruoyi.cai.dto.app.vo.user.UserListVo; import com.ruoyi.cai.dto.app.vo.user.UserListVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -17,6 +18,6 @@ import org.apache.ibatis.annotations.Param;
public interface UserMapper extends BaseMapper<User> { public interface UserMapper extends BaseMapper<User> {
Page<UserAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("query") User query); Page<UserAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("query") User query);
Page<UserListVo> pageApp(@Param("build") Page<Object> build, @Param("query") UserQuery query); Page<UserListVo> pageApp(@Param("build") Page<Object> build, @Param("query") UserQuery query);
Page<UserListVo> greetPageApp(@Param("build") Page<Object> build, @Param("query") GreetQuery query);
} }

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.Anchor; import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo; import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo;
import com.ruoyi.cai.dto.app.query.AnchorListQuery; import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.UserGreet;
/**
* 群发审核Service接口
*
* @author 77
* @date 2024-01-01
*/
public interface UserGreetService extends IService<UserGreet> {
}

View File

@@ -2,11 +2,10 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.auth.CaiRegisterUser;
import com.ruoyi.cai.auth.LoginCaiUser;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.UserAdminVo; import com.ruoyi.cai.dto.admin.vo.UserAdminVo;
import com.ruoyi.cai.dto.app.query.UserQuery; import com.ruoyi.cai.dto.app.query.index.GreetQuery;
import com.ruoyi.cai.dto.app.query.index.UserQuery;
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.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
@@ -24,6 +23,7 @@ public interface UserService extends IService<User> {
Page<UserAdminVo> pageAdmin(PageQuery pageQuery, User query); Page<UserAdminVo> pageAdmin(PageQuery pageQuery, User query);
Page<UserListVo> pageApp(PageQuery page, UserQuery query); Page<UserListVo> pageApp(PageQuery page, UserQuery query);
Page<UserListVo> greetPageApp(PageQuery page, GreetQuery query);
UserInfoVo info(Long userId); UserInfoVo info(Long userId);
@@ -36,4 +36,6 @@ public interface UserService extends IService<User> {
void checkFinishStatus(Long userId); void checkFinishStatus(Long userId);
void resetPassword(String mobile, String password); void resetPassword(String mobile, String password);
} }

View File

@@ -5,7 +5,7 @@ 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.domain.Anchor; import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo; import com.ruoyi.cai.dto.admin.vo.AnchorAdminVo;
import com.ruoyi.cai.dto.app.query.AnchorListQuery; import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import com.ruoyi.cai.mapper.AnchorMapper; import com.ruoyi.cai.mapper.AnchorMapper;
import com.ruoyi.cai.service.AnchorService; import com.ruoyi.cai.service.AnchorService;

View File

@@ -0,0 +1,18 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.UserGreet;
import com.ruoyi.cai.mapper.UserGreetMapper;
import com.ruoyi.cai.service.UserGreetService;
import org.springframework.stereotype.Service;
/**
* 群发审核Service业务层处理
*
* @author 77
* @date 2024-01-01
*/
@Service
public class UserGreetServiceImpl extends ServiceImpl<UserGreetMapper,UserGreet> implements UserGreetService {
}

View File

@@ -4,31 +4,23 @@ import cn.dev33.satoken.secure.BCrypt;
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.CaiRegisterUser;
import com.ruoyi.cai.auth.LoginCaiUser;
import com.ruoyi.cai.domain.Anchor; import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserInfo;
import com.ruoyi.cai.dto.admin.vo.UserAdminVo; import com.ruoyi.cai.dto.admin.vo.UserAdminVo;
import com.ruoyi.cai.dto.app.query.UserQuery; import com.ruoyi.cai.dto.app.query.index.GreetQuery;
import com.ruoyi.cai.dto.app.query.index.UserQuery;
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.dto.app.vo.user.OnlineStatusVo; import com.ruoyi.cai.dto.app.vo.user.OnlineStatusVo;
import com.ruoyi.cai.enums.CodeEnum;
import com.ruoyi.cai.manager.CodeManager;
import com.ruoyi.cai.mapper.UserMapper; import com.ruoyi.cai.mapper.UserMapper;
import com.ruoyi.cai.service.*; import com.ruoyi.cai.service.*;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/** /**
* 用户Service业务层处理 * 用户Service业务层处理
* *
@@ -68,6 +60,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
return baseMapper.pageApp(page.build(),query); return baseMapper.pageApp(page.build(),query);
} }
@Override
public Page<UserListVo> greetPageApp(PageQuery page, GreetQuery query) {
return baseMapper.greetPageApp(page.build(),query);
}
@Override @Override
public UserInfoVo info(Long userId) { public UserInfoVo info(Long userId) {
Long currentUserId = LoginHelper.getUserId(); Long currentUserId = LoginHelper.getUserId();
@@ -82,12 +79,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
vo.setUsercode(user.getUsercode()); vo.setUsercode(user.getUsercode());
vo.setNickname(user.getNickname()); vo.setNickname(user.getNickname());
vo.setAvatar(user.getAvatar()); vo.setAvatar(user.getAvatar());
vo.setPrice(0L);
vo.setServiceCount(0L);
if(anchor != null){ if(anchor != null){
vo.setPrice(anchor.getPrice()); vo.setPrice(anchor.getPrice());
if(anchor.getOrderSwitch() == 2){ // 不隐藏接单数
vo.setServiceCount(anchor.getServiceCount()); vo.setServiceCount(anchor.getServiceCount());
}else{ }
vo.setPrice(null);
vo.setServiceCount(null);
} }
vo.setFansNum(userFollowService.getFansNumByUserId(userId)); vo.setFansNum(userFollowService.getFansNumByUserId(userId));
vo.setStar(userFollowService.checkStar(currentUserId, userId)); vo.setStar(userFollowService.checkStar(currentUserId, userId));

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cai.mapper.UserGreetMapper">
<resultMap type="com.ruoyi.cai.domain.UserGreet" id="UserGreetResult">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="type" column="type"/>
<result property="title" column="title"/>
<result property="status" column="status"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>

View File

@@ -40,6 +40,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="query.gender != null"> <if test="query.gender != null">
and t1.gender = #{query.gender} and t1.gender = #{query.gender}
</if> </if>
order by t2.last_live_time desc
</select>
<select id="greetPageApp" resultType="com.ruoyi.cai.dto.app.vo.user.UserListVo">
select t1.avatar,t1.gender,t1.city,t1.nickname,t1.usercode,t1.age,t2.last_live_time
from cai_user t1
join cai_user_online t2 on t1.id = t2.user_id
where t1.status = 0
<if test="query.city != null and query.city != ''">
and t1.city = #{query.city}
</if>
order by t2.last_live_time desc
</select> </select>