diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberController.java index 6d20fea59..92bb11e20 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberController.java @@ -2,13 +2,14 @@ package com.wzj.soopin.member.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wzj.soopin.member.convert.MemberConvert; import com.wzj.soopin.member.domain.bo.MemberBO; import com.wzj.soopin.member.domain.po.Member; +import com.wzj.soopin.member.domain.query.ReferenceMemberQuery; import com.wzj.soopin.member.domain.vo.MemberDataStatisticsVO; import com.wzj.soopin.member.domain.vo.MemberVO; +import com.wzj.soopin.member.domain.vo.ReferenceMemberVO; import com.wzj.soopin.member.service.IMemberService; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; @@ -246,16 +247,16 @@ public class MemberController extends BaseController { } /** - * 分页查询团长租户绑定的会员账户信息 + * 分页查询团长绑定的会员账户信息 * * @param bo 查询条件 */ // @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) 团长 @GetMapping(value = "/getByReference") - public R> getByReference(MemberBO bo) { - Page memberPage = service.getByReference(bo); + public R> getByReference(ReferenceMemberQuery query) { + Page memberPage = service.getByReference(query); TableDataInfo.build(memberPage); - return R.ok(convert.toVO(memberPage)); + return R.ok(memberPage); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/query/ReferenceMemberQuery.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/query/ReferenceMemberQuery.java new file mode 100644 index 000000000..93ff62011 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/query/ReferenceMemberQuery.java @@ -0,0 +1,33 @@ +package com.wzj.soopin.member.domain.query; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.domain.BaseBO; + +import java.time.LocalDate; + +/** + * 团长绑定的会员查询 + * + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Schema(description = "团长绑定的会员查询") +public class ReferenceMemberQuery extends BaseBO { + + /** + * 绑定团长日期 + */ + private LocalDate spreadTime; + + /** 会员昵称 */ + private String nickname; + + /** 会员手机号 */ + private String phone; + + + + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/ReferenceMemberVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/ReferenceMemberVO.java new file mode 100644 index 000000000..e2f7e825c --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/ReferenceMemberVO.java @@ -0,0 +1,103 @@ +package com.wzj.soopin.member.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.dromara.common.excel.annotation.Excel; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 团长绑定的会员信息对象 + * + */ +@Data +@Schema(description = "团长绑定的会员信息对象") +public class ReferenceMemberVO { + + /** 会员唯一标识 ID */ + @Schema(description = "会员唯一标识 ID") + private Long id; + + @Schema(description = "所属代理商名称") + private String agencyTenantName; + + /** 会员昵称 */ + @Schema(description = "会员昵称") + private String nickname; + + /** 会员手机号 */ + @Schema(description = "会员手机号") + private String phoneHidden; + + /** + * 团长姓名 + */ + private String spreadUserName; + + /** 用户备注信息 */ + @Schema(description = "用户备注信息") + private String mark; + + /** 帐号启用状态:0->禁用;1->启用 */ + @Schema(description = "帐号启用状态:0->禁用;1->启用") + private Integer status; + + /** 头像地址 */ + @Excel(name = "头像") + @Schema(description = "头像地址") + private String avatar; + + /** 性别:0->未知;1->男;2->女 */ + @Schema(description = "性别:0->未知;1->男;2->女") + private Integer gender; + + /** 用户所在城市名称 */ + @Schema(description = "用户所在城市名称") + private String city; + + /** 用户所在省份名称 */ + @Schema(description = "用户所在省份名称") + private String province; + + /** 用户所在国家名称 */ + @Schema(description = "用户所在国家名称") + private String country; + + /** 公众号运营者对粉丝的备注 */ + @Schema(description = "公众号运营者对粉丝的备注") + private String remark; + + /** 生日日期(格式:yyyy-MM-dd) */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Schema(description = "生日日期(格式:yyyy-MM-dd)") + private LocalDate birthday; + + /** 推广员用户 ID */ + @Schema(description = "推广员用户 ID") + private Long spreadUid; + + @Schema(description = "推广员二维码") + private String spreadName; + + /** 推广员关联时间(格式:yyyy-MM-dd HH:mm:ss) */ + @Schema(description = "推广员关联时间(格式:yyyy-MM-dd HH:mm:ss)") + private LocalDateTime spreadTime; + + /** 会员等级 */ + @Schema(description = "会员等级") + private Integer level; + + /** 用户名 */ + @Schema(description = "用户名") + private String userName; + + /** + * 视频点赞数 + */ + @Schema(description ="视频点赞数") + private Integer vlogLikeCount; + + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IMemberService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IMemberService.java index 8025bae5c..9cbd92d49 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IMemberService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IMemberService.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.wzj.soopin.member.domain.bo.MemberBO; import com.wzj.soopin.member.domain.po.Member; +import com.wzj.soopin.member.domain.query.ReferenceMemberQuery; import com.wzj.soopin.member.domain.vo.MemberVO; +import com.wzj.soopin.member.domain.vo.ReferenceMemberVO; import org.dromara.common.core.constant.ResultCode; import java.io.Serializable; @@ -88,8 +90,8 @@ public interface IMemberService extends IService { /** * 通过团长ID获取会员信息 - * @param bo + * @param query * @return */ - Page getByReference(MemberBO bo); + Page getByReference(ReferenceMemberQuery query); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java index 9ba3c6913..a226044c0 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java @@ -1,8 +1,11 @@ package com.wzj.soopin.member.service.impl; import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -14,7 +17,9 @@ import com.wzj.soopin.member.convert.MemberConvert; import com.wzj.soopin.member.domain.bo.MemberBO; import com.wzj.soopin.member.domain.po.Member; import com.wzj.soopin.member.domain.po.MemberAccount; +import com.wzj.soopin.member.domain.query.ReferenceMemberQuery; import com.wzj.soopin.member.domain.vo.MemberVO; +import com.wzj.soopin.member.domain.vo.ReferenceMemberVO; import com.wzj.soopin.member.mapper.MemberAccountMapper; import com.wzj.soopin.member.mapper.MemberCartMapper; import com.wzj.soopin.member.mapper.MemberMapper; @@ -30,7 +35,9 @@ import org.dromara.common.redis.redis.RedisCache; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.vo.SysTenantVo; import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.service.ISysTenantService; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.scheduling.annotation.Scheduled; @@ -62,10 +69,13 @@ public class MemberServiceImpl extends ServiceImpl implemen private final MemberConvert memberConvert; private final MemberMapper memberMapper; + private final IFansService fansService; private final SysUserMapper sysUserMapper; + private final ISysTenantService tenantService; + @Override public boolean usernameExists(String username) { return baseMapper.countByUsername(username) > 0; // 确保实现 @@ -321,14 +331,31 @@ public class MemberServiceImpl extends ServiceImpl implemen } @Override - public Page getByReference(MemberBO bo) { - Assert.notNull(bo.getCurrent(), "分页参数不能为空"); - Assert.notNull(bo.getSize(), "分页参数不能为空"); - String tenantId = StrUtil.isBlank(bo.getTenantId()) ? TenantHelper.getTenantId() : bo.getTenantId(); - SysUser sysUser = sysUserMapper.selectReferneceByTenantId(tenantId); + public Page getByReference(ReferenceMemberQuery query) { + Assert.isTrue(query.getCurrent() != null && query.getSize() != null, "分页参数不能为空"); + SysUser sysUser = sysUserMapper.selectReferneceByTenantId(TenantHelper.getTenantId()); + SysTenantVo referenceTenant = tenantService.queryByTenantId(TenantHelper.getTenantId()); + SysTenantVo agencyTenant = tenantService.queryByTenantId(referenceTenant.getAgencyTenantId()); Member member = memberMapper.selectOne(Wrappers.lambdaQuery(Member.class).eq(Member::getUserId, sysUser.getUserId()).last("LIMIT 1")); Assert.notNull(member, () -> new ServiceException("团长未绑定会员账户")); - bo.setSpreadUid(member.getId()); - return this.page(Page.of(bo.getCurrent(), bo.getSize()), bo.toWapper()); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(Member.class) + .eq(Member::getSpreadUid, member.getId()) + .like(StrUtil.isNotEmpty(query.getNickname()), Member::getNickname, query.getNickname()) + .like(StrUtil.isNotEmpty(query.getPhone()), Member::getPhoneHidden, query.getPhone()) + .orderByDesc(Member::getSpreadTime); + if (query.getSpreadTime() != null) { + lambdaQueryWrapper.ge(Member::getSpreadTime, LocalDateTimeUtil.beginOfDay(query.getSpreadTime())); + lambdaQueryWrapper.le(Member::getSpreadTime, LocalDateTimeUtil.endOfDay(query.getSpreadTime())); + } + Page page = this.page(Page.of(query.getCurrent(), query.getSize()), lambdaQueryWrapper); + List list = page.getRecords().stream().map(m -> { + ReferenceMemberVO referenceMemberVO = BeanUtil.copyProperties(m, ReferenceMemberVO.class); + referenceMemberVO.setAgencyTenantName(agencyTenant.getAgencyName()); + referenceMemberVO.setSpreadUserName(sysUser.getNickName()); + return referenceMemberVO; + }).toList(); + Page objectPage = Page.of(page.getCurrent(), page.getSize(), page.getTotal()); + objectPage.setRecords(list); + return objectPage; } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysReferenceBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysReferenceBo.java index 980cc5310..8dc00e02a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysReferenceBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysReferenceBo.java @@ -61,6 +61,9 @@ public class SysReferenceBo { @Schema(description = "证件信息") private String idCard; + @Schema(description = "证件图片") + private String certificate; + @Schema(description = "其它附件路径") private String otherAttachment; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysReferenceVO.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysReferenceVO.java index 8d45fc60f..1d10a372e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysReferenceVO.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysReferenceVO.java @@ -56,6 +56,9 @@ public class SysReferenceVO { @Schema(description = "证件信息") private String idCard; + @Schema(description = "证件图片") + private String certificate; + @Schema(description = "其它附件路径") private String otherAttachment; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java index 54805d326..a88abde9e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java @@ -1,16 +1,16 @@ package org.dromara.system.domain.vo; -import java.time.LocalDateTime; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; -import io.swagger.v3.oas.annotations.media.Schema; -import org.dromara.system.domain.SysTenant; import io.github.linpeilie.annotations.AutoMapper; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.dromara.system.domain.SysTenant; import java.io.Serial; import java.io.Serializable; +import java.time.LocalDateTime; /** @@ -61,6 +61,9 @@ public class SysTenantVo implements Serializable { @TableLogic private String delFlag; + @Schema(description = "代理机构名称") + private String agencyName; + @Schema(description = "营业执照编号") private String businessLicense; @@ -175,5 +178,8 @@ public class SysTenantVo implements Serializable { @Schema(description = "类型(2->商家,3->代理,4->平台,5->达人)") private Integer type; + @Schema(description = "所属代理商") + private String agencyTenantId; + }