jinxia.mo 1 месяц назад
Родитель
Сommit
3c5d072bb0

+ 17 - 9
back-ui/src/views/system/user/indexCard.vue

@@ -39,12 +39,12 @@
               <el-form-item label="平台机构" prop="deptId">
                 <IeInstitutionSelect v-model="queryParams.deptId" placeholder="请选择平台机构" clearable style="width: 240px" />
               </el-form-item>
-              <el-form-item label="代理商" prop="deptName">
-                <el-input v-model="queryParams.deptName" placeholder="请输入代理商" clearable style="width: 240px" @keyup.enter="handleQuery" />
+              <el-form-item label="代理商" prop="agentId">
+                <IeAgentSelect v-model="queryParams.inviteCode" :deptId="queryParams.invitesCode" placeholder="请选择代理商" clearable filterable style="width: 240px" />
               </el-form-item>
-              <el-form-item label="邀请码" prop="inviteCode">
+              <!-- <el-form-item label="邀请码" prop="inviteCode">
                 <el-input v-model="queryParams.inviteCode" placeholder="请输入邀请码" clearable style="width: 240px" @keyup.enter="handleQuery" />
-              </el-form-item>
+              </el-form-item> -->
               <el-form-item>
                 <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
                 <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -85,7 +85,7 @@
               <!-- <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" /> -->
               <el-table-column label="用户类型" align="center" key="userType" v-if="columns.status.visible">
                 <template #default="scope">
-                  <dict-tag :options="user_type" :value="scope.row.userType" />
+                  <dict-tag :options="usercard_type" :value="scope.row.userType" />
                 </template>
               </el-table-column>
               <el-table-column label="考生类型" align="center" key="examType" v-if="columns.examType.visible">
@@ -93,9 +93,14 @@
                   <dict-tag :options="exam_type" :value="scope.row.examType" />
                 </template>
               </el-table-column>
-              <el-table-column label="平台机构" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" />
-              <el-table-column label="代理商" align="center" key="agentName" prop="agentName" />
-              <el-table-column label="邀请码" align="center" key="inviteCode" prop="inviteCode" />
+              <el-table-column label="平台机构" align="center" key="deptName" prop="deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" />
+              <el-table-column label="代理商" align="center" key="agentName">
+                <template #default="scope">
+                  <span v-if="scope.row.agentName || scope.row.inviteCode">
+                    {{ scope.row.agentName || '' }}{{ scope.row.agentName && scope.row.inviteCode ? ' - ' : '' }}{{ scope.row.inviteCode || '' }}
+                  </span>
+                </template>
+              </el-table-column>
 
               <el-table-column label="状态" align="center" key="status" v-if="columns.status.visible">
                 <template #default="scope">
@@ -254,11 +259,12 @@ import { changeUserStatus, listCard, resetUserPwd, delUser, getUser, updateUser,
 import { Splitpanes, Pane } from "splitpanes"
 import "splitpanes/dist/splitpanes.css"
 import IeInstitutionSelect from '@/components/IeInstitutionSelect/index.vue'
+import IeAgentSelect from '@/components/IeAgentSelect/index.vue'
 
 const router = useRouter()
 const appStore = useAppStore()
 const { proxy } = getCurrentInstance()
-const { sys_normal_disable, sys_user_sex, user_type, exam_type } = proxy.useDict("sys_normal_disable", "sys_user_sex", "user_type", "exam_type")
+const { sys_normal_disable, sys_user_sex, usercard_type, exam_type } = proxy.useDict("sys_normal_disable", "sys_user_sex", "usercard_type", "exam_type")
 
 const userList = ref([])
 const open = ref(false)
@@ -315,6 +321,7 @@ const data = reactive({
     phonenumber: undefined,
     examType: undefined,
     deptId: undefined,
+    agentId: undefined,
     deptName: undefined,
     inviteCode: undefined
   },
@@ -404,6 +411,7 @@ function resetQuery() {
   queryParams.value.phonenumber = undefined
   queryParams.value.examType = undefined
   queryParams.value.deptId = undefined
+  queryParams.value.agentId = undefined
   queryParams.value.deptName = undefined
   queryParams.value.inviteCode = undefined
   handleQuery()

+ 46 - 18
ie-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -5,10 +5,13 @@ import java.util.Map;
 import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
 
+import com.ruoyi.dz.domain.DzAgent;
 import com.ruoyi.dz.domain.DzCards;
+import com.ruoyi.dz.service.IDzAgentService;
 import com.ruoyi.dz.service.IDzCardsService;
 import com.ruoyi.dz.service.IDzSchoolService;
 import com.ruoyi.dz.service.IDzClassesService;
+import com.ruoyi.enums.CardType;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -66,6 +69,8 @@ public class SysUserController extends BaseController
     private IDzSchoolService schoolService;
     @Autowired
     private IDzClassesService classesService;
+    @Autowired
+    private IDzAgentService agentService;
 
     /**
      * 获取用户列表
@@ -100,25 +105,26 @@ public class SysUserController extends BaseController
         if (CollectionUtils.isNotEmpty(list)) {
 
             // 获取邀请码列表(邀请码是String类型,需要转换为Long类型的用户ID)
-            List<String> inviteCodeUsernames = list.stream()
+            List<Long> inviteCodeUserIds = list.stream()
                     .map(SysUser::getInviteCode)
-                    .filter(inviteCode -> inviteCode != null && !inviteCode.isEmpty())
+                    .filter(inviteCode -> StringUtils.isNotEmpty(inviteCode))
+                    .map(inviteCode -> {
+                        try {
+                            return Long.parseLong(inviteCode);
+                        } catch (NumberFormatException e) {
+                            return null;
+                        }
+                    })
                     .distinct().collect(Collectors.toList());
             List<Long> cardIds = list.stream().map(SysUser::getCardId).filter(cardId -> cardId != null)
                     .distinct().collect(Collectors.toList());
 
-            // 根据邀请码(即用户名)查询对应的用户信息,获取代理商名称
-            Map<String, String> agentNameMap = new java.util.HashMap<>();
-            if (CollectionUtils.isNotEmpty(inviteCodeUsernames)) {
-                List<SysUser> agentList = userService.selectUserByUserNames(inviteCodeUsernames);
+            // 根据邀请码(即用户ID)查询对应的代理商信息
+            Map<Long, DzAgent> agentMap = new java.util.HashMap<>();
+            if (CollectionUtils.isNotEmpty(inviteCodeUserIds)) {
+                List<DzAgent> agentList = agentService.selectDzAgentByAgentIds(inviteCodeUserIds);
                 if (CollectionUtils.isNotEmpty(agentList)) {
-                    agentNameMap = agentList.stream()
-                            .filter(agent -> agent.getUserName() != null && agent.getNickName() != null)
-                            .collect(Collectors.toMap(
-                                    SysUser::getUserName,
-                                    SysUser::getNickName,
-                                    (existing, replacement) -> existing
-                            ));
+                    agentMap = agentList.stream().collect(Collectors.toMap(DzAgent::getAgentId,agent -> agent,(existing, replacement) -> existing));
                 }
             }
 
@@ -126,9 +132,18 @@ public class SysUserController extends BaseController
             if (CollectionUtils.isEmpty(cardIds)) {
                 // 即使没有cardIds,也要设置代理商名称
                 for (SysUser user : list) {
+                    //设置卡类型
+                    user.setUserType(String.valueOf(CardType.getNewVal(CardType.Common.getVal())));
                     if (user.getInviteCode() != null && !user.getInviteCode().isEmpty()) {
-                        if (agentNameMap.containsKey(user.getInviteCode())) {
-                            user.setAgentName(agentNameMap.get(user.getInviteCode()));
+                        try {
+                            Long inviteCodeUserId = Long.parseLong(user.getInviteCode());
+                            DzAgent agent = agentMap.get(inviteCodeUserId);
+                            if (agent != null && agent.getName() != null) {
+                                user.setAgentName(agent.getName());
+                                user.setDeptName(null!=agent.getDept()?agent.getDept().getDeptName():StringUtils.EMPTY);
+                            }
+                        } catch (NumberFormatException e) {
+                            // 邀请码不是有效的数字,忽略
                         }
                     }
                 }
@@ -181,16 +196,25 @@ public class SysUserController extends BaseController
                 if (user.getDept() != null && user.getDept().getDeptName() != null) {
                     user.setDeptName(user.getDept().getDeptName());
                 }
-                // 设置代理商名称(从邀请码对应的用户获取)
+                // 设置代理商名称(从邀请码对应的代理商获取)
                 if (user.getInviteCode() != null && !user.getInviteCode().isEmpty()) {
-                    if (agentNameMap.containsKey(user.getInviteCode())) {
-                        user.setAgentName(agentNameMap.get(user.getInviteCode()));
+                    try {
+                        Long inviteCodeUserId = Long.parseLong(user.getInviteCode());
+                        DzAgent agent = agentMap.get(inviteCodeUserId);
+                        if (agent != null && agent.getName() != null) {
+                            user.setAgentName(agent.getName());
+                            user.setDeptName(null!=agent.getDept()?agent.getDept().getDeptName():StringUtils.EMPTY);
+                        }
+                    } catch (NumberFormatException e) {
+                        // 邀请码不是有效的数字,忽略
                     }
                 }
                 if (user.getCardId() != null) {
                     DzCards card = cardMap.get(user.getCardId());
                     if (card != null) {
                         user.setCardNo(card.getCardNo());
+                        //设置卡类型
+                        user.setUserType(String.valueOf(CardType.getNewVal(card.getType())));
                         // 设置注册学校名称(schoolId对应的学校名称)
                         if (card.getSchoolId() != null) {
                             user.setSchoolName(schoolMap.get(card.getSchoolId()));
@@ -207,7 +231,11 @@ public class SysUserController extends BaseController
                         if (card.getCampusClassId() != null) {
                             user.setCampusClassName(classMap.get(card.getCampusClassId()));
                         }
+                    }else {
+                        user.setUserType(String.valueOf(CardType.getNewVal(CardType.Common.getVal())));
                     }
+                }else {
+                    user.setUserType(String.valueOf(CardType.getNewVal(CardType.Common.getVal())));
                 }
             }
 

+ 1 - 0
ie-system/src/main/java/com/ruoyi/dz/mapper/DzAgentMapper.java

@@ -23,6 +23,7 @@ public interface DzAgentMapper
      */
     public DzAgent selectDzAgentByAgentId(Long agentId);
     public DzAgent selectDzAgentByUserId(Long userId);
+    public List<DzAgent> selectDzAgentByUserIds(@Param("userIds") Collection<Long> userIds);
 
     /**
      * 查询机构代理列表

+ 3 - 0
ie-system/src/main/java/com/ruoyi/dz/service/IDzAgentService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.dz.service;
 
+import java.util.Collection;
 import java.util.List;
 import com.ruoyi.dz.domain.DzAgent;
 
@@ -19,6 +20,8 @@ public interface IDzAgentService
      */
     public DzAgent selectDzAgentByAgentId(Long agentId);
     public DzAgent selectDzAgentByUserId(Long userId);
+    public List<DzAgent> selectDzAgentByAgentIds( Collection<Long> ids);
+    public List<DzAgent> selectDzAgentByUserIds(Collection<Long> userIds);
 
     /**
      * 查询机构代理列表

+ 11 - 0
ie-system/src/main/java/com/ruoyi/dz/service/impl/DzAgentServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.dz.service.impl;
 
+import java.util.Collection;
 import java.util.List;
 
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -43,6 +44,16 @@ public class DzAgentServiceImpl implements IDzAgentService
         return dzAgentMapper.selectDzAgentByUserId(userId);
     }
 
+    @Override
+    public List<DzAgent> selectDzAgentByAgentIds(Collection<Long> ids) {
+        return dzAgentMapper.selectDzAgentByAgentIds(ids);
+    }
+
+    @Override
+    public List<DzAgent> selectDzAgentByUserIds(Collection<Long> userIds) {
+        return dzAgentMapper.selectDzAgentByUserIds(userIds);
+    }
+
     /**
      * 查询机构代理列表
      *

+ 6 - 3
ie-system/src/main/java/com/ruoyi/enums/CardType.java

@@ -6,13 +6,16 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum CardType {
-    Vip(1), Platform(6), Dept(2), ECard(7), Test(8), Experience(9); // 代理商 5, 教师 9
+    Vip(1), Dept(2), Platform(6), ECard(7), Test(8), Experience(9), Common(99); //99普通用户, 代理商 5, 教师 9
 
     private final Integer val;
 
     public static Integer getNewVal(Integer val) {
-        if(val == 6 || val == 2) {
-            return 1;
+        if (null==val) {
+            return Common.val;
+        }
+        if(val == 6 || val == 2|| val == 7) {
+            return Vip.val;
         }
         return val;
     }

+ 5 - 0
ie-system/src/main/resources/mapper/dz/DzAgentMapper.xml

@@ -64,6 +64,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where t1.agent_id in <foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
     </select>
 
+    <select id="selectDzAgentByUserIds" resultMap="DzAgentResult">
+        <include refid="selectDzAgentVo"/>
+        where t1.user_id in <foreach collection="userIds" item="userId" open="(" separator="," close=")">#{userId}</foreach>
+    </select>
+
     <insert id="insertDzAgent" parameterType="DzAgent" useGeneratedKeys="true" keyProperty="agentId">
         insert into dz_agent
         <trim prefix="(" suffix=")" suffixOverrides=",">