init
This commit is contained in:
@@ -26,10 +26,5 @@
|
|||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<artifactId>ruoyi-system</artifactId>
|
<artifactId>ruoyi-system</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.guava</groupId>
|
|
||||||
<artifactId>guava</artifactId>
|
|
||||||
<version>23.0</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.ruoyi.cai.controller.app;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.ruoyi.cai.dto.app.query.AnchorListQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
|
import com.ruoyi.cai.service.CaiAnchorService;
|
||||||
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/cai/anchor")
|
||||||
|
public class CaiAnchorAppController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CaiAnchorService anchorService;
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
public TableDataInfo<AnchorListVo> page(PageQuery page, AnchorListQuery query){
|
||||||
|
Page<AnchorListVo> res = anchorService.pageApp(page,query);
|
||||||
|
return TableDataInfo.build(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
package com.ruoyi.cai.controller.app;
|
|
||||||
|
|
||||||
import com.ruoyi.common.core.domain.R;
|
|
||||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
|
||||||
import com.ruoyi.common.helper.LoginHelper;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/cai/user")
|
|
||||||
public class CaiAppUserController {
|
|
||||||
|
|
||||||
@GetMapping("/info")
|
|
||||||
public R<LoginUser> info(String user){
|
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
|
||||||
return R.ok(loginUser);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -18,7 +18,7 @@ import java.util.Map;
|
|||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/cai/auth")
|
@RequestMapping("/cai/auth")
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
public class CaiAppAuthController {
|
public class CaiAuthAppController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private CaiLoginManager caiLoginManager;
|
private CaiLoginManager caiLoginManager;
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.ruoyi.cai.controller.app;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.ruoyi.cai.dto.app.query.UserQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserInfoVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserListVo;
|
||||||
|
import com.ruoyi.cai.service.CaiUserService;
|
||||||
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import com.ruoyi.common.core.domain.R;
|
||||||
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/cai/user")
|
||||||
|
public class CaiUserAppController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CaiUserService caiUserService;
|
||||||
|
|
||||||
|
@GetMapping("/current/info")
|
||||||
|
public R<LoginUser> currentInfo(){
|
||||||
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
|
return R.ok(loginUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
public TableDataInfo<UserListVo> page(PageQuery page, UserQuery query){
|
||||||
|
Page<UserListVo> res = caiUserService.pageApp(page,query);
|
||||||
|
return TableDataInfo.build(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/info")
|
||||||
|
public R<UserInfoVo> info(String usercode){
|
||||||
|
UserInfoVo res = caiUserService.info(usercode);
|
||||||
|
return R.ok(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,7 +28,15 @@ public class CaiAnchor implements Serializable{
|
|||||||
/**
|
/**
|
||||||
* 用户ID
|
* 用户ID
|
||||||
*/
|
*/
|
||||||
private Integer userId;
|
private Long userId;
|
||||||
|
/**
|
||||||
|
* 技能ID
|
||||||
|
*/
|
||||||
|
private Integer skillId;
|
||||||
|
/**
|
||||||
|
* 价格,默认50彩币
|
||||||
|
*/
|
||||||
|
private Long price;
|
||||||
/**
|
/**
|
||||||
* 开启视频接听 0 未开启 1 已开启
|
* 开启视频接听 0 未开启 1 已开启
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
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_online
|
||||||
|
*
|
||||||
|
* @author 77
|
||||||
|
* @date 2023-12-23
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("cai_user_online")
|
||||||
|
public class CaiUserOnline implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID=1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
@TableId(value = "user_id")
|
||||||
|
private Integer userId;
|
||||||
|
/**
|
||||||
|
* 在线状态:0=离线,1=在线
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
/**
|
||||||
|
* 状态更新时间13位时间戳
|
||||||
|
*/
|
||||||
|
private Long receiveTime;
|
||||||
|
/**
|
||||||
|
* 最后在线时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime lastLiveTime;
|
||||||
|
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.query;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AnchorListQuery {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0-默认查询
|
||||||
|
* 1-活跃查询
|
||||||
|
* 2-新人查询
|
||||||
|
* 3-同城查询
|
||||||
|
*/
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
private String city;
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.query;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserQuery {
|
||||||
|
|
||||||
|
private String nickname;
|
||||||
|
private String usercode;
|
||||||
|
|
||||||
|
private Integer gender;
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AnchorListVo {
|
||||||
|
/**
|
||||||
|
* 头像
|
||||||
|
*/
|
||||||
|
private String avatar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 性别 0 未知 1 女 2 男
|
||||||
|
*/
|
||||||
|
private Integer gender;
|
||||||
|
/**
|
||||||
|
* 城市
|
||||||
|
*/
|
||||||
|
private Long city;
|
||||||
|
/**
|
||||||
|
* 昵称
|
||||||
|
*/
|
||||||
|
private String nickname;
|
||||||
|
/**
|
||||||
|
* 用户号/ID号
|
||||||
|
*/
|
||||||
|
private String usercode;
|
||||||
|
/**
|
||||||
|
* 用户评分
|
||||||
|
*/
|
||||||
|
private BigDecimal giveScore;
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DynamicImageVo {
|
||||||
|
|
||||||
|
private Integer id;
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Integer userId;
|
||||||
|
/**
|
||||||
|
* 动态ID
|
||||||
|
*/
|
||||||
|
private Long dynamicId;
|
||||||
|
/**
|
||||||
|
* 物理路径
|
||||||
|
*/
|
||||||
|
private String url;
|
||||||
|
/**
|
||||||
|
* 宽度
|
||||||
|
*/
|
||||||
|
private Long width;
|
||||||
|
/**
|
||||||
|
* 高度
|
||||||
|
*/
|
||||||
|
private Long height;
|
||||||
|
/**
|
||||||
|
* 图片大小
|
||||||
|
*/
|
||||||
|
private Long size;
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private String exts;
|
||||||
|
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DynamicVo {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Integer userId;
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
/**
|
||||||
|
* 城市ID
|
||||||
|
*/
|
||||||
|
private Integer cityId;
|
||||||
|
/**
|
||||||
|
* 是否有附件 0 没有 1 有
|
||||||
|
*/
|
||||||
|
private Integer isAttach;
|
||||||
|
/**
|
||||||
|
* 状态 0 审核中 1可用 2 不可用
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
/**
|
||||||
|
* 排序字段
|
||||||
|
*/
|
||||||
|
private Long sort;
|
||||||
|
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
private List<DynamicImageVo> imageList;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class GuardTotalVo implements Serializable {
|
||||||
|
/**
|
||||||
|
* 被守护人的user_id(大咖)
|
||||||
|
*/
|
||||||
|
private Long fromUserId;
|
||||||
|
/**
|
||||||
|
* 守护人的user_id
|
||||||
|
*/
|
||||||
|
private Long toUserId;
|
||||||
|
|
||||||
|
private String userAvatar;
|
||||||
|
/**
|
||||||
|
* 累计守护符个数
|
||||||
|
*/
|
||||||
|
private Long guardNum;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserGiftVo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接受者
|
||||||
|
*/
|
||||||
|
private Long toUid;
|
||||||
|
/**
|
||||||
|
* 礼物ID
|
||||||
|
*/
|
||||||
|
private Long giftId;
|
||||||
|
/**
|
||||||
|
* 礼物数量
|
||||||
|
*/
|
||||||
|
private Long giftCount;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserInfoVo {
|
||||||
|
|
||||||
|
private Long userId;
|
||||||
|
/**
|
||||||
|
* 是否是播主 0 否 1 是
|
||||||
|
*/
|
||||||
|
private Integer isAnchor;
|
||||||
|
private String usercode;
|
||||||
|
private String nickname;
|
||||||
|
private String avatar;
|
||||||
|
/**
|
||||||
|
* 价格,默认50彩币
|
||||||
|
*/
|
||||||
|
private Long price;
|
||||||
|
/**
|
||||||
|
* 接单次数
|
||||||
|
*/
|
||||||
|
private Long serviceCount;
|
||||||
|
|
||||||
|
private Long fansNum;
|
||||||
|
|
||||||
|
private Boolean star;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
private List<String> albumList = Collections.emptyList();
|
||||||
|
|
||||||
|
private List<GuardTotalVo> guardTotalList = Collections.emptyList();
|
||||||
|
|
||||||
|
private List<DynamicVo> dynamicList = Collections.emptyList();
|
||||||
|
|
||||||
|
private List<UserGiftVo> giftList = Collections.emptyList();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserListVo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 头像
|
||||||
|
*/
|
||||||
|
private String avatar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 性别 0 未知 1 女 2 男
|
||||||
|
*/
|
||||||
|
private Integer gender;
|
||||||
|
/**
|
||||||
|
* 城市
|
||||||
|
*/
|
||||||
|
private Long city;
|
||||||
|
/**
|
||||||
|
* 昵称
|
||||||
|
*/
|
||||||
|
private String nickname;
|
||||||
|
/**
|
||||||
|
* 用户号/ID号
|
||||||
|
*/
|
||||||
|
private String usercode;
|
||||||
|
|
||||||
|
private Integer age;
|
||||||
|
/**
|
||||||
|
* 最后在线时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime lastLiveTime;
|
||||||
|
}
|
||||||
@@ -4,6 +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.CaiAnchor;
|
import com.ruoyi.cai.domain.CaiAnchor;
|
||||||
import com.ruoyi.cai.dto.admin.vo.CaiAnchorAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.CaiAnchorAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.query.AnchorListQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15,4 +17,6 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
public interface CaiAnchorMapper extends BaseMapper<CaiAnchor> {
|
public interface CaiAnchorMapper extends BaseMapper<CaiAnchor> {
|
||||||
|
|
||||||
Page<CaiAnchorAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") CaiAnchorAdminVo bo);
|
Page<CaiAnchorAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") CaiAnchorAdminVo bo);
|
||||||
|
|
||||||
|
Page<AnchorListVo> pageApp(@Param("build") Page<Object> build, @Param("query") AnchorListQuery query);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +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.CaiUser;
|
import com.ruoyi.cai.domain.CaiUser;
|
||||||
import com.ruoyi.cai.dto.admin.vo.CaiUserAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.CaiUserAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.query.UserQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserListVo;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15,4 +17,6 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
public interface CaiUserMapper extends BaseMapper<CaiUser> {
|
public interface CaiUserMapper extends BaseMapper<CaiUser> {
|
||||||
|
|
||||||
Page<CaiUserAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("query") CaiUser query);
|
Page<CaiUserAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("query") CaiUser query);
|
||||||
|
|
||||||
|
Page<UserListVo> pageApp(@Param("build") Page<Object> build, @Param("query") UserQuery query);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.ruoyi.cai.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.ruoyi.cai.domain.CaiUserOnline;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户在线状态Mapper接口
|
||||||
|
*
|
||||||
|
* @author 77
|
||||||
|
* @date 2023-12-23
|
||||||
|
*/
|
||||||
|
public interface CaiUserOnlineMapper extends BaseMapper<CaiUserOnline> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,6 +4,8 @@ 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.CaiAnchor;
|
import com.ruoyi.cai.domain.CaiAnchor;
|
||||||
import com.ruoyi.cai.dto.admin.vo.CaiAnchorAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.CaiAnchorAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.query.AnchorListQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15,4 +17,8 @@ import com.ruoyi.common.core.domain.PageQuery;
|
|||||||
public interface CaiAnchorService extends IService<CaiAnchor> {
|
public interface CaiAnchorService extends IService<CaiAnchor> {
|
||||||
|
|
||||||
Page<CaiAnchorAdminVo> pageAdmin(PageQuery pageQuery, CaiAnchorAdminVo bo);
|
Page<CaiAnchorAdminVo> pageAdmin(PageQuery pageQuery, CaiAnchorAdminVo bo);
|
||||||
|
|
||||||
|
Page<AnchorListVo> pageApp(PageQuery pageQuery, AnchorListQuery query);
|
||||||
|
|
||||||
|
CaiAnchor getByUserId(Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.ruoyi.cai.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.ruoyi.cai.domain.CaiUserOnline;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户在线状态Service接口
|
||||||
|
*
|
||||||
|
* @author 77
|
||||||
|
* @date 2023-12-23
|
||||||
|
*/
|
||||||
|
public interface CaiUserOnlineService extends IService<CaiUserOnline> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import com.ruoyi.cai.auth.LoginCaiUser;
|
import com.ruoyi.cai.auth.LoginCaiUser;
|
||||||
import com.ruoyi.cai.domain.CaiUser;
|
import com.ruoyi.cai.domain.CaiUser;
|
||||||
import com.ruoyi.cai.dto.admin.vo.CaiUserAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.CaiUserAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.query.UserQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserInfoVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserListVo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,4 +23,10 @@ public interface CaiUserService extends IService<CaiUser> {
|
|||||||
void register(LoginCaiUser caiUser);
|
void register(LoginCaiUser caiUser);
|
||||||
|
|
||||||
Page<CaiUserAdminVo> pageAdmin(PageQuery pageQuery, CaiUser query);
|
Page<CaiUserAdminVo> pageAdmin(PageQuery pageQuery, CaiUser query);
|
||||||
|
|
||||||
|
Page<UserListVo> pageApp(PageQuery page, UserQuery query);
|
||||||
|
|
||||||
|
UserInfoVo info(String userCode);
|
||||||
|
|
||||||
|
CaiUser getByUserCode(String userCode);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
package com.ruoyi.cai.service.impl;
|
package com.ruoyi.cai.service.impl;
|
||||||
|
|
||||||
|
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.domain.CaiAnchor;
|
import com.ruoyi.cai.domain.CaiAnchor;
|
||||||
import com.ruoyi.cai.dto.admin.vo.CaiAnchorAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.CaiAnchorAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.query.AnchorListQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
import com.ruoyi.cai.mapper.CaiAnchorMapper;
|
import com.ruoyi.cai.mapper.CaiAnchorMapper;
|
||||||
import com.ruoyi.cai.service.CaiAnchorService;
|
import com.ruoyi.cai.service.CaiAnchorService;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -25,4 +27,17 @@ public class CaiAnchorServiceImpl extends ServiceImpl<CaiAnchorMapper,CaiAnchor>
|
|||||||
public Page<CaiAnchorAdminVo> pageAdmin(PageQuery pageQuery, CaiAnchorAdminVo bo) {
|
public Page<CaiAnchorAdminVo> pageAdmin(PageQuery pageQuery, CaiAnchorAdminVo bo) {
|
||||||
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<AnchorListVo> pageApp(PageQuery pageQuery, AnchorListQuery query) {
|
||||||
|
if(query.getType() != null && query.getType() != 3){
|
||||||
|
query.setCity(null);
|
||||||
|
}
|
||||||
|
return baseMapper.pageApp(pageQuery.build(),query);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CaiAnchor getByUserId(Long userId){
|
||||||
|
return this.getOne(Wrappers.lambdaQuery(CaiAnchor.class).eq(CaiAnchor::getUserId,userId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.ruoyi.cai.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.ruoyi.cai.domain.CaiUserOnline;
|
||||||
|
import com.ruoyi.cai.mapper.CaiUserOnlineMapper;
|
||||||
|
import com.ruoyi.cai.service.CaiUserOnlineService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户在线状态Service业务层处理
|
||||||
|
*
|
||||||
|
* @author 77
|
||||||
|
* @date 2023-12-23
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class CaiUserOnlineServiceImpl extends ServiceImpl<CaiUserOnlineMapper,CaiUserOnline> implements CaiUserOnlineService {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,11 +4,17 @@ 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.LoginCaiUser;
|
import com.ruoyi.cai.auth.LoginCaiUser;
|
||||||
|
import com.ruoyi.cai.domain.CaiAnchor;
|
||||||
import com.ruoyi.cai.domain.CaiUser;
|
import com.ruoyi.cai.domain.CaiUser;
|
||||||
import com.ruoyi.cai.dto.admin.vo.CaiUserAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.CaiUserAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.query.UserQuery;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserInfoVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserListVo;
|
||||||
import com.ruoyi.cai.mapper.CaiUserMapper;
|
import com.ruoyi.cai.mapper.CaiUserMapper;
|
||||||
import com.ruoyi.cai.service.CaiUserService;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,6 +25,18 @@ import org.springframework.stereotype.Service;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class CaiUserServiceImpl extends ServiceImpl<CaiUserMapper, CaiUser> implements CaiUserService {
|
public class CaiUserServiceImpl extends ServiceImpl<CaiUserMapper, CaiUser> implements CaiUserService {
|
||||||
|
@Autowired
|
||||||
|
private CaiAnchorService anchorService;
|
||||||
|
@Autowired
|
||||||
|
private CaiUserFollowService userFollowService;
|
||||||
|
@Autowired
|
||||||
|
private CaiUserAlbumService caiUserAlbumService;
|
||||||
|
@Autowired
|
||||||
|
private CaiGuardTotalService guardTotalService;
|
||||||
|
@Autowired
|
||||||
|
private CaiDynamicService dynamicService;
|
||||||
|
@Autowired
|
||||||
|
private CaiUserGiftService userGiftService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaiUser getByUsername(String username) {
|
public CaiUser getByUsername(String username) {
|
||||||
@@ -35,4 +53,47 @@ public class CaiUserServiceImpl extends ServiceImpl<CaiUserMapper, CaiUser> impl
|
|||||||
public Page<CaiUserAdminVo> pageAdmin(PageQuery pageQuery, CaiUser query) {
|
public Page<CaiUserAdminVo> pageAdmin(PageQuery pageQuery, CaiUser query) {
|
||||||
return baseMapper.pageAdmin(pageQuery.build(),query);
|
return baseMapper.pageAdmin(pageQuery.build(),query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<UserListVo> pageApp(PageQuery page, UserQuery query) {
|
||||||
|
return baseMapper.pageApp(page.build(),query);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserInfoVo info(String userCode) {
|
||||||
|
Long currentUserId = LoginHelper.getUserId();
|
||||||
|
CaiUser caiUser = this.getByUserCode(userCode);
|
||||||
|
if(caiUser == null){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Long userId = caiUser.getId();
|
||||||
|
CaiAnchor anchor = anchorService.getByUserId(userId);
|
||||||
|
UserInfoVo vo = new UserInfoVo();
|
||||||
|
vo.setIsAnchor(caiUser.getIsAnchor());
|
||||||
|
vo.setUsercode(caiUser.getUsercode());
|
||||||
|
vo.setNickname(caiUser.getNickname());
|
||||||
|
vo.setAvatar(caiUser.getAvatar());
|
||||||
|
if(anchor != null){
|
||||||
|
vo.setPrice(anchor.getPrice());
|
||||||
|
vo.setServiceCount(anchor.getServiceCount());
|
||||||
|
}else{
|
||||||
|
vo.setPrice(null);
|
||||||
|
vo.setServiceCount(null);
|
||||||
|
}
|
||||||
|
vo.setFansNum(userFollowService.getFansNumByUserId(userId));
|
||||||
|
vo.setStar(userFollowService.checkStar(currentUserId, userId));
|
||||||
|
vo.setAlbumList(caiUserAlbumService.getUserAlbum(userId,caiUser.getIsAnchor()));
|
||||||
|
if(caiUser.getIsAnchor() == 1){
|
||||||
|
vo.setGuardTotalList(guardTotalService.selectGuardTotalLimit(userId,10));
|
||||||
|
vo.setDynamicList(dynamicService.selectDynamicList(userId,10));
|
||||||
|
vo.setGiftList(userGiftService.selectGiftList(userId));
|
||||||
|
}
|
||||||
|
// vo.setStatus();
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CaiUser getByUserCode(String userCode){
|
||||||
|
return this.getOne(Wrappers.lambdaQuery(CaiUser.class).eq(CaiUser::getUsercode,userCode).last("limit 1"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
from cai_anchor t1
|
from cai_anchor t1
|
||||||
left join cai_user t2 on t1.user_id = t2.id
|
left join cai_user t2 on t1.user_id = t2.id
|
||||||
</select>
|
</select>
|
||||||
|
<select id="pageApp" resultType="com.ruoyi.cai.dto.app.vo.AnchorListVo">
|
||||||
|
select t1.avatar,t1.gender,t1.city,t1.nickname,t1.usercode,t2.give_score
|
||||||
|
from cai_user t1
|
||||||
|
join cai_anchor t2 on t1.id = t2.user_id
|
||||||
|
join cai_user_online t3 on t1.id = t3.user_id
|
||||||
|
where t1.status = 0 and t1.is_anchor = 1
|
||||||
|
<if test="query.city != null and query.city != ''">
|
||||||
|
and t1.city = #{query.city}
|
||||||
|
</if>
|
||||||
|
<if test="query.type != null">
|
||||||
|
<if test="query.type == 1">
|
||||||
|
order by t3.last_live_time desc
|
||||||
|
</if>
|
||||||
|
<if test="query.type == 1">
|
||||||
|
order by t1.create_time desc
|
||||||
|
</if>
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -47,6 +47,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
from cai_user t1
|
from cai_user t1
|
||||||
left join cai_user_info t2 on t1.id = t2.user_id
|
left join cai_user_info t2 on t1.id = t2.user_id
|
||||||
</select>
|
</select>
|
||||||
|
<select id="pageApp" resultType="com.ruoyi.cai.dto.app.vo.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.nickname != null and query.nickname != ''">
|
||||||
|
and t1.nickname like concat('%',#{query.nickname},'%')
|
||||||
|
</if>
|
||||||
|
<if test="query.usercode != null and query.usercode != ''">
|
||||||
|
and t1.usercode = #{query.usercode}
|
||||||
|
</if>
|
||||||
|
<if test="query.gender != null">
|
||||||
|
and t1.gender = #{query.gender}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?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.CaiUserOnlineMapper">
|
||||||
|
|
||||||
|
<resultMap type="com.ruoyi.cai.domain.CaiUserOnline" id="CaiUserOnlineResult">
|
||||||
|
<result property="userId" column="user_id"/>
|
||||||
|
<result property="status" column="status"/>
|
||||||
|
<result property="receiveTime" column="receive_time"/>
|
||||||
|
<result property="lastLiveTime" column="last_live_time"/>
|
||||||
|
<result property="createTime" column="create_time"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -165,6 +165,12 @@
|
|||||||
<artifactId>ip2region</artifactId>
|
<artifactId>ip2region</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.guava</groupId>
|
||||||
|
<artifactId>guava</artifactId>
|
||||||
|
<version>23.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
package com.ruoyi.common.utils;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* bean工具
|
||||||
|
* @Author: 004795
|
||||||
|
* @Date: 2022/5/24 11:11
|
||||||
|
*/
|
||||||
|
public class BeanConvertUtil extends BeanUtils {
|
||||||
|
|
||||||
|
private BeanConvertUtil(){}
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface CallBack<S, T> {
|
||||||
|
/**
|
||||||
|
* 回调方法
|
||||||
|
*
|
||||||
|
* @param s 源对象
|
||||||
|
* @param t 目标对象
|
||||||
|
*/
|
||||||
|
void callBack(S s, T t);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换list 对象
|
||||||
|
*
|
||||||
|
* @param sources 源对象
|
||||||
|
* @param targetSupplier 目标对象供应方
|
||||||
|
* @param callBack 回调方法
|
||||||
|
* @param <S> 源对象类型
|
||||||
|
* @param <T> 目标对象类型
|
||||||
|
* @Return 转换对象
|
||||||
|
*/
|
||||||
|
public static <S, T> List<T> convertListTo(List<S> sources, Supplier<T> targetSupplier, CallBack<S, T> callBack) {
|
||||||
|
if (null == sources || null == targetSupplier) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<T> list = Lists.newArrayListWithCapacity(sources.size());
|
||||||
|
for (S source : sources) {
|
||||||
|
T target = targetSupplier.get();
|
||||||
|
copyProperties(source, target);
|
||||||
|
if (callBack != null) {
|
||||||
|
callBack.callBack(source, target);
|
||||||
|
}
|
||||||
|
list.add(target);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换list 对象
|
||||||
|
*
|
||||||
|
* @param sources 源对象
|
||||||
|
* @param targetSupplier 目标对象供应方
|
||||||
|
* @param <S> 源对象类型
|
||||||
|
* @param <T> 目标对象类型
|
||||||
|
*/
|
||||||
|
public static <S, T> List<T> convertListTo(List<S> sources, Supplier<T> targetSupplier) {
|
||||||
|
return convertListTo(sources, targetSupplier, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换对象
|
||||||
|
*
|
||||||
|
* @param source 源对象
|
||||||
|
* @param targetSupplier 目标对象供应方
|
||||||
|
* @param <S> 源对象类型
|
||||||
|
* @param <T> 目标对象类型
|
||||||
|
* @return 目标对象
|
||||||
|
*/
|
||||||
|
public static <S, T> T convertTo(S source, Supplier<T> targetSupplier) {
|
||||||
|
return convertTo(source, targetSupplier, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换对象
|
||||||
|
*
|
||||||
|
* @param source 源对象
|
||||||
|
* @param targetSupplier 目标对象供应方
|
||||||
|
* @param callBack 回调方法
|
||||||
|
* @param <S> 源对象类型
|
||||||
|
* @param <T> 目标对象类型
|
||||||
|
* @return 目标对象
|
||||||
|
*/
|
||||||
|
public static <S, T> T convertTo(S source, Supplier<T> targetSupplier, CallBack<S, T> callBack) {
|
||||||
|
if (null == source || null == targetSupplier) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
T target = targetSupplier.get();
|
||||||
|
copyProperties(source, target);
|
||||||
|
if (callBack != null) {
|
||||||
|
callBack.callBack(source, target);
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user