liujc před 1 rokem
rodič
revize
e2242b9ca3

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -12,6 +12,8 @@ import com.alibaba.fastjson.JSON;
 import com.google.common.collect.Lists;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
+import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
+import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumRefMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantUnbindHistoryMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantUnbindRecordMapper;
 import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
@@ -131,6 +133,12 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Autowired
     private TenantUnbindHistoryMapper tenantUnbindHistoryMapper;
 
+    @Autowired
+    private TenantAlbumMapper tenantAlbumMapper;
+
+    @Autowired
+    private TenantAlbumRefMapper tenantAlbumRefMapper;
+
 
     @Override
     public TeacherVo detail(Long userId) {
@@ -270,6 +278,25 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         teacherHomeVo.setMusicAlbumNum(null == total.getMusicAlbumNum() ? 0 : total.getMusicAlbumNum());
         teacherHomeVo.setMusicSheetNum(null == total.getMusicSheetNum() ? 0 : total.getMusicSheetNum());
 
+        // 老师所属机构信息
+        teacherHomeVo.setTenantAlbumStatus(0);
+        TenantInfo tenantInfo = tenantInfoService.detail(teacher.getTenantId());
+        if (tenantInfo != null) {
+            teacherHomeVo.setTenantName(tenantInfo.getName());
+            List<Long> tenantAlbumIds = tenantAlbumRefMapper.selectList(Wrappers.<TenantAlbumRef>lambdaQuery()
+                            .eq(TenantAlbumRef::getTenantId, tenantInfo.getId())).stream()
+                    .map(TenantAlbumRef::getTenantAlbumId).collect(Collectors.toList());
+            if (!tenantAlbumIds.isEmpty()) {
+                List<TenantAlbum> tenantAlbums = tenantAlbumMapper.selectList(Wrappers.<TenantAlbum>lambdaQuery()
+                        .in(TenantAlbum::getId, tenantAlbumIds)
+                        .eq(TenantAlbum::getDelFlag, false).eq(TenantAlbum::getStatus, true));
+                if (!tenantAlbums.isEmpty()) {
+                    teacherHomeVo.setTenantAlbumStatus(2);
+                    teacherHomeVo.setTenantAlbumFlag(YesOrNoEnum.YES);
+                }
+            }
+        }
+
         // 老师学生人数统计
         List<Long> teacherIds = Lists.newArrayList(userId);
         Map<Long, Integer> studentNumsMap = getBaseMapper().selectTeacherStudentNumberStatInfo(teacherIds).stream()

+ 21 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java

@@ -84,6 +84,11 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     @ApiModelProperty(value = "默认查询声部名称 ")
     private String defaultSubjectName;
 
+    @ApiModelProperty(value = "学练工具是否有效 0否 1是")
+    private YesOrNoEnum tenantAlbumFlag;
+
+    @ApiModelProperty(value = "0:没有专辑 1:有,但是未解锁,2:有,且已解锁")
+    private Integer tenantAlbumStatus;
     @ApiModelProperty(value = "IM用户ID")
     private String imUserId;
 
@@ -339,4 +344,20 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     public void setImUserId(String imUserId) {
         this.imUserId = imUserId;
     }
+
+    public YesOrNoEnum getTenantAlbumFlag() {
+        return tenantAlbumFlag;
+    }
+
+    public void setTenantAlbumFlag(YesOrNoEnum tenantAlbumFlag) {
+        this.tenantAlbumFlag = tenantAlbumFlag;
+    }
+
+    public Integer getTenantAlbumStatus() {
+        return tenantAlbumStatus;
+    }
+
+    public void setTenantAlbumStatus(Integer tenantAlbumStatus) {
+        this.tenantAlbumStatus = tenantAlbumStatus;
+    }
 }

+ 20 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysMusicCompareRecordController.java

@@ -76,6 +76,26 @@ public class SysMusicCompareRecordController extends BaseController {
             return failed("时间不能为空");
         }
         queryInfo.setClientId("student");
+        LocalDate localDate = LocalDate.parse(queryInfo.getStartTime() + "-01",
+                DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        queryInfo.setStartTime(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        LocalDate endDate = localDate.plusDays(localDate.getMonth().length(localDate.isLeapYear()) -1);
+        queryInfo.setEndTime(endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        return succeed(sysMusicCompareRecordService.studentTrainData(queryInfo));
+    }
+
+    @ApiOperation("学员训练数据统计每周")
+    @GetMapping("studentTrainDataByWeek")
+    public HttpResponseResult studentTrainDataByWeek(SysMusicCompareRecordQueryInfo.TeacherCompareRecordQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        queryInfo.setUserId(sysUser.getId());
+        if (StringUtils.isEmpty(queryInfo.getStartTime())) {
+            return failed("时间不能为空");
+        }
+        queryInfo.setClientId("student");
         return succeed(sysMusicCompareRecordService.studentTrainData(queryInfo));
     }
 

+ 77 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/StudentController.java

@@ -1,17 +1,36 @@
 package com.yonge.cooleshow.teacher.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.UserLockFlag;
+import com.yonge.cooleshow.common.enums.UserStatusEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
+import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.base.util.StringUtil;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
+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 javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
 @RestController
 @RequestMapping("/student")
 @Api(value = "学生表", tags = "学生表")
@@ -19,6 +38,9 @@ public class StudentController extends BaseController {
     @Autowired
     private StudentService studentService;
 
+    @Resource
+    private SysUserFeignService sysUserFeignService;
+
 
     @ApiOperation(value = "查询指定学员信息-融云token")
     @GetMapping("/queryUserById")
@@ -41,4 +63,59 @@ public class StudentController extends BaseController {
         return succeed(studentService.detail(userId));
     }
 
+    /**
+     * 查询老师所属机构下所有的学生
+     *
+     * @param query 参数
+     * @return 学生列表
+     */
+    @PostMapping("/page")
+    @ApiOperation(value = "查询分页", notes = "传入StudentSearch")
+    public HttpResponseResult<PageInfo<StudentVo>> page(@RequestBody StudentSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null || null == sysUser.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        Long tenantId = sysUser.getTenantId();
+        if (tenantId == null || tenantId.equals(-1L)) {
+            IPage<StudentVo> page = PageUtil.getPage(query);
+            page.setRecords(new ArrayList<>());
+            return succeed(PageUtil.pageInfo(page));
+        }
+
+        query.setTenantId(tenantId);
+        if (StringUtils.isNotBlank(query.getUserStatus())) {
+            switch (query.getUserStatus()) {
+                case "LOCKED":
+                    query.setDelFlag(YesOrNoEnum.NO);
+                    query.setLockFlag(UserLockFlag.LOCKED);
+                    break;
+                case "CLOSED":
+                    query.setDelFlag(YesOrNoEnum.YES);
+                    break;
+
+                default:
+                    query.setDelFlag(YesOrNoEnum.NO);
+                    query.setLockFlag(UserLockFlag.NORMAL);
+                    break;
+            }
+        }
+
+        IPage<StudentVo> pages = studentService.selectPage(PageUtil.getPage(query), query);
+        List<StudentVo> rows = pages.getRecords();
+
+        for (StudentVo vo : rows) {
+            if (vo.getDelFlag() == YesOrNoEnum.YES) {
+                vo.setUserStatus(UserStatusEnum.CLOSED);
+            } else {
+                if (vo.getLockFlag() == UserLockFlag.LOCKED) {
+                    vo.setUserStatus(UserStatusEnum.LOCKED);
+                } else {
+                    vo.setUserStatus(UserStatusEnum.NORMAL);
+                }
+            }
+        }
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
 }

+ 5 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SysMusicCompareRecordController.java

@@ -73,6 +73,11 @@ public class SysMusicCompareRecordController extends BaseController {
         if (StringUtils.isEmpty(queryInfo.getStartTime())) {
             return failed("时间不能为空");
         }
+        LocalDate localDate = LocalDate.parse(queryInfo.getStartTime() + "-01",
+                DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        queryInfo.setStartTime(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        LocalDate endDate = localDate.plusDays(localDate.getMonth().length(localDate.isLeapYear()) -1);
+        queryInfo.setEndTime(endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         return succeed(sysMusicCompareRecordService.studentTrainData(queryInfo));
     }
 

+ 18 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java

@@ -281,4 +281,22 @@ public class TeacherController extends BaseController {
         return succeed();
 
     }
+
+    @GetMapping("/unbindTenantDetail")
+    @ApiOperation(value = "解绑机构申请记录")
+    public HttpResponseResult<TenantUnbindRecord> unbindTenantDetail() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        TenantUnbindRecord one = tenantUnbindRecordService.lambdaQuery()
+                .eq(TenantUnbindRecord::getUserId, user.getId())
+                .eq(TenantUnbindRecord::getTenantId, user.getTenantId())
+                .eq(TenantUnbindRecord::getStatus, ETenantUnBindAuditStatus.DOING)
+                .orderByDesc(TenantUnbindRecord::getId)
+                .last("limit 1").one();
+        return succeed(one);
+
+    }
 }