瀏覽代碼

获取会员信息记录

lrj 5 月之前
父節點
當前提交
e2ab7d8912

+ 9 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/GetPersonRelationDTO.java

@@ -0,0 +1,9 @@
+package cn.cslg.permission.common.model.qiaobi;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+
+@Data
+public class GetPersonRelationDTO extends BaseVO {
+    private Integer personId;
+}

+ 9 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/GetPersonRelationVO.java

@@ -0,0 +1,9 @@
+package cn.cslg.permission.common.model.qiaobi;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+
+@Data
+public class GetPersonRelationVO extends BaseVO {
+    private Integer personId;
+}

+ 13 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/QueryPersonRelationVO.java

@@ -0,0 +1,13 @@
+package cn.cslg.permission.common.model.qiaobi;
+
+import cn.cslg.permission.common.model.BaseVO;
+import cn.cslg.permission.common.model.vo.PersonnelVO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QueryPersonRelationVO  {
+    private PersonnelVO personVO;
+    private List<PersonnelVO>  invitedPeople;
+}

+ 10 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/QueryRelationCountsVO.java

@@ -0,0 +1,10 @@
+package cn.cslg.permission.common.model.qiaobi;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+
+@Data
+public class QueryRelationCountsVO {
+    private Integer personId;
+    private Integer num;
+}

+ 3 - 1
PCS/src/main/java/cn/cslg/permission/common/model/vo/PersonnelVO.java

@@ -231,5 +231,7 @@ public class PersonnelVO extends BaseVO {
     private Date expitrTime;
 
     private String vipTypeName;
-
+    /**邀请数量**/
+    private Integer invitedNum;
+    private Date createTime;
 }

+ 1 - 1
PCS/src/main/java/cn/cslg/permission/common/utils/DataUtils.java

@@ -25,7 +25,7 @@ public class DataUtils {
     /**
      * 分页查询设置返回参数 (当前页 每页条数 总条数)
      */
-    public static BaseVO setPageColumn(int size, int current, int total) {
+    public static BaseVO setPageColumn(Integer size, Integer current, int total) {
         BaseVO baseVO = new BaseVO();
         baseVO.setCurrent(current)
                 .setSize(size)

+ 8 - 4
PCS/src/main/java/cn/cslg/permission/controller/qiaobi/QiaoBiPersonController.java

@@ -3,6 +3,7 @@ package cn.cslg.permission.controller.qiaobi;
 import cn.cslg.permission.common.core.base.Constants;
 import cn.cslg.permission.common.model.dto.PhoneLoginDTO;
 import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
+import cn.cslg.permission.common.model.qiaobi.GetPersonRelationDTO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiVIPTypeVO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiVipTypeDTO;
@@ -11,10 +12,7 @@ import cn.cslg.permission.common.model.qiaobi.tenant.CompanyPersonSignUpDTO;
 import cn.cslg.permission.common.model.vo.LoginVO;
 import cn.cslg.permission.common.model.vo.PersonnelVO;
 import cn.cslg.permission.common.utils.Response;
-import cn.cslg.permission.service.qiaobi.AppVipTypeService;
-import cn.cslg.permission.service.qiaobi.PaidCodeService;
-import cn.cslg.permission.service.qiaobi.QiaoBiPersonService;
-import cn.cslg.permission.service.qiaobi.QiaoBiTenantService;
+import cn.cslg.permission.service.qiaobi.*;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -39,6 +37,7 @@ import java.util.List;
 public class QiaoBiPersonController {
     private final QiaoBiPersonService qiaoBiPersonService;
     private final PaidCodeService paidCodeService;
+    private final PersonRelationService personRelationService;
     @PostMapping("/personnelSignUp")
     @Operation(summary = "用户注册")
     public String personnelSignUp(@RequestBody QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
@@ -73,4 +72,9 @@ public class QiaoBiPersonController {
         qiaoBiPersonService.companyPersonSignUp(companyPersonSignUpDTO);
         return Response.success(true);
     }
+    @PostMapping("/queryInvitationMessage")
+    @Operation(summary = "获取邀请信息")
+    public String queryInvitationMessage(@RequestBody GetPersonRelationDTO getPersonRelationDTO) {
+       return personRelationService.queryInvitationMessage(getPersonRelationDTO);
+    }
 }

+ 30 - 0
PCS/src/main/java/cn/cslg/permission/domain/qiaobi/PersonRelation.java

@@ -0,0 +1,30 @@
+package cn.cslg.permission.domain.qiaobi;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * @TableName PERSON_RELATION
+ */
+@TableName(value ="PERSON_RELATION")
+@Data
+public class PersonRelation extends Model<PersonRelation> {
+    private Integer id;
+
+    private Integer personId1;
+
+    private Integer personId2;
+
+    private Date createTime;
+
+    private Integer relationType;
+
+    private static final long serialVersionUID = 1L;
+}

+ 21 - 0
PCS/src/main/java/cn/cslg/permission/mapper/qiaobi/PersonRelationMapper.java

@@ -0,0 +1,21 @@
+package cn.cslg.permission.mapper.qiaobi;
+
+import cn.cslg.permission.common.model.qiaobi.QueryRelationCountsVO;
+import cn.cslg.permission.domain.qiaobi.PersonRelation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+* @author admin
+* @description 针对表【PERSON_RELATION】的数据库操作Mapper
+* @createDate 2025-04-21 11:42:25
+* @Entity generator.domain.PersonRelation
+*/
+public interface PersonRelationMapper extends BaseMapper<PersonRelation> {
+public List<QueryRelationCountsVO> queryRelationCounts(List<String> ids);
+}
+
+
+
+

+ 29 - 14
PCS/src/main/java/cn/cslg/permission/service/PersonnelService.java

@@ -8,6 +8,7 @@ import cn.cslg.permission.common.model.dto.PhoneLoginDTO;
 import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
 import cn.cslg.permission.common.model.qiaobi.GetQiaoBiPersonDTO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
+import cn.cslg.permission.common.model.qiaobi.QueryRelationCountsVO;
 import cn.cslg.permission.common.model.vo.*;
 import cn.cslg.permission.common.utils.*;
 import cn.cslg.permission.common.utils.SecurityUtils.SecurityUtils;
@@ -20,6 +21,7 @@ import cn.cslg.permission.domain.associate.AssoDepartPos;
 import cn.cslg.permission.domain.associate.AssoPerDp;
 import cn.cslg.permission.domain.associate.AssoPersonRole;
 import cn.cslg.permission.domain.qiaobi.AssoPersonVipType;
+import cn.cslg.permission.domain.qiaobi.PersonRelation;
 import cn.cslg.permission.domain.sys.SysDictItem;
 import cn.cslg.permission.exception.ExceptionEnum;
 import cn.cslg.permission.exception.XiaoShiException;
@@ -31,6 +33,7 @@ import cn.cslg.permission.service.associate.PersonGroupService;
 import cn.cslg.permission.service.associate.PersonRoleService;
 import cn.cslg.permission.service.impl.TenantVipTypeService;
 import cn.cslg.permission.service.qiaobi.AssoPersonVipTypeService;
+import cn.cslg.permission.service.qiaobi.PersonRelationService;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.crypto.SecureUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -75,6 +78,7 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
     private final TenantVipTypeService tenantVipTypeService;
     private final LoginUtils loginUtils;
     private final RoleService roleService;
+    private final PersonRelationService personRelationService;
     @Value("${ApplicationCode}")
     private String ApplicationCode;
 
@@ -840,40 +844,50 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
         Long size = personnelDTO.getSize();
         //获取登陆人信息
         PersonnelVO personnelVO1 = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
-        System.out.println("角色类型"+personnelVO1.getRoleType());
+        System.out.println("角色类型" + personnelVO1.getRoleType());
         // 代码控制若不是超级管理员则只能查看本租户的人员列表
-        if (personnelVO1.getRoleType() == null || (personnelVO1.getRoleType() != 1&&personnelVO1.getRoleType()!=3)) {
+        if (personnelVO1.getRoleType() == null || (personnelVO1.getRoleType() != 1 && personnelVO1.getRoleType() != 3)) {
             personnelDTO.setTenant(personnelVO1.getTenantId());
         }
         if (current != null && size != null) {
             personnelDTO.setCurrent(((current - 1) * size));
         }
         List<PersonnelVO> personnelVOS = this.getBaseMapper().getQiaoBiPersonsList(personnelDTO);
+
         long count = this.getBaseMapper().getQiaoBiPersonsListTotal(personnelDTO);
         return Response.success(setPersonnelToVO2(personnelVOS), DataUtils.setPageColumn(Integer.parseInt(size.toString()), Integer.parseInt(current.toString()), Math.toIntExact(count)));
     }
 
 
     public Object setPersonnelToVO2(List<PersonnelVO> personnelList) {
+        if (personnelList == null || personnelList.isEmpty()) {
+            return personnelList;
+        }
+        List<Integer> tentantIds = personnelList.stream().map(PersonnelVO::getTenant).collect(Collectors.toList());
+        List<String> personIds = personnelList.stream().filter(item ->item.getTenant()!=null&& item.getTenant().equals(56)).map(PersonnelVO::getId).collect(Collectors.toList());
+        LambdaQueryWrapper<Tenant> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(Tenant::getId, tentantIds);
+        List<Tenant> tenants = tenantService.list(queryWrapper);
+        List<QueryRelationCountsVO> queryRelationCountsVOS = new ArrayList<>();
+        if (personIds != null && !personIds.isEmpty()) {
+            queryRelationCountsVOS = personRelationService.getBaseMapper().queryRelationCounts(personIds);
+        }
+        if (personnelList != null && !personnelList.isEmpty()) {
+            this.loadPersonnelVOS(personnelList);
+        }
         for (PersonnelVO personnelVO : personnelList) {
-            personnelVO
-                    .setPositions(departPosiService.queryAssociate(Integer.parseInt(personnelVO.getId())))
-                    .setGroup(personGroupService.queryAssociatePerGroup(Integer.parseInt(personnelVO.getId())))
-                    .setRole(personRoleService.queryAssociatePerRole(Integer.parseInt(personnelVO.getId())))
-                    .setRoleList(personRoleService.getRoleListByPersonnelId(Integer.parseInt(personnelVO.getId())))
-                    .setGroupList(personGroupService.getUserGroupListByPersonnelId(Integer.parseInt(personnelVO.getId())));
             if (personnelVO.getTenant() != null) {
-                Tenant tenant = tenantService.getById(personnelVO.getTenant());
+                Tenant tenant = tenants.stream().filter(item -> item.getId().equals(personnelVO.getTenant())).findFirst().orElse(null);
                 if (tenant != null) {
                     personnelVO.setTenantName(tenant.getTenantName());
                 }
+                QueryRelationCountsVO queryRelationCountsVO = queryRelationCountsVOS.stream().filter(item -> item.getPersonId().toString().equals(personnelVO.getId())).findFirst().orElse(null);
+                if (queryRelationCountsVO != null) {
+                    personnelVO.setInvitedNum(queryRelationCountsVO.getNum());
+                }
             }
-
-
-        }
-        if (personnelList != null && !personnelList.isEmpty()) {
-            this.loadPersonnelVOS(personnelList);
         }
+
         return personnelList;
     }
 
@@ -966,6 +980,7 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
             personnelDTO.setEndExpitrTime(endDate);
         }
 
+
     }
 
 

+ 110 - 0
PCS/src/main/java/cn/cslg/permission/service/qiaobi/PersonRelationService.java

@@ -0,0 +1,110 @@
+package cn.cslg.permission.service.qiaobi;
+
+import cn.cslg.permission.common.model.qiaobi.GetPersonRelationDTO;
+import cn.cslg.permission.common.model.qiaobi.QueryPersonRelationVO;
+import cn.cslg.permission.common.model.vo.PersonnelVO;
+import cn.cslg.permission.common.utils.DataUtils;
+import cn.cslg.permission.common.utils.Response;
+import cn.cslg.permission.common.utils.SecurityUtils.SecurityUtils;
+import cn.cslg.permission.domain.Personnel;
+import cn.cslg.permission.service.PersonnelService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.cslg.permission.domain.qiaobi.PersonRelation;
+import cn.cslg.permission.mapper.qiaobi.PersonRelationMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author admin
+ * @description 针对表【PERSON_RELATION】的数据库操作Service实现
+ * @createDate 2025-04-21 11:42:25
+ */
+@Service
+@RequiredArgsConstructor
+public class PersonRelationService extends ServiceImpl<PersonRelationMapper, PersonRelation> {
+    private final PersonnelService personnelService;
+
+    public Integer addPersonRelation(Integer personId1, Integer personId2) {
+        PersonRelation personRelation = this.getPersonRelation(personId1, personId2);
+        if (personRelation == null) {
+            PersonRelation personRelation1 = new PersonRelation();
+            personRelation1.setPersonId1(personId1);
+            personRelation1.setPersonId2(personId2);
+            personRelation1.insert();
+            return personRelation1.getId();
+        }
+        return null;
+    }
+
+    public PersonRelation getPersonRelation(Integer personId1, Integer personId2) {
+        LambdaQueryWrapper<PersonRelation> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PersonRelation::getPersonId1, personId1);
+        if (personId2 != null) {
+            queryWrapper.eq(PersonRelation::getPersonId2, personId2);
+        }
+        PersonRelation personRelation = this.getOne(queryWrapper, false);
+        return personRelation;
+    }
+
+    public String queryInvitationMessage(GetPersonRelationDTO getPersonRelationDTO) {
+        Integer personId = getPersonRelationDTO.getPersonId();
+        Integer current = getPersonRelationDTO.getCurrent();
+        Integer size = getPersonRelationDTO.getSize();
+        LambdaQueryWrapper<PersonRelation> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PersonRelation::getPersonId1, personId);
+        List<PersonRelation> personRelations = new ArrayList<>();
+        if (current != null && size != null) {
+            personRelations = this.page(new Page<>(current, size), queryWrapper).getRecords();
+        } else {
+            personRelations = this.list(queryWrapper);
+        }
+        List<Integer> ids = personRelations.stream().map(PersonRelation::getPersonId2).collect(Collectors.toList());
+        List<PersonnelVO> personnelList = this.loadPersonVO(personRelations);
+        Personnel personnel = personnelService.getById(personId);
+        PersonnelVO personnelVO = new PersonnelVO();
+        personnelVO.setName(personnel.getPersonnelName());
+        personnelVO.setUsername(personnel.getPersonnelUserName());
+        personnelVO.setMobile(personnel.getPersonnelPhone());
+        personnelVO.setId(personnel.getId().toString());
+        QueryPersonRelationVO queryPersonRelationVO =new QueryPersonRelationVO();
+        queryPersonRelationVO.setPersonVO(personnelVO);
+        queryPersonRelationVO.setInvitedPeople(personnelList);
+        long count = this.count(queryWrapper);
+        return Response.success(queryPersonRelationVO, DataUtils.setPageColumn(size, current, Math.toIntExact(count)));
+
+    }
+
+    public List<PersonnelVO> loadPersonVO(List<PersonRelation> personRelations) {
+        List<PersonnelVO> personnelVOS = new ArrayList<>();
+        if (personRelations == null | personRelations.isEmpty()) {
+            return personnelVOS;
+        }
+        List<Integer> personIds = personRelations.stream().map(PersonRelation::getPersonId1).collect(Collectors.toList());
+        LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(Personnel::getId, personIds);
+        List<Personnel> personnel = personnelService.list(queryWrapper);
+        personnel.forEach(item -> {
+            PersonnelVO personnelVO = new PersonnelVO();
+            personnelVO.setMobile(item.getPersonnelPhone());
+            personnelVO.setId(item.getId().toString());
+            PersonRelation personRelation = personRelations.stream().filter(tem -> tem.getPersonId1().equals(item.getId())).findFirst().orElse(null);
+            if (personRelation != null) {
+                personnelVO.setCreateTime(personRelation.getCreateTime());
+            }
+            personnelVOS.add(personnelVO);
+        });
+        return personnelVOS;
+    }
+
+}
+
+
+
+

+ 4 - 0
PCS/src/main/java/cn/cslg/permission/service/qiaobi/QiaoBiPersonService.java

@@ -55,6 +55,8 @@ public class QiaoBiPersonService {
     private RoleService roleService;
     @Autowired
     private MailSendService mailSendService;
+    @Autowired
+    private PersonRelationService personRelationService;
 
     @Transactional(rollbackFor = Exception.class)
     public QiaoBiPersonSignUpDTO personSignUp(QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
@@ -73,9 +75,11 @@ public class QiaoBiPersonService {
             LambdaQueryWrapper<PersonInvitationCode> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(PersonInvitationCode::getInvitationCode, inviteCode);
             PersonInvitationCode personInvitationCode = personInvitationCodeService.getOne(queryWrapper, false);
+
             //根据邀请码查找人员
             Integer personId = personInvitationCode.getPersonId();
             assoPersonVipTypeService.lastPersonVip(personId);
+            personRelationService.addPersonRelation(personId, qiaoBiPersonSignUpDTO.getId());
         }
         redisUtil.delete(LoginCacheKeyUtil.getLoginCaptcha(phoneNum));
         smsService.sendQiaoBiMessage(qiaoBiPersonSignUpDTO.getPhoneNum(), qiaoBiPersonSignUpDTO.getPassword());

+ 14 - 0
PCS/src/main/resources/mapper/PersonRelationMapper.xml

@@ -0,0 +1,14 @@
+<?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="cn.cslg.permission.mapper.qiaobi.PersonRelationMapper">
+    <select id="queryRelationCounts" resultType="cn.cslg.permission.common.model.qiaobi.QueryRelationCountsVO">
+        select count(*) as num,PERSON_ID1 as personId from PERSON_RELATION
+        <where>
+            PERSON_ID1 in
+            <foreach collection="ids" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+            group by PERSON_ID1
+        </where>
+    </select>
+</mapper>

+ 24 - 1
PCS/src/test/java/cn/cslg/permission/qiaobi/QiaobiPersonTest.java

@@ -1,8 +1,11 @@
 package cn.cslg.permission.qiaobi;
 
 import cn.cslg.permission.common.core.business.LoginCacheKeyUtil;
+import cn.cslg.permission.common.model.qiaobi.GetPersonRelationDTO;
+import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
 import cn.cslg.permission.common.model.qiaobi.tenant.CompanyPersonSignUpDTO;
 import cn.cslg.permission.common.utils.RedisUtil;
+import cn.cslg.permission.service.qiaobi.PersonRelationService;
 import cn.cslg.permission.service.qiaobi.QiaoBiPersonService;
 import lombok.RequiredArgsConstructor;
 import org.junit.Test;
@@ -19,12 +22,14 @@ public class QiaobiPersonTest {
 private  QiaoBiPersonService qiaoBiPersonService;
     @Autowired
 private RedisUtil redisUtil;
+    @Autowired
+    private PersonRelationService personRelationService;
 @Test
 public void CompanyPersonSignUp(){
 
     CompanyPersonSignUpDTO companyPersonSignUpDTO =new CompanyPersonSignUpDTO();
     companyPersonSignUpDTO.setPersonnelEmail("1kj-dtig68vv5e@dingtalk1.com");
-    companyPersonSignUpDTO.setPersonnelPhone("17625547164");
+    companyPersonSignUpDTO.setPersonnelPhone("17625547163");
     companyPersonSignUpDTO.setPhoneCode("ATEAT");
      redisUtil.set(LoginCacheKeyUtil.getLoginCaptcha(companyPersonSignUpDTO.getPersonnelPhone()),"ATEAT");
    companyPersonSignUpDTO.setDepartMentId(1);
@@ -37,4 +42,22 @@ public void CompanyPersonSignUp(){
     qiaoBiPersonService.companyPersonSignUp(companyPersonSignUpDTO);
     
 }
+
+    @Test
+    public void PersonSignUp(){
+        QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO =new QiaoBiPersonSignUpDTO();
+        qiaoBiPersonSignUpDTO.setInviteCode("lDyp91RQ");
+        qiaoBiPersonSignUpDTO.setPhoneNum("17625547121");
+        qiaoBiPersonSignUpDTO.setVipType(19);
+        qiaoBiPersonSignUpDTO.setPhoneCode("123");
+       qiaoBiPersonService.personSignUp(qiaoBiPersonSignUpDTO);
+    }
+
+    @Test
+    public void queryPersonMessage(){
+        GetPersonRelationDTO getPersonRelationDTO =new GetPersonRelationDTO();
+        getPersonRelationDTO.setPersonId(411);
+     String  a=personRelationService.queryInvitationMessage(getPersonRelationDTO);
+     System.out.println(a);
+    }
 }