Selaa lähdekoodia

待办事项 解绑、列表代码

haonan 1 vuosi sitten
vanhempi
commit
83af8fe0ac

+ 1 - 23
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantUnbindRecordController.java

@@ -108,30 +108,8 @@ public class TenantUnbindRecordController extends BaseController {
         if (audio.getId() == null || audio.getStatus() == null) {
             throw new BizException("参数错误");
         }
+        Boolean entry = tenantUnbindRecordService.entry(audio);
 
-        boolean update = tenantUnbindRecordService.lambdaUpdate()
-                .set(TenantUnbindRecord::getStatus, audio.getStatus() ? "PASS" : "UNPASS")
-                .set(TenantUnbindRecord::getReason, audio.getReason())
-                .set(TenantUnbindRecord::getVerifyUserId, sysUserFeignService.queryUserInfo().getId())
-                .eq(TenantUnbindRecord::getId, audio.getId())
-                .eq(TenantUnbindRecord::getStatus, "DOING").update();
-        if (!update) {
-            throw new BizException("审核失败,请刷新后重试");
-        }
-
-        if (audio.getStatus()) {
-            TenantUnbindRecord unbindRecord = tenantUnbindRecordService.getById(audio.getId());
-            String userType = unbindRecord.getUserType();
-            if ("STUDENT".equals(userType)) {
-                studentService.lambdaUpdate()
-                        .set(Student::getTenantId, -1L)
-                        .eq(Student::getUserId, unbindRecord.getUserId()).update();
-            } else if ("TEACHER".equals(userType)) {
-                teacherService.lambdaUpdate()
-                        .set(Teacher::getTenantId, -1L)
-                        .eq(Teacher::getUserId, unbindRecord.getUserId()).update();
-            }
-        }
         return succeed();
     }
 

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantUnbindRecordService.java

@@ -45,4 +45,10 @@ public interface TenantUnbindRecordService extends IService<TenantUnbindRecord>
      */
     Boolean update(TenantUnbindRecordWrapper.TenantUnbindRecord tenantUnbindRecord);
 
+    /**
+     * 审核
+     * @param audio
+     * @return
+     */
+    Boolean entry(TenantUnbindRecordWrapper.Audio audio);
 }

+ 144 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantUnbindRecordServiceImpl.java

@@ -1,8 +1,21 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.biz.dal.dao.StudentDao;
+import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.toolset.base.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -11,6 +24,10 @@ import com.yonge.cooleshow.biz.dal.wrapper.TenantUnbindRecordWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantUnbindRecordMapper;
 import com.yonge.cooleshow.biz.dal.service.TenantUnbindRecordService;
 
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 /**
  * 机构解绑申请记录
  * 2023-07-21 17:32:49
@@ -19,6 +36,28 @@ import com.yonge.cooleshow.biz.dal.service.TenantUnbindRecordService;
 @Service
 public class TenantUnbindRecordServiceImpl extends ServiceImpl<TenantUnbindRecordMapper, TenantUnbindRecord> implements TenantUnbindRecordService {
 
+
+    @Autowired
+    private TeacherDao teacherDao;
+
+    @Autowired
+    private StudentDao studentDao;
+
+    @Autowired
+    private SubjectDao subjectDao;
+
+    @Autowired
+    private TenantUnbindRecordService tenantUnbindRecordService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private TeacherService teacherService;
+
 	/**
      * 查询详情
      * @param id 详情ID
@@ -38,8 +77,83 @@ public class TenantUnbindRecordServiceImpl extends ServiceImpl<TenantUnbindRecor
      */
     @Override
     public IPage<TenantUnbindRecordWrapper.TenantUnbindRecord> selectPage(IPage<TenantUnbindRecordWrapper.TenantUnbindRecord> page, TenantUnbindRecordWrapper.TenantUnbindRecordQuery query) {
-        
-        return page.setRecords(baseMapper.selectPage(page, query));
+
+        List<TenantUnbindRecordWrapper.TenantUnbindRecord> records = baseMapper.selectPage(page, query);
+        if(records.isEmpty()){
+            return page.setRecords(records);
+        }
+
+        Map<String, List<TenantUnbindRecordWrapper.TenantUnbindRecord>> gropuByUserType = records.stream().collect(Collectors.groupingBy(TenantUnbindRecordWrapper.TenantUnbindRecord::getUserType));
+
+        List<Long> teacherIds  = new ArrayList<>();
+        List<Long> studentIds  = new ArrayList<>();
+
+        for (Map.Entry<String, List<TenantUnbindRecordWrapper.TenantUnbindRecord>> entry : gropuByUserType.entrySet()) {
+            if("TEACHER".equals(entry.getKey())){
+                teacherIds.addAll(entry.getValue().stream().map(TenantUnbindRecordWrapper.TenantUnbindRecord::getUserId).collect(Collectors.toList()));
+            }else{
+                studentIds.addAll(entry.getValue().stream().map(TenantUnbindRecordWrapper.TenantUnbindRecord::getUserId).collect(Collectors.toList()));
+
+            }
+
+        }
+        List<Teacher> teachers = new ArrayList<>();
+        List<Teacher> students = new ArrayList<>();
+        List<Teacher> users = new ArrayList<>();
+        if(!teacherIds.isEmpty()){
+            QueryWrapper<Teacher>
+                    objectQueryWrapper = new QueryWrapper<>();
+            objectQueryWrapper.lambda()
+                    .in(Teacher::getUserId,teacherIds);
+            teachers = teacherDao.selectList(objectQueryWrapper);
+        }else {
+            QueryWrapper<Student>
+                    objectQueryWrapper = new QueryWrapper<>();
+            objectQueryWrapper.lambda()
+                    .in(Student::getUserId,studentIds);
+            List<Student> studentList = studentDao.selectList(objectQueryWrapper);
+            students =studentList.stream().map(next->{
+                Teacher teacher = new Teacher();
+                teacher.setUserId(next.getUserId());
+                teacher.setSubject(next.getSubjectId());
+                return teacher;
+            }).collect(Collectors.toList());
+        }
+        users.addAll(students);
+        users.addAll(teachers);
+
+        List<Long> subjectIdList = users.stream().map(next -> {
+            List<Long > list = new ArrayList<>();
+            String subjectId = next.getSubjectId();
+            if (StringUtils.isEmpty(subjectId)) {
+                return list;
+            }
+            return Arrays.stream(next.getSubjectId().split(",")).map(Long::valueOf).collect(Collectors.toList());
+        }).flatMap(Collection::stream).collect(Collectors.toList());
+
+        Map<Long,String> userIdSubjectNameMap = new HashMap<>();
+        if(!subjectIdList.isEmpty()){
+            List<Subject> subjectList = subjectDao.findBySubjectIds(subjectIdList);
+            Map<Long, String> idNameMap = subjectList.stream().collect(Collectors.toMap(Subject::getId, Subject::getName));
+
+            for (Teacher user : users) {
+                String subjectId = user.getSubjectId();
+                if(StringUtils.isEmpty(subjectId)){
+                    continue;
+                }
+                List<String> names = Arrays.stream(subjectId.split(",")).map(next ->
+                        idNameMap.getOrDefault(Long.valueOf(next), "")).collect(Collectors.toList());
+                userIdSubjectNameMap.put(user.getUserId(),String.join(",",names));
+            }
+        }
+
+        for (TenantUnbindRecordWrapper.TenantUnbindRecord record : records) {
+            record.setSubjectName(userIdSubjectNameMap.getOrDefault(record.getUserId(),""));
+
+        }
+
+
+        return page.setRecords(records);
     }
 	
     /**
@@ -63,4 +177,32 @@ public class TenantUnbindRecordServiceImpl extends ServiceImpl<TenantUnbindRecor
 
         return this.updateById(JSON.parseObject(tenantUnbindRecord.jsonString(), TenantUnbindRecord.class));       
     }
+
+    @Override
+    public Boolean entry(TenantUnbindRecordWrapper.Audio audio) {
+        boolean update = tenantUnbindRecordService.lambdaUpdate()
+                .set(TenantUnbindRecord::getStatus, audio.getStatus() ? "PASS" : "UNPASS")
+                .set(TenantUnbindRecord::getReason, audio.getReason())
+                .set(TenantUnbindRecord::getVerifyUserId, sysUserFeignService.queryUserInfo().getId())
+                .eq(TenantUnbindRecord::getId, audio.getId())
+                .eq(TenantUnbindRecord::getStatus, "DOING").update();
+        if (!update) {
+            throw new BizException("审核失败,请刷新后重试");
+        }
+
+        if (audio.getStatus()) {
+            TenantUnbindRecord unbindRecord = tenantUnbindRecordService.getById(audio.getId());
+            String userType = unbindRecord.getUserType();
+            if ("STUDENT".equals(userType)) {
+                studentService.lambdaUpdate()
+                        .set(Student::getTenantId, -1L)
+                        .eq(Student::getUserId, unbindRecord.getUserId()).update();
+            } else if ("TEACHER".equals(userType)) {
+                teacherService.lambdaUpdate()
+                        .set(Teacher::getTenantId, -1L)
+                        .eq(Teacher::getUserId, unbindRecord.getUserId()).update();
+            }
+        }
+        return null;
+    }
 }

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantUnbindRecordWrapper.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -48,6 +49,9 @@ public class TenantUnbindRecordWrapper {
         @ApiModelProperty("用户类型,TEACHER/STUDENT")
         private String userType;
 
+        @ApiModelProperty("审核状态 DOING、审核中 PASS、通过 UNPASS、不通过")
+        private String status;
+
         public String getKeyword() {
             return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
         }
@@ -134,6 +138,15 @@ public class TenantUnbindRecordWrapper {
         @ApiModelProperty("创建时间")
         private Date createTime;
 
+        @ApiModelProperty("头像")
+        private String avatar;
+
+        @ApiModelProperty("声部Id")
+        private String subjectId;
+
+        @ApiModelProperty("声部名称")
+        private String subjectName;
+
 
         public String jsonString() {
             return JSON.toJSONString(this);

+ 4 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantUnbindRecordMapper.xml

@@ -28,6 +28,7 @@
         ,ti.phone_ as tenantUserPhone
         ,su.username_ as userName
         ,su.phone_ as phone
+        ,su.avatar_ as avatar
         FROM tenant_unbind_record t
         LEFT JOIN tenant_info ti ON ti.id_ = t.tenant_id_
         LEFT JOIN sys_user su on su.id_ = t.user_id_
@@ -53,6 +54,9 @@
             <if test="param.regionCode != null">
                 AND ti.region_code_ = #{param.regionCode}
             </if>
+            <if test="param.status != null and param.status != ''">
+                AND t.status_ = #{param.status}
+            </if>
         </where>
         order by t.id_ desc
     </select>

+ 100 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantUnbindRecordController.java

@@ -0,0 +1,100 @@
+package com.yonge.cooleshow.tenant.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.SysArea;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.EmployeeVo;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantUnbindRecordWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.UserLockFlag;
+import com.yonge.toolset.base.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/tenantUnbindRecord")
+@Api(tags = "机构解绑申请记录")
+public class TenantUnbindRecordController extends BaseController {
+
+    @Autowired
+    private TenantUnbindRecordService tenantUnbindRecordService;
+
+    @Autowired
+    private SysAreaService sysAreaService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private EmployeeService employeeService;
+
+
+    @ApiOperation(value = "查询分页", notes = "机构解绑申请记录- 传入 TenantUnbindRecordVo.TenantUnbindRecordQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<TenantUnbindRecordWrapper.TenantUnbindRecord>>
+    page(@RequestBody TenantUnbindRecordWrapper.TenantUnbindRecordQuery query) {
+        // 查询数据
+        IPage<TenantUnbindRecordWrapper.TenantUnbindRecord> pages =
+                tenantUnbindRecordService.selectPage(QueryInfo.getPage(query), query);
+
+
+        List<Integer> areaCodeList = pages.getRecords().stream().map(next -> {
+            HashSet<Integer> areaCodes = new HashSet<>();
+            areaCodes.add(next.getProvinceCode());
+            areaCodes.add(next.getCityCode());
+            areaCodes.add(next.getRegionCode());
+            return areaCodes;
+        }).flatMap(Collection::stream).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+        if (!areaCodeList.isEmpty()) {
+            Map<Integer, String> codeNameMap = sysAreaService.lambdaQuery().in(SysArea::getCode, areaCodeList).list()
+                    .stream().collect(Collectors.toMap(SysArea::getCode, SysArea::getName));
+
+            pages.getRecords().forEach(next -> {
+                next.setProvinceName(codeNameMap.getOrDefault(next.getProvinceCode(), ""));
+                next.setCityName(codeNameMap.getOrDefault(next.getCityCode(), ""));
+                next.setRegionName(codeNameMap.getOrDefault(next.getRegionCode(), ""));
+            });
+        }
+        return succeed(QueryInfo.pageInfo(pages, pages.getRecords()));
+    }
+
+    @ApiOperation(value = "审核")
+    @PostMapping("/audit")
+    public HttpResponseResult<Boolean> audit(@RequestBody TenantUnbindRecordWrapper.Audio audio) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("请登录");
+        }
+        EmployeeVo employeeVo = employeeService.detail(sysUserFeignService.queryUserInfo().getId());
+        if (employeeVo == null || UserLockFlag.LOCKED.equals(employeeVo.getLockFlag())) {
+            throw new BizException("权限不足");
+        }
+
+        if (audio.getId() == null || audio.getStatus() == null) {
+            throw new BizException("参数错误");
+        }
+        Boolean entry = tenantUnbindRecordService.entry(audio);
+
+        return succeed();
+    }
+
+
+}