刘俊驰 1 year ago
parent
commit
965325343a
14 changed files with 135 additions and 57 deletions
  1. 3 2
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java
  2. 3 2
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java
  3. 46 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TenantGroupAlbumController.java
  4. 7 5
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java
  5. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  6. 41 33
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  7. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  8. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java
  9. 11 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantGroupAlbumServiceImpl.java
  10. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java
  11. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantActivationCodeWrapper.java
  12. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantAlbumMusicWrapper.java
  13. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantActivationCodeMapper.xml
  14. 3 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantAlbumMusicMapper.xml

+ 3 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java

@@ -86,12 +86,13 @@ public class MusicSheetController extends BaseController {
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入musicTag")
-    public HttpResponseResult<MusicSheetDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id) {
+    public HttpResponseResult<MusicSheetDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id,
+                                                         @RequestParam(required = false) Long tenantAlbumId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             sysUser = null;
         }
-        return succeed(musicSheetService.detail(id, sysUser, ClientEnum.STUDENT));
+        return succeed(musicSheetService.detail(id, sysUser, ClientEnum.STUDENT,tenantAlbumId));
     }
 
     @ApiOperation(value = "曲目分页查询", httpMethod="POST", consumes="application/json", produces="application/json")

+ 3 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -75,13 +75,14 @@ public class MusicSheetController extends BaseController {
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入musicTag")
-    public HttpResponseResult<MusicSheetDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id) {
+    public HttpResponseResult<MusicSheetDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id,
+                                                         @RequestParam(required = false) Long tenantAlbumId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
 
-        MusicSheetDetailVo detail = musicSheetService.detail(id, sysUser, ClientEnum.TEACHER);
+        MusicSheetDetailVo detail = musicSheetService.detail(id, sysUser, ClientEnum.TEACHER,tenantAlbumId);
 
         // 设置返回默认值
         if (StringUtil.isEmpty(detail.getAudioFileUrl())) {

+ 46 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TenantGroupAlbumController.java

@@ -0,0 +1,46 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.service.TenantGroupAlbumService;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantGroupAlbumWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+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.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/tenantGroupAlbum")
+@Api(tags = "机构小组专辑配置表")
+public class TenantGroupAlbumController {
+
+    @Autowired
+    private TenantGroupAlbumService tenantGroupAlbumService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation(value = "学生可购买机构专辑信息")
+	@GetMapping("/buyAlbumInfo")
+	public HttpResponseResult<List<TenantGroupAlbumWrapper.BuyTenantAlbum>> buyAlbumInfo(@RequestParam(required = false) Long tenantGroupAlbumId) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return HttpResponseResult.failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+    
+		return HttpResponseResult.succeed(tenantGroupAlbumService.buyAlbumInfo(tenantGroupAlbumId,user.getId(), ClientEnum.TEACHER));
+	}
+}

+ 7 - 5
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java

@@ -115,17 +115,19 @@ public class OpenStudentController extends BaseController {
             student.setId(studentId);
         }
 
-        StudentWrapper.Student studentInfo = JSON.parseObject(JSON.toJSONString(student), StudentWrapper.Student.class);
-        studentInfo.setTenantId(tenantInfo.getId());
-
-        studentService.save(studentInfo);
-
         // 自动注册登陆验证码
         String loginCode = "";
         if (Optional.ofNullable(student.getLoginCode()).orElse(false)) {
             // 生成登陆验证码
             loginCode = sysMessageService.sendSecurityCode(MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, student.getPhone());
         }
+
+        // 保存学生信息
+        StudentWrapper.Student studentInfo = JSON.parseObject(JSON.toJSONString(student), StudentWrapper.Student.class);
+        studentInfo.setTenantId(tenantInfo.getId());
+
+        studentService.save(studentInfo);
+
         return succeed(loginCode);
     }
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -89,6 +89,16 @@ public interface MusicSheetService extends IService<MusicSheet> {
      */
     MusicSheetDetailVo detail(Long id, SysUser sysUser, ClientEnum userType);
 
+
+    /**
+     * 查询详情
+     *
+     * @param id 曲谱id
+     * @param sysUser 登录用户
+     * @return 曲谱信息
+     */
+    MusicSheetDetailVo detail(Long id, SysUser sysUser, ClientEnum userType,Long tenantAlbumId);
+
     /**
      * 学生端 曲目分页查询
      *

+ 41 - 33
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.additional.update.impl.LambdaU
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayaedu.cbs.openfeign.service.CbsMusicSheetService;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendWrapper;
+import com.beust.jcommander.internal.Lists;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.MusicAlbumDao;
@@ -393,8 +394,15 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         return musicSheetShareVo;
     }
 
+
     @Override
     public MusicSheetDetailVo detail(Long id, SysUser sysUser, ClientEnum userType) {
+        return detail(id, sysUser, userType,null);
+    }
+
+    @Override
+    public MusicSheetDetailVo detail(Long id, SysUser sysUser, ClientEnum userType,Long tenantAlbumId) {
+
         MusicSheetDetailVo detail = baseMapper.detail(id);
         if (detail == null) {
             throw new BizException("未找到曲目信息");
@@ -429,18 +437,43 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
             String reason = musicSheetAuthRecordService.selectAuditReason(id);
             detail.setReason(reason);
         }
-        if (detail.getPaymentType().contains(ChargeTypeEnum.FREE.getCode())) {
-            detail.setPlay(YesOrNoEnum.YES);
-        } else if (ClientEnum.STUDENT.getCode().equals(userType.getCode())
-                || ClientEnum.TEACHER.getCode().equals(userType.getCode())) {
-            // 2022 7 20  老师也能购买曲目
-            if (ClientEnum.TEACHER.getCode().equals(userType.getCode()) && detail.getUserId().equals(sysUser.getId())) {
+        if (tenantAlbumId == null) {
+            if (detail.getPaymentType().contains(ChargeTypeEnum.FREE.getCode())) {
                 detail.setPlay(YesOrNoEnum.YES);
+            } else if (ClientEnum.STUDENT.getCode().equals(userType.getCode())
+                || ClientEnum.TEACHER.getCode().equals(userType.getCode())) {
+                // 2022 7 20  老师也能购买曲目
+                if (ClientEnum.TEACHER.getCode().equals(userType.getCode()) && detail.getUserId().equals(sysUser.getId())) {
+                    detail.setPlay(YesOrNoEnum.YES);
+                } else {
+                    setMusicSheetPlay(sysUser.getId(), detail, userType);
+                }
             } else {
-                setMusicSheetPlay(sysUser.getId(), detail, userType);
+                detail.setPlay(YesOrNoEnum.YES);
             }
         } else {
-            detail.setPlay(YesOrNoEnum.YES);
+            // 机构专辑购买
+            detail.setPlay(YesOrNoEnum.NO);
+
+            // 学生生效中的机构专辑
+            if (ClientEnum.STUDENT == userType) {
+                List<Long> tenantAlbumIds = userTenantAlbumRecordMapper.selectTenantIds(sysUser.getId());
+                if (CollectionUtils.isNotEmpty(tenantAlbumIds) && tenantAlbumIds.contains(tenantAlbumId)) {
+                    List<Long> musicSheetIds = tenantAlbumMusicService.getMusicIdsByIds(Lists.newArrayList(tenantAlbumId));
+                    if (CollectionUtils.isNotEmpty(musicSheetIds) && musicSheetIds.contains(detail.getId())) {
+                        detail.setPlay(YesOrNoEnum.YES);
+                    }
+                }
+            } else if (ClientEnum.TEACHER == userType) {
+                // 老师所在机构启用的专辑
+                Teacher teacher = teacherService.getById(sysUser.getId());
+                if (teacher.getTenantId() !=null) {
+                    List<Long> musicSheetIds = tenantAlbumMusicService.getMusicIdsByTenantIds(teacher.getTenantId());
+                    if (musicSheetIds.contains(detail.getId())) {
+                        detail.setPlay(YesOrNoEnum.YES);
+                    }
+                }
+            }
         }
 
 
@@ -530,31 +563,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
             }
         }
 
-        // 机构专辑购买
-
-        // 学生生效中的机构专辑
-        if (ClientEnum.STUDENT == userType) {
-            List<Long> tenantAlbumIds = userTenantAlbumRecordMapper.selectTenantIds(studentId);
-            if (CollectionUtils.isNotEmpty(tenantAlbumIds)) {
-                List<Long> musicSheetIds = tenantAlbumMusicService.getMusicIdsByIds(tenantAlbumIds);
-                if (musicSheetIds.contains(detail.getId())) {
-                    detail.setPlay(YesOrNoEnum.YES);
-                    return;
-                }
-            }
-        } else if (ClientEnum.TEACHER == userType) {
-            // 老师所在机构启用的专辑
-            Teacher teacher = teacherService.getById(studentId);
-            if (teacher.getTenantId() !=null) {
-                List<Long> musicSheetIds = tenantAlbumMusicService.getMusicIdsByTenantIds(teacher.getTenantId());
-                if (musicSheetIds.contains(detail.getId())) {
-                    detail.setPlay(YesOrNoEnum.YES);
-                    return;
-                }
-            }
-        }
-
-
     }
 
     @Override

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

@@ -207,10 +207,10 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
                 }
             }
             UserTenantAlbumRecord record = userTenantAlbumRecordService.lambdaQuery()
-                    .eq(UserTenantAlbumRecord::getTenantId, tenantInfo.getId())
                     .eq(UserTenantAlbumRecord::getUserId, detail.getUserId())
                     .eq(UserTenantAlbumRecord::getClientType, ClientEnum.STUDENT)
-                    .orderByDesc(UserTenantAlbumRecord::getEndTime)
+                    .gt(UserTenantAlbumRecord::getEndTime,new Date())
+                    .orderByAsc(UserTenantAlbumRecord::getEndTime)
                     .last("limit 1").one();
             if (record == null || record.getEndTime().getTime() < System.currentTimeMillis()) {
                 studentHomeVo.setTenantAlbumFlag(YesOrNoEnum.NO);

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java

@@ -254,7 +254,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 }
                 // 判断机构小组专辑ID是否能购买,专辑ID和当前机构专辑ID是否对应
                 TenantGroupAlbum tenantGroupAlbum = tenantGroupAlbumService.getById(orderGoodsInfo.getTenantGroupAlbumId());
-                if (tenantGroupAlbum == null) {
+                if (tenantGroupAlbum == null || tenantGroupAlbum.getDelFlag() || !tenantGroupAlbum.getStatus()) {
                     log.error("订单创建前检测,学生购买机构专辑,机构小组专辑不存在,userId={},tenantGroupAlbumId={}", orderGoodsInfo.getUserId(), orderGoodsInfo.getTenantGroupAlbumId());
                     throw new BizException("小组专辑不存在");
                 }

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

@@ -4,24 +4,18 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
-import com.yonge.cooleshow.biz.dal.entity.Student;
-import com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic;
-import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
+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.mapper.TenantAlbumMusicMapper;
-import com.yonge.cooleshow.biz.dal.service.StudentService;
-import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
-import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
-import com.yonge.cooleshow.biz.dal.entity.TenantGroupAlbum;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantGroupAlbumWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantGroupAlbumMapper;
-import com.yonge.cooleshow.biz.dal.service.TenantGroupAlbumService;
 
 import java.util.List;
 import java.util.Map;
@@ -47,6 +41,9 @@ public class TenantGroupAlbumServiceImpl extends ServiceImpl<TenantGroupAlbumMap
     @Autowired
     private TenantAlbumMusicMapper tenantAlbumMusicMapper;
 
+    @Autowired
+    private TeacherService teacherService;
+
 	/**
      * 查询详情
      * @param id 详情ID
@@ -111,6 +108,12 @@ public class TenantGroupAlbumServiceImpl extends ServiceImpl<TenantGroupAlbumMap
                 throw new BizException("机构员工不存在");
             }
             query.setTenantId(tenantStaff.getTenantId());
+        }else if (clientType == ClientEnum.TEACHER) {
+            Teacher teacher = teacherService.getById(userId);
+            if(teacher == null || teacher.getTenantId() == null) {
+                throw new BizException("老师机构信息不存在");
+            }
+            query.setTenantId(teacher.getTenantId());
         } else {
             throw new BizException("客户端类型错误");
         }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java

@@ -602,7 +602,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         if (orderReq.getActualPrice().setScale(2, RoundingMode.HALF_UP)
             .compareTo(orderReq.getPaymentCashAmount().setScale(2, RoundingMode.HALF_UP)) != 0) {
             log.info("executeOrder actualPrice={}", orderReq.getActualPrice());
-            throw new BizException("支付金额不匹配");
+            throw new BizException(999,"支付金额不匹配");
         }
 
         // 订单入库前处理流程

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantActivationCodeWrapper.java

@@ -154,6 +154,9 @@ public class TenantActivationCodeWrapper {
         @ApiModelProperty("发放时间")
         private Date sendTime;
 
+        @ApiModelProperty("采购周期类型 DAY 日 MONTH 月 QUARTERLY 季度 YEAR_HALF 半年 YEAR 年")
+        private String purchaseType;
+
         public String jsonString() {
             return JSON.toJSONString(this);
         }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantAlbumMusicWrapper.java

@@ -192,6 +192,9 @@ public class TenantAlbumMusicWrapper {
         @ApiModelProperty(value = "曲目表id")
         private Long id;
 
+        @ApiModelProperty("机构专辑ID")
+        private Long tenantAlbumId;
+
         @ApiModelProperty(value = "精品标志")
         private String exquisiteFlag;
 

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantActivationCodeMapper.xml

@@ -21,7 +21,7 @@
     <select id="selectPage"
             resultType="com.yonge.cooleshow.biz.dal.wrapper.TenantActivationCodeWrapper$TenantActivationCode">
         SELECT
-        <include refid="baseColumns"/>, ta.purchase_cycle_ as purchaseCycle, su.username_ as activationUserName,
+        <include refid="baseColumns"/>, ta.purchase_cycle_ as purchaseCycle, su.username_ as activationUserName,ta.purchase_type_ as purchaseType,
         su.avatar_ as activationUserAvatar
         FROM tenant_activation_code t
         LEFT JOIN tenant_album_purchase ta on t.tenant_album_purchase_id_ = ta.id_

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

@@ -26,7 +26,8 @@
         m.music_subject_ as musicSubject,
         m.title_img_ as titleImg,
         m.exquisite_flag_ as exquisiteFlag,
-        m.music_sheet_type_ as musicSheetType
+        m.music_sheet_type_ as musicSheetType,
+        t.tenant_album_id_ as tenantAlbumId
 		FROM music_sheet m
         left join tenant_album_music t on t.music_sheet_id_ = m.id_
         <where>
@@ -85,7 +86,7 @@
         FROM tenant_album_music t
         left join tenant_album_ref t1 on t1.tenant_album_id_ = t.tenant_album_id_
         left join music_sheet t2 on t2.id_ = t.music_sheet_id_
-        where t2.state_ = 1 and t2.del_flag_ = 0 and t2.audit_version_ = 0 and t1.tenant_id_ = #{tenantId}
+        where t2.state_ = 1 and t2.del_flag_ = 0 and t2.audit_version_ = 0 and t1.tenant_id_ = #{tenantId} and t.del_flag_ = 0
     </select>
 
     <select id="getByAlbumAndEnable" resultType="com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic">