refactor(member): 更新通过团长ID获取会员信息的方法将getByReference
方法的参数从MemberBO
更改为ReferenceMemberQuery
,并更新了返回类型为Page<ReferenceMemberVO>
。同时,在MemberServiceImpl
中实现了新的查询逻辑,支持按昵称、手机号和推广时间进行过滤,并在结果中添加了代理商名称和团长姓名。
This commit is contained in:
parent
b974273aa1
commit
8795b1fb37
@ -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<IPage<MemberVO>> getByReference(MemberBO bo) {
|
||||
Page<Member> memberPage = service.getByReference(bo);
|
||||
public R<Page<ReferenceMemberVO>> getByReference(ReferenceMemberQuery query) {
|
||||
Page<ReferenceMemberVO> memberPage = service.getByReference(query);
|
||||
TableDataInfo.build(memberPage);
|
||||
return R.ok(convert.toVO(memberPage));
|
||||
return R.ok(memberPage);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
|
||||
}
|
@ -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<Member> {
|
||||
|
||||
/**
|
||||
* 通过团长ID获取会员信息
|
||||
* @param bo
|
||||
* @param query
|
||||
* @return
|
||||
*/
|
||||
Page<Member> getByReference(MemberBO bo);
|
||||
Page<ReferenceMemberVO> getByReference(ReferenceMemberQuery query);
|
||||
}
|
||||
|
@ -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<MemberMapper,Member> 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<MemberMapper,Member> implemen
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Member> 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<ReferenceMemberVO> 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<Member> 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<Member> page = this.page(Page.of(query.getCurrent(), query.getSize()), lambdaQueryWrapper);
|
||||
List<ReferenceMemberVO> 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<ReferenceMemberVO> objectPage = Page.of(page.getCurrent(), page.getSize(), page.getTotal());
|
||||
objectPage.setRecords(list);
|
||||
return objectPage;
|
||||
}
|
||||
}
|
||||
|
@ -61,6 +61,9 @@ public class SysReferenceBo {
|
||||
@Schema(description = "证件信息")
|
||||
private String idCard;
|
||||
|
||||
@Schema(description = "证件图片")
|
||||
private String certificate;
|
||||
|
||||
@Schema(description = "其它附件路径")
|
||||
private String otherAttachment;
|
||||
|
||||
|
@ -56,6 +56,9 @@ public class SysReferenceVO {
|
||||
@Schema(description = "证件信息")
|
||||
private String idCard;
|
||||
|
||||
@Schema(description = "证件图片")
|
||||
private String certificate;
|
||||
|
||||
@Schema(description = "其它附件路径")
|
||||
private String otherAttachment;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user