Parcourir la source

Merge branch 'feature/0124' into test

Eric il y a 1 an
Parent
commit
bb1e608233
15 fichiers modifiés avec 116 ajouts et 29 suppressions
  1. 15 18
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java
  2. 3 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/vo/StudentVo.java
  3. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/TenantAlbumMusicMapper.java
  4. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysMessageService.java
  5. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java
  6. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  7. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMessageServiceImpl.java
  8. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java
  9. 30 0
      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/wrapper/TenantAlbumWrapper.java
  11. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantGroupAlbumWrapper.java
  12. 14 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantAlbumMusicMapper.xml
  13. 1 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TenantAlbumSheetController.java
  14. 1 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TenantAlbumSheetController.java
  15. 1 1
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantAlbumSheetController.java

+ 15 - 18
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java

@@ -7,13 +7,11 @@ import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.TenantGroup;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.TenantGroupMapper;
-import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
-import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -31,9 +29,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.HashSet;
-import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 
 @Slf4j
 @RestController
@@ -44,9 +41,6 @@ public class OpenStudentController extends BaseController {
     private StudentService studentService;
 
     @Autowired
-    private TeacherService teacherService;
-
-    @Autowired
     private TenantInfoService tenantInfoService;
 
     @Autowired
@@ -56,20 +50,14 @@ public class OpenStudentController extends BaseController {
     private SmsCodeService smsCodeService;
 
     @Autowired
-    private ImUserFriendService imUserFriendService;
-
-    @Autowired
-    private ImGroupService imGroupService;
-
-    @Autowired
-    private ImGroupMemberService imGroupMemberService;
+    private SysMessageService sysMessageService;
 
     @Autowired
     private TenantGroupMapper tenantGroupMapper;
 
     @PostMapping("/save")
     @ApiOperation(value = "新增/修改", notes = "传入Student,换绑时按照返回错误码5004判断,是否需要换绑,updateTenant=true表示换绑")
-    public HttpResponseResult<Boolean> save(@Validated @RequestBody StudentVo.Student student) {
+    public HttpResponseResult<String> save(@Validated @RequestBody StudentVo.Student student) {
         String code = student.getCode();
         if (StringUtils.isEmpty(code)) {
             throw new BizException("验证码不能为空");
@@ -127,10 +115,19 @@ public class OpenStudentController extends BaseController {
             student.setId(studentId);
         }
 
+        // 自动注册登陆验证码
+        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();
+
+        return succeed(loginCode);
     }
 }

+ 3 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/vo/StudentVo.java

@@ -51,5 +51,8 @@ public class StudentVo {
 
         @ApiModelProperty("短信验证码")
         private String code;
+
+        @ApiModelProperty("登陆验证码")
+        private Boolean loginCode;
     }
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/TenantAlbumMusicMapper.java

@@ -32,4 +32,9 @@ public interface TenantAlbumMusicMapper extends BaseMapper<TenantAlbumMusic> {
      * @param tenantId 机构ID
      */
     List<Long> selectMusicIdsByTenantIds(@Param("tenantId") Long tenantId);
+
+    /**
+     * 获取专辑可使用的曲目
+     */
+    List<TenantAlbumMusic> getByAlbumAndEnable(@Param("tenantAlbumIds") List<Long> tenantAlbumIds);
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysMessageService.java

@@ -64,6 +64,14 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	public boolean sendSecurityCode(MessageSender messageSender, Long userId, MessageTypeEnum messageType, String receiver, String platform);
 
 	/**
+	 * 发送验证码
+	 * @param messageType 消息类型
+	 * @param receiver 消息接受者
+	 * @return 验证码
+	 */
+	String sendSecurityCode(MessageTypeEnum messageType, String receiver);
+
+	/**
 	 * 获取已经发送的验证码
 	 * @param type
 	 * @param mobileNOOrEmailAddr

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

@@ -256,7 +256,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
 //                    .multiply(BigDecimal.valueOf(tenantAlbumContent.getBuyMultiple())).setScale(2, RoundingMode.HALF_UP);
 
             tenantdivMap.merge(tenantAlbumContent.getTenantId(), userPaymentOrder.getActualPrice(), BigDecimal::add);
-//            tenantdivMap.merge(-1L, tenantAmount, BigDecimal::subtract);
+            tenantdivMap.put(-1L, BigDecimal.ZERO);
 
         } else {
 

+ 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);

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

@@ -315,6 +315,28 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		return true;
 	}
 
+	/**
+	 * 发送验证码
+	 *
+	 * @param messageType 消息类型
+	 * @param receiver    消息接受者
+	 * @return true-发送成功  false-发送失败
+	 */
+	@Override
+	public String sendSecurityCode(MessageTypeEnum messageType, String receiver) {
+
+		// 生成验证码
+		String code = String.valueOf(getRandomCode(messageType, receiver));
+
+		// 验证码缓存Key
+		String key = getVerificationCodeCacheKey(messageType, receiver);
+
+		// 发送验证码缓存
+		redisCache.put(key, code, CODE_EXPIRE);
+
+		return code;
+	}
+
 	@Override
 	public String getSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr) {
 		if (debugMode == true) {

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

@@ -265,7 +265,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 // 判断购买次数
                 if (tenantGroupAlbum.getBuyTimesFlag()) {
                     List<Long> studentTenantAlbumNum = userOrderDao.getStudentTenantAlbumNum(student.getUserId(), Lists.newArrayList(tenantGroupAlbum.getId()));
-                    if (CollectionUtils.isNotEmpty(studentTenantAlbumNum) && studentTenantAlbumNum.size() >tenantGroupAlbum.getBuyTimes()) {
+                    if (CollectionUtils.isNotEmpty(studentTenantAlbumNum) && studentTenantAlbumNum.size() >= tenantGroupAlbum.getBuyTimes()) {
                         log.error("订单创建前检测,学生购买机构专辑,机构小组专辑购买次数超过限制,userId={},tenantGroupAlbumId={},buyTimes={}", orderGoodsInfo.getUserId(), orderGoodsInfo.getTenantGroupAlbumId(), tenantGroupAlbum.getBuyTimes());
                         throw new BizException("购买次数超过限制");
                     }
@@ -312,7 +312,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                         orderGoodsInfo.getBizId(), tenantAlbumContent.getPurchaseType());
                     throw new BizException("专辑不支持当前周期");
                 }
-                Optional<TenantAlbumWrapper.TenantAlbumPurchaseJson> first = tenantAlbumPurchaseJsons.stream().filter(o -> o.getPurchaseType().equals(tenantAlbumContent.getPurchaseType())).findFirst();
+                Optional<TenantAlbumWrapper.TenantAlbumPurchaseJson> first = tenantAlbumPurchaseJsons.stream().filter(o -> o.getType().equals(tenantAlbumContent.getPurchaseType())).findFirst();
                 if (!first.isPresent()) {
                     log.error("订单创建前检测,机构购买机构专辑,专辑周期不支持,userId={},bizId={},purchaseType={}", orderGoodsInfo.getUserId(),
                         orderGoodsInfo.getBizId(), tenantAlbumContent.getPurchaseType());
@@ -324,7 +324,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 actualPrice = tenantAlbumPurchaseJson.getPrice();
                 userOrderDetail.setMerchId(0L);
                 tenantAlbumContent.setTenantId(tenantStaff.getTenantId());
-                tenantAlbumContent.setBuyCycle(tenantAlbumContent.getBuyCycle()*tenantAlbumContent.getBuyMultiple());
+                tenantAlbumContent.setBuyCycle(tenantAlbumContent.getBuyMultiple());
                 break;
             }
         }

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

@@ -5,9 +5,13 @@ 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.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.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
@@ -20,6 +24,7 @@ import com.yonge.cooleshow.biz.dal.mapper.TenantGroupAlbumMapper;
 import com.yonge.cooleshow.biz.dal.service.TenantGroupAlbumService;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -39,6 +44,9 @@ public class TenantGroupAlbumServiceImpl extends ServiceImpl<TenantGroupAlbumMap
     @Autowired
     private UserOrderDao userOrderDao;
 
+    @Autowired
+    private TenantAlbumMusicMapper tenantAlbumMusicMapper;
+
 	/**
      * 查询详情
      * @param id 详情ID
@@ -111,6 +119,28 @@ public class TenantGroupAlbumServiceImpl extends ServiceImpl<TenantGroupAlbumMap
         if (CollectionUtils.isEmpty(buyAlbumInfo)) {
             return buyAlbumInfo;
         }
+        // 查询专辑可用的分类的曲目数量
+        // 机构专辑ID集合
+        List<Long> tenantAlbumIds = buyAlbumInfo.stream().map(TenantGroupAlbumWrapper.BuyTenantAlbum::getId).collect(Collectors.toList());
+
+        List<TenantAlbumMusic> list = tenantAlbumMusicMapper.getByAlbumAndEnable(tenantAlbumIds);
+        // 根据专辑ID分组 在根据声部分类 分组
+        Map<Long, Map<SubjectTypeEnum, Long>> map = list.stream()
+            .collect(Collectors.groupingBy(TenantAlbumMusic::getTenantAlbumId, Collectors.groupingBy(TenantAlbumMusic::getSubjectType,Collectors.counting())));
+
+        for (TenantGroupAlbumWrapper.BuyTenantAlbum buyTenantAlbum : buyAlbumInfo) {
+            Map<SubjectTypeEnum, Long> subjectTypeEnumLongMap = map.get(buyTenantAlbum.getId());
+            if (subjectTypeEnumLongMap != null) {
+                buyTenantAlbum.setMusicCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.MUSIC,0L).intValue());
+                buyTenantAlbum.setEnsembleCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.ENSEMBLE,0L).intValue());
+                buyTenantAlbum.setSubjectCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.SUBJECT,0L).intValue());
+            } else {
+                buyTenantAlbum.setMusicCounts(0);
+                buyTenantAlbum.setEnsembleCounts(0);
+                buyTenantAlbum.setSubjectCounts(0);
+            }
+            buyTenantAlbum.setMusicNum(buyTenantAlbum.getMusicCounts() + buyTenantAlbum.getEnsembleCounts()+buyTenantAlbum.getSubjectCounts());
+        }
 
         // 如果学生购买 判断购买次数
         if (clientType == ClientEnum.STUDENT) {

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

@@ -381,7 +381,7 @@ public class TenantAlbumWrapper {
     public static class TenantAlbumPurchaseJson {
 
         @ApiModelProperty("采购周期类型")
-        private String purchaseType;
+        private String type;
 
         @ApiModelProperty("金额")
         private BigDecimal price;

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantGroupAlbumWrapper.java

@@ -227,6 +227,15 @@ public class TenantGroupAlbumWrapper {
         private String purchaseJson;
 
 
+        @ApiModelProperty("合奏曲目数量")
+        private Integer EnsembleCounts;
+
+        @ApiModelProperty("小曲目数量")
+        private Integer MusicCounts;
+
+        @ApiModelProperty("声部曲目数")
+        private Integer SubjectCounts;
+
         @ApiModelProperty("机构小组专辑ID ,学生购买需传参")
         private Long tenantGroupAlbumId;
 

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

@@ -30,7 +30,7 @@
 		FROM music_sheet m
         left join tenant_album_music t on t.music_sheet_id_ = m.id_
         <where>
-            m.state_ = true and m.del_flag_ = false and t.del_flag_ = 0
+            m.state_ = true and m.del_flag_ = 0 and t.del_flag_ = 0
             <if test="param.musicTagId != null ">
                 and find_in_set(#{param.musicTagId},m.music_subject_)
             </if>
@@ -87,4 +87,17 @@
         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}
     </select>
+
+    <select id="getByAlbumAndEnable" resultType="com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic">
+        select
+        t.*
+        from tenant_album_music t
+        inner join music_sheet t1 on t.music_sheet_id_ = t1.id_
+        where
+        t.del_flag_ = 0 and t1.state_ = 1 and t1.del_flag_ = 0
+        and t.tenant_album_id_ in
+        <foreach collection="tenantAlbumIds" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 1 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TenantAlbumSheetController.java

@@ -81,7 +81,7 @@ public class TenantAlbumSheetController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        query.setTenantId(Optional.ofNullable(user.getTenantId()).orElse(-1L));
+        // query.setTenantId(Optional.ofNullable(user.getTenantId()).orElse(-1L));
         query.setClientType(ClientEnum.TENANT_STUDENT);
         IPage<TenantAlbumMusicWrapper.StudentTenantAlbumMusic> page = tenantAlbumMusicService.selectPage(QueryInfo.getPage(query), query);
         return succeed((PageUtil.pageInfo(page)));

+ 1 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TenantAlbumSheetController.java

@@ -49,7 +49,7 @@ public class TenantAlbumSheetController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        query.setTenantId(Optional.ofNullable(user.getTenantId()).orElse(-1L));
+        // query.setTenantId(Optional.ofNullable(user.getTenantId()).orElse(-1L));
         query.setClientType(ClientEnum.TEACHER);
         IPage<TenantAlbumMusicWrapper.StudentTenantAlbumMusic> page = tenantAlbumMusicService.selectPage(QueryInfo.getPage(query), query);
         return succeed((PageUtil.pageInfo(page)));

+ 1 - 1
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantAlbumSheetController.java

@@ -63,7 +63,7 @@ public class TenantAlbumSheetController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        query.setTenantId(Optional.ofNullable(user.getTenantId()).orElse(-1L));
+        // query.setTenantId(Optional.ofNullable(user.getTenantId()).orElse(-1L));
         query.setClientType(ClientEnum.TENANT);
         IPage<TenantAlbumMusicWrapper.StudentTenantAlbumMusic> page = tenantAlbumMusicService.selectPage(QueryInfo.getPage(query), query);
         return succeed((PageUtil.pageInfo(page)));