瀏覽代碼

Merge branch 'feature/0721-tenant'

# Conflicts:
#	cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentMapper.xml
yuanliang 1 年之前
父節點
當前提交
676d9c5e27
共有 37 個文件被更改,包括 536 次插入422 次删除
  1. 2 2
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/handler/BaseAuthenticationFailureEvenHandler.java
  2. 1 1
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/service/DefaultUserDetailsService.java
  3. 10 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  4. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantAlbumController.java
  5. 2 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantEntryRecordController.java
  6. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDetailDao.java
  7. 2 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  8. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Student.java
  9. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java
  10. 5 151
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderDetail.java
  11. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java
  12. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  13. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantAlbumService.java
  14. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderDetailService.java
  15. 29 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  16. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  17. 27 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java
  18. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  19. 31 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java
  20. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantApplyRecordServiceImpl.java
  21. 5 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantInfoServiceImpl.java
  22. 8 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderDetailServiceImpl.java
  23. 110 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  24. 24 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java
  25. 25 93
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderDetailVo.java
  26. 2 95
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderVo.java
  27. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantActivationCodeWrapper.java
  28. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantAlbumWrapper.java
  29. 3 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentMapper.xml
  30. 2 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysSuggestionMapper.xml
  31. 21 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderDetailMapper.xml
  32. 2 12
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicAlbumController.java
  33. 54 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TenantAlbumSheetController.java
  34. 47 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/UserTenantAlbumRecordController.java
  35. 20 0
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java
  36. 36 12
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenSubjectController.java
  37. 1 1
      toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/wx/OriginalWxAppTemplate.java

+ 2 - 2
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/handler/BaseAuthenticationFailureEvenHandler.java

@@ -52,11 +52,11 @@ public class BaseAuthenticationFailureEvenHandler extends ExceptionMappingAuthen
             resultCode = 5004;
             // 用户未绑定openId错误信息
             message = "该机构已被冻结,请联系管理员";
-        } else if (message.startsWith("MA:5006:")) {
+        } else if (message.startsWith("MA:5005:")) {
             // 返回用户绑定openId
             data = message.split(":")[2];
             // 用户未绑定openId错误码
-            resultCode = 5006;
+            resultCode = 5005;
             // 用户未绑定openId错误信息
             message = "账号已冻结";
         }

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/service/DefaultUserDetailsService.java

@@ -102,7 +102,7 @@ public class DefaultUserDetailsService implements UserDetailsService {
             }
             if (UserLockFlag.LOCKED.name().equals(tenantStaff.getStatus())) {
                 // 账号被锁定
-                throw new UsernameNotFoundException("MA:5006:" + openid);
+                throw new UsernameNotFoundException("MA:5005:" + openid);
             }
             if (Boolean.FALSE.equals(tenantStaff.getTenantEnableFlag())) {
                 // 机构锁定

+ 10 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -394,4 +394,14 @@ public interface SysConfigConstant {
      * 机构默认logo
      */
     String TENANT_DEFAULT_HEAD = "tenant_default_head";
+
+    /**
+     * 机构学生默认头像
+     */
+    String TENANT_STUDENT_BOY_AVATAR = "tenant_student_boy_avatar";
+
+    /**
+     * 机构学生默认头像
+     */
+    String TENANT_STUDENT_GIRL_AVATAR = "tenant_student_girl_avatar";
 }

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

@@ -131,7 +131,7 @@ public class TenantAlbumController {
             List<TenantAlbumWrapper.TenantAlbumSheet> tenantAlbumSheets = value.stream().map(next -> {
 
                 TenantAlbumWrapper.TenantAlbumSheet tenantAlbumSheet = new TenantAlbumWrapper.TenantAlbumSheet();
-                BeanUtils.copyProperties(value.get(0), tenantAlbumSheet);
+                BeanUtils.copyProperties(next, tenantAlbumSheet);
                 Long musicSheetId = tenantAlbumSheet.getMusicSheetId();
                 MusicSheetVo musicSheet = idMsMap.getOrDefault(musicSheetId, new MusicSheetVo());
                 tenantAlbumSheet.setMusicSheetName(musicSheet.getMusicSheetName());

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

@@ -91,11 +91,11 @@ public class TenantEntryRecordController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('tenantApply/entry')")
     public HttpResponseResult<Boolean> entry(@RequestBody TenantApplyRecordWrapper.TenantEntry entry) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        TenantInfo tenantInfo = tenantInfoService.lambdaQuery().eq(TenantInfo::getUserId, sysUser.getId())
+        /*TenantInfo tenantInfo = tenantInfoService.lambdaQuery().eq(TenantInfo::getUserId, sysUser.getId())
                 .last("limit 1").one();
         if (tenantInfo == null) {
             throw new BizException("非法请求");
-        }
+        }*/
         Long verifyUserId = sysUser.getId();
 
         return succeed(tenantApplyRecordService.entry(entry,verifyUserId));

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDetailDao.java

@@ -42,4 +42,6 @@ public interface UserOrderDetailDao extends BaseMapper<UserOrderDetail>{
 	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo>
 	 */
     List<UserOrderDetailVo> getOrderDetilListByOrderNo(@Param("orderNo")String orderNo);
+
+    List<UserOrderDetailVo> getOrderDetilListByOrderNos(@Param("orderNos") List<String> orderNos);
 }

+ 2 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java

@@ -4,13 +4,12 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
-import com.yonge.toolset.payment.base.enums.PaymentClientEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Optional;
@@ -58,7 +57,7 @@ public class OrderReq {
 
 
     @ApiModel(value = "OrderReqInfo对象", description = "下单请求业务详情对象")
-    public class OrderReqInfo {
+    public static class OrderReqInfo implements Serializable {
         @ApiModelProperty(value = "y用户id", hidden = true)
         private Long userId;
         @ApiModelProperty(value = "推荐用户id(有推荐人的情况)", hidden = true)

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Student.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.common.enums.ESettlementFrom;
 import com.yonge.cooleshow.common.enums.UserLockFlag;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
@@ -16,6 +17,7 @@ import java.util.Date;
 /**
  * 学生表
  */
+@Data
 @TableName("student")
 @ApiModel(value = "Student对象", description = "学生表")
 public class Student implements Serializable {
@@ -98,6 +100,10 @@ public class Student implements Serializable {
     @TableField(value = "tenant_id_")
     private Long tenantId;
 
+    @ApiModelProperty("头像")
+    @TableField(value = "avatar_")
+    private String avatar;
+
     public Long getTenantId() {
         return tenantId;
     }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.common.enums.UserLockFlag;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
@@ -17,6 +18,7 @@ import java.util.Date;
 /**
  * 教师表
  */
+@Data
 @TableName("teacher")
 @ApiModel(value = "Teacher对象", description = "教师表")
 public class Teacher implements Serializable {
@@ -241,6 +243,10 @@ public class Teacher implements Serializable {
     @TableField(value = "settlement_from_")
     private ESettlementFrom settlementFrom;
 
+    @ApiModelProperty("头像")
+    @TableField(value = "avatar_")
+    private String avatar;
+
 
     public ESettlementFrom getSettlementFrom() {
         return settlementFrom;

+ 5 - 151
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderDetail.java

@@ -12,11 +12,16 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * 平台订单表
  */
+@Getter
+@Setter
 @TableName("user_order_detail")
 @ApiModel(value = "UserOrderDetail对象", description = "平台订单表")
 public class UserOrderDetail implements Serializable {
@@ -81,155 +86,4 @@ public class UserOrderDetail implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date updateTime;
 
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getOrderNo() {
-        return orderNo;
-    }
-
-    public void setOrderNo(String orderNo) {
-        this.orderNo = orderNo;
-    }
-
-    public String getSubOrderNo() {
-        return subOrderNo;
-    }
-
-    public void setSubOrderNo(String subOrderNo) {
-        this.subOrderNo = subOrderNo;
-    }
-
-    public Long getMerchId() {
-        return merchId;
-    }
-
-    public void setMerchId(Long merchId) {
-        this.merchId = merchId;
-    }
-
-    public GoodTypeEnum getGoodType() {
-        return goodType;
-    }
-
-    public void setGoodType(GoodTypeEnum goodType) {
-        this.goodType = goodType;
-    }
-
-    public Long getBizId() {
-        return bizId;
-    }
-
-    public void setBizId(Long bizId) {
-        this.bizId = bizId;
-    }
-
-    public String getBizContent() {
-        return bizContent;
-    }
-
-    public void setBizContent(String bizContent) {
-        this.bizContent = bizContent;
-    }
-
-    public String getGoodName() {
-        return goodName;
-    }
-
-    public void setGoodName(String goodName) {
-        this.goodName = goodName;
-    }
-
-    public String getGoodUrl() {
-        return goodUrl;
-    }
-
-    public void setGoodUrl(String goodUrl) {
-        this.goodUrl = goodUrl;
-    }
-
-    public BigDecimal getOriginalPrice() {
-        return originalPrice;
-    }
-
-    public void setOriginalPrice(BigDecimal originalPrice) {
-        this.originalPrice = originalPrice;
-    }
-
-    public BigDecimal getExpectPrice() {
-        return expectPrice;
-    }
-
-    public void setExpectPrice(BigDecimal expectPrice) {
-        this.expectPrice = expectPrice;
-    }
-
-    public Integer getGoodNum() {
-        return goodNum;
-    }
-
-    public void setGoodNum(Integer goodNum) {
-        this.goodNum = goodNum;
-    }
-
-    public BigDecimal getGoodPrice() {
-        return goodPrice;
-    }
-
-    public void setGoodPrice(BigDecimal goodPrice) {
-        this.goodPrice = goodPrice;
-    }
-
-    public BigDecimal getPlantformFee() {
-        return plantformFee;
-    }
-
-    public void setPlantformFee(BigDecimal plantformFee) {
-        this.plantformFee = plantformFee;
-    }
-
-    public BigDecimal getPlantformFeeRate() {
-        return plantformFeeRate;
-    }
-
-    public void setPlantformFeeRate(BigDecimal plantformFeeRate) {
-        this.plantformFeeRate = plantformFeeRate;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    public BigDecimal getActualPrice() {
-        return actualPrice;
-    }
-
-    public void setActualPrice(BigDecimal actualPrice) {
-        this.actualPrice = actualPrice;
-    }
-
-    public BigDecimal getCouponAmount() {
-        return couponAmount;
-    }
-
-    public void setCouponAmount(BigDecimal couponAmount) {
-        this.couponAmount = couponAmount;
-    }
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java

@@ -22,6 +22,7 @@ import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * MusicAlbumService服务类
@@ -163,4 +164,8 @@ public interface MusicAlbumService extends IService<MusicAlbum> {
     TenantAlbumWrapper.TenantAlbum detailAlbum(String albumId);
 
     TenantAlbumWrapper.TenantAlbum tenantDetailAlbum(String albumId);
+
+    Map<Long, MusicAlbum> getMapByIds(List<Long> bizIds);
+
+    Map<Long,Long> getMusicCountByIds(List<Long> bizIds);
 }

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

@@ -28,6 +28,7 @@ import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 /**
  * MusicSheetService服务类
@@ -381,4 +382,11 @@ public interface MusicSheetService extends IService<MusicSheet> {
     void orderAfterSheet(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo);
 
     List<MusicSheetUploadCountVo> countByUser(List<Long> userIds);
+
+    /**
+     * 获取曲目信息
+     *
+     * @param bizIds 曲目id
+     */
+    Map<Long,MusicSheet> getMapByIds(List<Long> bizIds);
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantAlbumService.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.entity.TenantAlbum;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 机构专辑
@@ -63,6 +64,10 @@ public interface TenantAlbumService extends IService<TenantAlbum>  {
 
     void updateAlbum(Long id, TenantAlbum tenantAlbum, List<TenantAlbumWrapper.MusicSheetData> musicSheetDataList);
 
+    Map<Long, TenantAlbum> getMapByIds(List<Long> bizIds);
+
+    Map<Long, Long> getMusicCountByIds(List<Long> bizIds);
+
 
     /**
      * 添加机构专辑数据

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderDetailService.java

@@ -35,6 +35,9 @@ public interface UserOrderDetailService extends IService<UserOrderDetail>  {
 	 * @return: com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo
 	 */
 	List<UserOrderDetailVo> getOrderDetilListByOrderNo(String orderNo);
+
+    List<UserOrderDetailVo> getOrderDetilListByOrderNos(List<String> orderNos);
+
     /**
      * 分页查询
      * @author liweifan

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

@@ -576,6 +576,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         //声部
         String subjectTypes = tenantAlbum.getSubjectTypes();
 
+        album.setId(String.valueOf(tenantAlbum.getId()));
         album.setName(name);
         album.setCoverImg(coverImg);
         album.setMusicNum(size);
@@ -584,6 +585,34 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         return album;
     }
 
+    @Override
+    public Map<Long, MusicAlbum> getMapByIds(List<Long> bizIds) {
+        if (CollectionUtils.isEmpty(bizIds)) {
+            return new HashMap<>();
+        }
+        List<MusicAlbum> musicAlbums = this.lambdaQuery().in(MusicAlbum::getId, bizIds).list();
+        if (CollectionUtils.isEmpty(musicAlbums)) {
+            return new HashMap<>();
+        }
+        return musicAlbums.stream().collect(Collectors.toMap(MusicAlbum::getId, v -> v));
+
+    }
+
+    @Override
+    public Map<Long, Long> getMusicCountByIds(List<Long> bizIds) {
+        if (CollectionUtils.isEmpty(bizIds)) {
+            return new HashMap<>();
+        }
+        List<AlbumMusicRelate> list = albumMusicRelateService.lambdaQuery()
+                .in(AlbumMusicRelate::getAlbumId, bizIds)
+                .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return new HashMap<>();
+        }
+        return list.stream().collect(Collectors.groupingBy(o->o.getAlbumId(),Collectors.counting()));
+
+    }
+
     private boolean checkNameRepeat(String albumName, Long id) {
         LambdaQueryChainWrapper<MusicAlbum> eq = this.lambdaQuery()
                                                      .eq(MusicAlbum::getDelFlag,0)

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

@@ -70,6 +70,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -1688,6 +1689,21 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     }
 
     @Override
+    public Map<Long, MusicSheet> getMapByIds(List<Long> bizIds) {
+        if (CollectionUtils.isEmpty(bizIds)) {
+            return new HashMap<>();
+        }
+        List<MusicSheet> sheetList = this.lambdaQuery()
+                .in(MusicSheet::getId, bizIds)
+                .list();
+        if (CollectionUtils.isEmpty(sheetList)) {
+            return new HashMap<>();
+        }
+        return sheetList.stream().collect(Collectors.toMap(MusicSheet::getId, Function.identity()));
+
+    }
+
+    @Override
     public Boolean updateMusicImg(MusicImgDto musicImgDto, Long musicSheetId) {
         MusicSheet musicSheet = new MusicSheet();
         musicSheet.setMusicImg(musicImgDto.getMusicImg());

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

@@ -840,33 +840,33 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
                 PaymentDivMember paymentDivMember = null;
                 String divideOrderNo = IdWorker.getIdStr();
                 BigDecimal feeAmt = BigDecimal.ZERO;
-                if (merchantConfig != null && newestPayment != null) {
-                    paymentDivMember = paymentDivMemberService.getByAppIdAndTenantId(merchantConfig.getAppId(), k);
-                    if (paymentDivMember != null) {
-                        // 执行分账逻辑
-                        BasePaymentService paymentService = paymentServiceContext.getPaymentService(merchantConfig.getPaymentVendor());
-                        DivideReq.DivMember divMember = DivideReq.DivMember.builder()
-                                .memberId(paymentDivMember.getMemberId())
-                                .amount(v)
-                                .feeFlag("Y")
-                                .build();
-                        DivideReq divideReq = DivideReq.builder()
-                                .transNo(newestPayment.getTransNo())
-                                .orderNo(userPaymentOrder.getOrderNo())
-                                .divideOrderNo(divideOrderNo)
-                                .divideAmount(v)
-                                .divMembers(Lists.newArrayList(divMember))
-                                .build();
-                        try {
-                            DivideResp divide = paymentService.divide(divideReq);
-                            feeAmt = divide.getFeeAmount();
-                            tenantEnterFlag = true;
-                        } catch (Exception e) {
-                            log.error("分账失败 分账对象 {} 分账数据 {} 分账订单号 {}", paymentDivMember, divideReq, divideOrderNo);
-                        }
-
-                    }
-                }
+//                if (merchantConfig != null && newestPayment != null) {
+//                    paymentDivMember = paymentDivMemberService.getByAppIdAndTenantId(merchantConfig.getAppId(), k);
+//                    if (paymentDivMember != null) {
+//                        // 执行分账逻辑
+//                        BasePaymentService paymentService = paymentServiceContext.getPaymentService(merchantConfig.getPaymentVendor());
+//                        DivideReq.DivMember divMember = DivideReq.DivMember.builder()
+//                                .memberId(paymentDivMember.getMemberId())
+//                                .amount(v)
+//                                .feeFlag("Y")
+//                                .build();
+//                        DivideReq divideReq = DivideReq.builder()
+//                                .transNo(newestPayment.getTransNo())
+//                                .orderNo(userPaymentOrder.getOrderNo())
+//                                .divideOrderNo(divideOrderNo)
+//                                .divideAmount(v)
+//                                .divMembers(Lists.newArrayList(divMember))
+//                                .build();
+//                        try {
+//                            DivideResp divide = paymentService.divide(divideReq);
+//                            feeAmt = divide.getFeeAmount();
+//                            tenantEnterFlag = true;
+//                        } catch (Exception e) {
+//                            log.error("分账失败 分账对象 {} 分账数据 {} 分账订单号 {}", paymentDivMember, divideReq, divideOrderNo);
+//                        }
+//
+//                    }
+//                }
 
                 // 写入机构分账记录表
                 PaymentDivMemberRecord paymentDivMemberRecord = PaymentDivMemberRecord.builder()

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

@@ -281,7 +281,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         teacherHomeVo.setTeacherDate(teacher.getTeacherDate());
         //身份证号、手机号脱敏
         teacherHomeVo.setIdCardNo(ValueUtil.fuzzyIdCard(teacherHomeVo.getIdCardNo()));
-        teacherHomeVo.setPhone(ValueUtil.fuzzyMobile(teacherHomeVo.getPhone()));
+//        teacherHomeVo.setPhone(ValueUtil.fuzzyMobile(teacherHomeVo.getPhone()));
         teacherHomeVo.setHeardUrl(teacher.getAvatar());
         teacherHomeVo.setIsVip(teacher.getIsVip());
         int num = DateUtil.daysBetween(new Date(), teacher.getMembershipEndTime());

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

@@ -24,10 +24,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -72,6 +69,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
     @Autowired
     private TeacherService teacherService;
 
+
     /**
      * 查询详情
      *
@@ -333,6 +331,35 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
 
     }
 
+    @Override
+    public Map<Long, TenantAlbum> getMapByIds(List<Long> bizIds) {
+        if (CollectionUtils.isEmpty(bizIds)) {
+            return new HashMap<>();
+        }
+        List<TenantAlbum> tenantAlbums = this.lambdaQuery()
+                .in(TenantAlbum::getId, bizIds)
+                .list();
+        if (CollectionUtils.isEmpty(tenantAlbums)) {
+            return new HashMap<>();
+        }
+        return tenantAlbums.stream().collect(Collectors.toMap(TenantAlbum::getId, v -> v));
+
+    }
+
+    @Override
+    public Map<Long, Long> getMusicCountByIds(List<Long> bizIds) {
+        if (CollectionUtils.isEmpty(bizIds)) {
+            return new HashMap<>();
+        }
+        List<TenantAlbumMusic> list = tenantAlbumMusicService.lambdaQuery()
+                .in(TenantAlbumMusic::getTenantAlbumId, bizIds)
+                .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return new HashMap<>();
+        }
+        return list.stream().collect(Collectors.groupingBy(TenantAlbumMusic::getTenantAlbumId,Collectors.counting()));
+    }
+
     @Transactional(rollbackFor = Exception.class)
     private void insertAlbumMusic(Long tenantId, TenantAlbum tenantAlbum,
                                   List<TenantAlbumWrapper.MusicSheetData> musicSheetDataList) {

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

@@ -184,6 +184,7 @@ public class TenantApplyRecordServiceImpl extends ServiceImpl<TenantApplyRecordM
         tenantInfos.stream().forEach(item->{
             String name = tenantEntryRecordMapper.selectName(item.getVerifyUserId());
             item.setVerifyUserName(name);
+            item.setVerifyUserId(item.getVerifyUserId());
         });
         return page.setRecords(tenantInfos);
     }

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

@@ -380,12 +380,13 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
      * @param info TenantInfoWrapper.TenantInfo
      * @return Boolean
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean update(TenantInfo info) {
         // todo  机构冻结状态是否允许修改
         //更新或创建sysUser
         TenantInfo oldTenantInfo = this.getById(info.getId());
-        SysUser sysUser = getAccount(info, oldTenantInfo);
+        SysUser sysUser = getOrCreateAccount(info, oldTenantInfo);
 
         if (sysUser.getId() != null){
             tenantStaffMapper.update(null, Wrappers.<TenantStaff>lambdaUpdate()
@@ -400,12 +401,8 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
             info.setLogo(sysConfigService.findConfigValue(SysConfigConstant.TENANT_DEFAULT_HEAD));
         }
 
-        Long id;
-        if(sysUser.getId() == null){
-            id = info.getUserId();
-        } else {
-            id = sysUser.getId();
-        }
+        //判断修改手机号后所属
+
         tenantInfoMapper.update(null, Wrappers.<TenantInfo>lambdaUpdate()
                 .set(TenantInfo::getName, info.getName())
                 .set(TenantInfo::getLogo, info.getLogo())
@@ -415,7 +412,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
                 .set(TenantInfo::getRegionCode, info.getRegionCode())
                 .set(TenantInfo::getPhone, info.getPhone())
                 .set(TenantInfo::getUsername, info.getUsername())
-                .set(TenantInfo::getUserId, id)
+                .set(TenantInfo::getUserId,sysUser.getId())
                 .eq(TenantInfo::getId, info.getId())
         );
         return true;

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
@@ -15,7 +16,7 @@ import java.util.List;
 @Service
 public class UserOrderDetailServiceImpl extends ServiceImpl<UserOrderDetailDao, UserOrderDetail> implements UserOrderDetailService {
 
-	@Override
+    @Override
     public UserOrderDetailVo detail(Long id) {
         UserOrderDetailVo detail = baseMapper.detail(id);
         return detail;
@@ -29,9 +30,14 @@ public class UserOrderDetailServiceImpl extends ServiceImpl<UserOrderDetailDao,
 
     @Override
     public List<UserOrderDetailVo> getOrderDetilListByOrderNo(String orderNo) {
-        return baseMapper.getOrderDetilListByOrderNo(orderNo);
+        return this.getOrderDetilListByOrderNos(Lists.newArrayList(orderNo));
     }
 
+
+    @Override
+    public List<UserOrderDetailVo> getOrderDetilListByOrderNos(List<String> orderNos) {
+        return baseMapper.getOrderDetilListByOrderNos(orderNos);
+    }
     @Override
     public IPage<UserOrderDetailVo> selectPage(IPage<UserOrderDetailVo> page, OrderDetailSearch query){
         return page.setRecords(baseMapper.selectPage(page, query));

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -20,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
 import com.yonge.cooleshow.biz.dal.wrapper.PaymentDivMemberRecordWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponOrderWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
@@ -65,6 +67,7 @@ import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -129,6 +132,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     @Autowired
     private UserPaymentOrderService userPaymentOrderService;
 
+    @Autowired
+    private UserOrderDetailService userOrderDetailService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private MusicAlbumService musicAlbumService;
+
     //验证订单是否可以下单,获取订单金额信息
     private static final Map<GoodTypeEnum, Function<OrderReq.OrderReqInfo, HttpResponseResult<OrderCreateRes>>> orderCreate = new HashMap<>();
     //插入订单后执行
@@ -240,6 +252,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
                             .amount(userOrderVo.getExpectPrice().doubleValue())
                             .build());
             userOrderVo.setDiscountPrice(BigDecimal.valueOf(couponOrderWrapper.getDiscountedPrices()));
+
+            List<UserOrderDetailVo> userOrderDetailVos = getUserOrderDetailVos(Lists.newArrayList(userOrderVo.getOrderNo()));
+            userOrderVo.setOrderDetailList(userOrderDetailVos);
         }
         return userOrderVo;
     }
@@ -348,10 +363,105 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             }
         }
 
+        // 订单ID集合
+        List<String> orderNos = records.stream().map(UserOrder::getOrderNo).collect(Collectors.toList());
+        List<UserOrderDetailVo> detailVoList = getUserOrderDetailVos(orderNos);
+
+        // id分组
+        Map<String, List<UserOrderDetailVo>> map = detailVoList.stream().collect(Collectors.groupingBy(o -> o.getOrderNo()));
+
+        for (UserOrderVo record : records) {
+            List<UserOrderDetailVo> userOrderDetailVos = map.get(record.getOrderNo());
+            record.setOrderDetailList(userOrderDetailVos);
+        }
+
 
         return userOrderVoIPage;
     }
 
+    private List<UserOrderDetailVo> getUserOrderDetailVos(List<String> orderNos) {
+        List<UserOrderDetailVo> detailVoList = userOrderDetailService.getOrderDetilListByOrderNos(orderNos);
+
+        // 根据商品类型分组获取商品ID集合
+        Map<GoodTypeEnum, List<UserOrderDetailVo>> orderBizMap = detailVoList.stream()
+                .collect(Collectors.groupingBy(UserOrderDetailVo::getGoodType));
+
+        // 只针对机构专辑,曲目,专辑,vip
+        orderBizMap.forEach((orderType,list) -> {
+            if (CollectionUtils.isEmpty(list)) {
+                return;
+            }
+            // bizId集合
+            List<Long> bizIds = list.stream().map(UserOrderDetailVo::getBizId).collect(Collectors.toList());
+            switch (orderType) {
+                case MUSIC: {
+                    Map<Long, MusicSheet> mapByIds = musicSheetService.getMapByIds(bizIds);
+                    // 上传人ID集合
+                    List<Long> userIds = mapByIds.values().stream().map(MusicSheet::getUserId).collect(Collectors.toList());
+                    Map<Long, SysUser> userMap = sysUserService.getMapByIds(userIds);
+
+                    for (UserOrderDetailVo userOrderDetailVo : list) {
+                        MusicSheet musicSheet = mapByIds.getOrDefault(userOrderDetailVo.getBizId(),new MusicSheet());
+                        UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
+                        bizInfo.setBizCover(musicSheet.getTitleImg());
+                        bizInfo.setBizName(userOrderDetailVo.getGoodName());
+                        bizInfo.setComposer(musicSheet.getComposer());
+                        bizInfo.setUploadUser(userMap.getOrDefault(musicSheet.getUserId(),new SysUser()).getUsername());
+                        userOrderDetailVo.setBizInfo(bizInfo);
+                    }
+
+                    break;
+                }
+                case TENANT_ALBUM:
+                {
+                    Map<Long, TenantAlbum> mapByIds = tenantAlbumService.getMapByIds(bizIds);
+                    Map<Long, Long> musicCountByIds = tenantAlbumService.getMusicCountByIds(bizIds);
+
+                    for (UserOrderDetailVo userOrderDetailVo : list) {
+                        TenantAlbumWrapper.TenantAlbumContent tenantAlbumContent = JSON
+                                .parseObject(userOrderDetailVo.getBizContent(), TenantAlbumWrapper.TenantAlbumContent.class);
+                        UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
+                        TenantAlbum tenantAlbum = mapByIds.getOrDefault(userOrderDetailVo.getBizId(),new TenantAlbum());
+                        bizInfo.setBizCover(tenantAlbum.getCoverImg());
+                        bizInfo.setBizName(userOrderDetailVo.getGoodName());
+                        bizInfo.setBizDesc(tenantAlbum.getDescribe());
+                        bizInfo.setBizMusicCount(musicCountByIds.getOrDefault(tenantAlbum.getId(),0L).intValue());
+                        bizInfo.setBizValidTime(tenantAlbumContent.getBuyCycle());
+                        userOrderDetailVo.setBizInfo(bizInfo);
+                    }
+                    break;
+                }
+                case ALBUM:
+                {
+                    Map<Long, MusicAlbum> mapByIds = musicAlbumService.getMapByIds(bizIds);
+                    Map<Long, Long> musicCountByIds = musicAlbumService.getMusicCountByIds(bizIds);
+
+                    for (UserOrderDetailVo userOrderDetailVo : list) {
+                        UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
+                        MusicAlbum musicAlbum = mapByIds.getOrDefault(userOrderDetailVo.getBizId(), new MusicAlbum());
+                        bizInfo.setBizCover(musicAlbum.getAlbumCoverUrl());
+                        bizInfo.setBizName(userOrderDetailVo.getGoodName());
+                        bizInfo.setBizDesc(musicAlbum.getAlbumDesc());
+                        bizInfo.setBizMusicCount(musicCountByIds.getOrDefault(userOrderDetailVo.getBizId(),0L).intValue());
+                        userOrderDetailVo.setBizInfo(bizInfo);
+                    }
+                    break;
+                }
+                case VIP:
+                {
+
+                    for (UserOrderDetailVo userOrderDetailVo : list) {
+                        UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
+                        bizInfo.setBizName(userOrderDetailVo.getGoodName());
+                        userOrderDetailVo.setBizInfo(bizInfo);
+                    }
+                    break;
+                }
+            }
+        });
+        return detailVoList;
+    }
+
     @Override
     public List<UserOrderVo> selectAllList(OrderSearch query) {
         return baseMapper.selectAllList(query);

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

@@ -208,7 +208,7 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         List<UserTenantAlbumRecord> list = this.lambdaQuery()
                 .eq(UserTenantAlbumRecord::getUserId, userId)
                 .eq(UserTenantAlbumRecord::getClientType, clientType)
-                .le(UserTenantAlbumRecord::getEndTime, new Date())
+                .ge(UserTenantAlbumRecord::getEndTime, new Date())
                 .list();
         if (CollectionUtils.isEmpty(list)) {
             return new ArrayList<>();
@@ -274,8 +274,30 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId).list();
         List<Long> MusicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
         int size = MusicSheetIds.size();
-
         //Integer musicNum = tenantAlbum.getMusicNum();
+
+        //获取合奏曲目数量
+        List<TenantAlbumMusic> ensembleLits = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getSubjectType, "ENSEMBLE")
+                .eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId).list();
+        List<Long> ensembleMusicSheetIds = ensembleLits.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+
+        album.setEnsembleCounts(ensembleMusicSheetIds.size());
+
+        //获取小曲目的曲目数量
+        List<TenantAlbumMusic> musicLists = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getSubjectType, "MUSIC")
+                .eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId).list();
+        List<Long> musicSheetIds = musicLists.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+
+        album.setMusicCounts(musicSheetIds.size());
+
+        //获取声部的曲目数量
+        List<TenantAlbumMusic> subjectLists = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getSubjectType, "SUBJECT")
+                .eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId).list();
+        List<Long> subjectSheetIds = subjectLists.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+
+        album.setSubjectCounts(subjectSheetIds.size());
+
+
         //机构专辑简介
         String describe = tenantAlbum.getDescribe();
         //声部

+ 25 - 93
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderDetailVo.java

@@ -6,11 +6,18 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
 
 /**
  * @Author: liweifan
  * @Data: 2022-03-30 13:53:51
  */
+@Getter
+@Setter
 @ApiModel(value = "UserOrderDetailVo对象", description = "平台订单表查询视图对象")
 public class UserOrderDetailVo extends UserOrderDetail {
     private static final long serialVersionUID = 1L;
@@ -54,107 +61,32 @@ public class UserOrderDetailVo extends UserOrderDetail {
     @ApiModelProperty("支付厂商")
     private String paymentVendor;
 
-    public String getPaymentVendor() {
-        return paymentVendor;
-    }
-
-    public void setPaymentVendor(String paymentVendor) {
-        this.paymentVendor = paymentVendor;
-    }
-
-    public Long getTenantId() {
-        return tenantId;
-    }
-
-    public void setTenantId(Long tenantId) {
-        this.tenantId = tenantId;
-    }
-
-    public Long getRewardId() {
-        return rewardId;
-    }
-
-    public void setRewardId(Long rewardId) {
-        this.rewardId = rewardId;
-    }
-
-    public Long getActivityId() {
-        return activityId;
-    }
-
-    public void setActivityId(Long activityId) {
-        this.activityId = activityId;
-    }
-
-    public ClientEnum getOrderClient() {
-        return orderClient;
-    }
-
-    public void setOrderClient(ClientEnum orderClient) {
-        this.orderClient = orderClient;
-    }
-
-    public Long getUserId() {
-        return userId;
-    }
+    @ApiModelProperty("商品信息,返回订单列表或详情用")
+    private BizInfo bizInfo;
 
-    public void setUserId(Long userId) {
-        this.userId = userId;
-    }
+    @Data
+    public  static class BizInfo implements Serializable {
 
-    public Long getOrderId() {
-        return orderId;
-    }
+        @ApiModelProperty("封面")
+        private String bizCover;
 
-    public void setOrderId(Long orderId) {
-        this.orderId = orderId;
-    }
+        @ApiModelProperty("名称")
+        private String bizName;
 
-    public String getAvatar() {
-        return avatar;
-    }
+        @ApiModelProperty("描述")
+        private String bizDesc;
 
-    public void setAvatar(String avatar) {
-        this.avatar = avatar;
-    }
+        @ApiModelProperty("曲目上传人")
+        private String uploadUser;
 
-    public String getUsername() {
-        return username;
-    }
 
-    public void setUsername(String username) {
-        this.username = username;
-    }
+        @ApiModelProperty("曲目艺术家")
+        private String composer;
 
-    public Double getStarGrade() {
-        return starGrade;
-    }
-
-    public void setStarGrade(Double starGrade) {
-        this.starGrade = starGrade;
-    }
-
-    public Object getBizParam() {
-        return bizParam;
-    }
-
-    public void setBizParam(Object bizParam) {
-        this.bizParam = bizParam;
-    }
-
-    public Long getRecomUserId() {
-        return recomUserId;
-    }
-
-    public void setRecomUserId(Long recomUserId) {
-        this.recomUserId = recomUserId;
-    }
-
-    public OrderTypeEnum getOrderType() {
-        return orderType;
-    }
+        @ApiModelProperty("曲目数量")
+        private Integer bizMusicCount;
 
-    public void setOrderType(OrderTypeEnum orderType) {
-        this.orderType = orderType;
+        @ApiModelProperty("机构专辑有效时长")
+        private Integer bizValidTime;
     }
 }

+ 2 - 95
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderVo.java

@@ -8,6 +8,7 @@ import com.yonge.toolset.payment.base.enums.OpenEnum;
 import com.yonge.toolset.payment.base.enums.PayChannelEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -16,6 +17,7 @@ import java.util.List;
  * @Author: liweifan
  * @Data: 2022-03-30 13:53:51
  */
+@Data
 @ApiModel(value = "UserOrderVo对象", description = "平台订单表查询视图对象")
 public class UserOrderVo extends UserOrder {
 	private static final long serialVersionUID = 1L;
@@ -48,99 +50,4 @@ public class UserOrderVo extends UserOrder {
     @ApiModelProperty("支付配置")
     private  UserPaymentOrderWrapper.PaymentConfig paymentConfig;
 
-    public UserPaymentOrderWrapper.PaymentConfig getPaymentConfig() {
-        return paymentConfig;
-    }
-
-    public void setPaymentConfig(UserPaymentOrderWrapper.PaymentConfig paymentConfig) {
-        this.paymentConfig = paymentConfig;
-    }
-
-    public String getTenantName() {
-        return tenantName;
-    }
-
-    public void setTenantName(String tenantName) {
-        this.tenantName = tenantName;
-    }
-
-    public List<UserOrderDetailVo> getOrderDetailList() {
-		return orderDetailList;
-	}
-
-	public void setOrderDetailList(List<UserOrderDetailVo> orderDetailList) {
-		this.orderDetailList = orderDetailList;
-	}
-
-	public OpenEnum getOpenType() {
-		return openType;
-	}
-
-	public void setOpenType(OpenEnum openType) {
-		this.openType = openType;
-	}
-
-	public PayChannelEnum getPayChannel() {
-		return payChannel;
-	}
-
-	public void setPayChannel(PayChannelEnum payChannel) {
-		this.payChannel = payChannel;
-	}
-
-	public String getTransNo() {
-		return transNo;
-	}
-
-	public void setTransNo(String transNo) {
-		this.transNo = transNo;
-	}
-
-	public BigDecimal getFeeAmt() {
-		return feeAmt;
-	}
-
-	public void setFeeAmt(BigDecimal feeAmt) {
-		this.feeAmt = feeAmt;
-	}
-
-	public String getUsername() {
-		return username;
-	}
-
-	public void setUsername(String username) {
-		this.username = username;
-	}
-
-	public String getPhone() {
-		return phone;
-	}
-
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-
-	public String getPaymentNo() {
-		return paymentNo;
-	}
-
-	public void setPaymentNo(String paymentNo) {
-		this.paymentNo = paymentNo;
-	}
-
-	public String getPaymentClient() {
-		return paymentClient;
-	}
-
-	public void setPaymentClient(String paymentClient) {
-		this.paymentClient = paymentClient;
-	}
-
-	public BigDecimal getDiscountPrice() {
-		return discountPrice;
-	}
-
-	public void setDiscountPrice(BigDecimal discountPrice) {
-		this.discountPrice = discountPrice;
-	}
 }

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.wrapper;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -107,6 +108,7 @@ public class TenantActivationCodeWrapper {
         private String activationPhone;
 
         @ApiModelProperty("激活时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
         private Date activationTime;
 
         @ApiModelProperty("激活用户ID")
@@ -116,9 +118,11 @@ public class TenantActivationCodeWrapper {
         private String activationUserName;
 
         @ApiModelProperty("更新时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
         private Date updateTime;
 
         @ApiModelProperty("创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
         private Date createTime;
 
         @ApiModelProperty("激活数量")

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

@@ -124,6 +124,15 @@ public class TenantAlbumWrapper {
         @ApiModelProperty("是否已经购买")
         private Boolean ifBuy;
 
+        @ApiModelProperty("合奏曲目数量")
+        private Integer EnsembleCounts;
+
+        @ApiModelProperty("小曲目数量")
+        private Integer MusicCounts;
+
+        @ApiModelProperty("声部曲目数")
+        private Integer SubjectCounts;
+
         @ApiModelProperty("曲目相关信息")
         private List<MusicSheetData> musicSheetData = new ArrayList<>();
 

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

@@ -13,6 +13,7 @@
         <result column="tenant_id_" property="tenantId" />
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
+        <result column="avatar_" property="avatar"/>
     </resultMap>
 
     <!-- 表字段 -->
@@ -30,6 +31,7 @@
         , t.tenant_id_ as tenantId
         , t.create_time_ as "createTime"
         , t.update_time_ as "updateTime"
+        , t.avatar_ as "avatar"
         </sql>
     <update id="setSubject">
         update student set subject_id_ = #{subjectIds},update_time_ = now() where user_id_ = #{id}
@@ -39,7 +41,6 @@
         SELECT
             <include refid="baseColumns"/>,
             if(u.lock_flag_ = 0 and t.lock_flag_ = 0,0,1) as lockFlag,
-            u.avatar_ as avatar,
             u.real_name_ as realName,
             u.id_card_no_ as idCardNo,
             u.username_ as username,
@@ -64,7 +65,6 @@
         SELECT
             <include refid="baseColumns"/>,
             if(u.lock_flag_ = 0 and t.lock_flag_ = 0,0,1) as lockFlag,
-            u.avatar_ as avatar,
             u.real_name_ as realName,
             u.id_card_no_ as idCardNo,
             u.username_ as username,
@@ -87,7 +87,6 @@
         SELECT
             <include refid="baseColumns"/>,
             if(u.lock_flag_ = 0 and t.lock_flag_ = 0,0,1) as lockFlag,
-            u.avatar_ as avator,
             u.username_ as username,
             u.gender_ as gender,
             u.birthdate_ as birthdate,
@@ -275,7 +274,7 @@
     <select id="queryMyFollow" resultMap="queryMyFollowResult">
         SELECT
             s.teacher_id_ as userId,
-            u.avatar_ as avatar,
+            tr.avatar_ as avatar,
             u.username_ as userName,
             u.real_name_ as realName,
             u.gender_ as gender,

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

@@ -94,7 +94,8 @@
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="SysSuggestion" parameterType="map">
         SELECT ss.*,
-               CASE WHEN ss.client_type_='STUDENT' THEN su.username_ ELSE su.real_name_ END username_
+        CASE WHEN (ss.client_type_='STUDENT' or ss.client_type_ = 'TENANT_STUDENT') THEN su.username_ ELSE su.real_name_ END
+        username_
         FROM sys_suggestion ss
         LEFT JOIN sys_user su ON su.id_ = ss.user_id_
         <include refid="queryCondition" />

+ 21 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderDetailMapper.xml

@@ -111,4 +111,25 @@
         where t.order_no_ = #{orderNo}
     </select>
 
+	<select id="getOrderDetilListByOrderNos" resultType="com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo">
+        SELECT
+        <include refid="baseColumns" />,
+        o.recom_user_id_ as recomUserId,
+        o.order_client_ as orderClient,
+        u.avatar_ as avatar,
+        u.username_ as username,
+        a.star_grade_ as starGrade
+        FROM user_order_detail t
+        left join user_order o on t.order_no_ = o.order_no_
+        left join sys_user u on t.merch_id_ = u.id_
+        left join teacher_total a on t.merch_id_ = a.user_id_
+        <where>
+            <if test="orderNos != null and orderNos.size() != 0">
+                and t.order_no_ in
+                <foreach collection="orderNos" close=")" open="(" separator="," item="item">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>

+ 2 - 12
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicAlbumController.java

@@ -205,20 +205,10 @@ public class MusicAlbumController extends BaseController {
                 .orderStatus(OrderStatusEnum.PAID)
                 .clientType(ClientEnum.TEACHER);
 
-        IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.TEACHER);
+        IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search,
+                ClientEnum.TEACHER);
         return succeed(PageUtil.pageInfo(albumVoIPage));
     }
 
-    @ApiOperation(value = "查询机构专辑详情")
-    @PostMapping("/albumDetail")
-    public HttpResponseResult <TenantAlbumWrapper.TenantAlbum> albumDetail(@RequestParam(defaultValue = "") String albumId) {
-        TenantAlbumWrapper.TenantAlbum tenantAlbum= musicAlbumService.detailAlbum(albumId);
-        return HttpResponseResult.succeed(tenantAlbum);
-    }
-
-
-
-
-
 
 }

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

@@ -0,0 +1,54 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+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;
+
+/**
+ * 专辑表 web 控制层
+ * @author yzp
+ * @date 2022-03-26 00:21:46
+ * @version v1.0
+ **/
+@RestController
+@RequestMapping("/tenantAlbumMusic")
+@Api(tags = "机构专辑曲目 API接口")
+public class TenantAlbumSheetController extends BaseController {
+
+    @Autowired
+    private TenantAlbumMusicService tenantAlbumMusicService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+
+
+    @ApiOperation(value = "分页查询")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<TenantAlbumMusicWrapper.StudentTenantAlbumMusic>> page(@RequestBody TenantAlbumMusicWrapper.StudentTenantAlbumMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        IPage<TenantAlbumMusicWrapper.StudentTenantAlbumMusic> page = tenantAlbumMusicService.selectPage(QueryInfo.getPage(query), query);
+        return succeed((PageUtil.pageInfo(page)));
+    }
+
+
+}

+ 47 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/UserTenantAlbumRecordController.java

@@ -0,0 +1,47 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.response.template.R;
+import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
+import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
+import com.yonge.cooleshow.biz.dal.service.UserTenantAlbumRecordService;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
+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.*;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/userTenantAlbumRecord")
+@Api(tags = "购买训练工具记录")
+public class UserTenantAlbumRecordController {
+
+    @Autowired
+    private MusicAlbumService musicAlbumService;
+
+
+
+
+    @ApiOperation(value = "查询机构专辑详情")
+    @PostMapping("/albumDetail")
+    public HttpResponseResult <TenantAlbumWrapper.TenantAlbum> albumDetail(@RequestParam(defaultValue = "") String albumId) {
+        TenantAlbumWrapper.TenantAlbum tenantAlbum= musicAlbumService.detailAlbum(albumId);
+        return HttpResponseResult.succeed(tenantAlbum);
+    }
+
+
+
+
+
+}

+ 20 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java

@@ -16,9 +16,11 @@ 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.SysConfigService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.tenant.vo.StudentVo;
@@ -68,6 +70,9 @@ public class OpenStudentController extends BaseController {
     @Autowired
     private ImGroupMemberService imGroupMemberService;
 
+    @Autowired
+    private SysConfigService sysConfigService;
+
     @PostMapping("/save")
     @ApiOperation(value = "新增/修改", notes = "传入Student,换绑时按照返回错误码5004判断,是否需要换绑,updateTenant=true表示换绑")
     public HttpResponseResult<Boolean> save(@Validated @RequestBody StudentVo.Student student) {
@@ -128,10 +133,25 @@ public class OpenStudentController extends BaseController {
                         log.error("学生注册,切换机构退群失败:{}", e.getMessage());
                     }
                 });
+
+                // 更新头像
+                if (StringUtils.isEmpty(student.getAvatar())) {
+                    student.setAvatar(one.getAvatar());
+                }
             }
             student.setId(studentId);
         }
 
+        // 配置头像
+        if (StringUtils.isEmpty(student.getAvatar())) {
+            String avatar;
+            if (student.getGender().equals(1)) {
+                avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_BOY_AVATAR);
+            } else {
+                avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_GIRL_AVATAR);
+            }
+            student.setAvatar(avatar);
+        }
 
         StudentWrapper.Student studentInfo = JSON.parseObject(JSON.toJSONString(student), StudentWrapper.Student.class);
         studentInfo.setTenantId(tenantInfo.getId());

+ 36 - 12
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenSubjectController.java

@@ -17,23 +17,47 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+import java.util.stream.Collectors;
+
 @RequestMapping("/open/subject")
 @Api(tags = "声部服务")
 @RestController
 public class OpenSubjectController extends BaseController {
 
-	@Autowired
-	private SubjectService subjectService;
+    @Autowired
+    private SubjectService subjectService;
+
+    @ApiOperation(value = "根据声部编号查询声部")
+    @GetMapping("/get/{id}")
+    public Object get(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
+        return succeed(subjectService.get(id));
+    }
+
+    @ApiOperation(value = "分页查询声部树状列表")
+    @PostMapping("/queryPageTree")
+    public HttpResponseResult<PageInfo<Subject>> queryPageTree(@RequestBody SubjectQueryInfo queryInfo) {
+        return succeed(subjectService.queryPageTree(queryInfo));
+    }
+
+    @ApiOperation(value = "分页查询声部列表")
+    @GetMapping("/queryPage")
+    public HttpResponseResult<PageInfo<Subject>> queryPage(SubjectQueryInfo queryInfo) {
+        PageInfo<Subject> pageInfo = subjectService.queryPage(queryInfo);
+
+        if (pageInfo.getRows().size() == 0) {
+            return succeed(pageInfo);
+        }
 
-	@ApiOperation(value = "根据声部编号查询声部")
-	@GetMapping("/get/{id}")
-	public Object get(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
-		return succeed(subjectService.get(id));
-	}
+        Map<Long, Subject> map =
+                subjectService.findBySubjectByIdList(pageInfo.getRows().stream().map(Subject::getParentSubjectId).collect(Collectors.toList())).stream()
+                .collect(Collectors.toMap(Subject::getId, t -> t));
 
-	@ApiOperation(value = "分页查询声部树状列表")
-	@PostMapping("/queryPageTree")
-	public HttpResponseResult<PageInfo<Subject>> queryPageTree(@RequestBody SubjectQueryInfo queryInfo) {
-		return succeed(subjectService.queryPageTree(queryInfo));
-	}
+        pageInfo.getRows().forEach(row -> {
+            if (row.getParentSubjectId() != null && row.getParentSubjectId() > 0) {
+                row.setParentSubjectName(map.get(row.getParentSubjectId()).getName());
+            }
+        });
+        return succeed(pageInfo);
+    }
 }

+ 1 - 1
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/wx/OriginalWxAppTemplate.java

@@ -115,7 +115,7 @@ public class OriginalWxAppTemplate implements PaymentTemplate {
             log.error("微信APP支付请求失败:{}", e.toString());
             return BaseResult.failed(e.toString());
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("微信APP支付请求失败",e);
             return BaseResult.failed("微信APP支付请求失败");
         }
     }