Bläddra i källkod

学生端训练教程功能

haonan 1 år sedan
förälder
incheckning
3ac695110b

+ 2 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantAlbumController.java

@@ -126,7 +126,7 @@ public class TenantAlbumController {
             List<TenantAlbumWrapper.TenantAlbumSheet> tenantAlbumSheets = value.stream().map(next -> {
 
                 TenantAlbumWrapper.TenantAlbumSheet tenantAlbumSheet = new TenantAlbumWrapper.TenantAlbumSheet();
-                BeanUtils.copyProperties(value, tenantAlbumSheet);
+                BeanUtils.copyProperties(value.get(0), tenantAlbumSheet);
                 Long musicSheetId = tenantAlbumSheet.getMusicSheetId();
                 MusicSheetVo musicSheet = idMsMap.getOrDefault(musicSheetId, new MusicSheetVo());
                 tenantAlbumSheet.setMusicSheetName(musicSheet.getMusicSheetName());
@@ -137,6 +137,7 @@ public class TenantAlbumController {
 
             sheetData.setTenantAlbumSheetList(tenantAlbumSheets);
             musicSheetData.add(sheetData);
+            vo.setMusicSheetData(musicSheetData);
         });
 
         return HttpResponseResult.succeed(vo);

+ 7 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/UserTenantAlbumRecordMapper.java

@@ -4,6 +4,8 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.entity.TenantAlbum;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
@@ -22,6 +24,9 @@ public interface UserTenantAlbumRecordMapper extends BaseMapper<UserTenantAlbumR
 	 * @param param UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery
 	 * @return List<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord>
 	 */
-	List<UserTenantAlbumRecord> selectPage(@Param("page") IPage<UserTenantAlbumRecord> page, @Param("param") UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery param);
-	
+	List<TenantAlbumWrapper.TenantAlbum> selectPage(@Param("page") IPage<UserTenantAlbumRecord> page, @Param("param") UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery param);
+
+	List<Long> selectTenantIds(@Param("id") Long id);
+
+	List<TenantAlbum> selectTenantAlbumInfo(@Param("tenantIds") List<Long> tenantIds);
 }

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserTenantAlbumRecordService.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
 import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
 
@@ -27,7 +28,7 @@ public interface UserTenantAlbumRecordService extends IService<UserTenantAlbumRe
      * @param query UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery
      * @return IPage<UserTenantAlbumRecord>
      */
-    IPage<UserTenantAlbumRecord> selectPage(IPage<UserTenantAlbumRecord> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query);
+    IPage<TenantAlbumWrapper.TenantAlbum> selectPage(IPage<TenantAlbumWrapper.TenantAlbum> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query);
 	
     /**
      * 添加

+ 97 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java

@@ -3,19 +3,26 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.alibaba.fastjson.JSON;
 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.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
-import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
 import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.UserTenantAlbumRecordMapper;
-import com.yonge.cooleshow.biz.dal.service.UserTenantAlbumRecordService;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -26,6 +33,21 @@ import java.util.stream.Collectors;
 @Service
 public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbumRecordMapper, UserTenantAlbumRecord> implements UserTenantAlbumRecordService {
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private TenantAlbumRefService tenantAlbumRefService;
+
+    @Autowired
+    private TenantInfoService tenantInfoService;
+
+    @Autowired
+    private TenantAlbumMusicService tenantAlbumMusicService;
+
+    @Autowired
+    private MusicSheetService musicSheetService;
+
 	/**
      * 查询详情
      * @param id 详情ID
@@ -44,9 +66,76 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
      * @return IPage<UserTenantAlbumRecord>
      */
     @Override
-    public IPage<UserTenantAlbumRecord> selectPage(IPage<UserTenantAlbumRecord> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query) {
-        
-        return page.setRecords(baseMapper.selectPage(page, query));
+    public IPage<TenantAlbumWrapper.TenantAlbum> selectPage(IPage<TenantAlbumWrapper.TenantAlbum> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Long id = sysUser.getId();
+        query.setUserId(sysUser.getId());
+
+        List<TenantAlbumWrapper.TenantAlbum> list = new ArrayList<>();
+
+            //查询生效的机构专辑id
+            List<Long> tenantIds = baseMapper.selectTenantIds(id);
+            List<TenantAlbum> tenantAlbums = baseMapper.selectTenantAlbumInfo(tenantIds);
+            tenantAlbums.stream().forEach(i->{
+                TenantAlbumWrapper.TenantAlbum vo = JSON.parseObject(JSON.toJSONString(i),
+                        TenantAlbumWrapper.TenantAlbum.class);
+
+                //查关联表
+                TenantAlbumRef one = tenantAlbumRefService.lambdaQuery().eq(TenantAlbumRef::getTenantAlbumId, i.getId())
+                        .last("limit 1").one();
+                vo.setTenantId(one.getTenantId());
+
+                //查询曲目表
+                TenantInfo tenantInfo = tenantInfoService.getById(one.getTenantId());
+                vo.setTenantName(tenantInfo.getName());
+
+                List<TenantAlbumMusic> tenantAlbumMusics = tenantAlbumMusicService.lambdaQuery()
+                        .eq(TenantAlbumMusic::getTenantAlbumId, i.getId())
+                        .eq(TenantAlbumMusic::getDelFlag, false)
+                        .list();
+
+                Map<SubjectTypeEnum, List<TenantAlbumMusic>> groupByType =
+                        tenantAlbumMusics.stream().collect(Collectors.groupingBy(TenantAlbumMusic::getSubjectType));
+
+                List<Long> musicSheetIdlist = tenantAlbumMusics.stream().map(next -> next.getMusicSheetId()).distinct().collect(Collectors.toList());
+
+                StudentMusicSheetSearch search = new StudentMusicSheetSearch();
+                search.setMusicSheetIdlist(musicSheetIdlist);
+                search.setPage(1);
+                search.setRows(9999);
+
+                IPage<MusicSheetVo> records = musicSheetService.selectStudentPage(PageUtil.getPage(search), search, ClientEnum.TENANT_STUDENT);
+
+                Map<Long, MusicSheetVo> idMsMap = records.getRecords().stream()
+                        .collect(Collectors.toMap(MusicSheet::getId, Function.identity()));
+
+                List<TenantAlbumWrapper.MusicSheetData> musicSheetData = vo.getMusicSheetData();
+
+                groupByType.forEach((key, value) -> {
+                    value.sort(Comparator.comparing(TenantAlbumMusic::getSortNumber));
+                    TenantAlbumWrapper.MusicSheetData sheetData = new TenantAlbumWrapper.MusicSheetData();
+                    sheetData.setSubjectType(key);
+                    List<TenantAlbumWrapper.TenantAlbumSheet> tenantAlbumSheets = value.stream().map(next -> {
+
+                        TenantAlbumWrapper.TenantAlbumSheet tenantAlbumSheet = new TenantAlbumWrapper.TenantAlbumSheet();
+                        BeanUtils.copyProperties(value.get(0), tenantAlbumSheet);
+                        Long musicSheetId = tenantAlbumSheet.getMusicSheetId();
+                        MusicSheetVo musicSheet = idMsMap.getOrDefault(musicSheetId, new MusicSheetVo());
+                        tenantAlbumSheet.setMusicSheetName(musicSheet.getMusicSheetName());
+                        tenantAlbumSheet.setMusicTag(musicSheet.getMusicTag());
+                        tenantAlbumSheet.setComposer(musicSheet.getComposer());
+                        return tenantAlbumSheet;
+                    }).collect(Collectors.toList());
+
+
+                    sheetData.setTenantAlbumSheetList(tenantAlbumSheets);
+                    musicSheetData.add(sheetData);
+                    vo.setMusicSheetData(musicSheetData);
+                });
+                list.add(vo);
+            });
+
+        return page.setRecords(list);
     }
 	
     /**

+ 16 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/UserTenantAlbumRecordWrapper.java

@@ -34,6 +34,10 @@ public class UserTenantAlbumRecordWrapper {
         
         @ApiModelProperty("关键字匹配")
 		private String keyword;
+
+        @ApiModelProperty("用户Id")
+        private Long userId;
+
         
         public String getKeyword() {
             return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
@@ -50,7 +54,18 @@ public class UserTenantAlbumRecordWrapper {
 
 	@ApiModel(" UserTenantAlbumRecord-购买训练工具记录")
     public static class UserTenantAlbumRecord {
-        
+        @ApiModelProperty("专辑名称")
+        private String albumName;
+
+        @ApiModelProperty("专辑介绍")
+        private String describe;
+
+        @ApiModelProperty("机构名称")
+        private String tenantName;
+
+        @ApiModelProperty("专辑封面")
+        private String coverImg;
+
         public String jsonString() {
             return JSON.toJSONString(this);
         }

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -326,13 +326,13 @@
         select tenant_id_ tenantId, count(tenant_id_) count
         from student
         <where>
+            lock_flag_ = 0
             <if test="tenantIdList != null">
                 AND tenant_id_ in
                 <foreach collection="tenantIdList" item="item" separator="," open="(" close=")">
                     #{item}
                 </foreach>
             </if>
-            AND lock_flag_ = 0
         </where>
         group by tenant_id_
     </select>
@@ -340,10 +340,10 @@
         select count(tenant_id_)
         from student
         <where>
+            lock_flag_ = 0
             <if test="id != null">
                 and  tenant_id_ = #{id}
             </if>
-            and lock_flag_ = 0
         </where>
     </select>
 </mapper>

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -377,13 +377,13 @@
         select tenant_id_ tenantId, count(tenant_id_) count
         from teacher
         <where>
+            lock_flag_ = 0
             <if test="tenantIdList != null">
                 AND tenant_id_ in
                 <foreach collection="tenantIdList" item="item" separator="," open="(" close=")">
                     #{item}
                 </foreach>
             </if>
-            AND lock_flag_ = 0
         </where>
 
         group by tenant_id_
@@ -392,10 +392,10 @@
         select count(tenant_id_)
         from teacher
         <where>
+             lock_flag_ = 0
             <if test="id != null">
               and tenant_id_ = #{id}
             </if>
-            and lock_flag_ = 0
         </where>
     </select>
     <!--老师学生人数统计-->

+ 32 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserTenantAlbumRecordMapper.xml

@@ -25,10 +25,40 @@
         , t.reason_ AS reason
         </sql> 
     
-    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord">
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper$TenantAlbum">
 		SELECT         
         	<include refid="baseColumns" />
 		FROM user_tenant_album_record t
+        <where>
+
+        </where>
 	</select>
-    
+    <select id="selectTenantIds" resultType="java.lang.Long">
+        select distinct tenant_album_id_
+        from user_tenant_album_record
+        <where>
+            end_time_ > now()
+          <if test="id != null">
+              and user_id_ = #{id}
+          </if>
+        </where>
+    </select>
+    <select id="selectTenantAlbumInfo" resultType="com.yonge.cooleshow.biz.dal.entity.TenantAlbum">
+        select id_ AS id,
+               name_ AS name,
+               describe_ AS `describe`,
+               cover_img_ AS coverImg,
+               subject_types_ AS subjectTypes
+        FROM tenant_album
+        <where>
+            <if test="tenantIds != null">
+                and id_ in
+                <foreach collection="tenantIds" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+
+    </select>
+
 </mapper>

+ 88 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/UserTenantAlbumRecordController.java

@@ -0,0 +1,88 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.response.template.R;
+
+import com.alibaba.fastjson.JSONObject;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
+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.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PathVariable;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import com.yonge.cooleshow.biz.dal.service.UserTenantAlbumRecordService;
+import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
+import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/userTenantAlbumRecord")
+@Api(tags = "购买训练工具记录")
+public class UserTenantAlbumRecordController {
+
+    @Autowired
+    private UserTenantAlbumRecordService userTenantAlbumRecordService;
+
+    @ApiOperation(value = "详情", notes = "购买训练工具记录-根据详情ID查询单条, 传入id")
+    @PreAuthorize("@auditsvc.hasPermissions('userTenantAlbumRecord/detail', {'BACKEND'})")
+    //@GetMapping("/detail/{id}")
+    public R<UserTenantAlbumRecord> detail(@PathVariable("id") Long id) {
+
+        UserTenantAlbumRecord wrapper = userTenantAlbumRecordService.detail(id);
+
+        return R.from(wrapper);
+    }
+
+    @ApiOperation(value = "查询分页", notes = "购买训练工具记录- 传入 UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery")
+    //@PreAuthorize("@auditsvc.hasPermissions('userTenantAlbumRecord/page', {'BACKEND'})")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<TenantAlbumWrapper.TenantAlbum>> page(@RequestBody UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query) {
+
+        IPage<TenantAlbumWrapper.TenantAlbum> pages = userTenantAlbumRecordService.selectPage(QueryInfo.getPage(query), query);
+
+        return HttpResponseResult.succeed(PageUtil.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "新增", notes = "购买训练工具记录- 传入 UserTenantAlbumRecordWrapper.UserTenantAlbumRecord")
+    @PreAuthorize("@auditsvc.hasPermissions('userTenantAlbumRecord/save', {'BACKEND'})")
+    //@PostMapping("/save")
+    public R<JSONObject> add(@Validated @RequestBody UserTenantAlbumRecord userTenantAlbumRecord) {
+
+        // 新增数据
+        userTenantAlbumRecordService.save(userTenantAlbumRecord);
+
+        return R.defaultR();
+    }
+
+    @ApiOperation(value = "修改", notes = "购买训练工具记录- 传入 UserTenantAlbumRecordWrapper.UserTenantAlbumRecord")
+    @PreAuthorize("@auditsvc.hasPermissions('userTenantAlbumRecord/update', {'BACKEND'})")
+    //@PostMapping("/update")
+    public R<JSONObject> update(@Validated @RequestBody UserTenantAlbumRecord userTenantAlbumRecord) {
+
+        // 更新数据
+        userTenantAlbumRecordService.updateById(userTenantAlbumRecord);
+
+        return R.defaultR();
+    }
+
+    @ApiOperation(value = "删除", notes = "购买训练工具记录- 传入id")
+    @PreAuthorize("@auditsvc.hasPermissions('userTenantAlbumRecord/remove', {'BACKEND'})")
+    //@PostMapping("/remove")
+    public R<Boolean> remove(@RequestParam Long id) {
+
+        return R.from(userTenantAlbumRecordService.removeById(id));
+    }
+}