소스 검색

Merge branch 'feature/0721-tenant'

# Conflicts:
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java
yuanliang 1 년 전
부모
커밋
b0818cab0b
43개의 변경된 파일258개의 추가작업 그리고 92개의 파일을 삭제
  1. 3 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantAlbumController.java
  2. 0 7
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserPaymentClient.java
  3. 3 0
      cooleshow-user/user-admin/src/main/resources/bootstrap-dev.yml
  4. 3 0
      cooleshow-user/user-admin/src/main/resources/bootstrap-prod.yml
  5. 5 24
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/StudentTrainOverviewDto.java
  6. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PaymentDivMember.java
  7. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PaymentDivMemberRecord.java
  8. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PaymentMerchantConfig.java
  9. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysGoodsPrice.java
  10. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAccountRecord.java
  11. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantActivationCode.java
  12. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbum.java
  13. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbumMusic.java
  14. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbumPurchase.java
  15. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbumRef.java
  16. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantApplyRecord.java
  17. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantEntryRecord.java
  18. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantInfo.java
  19. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantMember.java
  20. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantPersonStat.java
  21. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantStaff.java
  22. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantUnbindHistory.java
  23. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantUnbindRecord.java
  24. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UnbindAuthUser.java
  25. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserTenantAlbumRecord.java
  26. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java
  27. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  28. 20 15
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java
  29. 21 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java
  30. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantAlbumMusicWrapper.java
  31. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantAlbumMusicMapper.xml
  32. 0 5
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysMusicCompareRecordController.java
  33. 6 4
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/UserOrderRefundController.java
  34. 3 0
      cooleshow-user/user-student/src/main/resources/bootstrap-dev.yml
  35. 3 0
      cooleshow-user/user-student/src/main/resources/bootstrap-prod.yml
  36. 77 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/StudentController.java
  37. 0 5
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SysMusicCompareRecordController.java
  38. 18 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java
  39. 3 0
      cooleshow-user/user-teacher/src/main/resources/bootstrap-dev.yml
  40. 3 0
      cooleshow-user/user-teacher/src/main/resources/bootstrap-prod.yml
  41. 9 9
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTenantController.java
  42. 3 0
      cooleshow-user/user-tenant/src/main/resources/bootstrap-dev.yml
  43. 3 0
      cooleshow-user/user-tenant/src/main/resources/bootstrap-prod.yml

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

@@ -18,6 +18,7 @@ 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 org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -142,7 +143,7 @@ public class TenantAlbumController {
             tenantAlbumSheets.stream().forEach(t->{
                 String musicSubject = t.getMusicSubject();
 
-                if (!musicSubject.isEmpty()){
+                if (StringUtils.isNotBlank(musicSubject)){
                     //设置对应声部名称
                     List<Subject> subject = subjectService.findBySubjectByIdList(musicSubject);
                     t.setMusicSubjectName(subject.get(0).getName());
@@ -151,7 +152,7 @@ public class TenantAlbumController {
 
                 //设置对应标签名称
                 String musicTag = t.getMusicTag();
-                if (!musicTag.isEmpty()){
+                if (StringUtils.isNotBlank(musicTag)){
                     String[] split = musicTag.split(",");
                     for (String s : split) {
                         List<Long> list = new ArrayList<>();

+ 0 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserPaymentClient.java

@@ -137,13 +137,6 @@ public class UserPaymentClient {
         }
         log.info("refund vendor={}, refundResp={}", vendor, JSON.toJSONString(refundResp));
 
-        // 退款订单确认
-        UserOrderRefundBill refundBill = userOrderRefundBillService.getByTransNoOrOrderNo(null, refundResp.getMerOrderNo());
-        if (Objects.isNull(refundBill)) {
-            log.warn("refund REFUND_FAILED, vendor={}, refundResp={}", vendor, JSON.toJSONString(refundResp));
-            return refundResp.getMsg();
-        }
-
         // 执行退款回调流程
         userPaymentCoreService.refundPaymentCallback(refundResp);
 

+ 3 - 0
cooleshow-user/user-admin/src/main/resources/bootstrap-dev.yml

@@ -10,4 +10,7 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true
 

+ 3 - 0
cooleshow-user/user-admin/src/main/resources/bootstrap-prod.yml

@@ -10,3 +10,6 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true

+ 5 - 24
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/StudentTrainOverviewDto.java

@@ -1,11 +1,13 @@
 package com.yonge.cooleshow.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 /**
  * @Author Joburgess
  * @Date 2021/8/11 0011
  */
+@Data
 public class StudentTrainOverviewDto {
 
     @ApiModelProperty("训练天数")
@@ -14,30 +16,9 @@ public class StudentTrainOverviewDto {
     @ApiModelProperty("训练时长")
     private int trainTime = 0;
 
+    @ApiModelProperty("平均训练时长")
+    private int avgTrainTime = 0;
+
     @ApiModelProperty("训练次数")
     private int trainNum = 0;
-
-    public int getTrainDays() {
-        return trainDays;
-    }
-
-    public void setTrainDays(int trainDays) {
-        this.trainDays = trainDays;
-    }
-
-    public int getTrainTime() {
-        return trainTime;
-    }
-
-    public void setTrainTime(int trainTime) {
-        this.trainTime = trainTime;
-    }
-
-    public int getTrainNum() {
-        return trainNum;
-    }
-
-    public void setTrainNum(int trainNum) {
-        this.trainNum = trainNum;
-    }
 }

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PaymentDivMember.java

@@ -23,7 +23,8 @@ import java.util.Date;
 public class PaymentDivMember implements Serializable {
 
     @ApiModelProperty("主键") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PaymentDivMemberRecord.java

@@ -26,7 +26,8 @@ import java.math.BigDecimal;
 public class PaymentDivMemberRecord implements Serializable {
 
     @ApiModelProperty("主键") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PaymentMerchantConfig.java

@@ -24,7 +24,8 @@ import java.util.Date;
 public class PaymentMerchantConfig implements Serializable {
 
     @ApiModelProperty("主键") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysGoodsPrice.java

@@ -24,7 +24,8 @@ import java.math.BigDecimal;
 public class SysGoodsPrice implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("商品类型") 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAccountRecord.java

@@ -26,7 +26,7 @@ import java.math.BigDecimal;
 public class TenantAccountRecord implements Serializable {
 
     @ApiModelProperty("id") 
-	    @TableId(value = "id_")
+	    @TableId(value = "id_",type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构id") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantActivationCode.java

@@ -24,7 +24,8 @@ import java.util.Date;
 public class TenantActivationCode implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbum.java

@@ -24,7 +24,8 @@ import java.math.BigDecimal;
 public class TenantAlbum implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("专辑名称") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbumMusic.java

@@ -24,7 +24,8 @@ import java.util.Date;
 public class TenantAlbumMusic implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbumPurchase.java

@@ -24,7 +24,8 @@ import java.math.BigDecimal;
 public class TenantAlbumPurchase implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbumRef.java

@@ -23,7 +23,8 @@ import java.util.Date;
 public class TenantAlbumRef implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantApplyRecord.java

@@ -24,7 +24,8 @@ import java.util.Date;
 public class TenantApplyRecord implements Serializable {
 
     @ApiModelProperty("主键ID") 
-    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("机构ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantEntryRecord.java

@@ -23,7 +23,8 @@ import java.util.Date;
 public class TenantEntryRecord implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构入驻申请记录") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantInfo.java

@@ -24,7 +24,8 @@ import java.util.Date;
 public class TenantInfo  implements Serializable  {
 
     @ApiModelProperty("主键ID")
-    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("名称")

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantMember.java

@@ -34,7 +34,8 @@ import java.math.BigDecimal;
 @TableName("tenant_member")
 public class TenantMember implements Serializable {
 
-    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("支付类型 ADAPAY,YEEPAY")

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantPersonStat.java

@@ -22,7 +22,8 @@ import java.util.Date;
 @TableName("tenant_person_stat")
 public class TenantPersonStat implements Serializable {
 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构编号") 

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantStaff.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -22,7 +23,8 @@ import java.util.Date;
 public class TenantStaff implements Serializable {
 
     @ApiModelProperty("主键ID") 
-	    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
 	    private Long id;
 
     @ApiModelProperty("机构ID") 

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantUnbindHistory.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -22,7 +23,8 @@ import java.util.Date;
 public class TenantUnbindHistory implements Serializable {
 
     @ApiModelProperty("主键ID")
-    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("机构ID")

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantUnbindRecord.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -22,7 +23,8 @@ import java.util.Date;
 public class TenantUnbindRecord implements Serializable {
 
     @ApiModelProperty("主键ID")
-    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("机构ID")

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UnbindAuthUser.java

@@ -23,7 +23,8 @@ import java.util.Date;
 public class UnbindAuthUser implements Serializable {
 
     @ApiModelProperty("主键") 
-    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("员工ID") 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserTenantAlbumRecord.java

@@ -25,7 +25,8 @@ import java.util.Date;
 public class UserTenantAlbumRecord implements Serializable {
 
     @ApiModelProperty("记录id") 
-    @TableId(value = "id_")
+
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("用户id") 

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

@@ -310,7 +310,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 																				queryInfo.getEndTime(),queryInfo.getClientId());
 		}
 
-		if(CollectionUtils.isEmpty(userTrainChartData)||userTrainChartData.size()!=7){
+		if(CollectionUtils.isEmpty(userTrainChartData) || userTrainChartData.size() < 7){
 			Set<LocalDate> trainDates = userTrainChartData.stream().map(StudentTrainChartDto::getTrainDate).collect(Collectors.toSet());
 			LocalDate startLocalDate = LocalDate.parse(queryInfo.getStartTime(), DateUtil.dateFormatter);
 			for (int i = 1; i <= 7; i++) {
@@ -340,6 +340,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		pageInfo.setRows(dataList);
 		Map<String, Object> result = new HashMap<>();
 		userTrainOverView.setTrainTime(userTrainOverView.getTrainTime()/60);
+		userTrainOverView.setAvgTrainTime(userTrainOverView.getTrainTime() / userTrainOverView.getTrainDays());
 		result.put("userTrainOverView",userTrainOverView);
 
 		List<IndexBaseDto> userTrainChartResult = new ArrayList<>();

+ 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;
@@ -134,6 +136,12 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Autowired
     private TenantUnbindHistoryMapper tenantUnbindHistoryMapper;
 
+    @Autowired
+    private TenantAlbumMapper tenantAlbumMapper;
+
+    @Autowired
+    private TenantAlbumRefMapper tenantAlbumRefMapper;
+
 
     @Autowired
     private ImGroupCoreService imGroupCoreService;
@@ -286,6 +294,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()

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

@@ -657,7 +657,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         reqConfig.setUserId(userInfo.getUserId());
 
         // 用户下单请求锁
-        String lockName = redisCacheService.getPaymentCacheKey(userInfo.getUserId());
+        String lockName = redisCacheService.getExecuteOrderCacheKey(userInfo.getUserId());
 
         // 分布式锁,用户支付请求
         return DistributedLock.of(redissonClient).runIfLockToFunction(lockName, this::executePayment, reqConfig, 10L);
@@ -1174,9 +1174,8 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             throw  new BizException("订单状态异常");
         }
 
-
         // 执行状态锁定
-        String lockName = redisCacheService.getExecuteOrderCacheKey(paymentOrder.getUserId().toString());
+        String lockName = redisCacheService.getPaymentCacheKey(paymentOrder.getOrderNo());
         DistributedLock.of(redissonClient).runIfLockCanGet(lockName, () -> {
             // 提交退款申请记录
             UserOrderRefund userRefundOrder = new UserOrderRefund();
@@ -1205,19 +1204,25 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             refundOrder.setReason(reason);
             refundOrder.setTransNo(paymentOrder.getTransNo());
             refundOrder.setPaymentOrderNo(paymentOrder.getOrderNo());
-            RefundResp refundResp = paymentServiceContext.getPaymentService(paymentOrder.getPaymentVendor()).refund(refundOrder);
-            // 申请请求失败
-            if (PaymentStatus.FAILED == refundResp.getPaymentStatus()) {
-                orderRefundBill.setStatus(TradeStatusEnum.failed);
-                orderRefundBill.setPayFailMsg(refundResp.getMsg());
-            } else {
-                orderRefundBill.setTransNo(refundResp.getTransNo());
-                orderRefundBill.setStatus(TradeStatusEnum.pending);
-            }
-            userOrderRefundBillService.save(orderRefundBill);
 
-            //处理退款业务
-           userOrderRefundService.orderRefundSuccessBizHandle(userRefundOrder.getId());
+            // 执行状态锁定
+            String lockNameInner = redisCacheService.getPaymentCacheKey(orderRefundBill.getBillNo());
+            DistributedLock.of(redissonClient).runIfLockCanGet(lockNameInner, () -> {
+                RefundResp refundResp = paymentServiceContext.getPaymentService(paymentOrder.getPaymentVendor()).refund(refundOrder);
+                // 申请请求失败
+                if (PaymentStatus.FAILED == refundResp.getPaymentStatus()) {
+                    orderRefundBill.setStatus(TradeStatusEnum.failed);
+                    orderRefundBill.setPayFailMsg(refundResp.getMsg());
+                } else {
+                    orderRefundBill.setTransNo(refundResp.getTransNo());
+                    orderRefundBill.setStatus(TradeStatusEnum.pending);
+                }
+                userOrderRefundBillService.save(orderRefundBill);
+
+                //处理退款业务
+               userOrderRefundService.orderRefundSuccessBizHandle(userRefundOrder.getId());
+
+            }, 10L, TimeUnit.SECONDS);
 
         }, 10L, TimeUnit.SECONDS);
 

+ 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;
 
@@ -351,4 +356,20 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     public void setImToken(String imToken) {
         this.imToken = imToken;
     }
+
+    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;
+    }
 }

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

@@ -173,6 +173,9 @@ public class TenantAlbumMusicWrapper {
         @AllArgsConstructor
         @ApiModel(" TenantAlbumMusic-学生端专辑曲目返回")
         public static class StudentTenantAlbumMusic implements QueryInfo {
+            @ApiModelProperty(value = "曲目表id")
+            private Long id;
+
             @ApiModelProperty(value = "精品标志")
             private String exquisiteFlag;
 

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

@@ -19,6 +19,7 @@
     
     <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper$StudentTenantAlbumMusic">
 		SELECT
+        m.id_ as id,
         m.music_sheet_name_ as musicSheetName,
         m.composer_ as composer,
         m.user_id_ as userId,

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

@@ -76,11 +76,6 @@ 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));
     }
 

+ 6 - 4
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/UserOrderRefundController.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderRefundReq;
 import com.yonge.cooleshow.biz.dal.dto.search.UserOrderRefundSearch;
+import com.yonge.cooleshow.biz.dal.service.RedisCacheService;
 import com.yonge.cooleshow.biz.dal.service.UserPaymentCoreService;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.service.UserOrderRefundService;
@@ -38,6 +39,8 @@ public class UserOrderRefundController extends BaseController {
     @Autowired
     private UserPaymentCoreService userPaymentCoreService;
 
+    @Autowired
+    private RedisCacheService redisCacheService;
     /**
      * 查询单条
      */
@@ -104,10 +107,9 @@ public class UserOrderRefundController extends BaseController {
 
         try {
             DistributedLock.of(redissonClient)
-                    .runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(refundReq.getUserId())
-                            , () -> {
-                        userPaymentCoreService.refundPayment(refundReq.getOrderNo(),refundReq.getReason());
-                            }, 10L,TimeUnit.SECONDS);
+                    .runIfLockCanGet(redisCacheService.getPaymentCacheKey(refundReq.getOrderNo())
+                            , () -> userPaymentCoreService.refundPayment(refundReq.getOrderNo(),refundReq.getReason()),
+                            10L,TimeUnit.SECONDS);
             return HttpResponseResult.succeed();
         } catch (BizException e) {
             return HttpResponseResult.failed(e.getMessage());

+ 3 - 0
cooleshow-user/user-student/src/main/resources/bootstrap-dev.yml

@@ -10,3 +10,6 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true

+ 3 - 0
cooleshow-user/user-student/src/main/resources/bootstrap-prod.yml

@@ -10,3 +10,6 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true

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

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

@@ -73,11 +73,6 @@ 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();
 
     }
+
+    @PostMapping("/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);
+
+    }
 }

+ 3 - 0
cooleshow-user/user-teacher/src/main/resources/bootstrap-dev.yml

@@ -10,3 +10,6 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true

+ 3 - 0
cooleshow-user/user-teacher/src/main/resources/bootstrap-prod.yml

@@ -10,3 +10,6 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true

+ 9 - 9
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTenantController.java

@@ -110,15 +110,15 @@ public class OpenTenantController {
             }
         }
 
-//        Long tenantId = tenantStaff.getTenantId();
-//        TenantInfo tenantInfo = tenantInfoService.getById(tenantId);
-//        if(tenantInfo == null){
-//            throw new BizException("机构不存在");
-//        }
-//        if (Boolean.FALSE.equals(tenantInfo.getEnableFlag())) {
-//            String configValue = sysConfigService.findConfigValue("customer_service_phone");
-//            throw new BizException(5004, "机构已停用,请联系客服/n" + (StringUtils.isEmpty(configValue) ? "" : configValue));
-//        }
+        Long tenantId = tenantStaff.getTenantId();
+        TenantInfo tenantInfo = tenantInfoService.getById(tenantId);
+        if(tenantInfo == null){
+            throw new BizException("机构不存在");
+        }
+        if (Boolean.FALSE.equals(tenantInfo.getEnableFlag())) {
+            // 机构冻结
+            throw new BizException(5004, openId);
+        }
         tenantStaff.setWxOpenid(openId);
         tenantStaffService.updateById(tenantStaff);
         return HttpResponseResult.succeed();

+ 3 - 0
cooleshow-user/user-tenant/src/main/resources/bootstrap-dev.yml

@@ -10,3 +10,6 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true

+ 3 - 0
cooleshow-user/user-tenant/src/main/resources/bootstrap-prod.yml

@@ -10,3 +10,6 @@ spring:
         refresh:
           enabled: true
         enabled: true
+        shared-configs:
+          - data-id: base.yaml
+            refresh: true