liujc 1 год назад
Родитель
Сommit
5f94ca7575

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import org.apache.ibatis.annotations.Param;
 
@@ -184,4 +185,8 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
     void updateFavoriteCount(@Param("musicSheetId") Long musicSheetId, @Param("state") YesOrNoEnum state);
 
     List<MusicSheetUploadCountVo> countByUser(@Param("userIds") List<Long> userIds);
+
+    List<Long> searchMusic(@Param("page") IPage<TeacherMusicSheetVo> page,@Param("param") MusicCompareWrapper.MusicSearch queryInfo);
+    List<Long> searchAlbum(@Param("page") IPage<TeacherMusicSheetVo> page,@Param("param") MusicCompareWrapper.MusicSearch queryInfo);
+
 }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java

@@ -65,6 +65,17 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty(hidden = true)
     private List<Long> subjectIdList;
 
+    @ApiModelProperty(value = "专辑i集合")
+    private List<Long> albumIds;
+
+    public List<Long> getAlbumIds() {
+        return albumIds;
+    }
+
+    public void setAlbumIds(List<Long> albumIds) {
+        this.albumIds = albumIds;
+    }
+
     public ChargeTypeEnum getPaymentType() {
         return paymentType;
     }

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

@@ -21,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 
@@ -387,4 +388,6 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @param bizIds 曲目id
      */
     Map<Long,MusicSheet> getMapByIds(List<Long> bizIds);
+
+    MusicCompareWrapper.SearchData search(MusicCompareWrapper.MusicSearch queryInfo);
 }

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

@@ -68,6 +68,10 @@ public interface TenantAlbumService extends IService<TenantAlbum>  {
 
     Map<Long, Long> getMusicCountByIds(List<Long> bizIds);
 
+    void orderAfterSheet(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo);
+
+    void buyCancel(UserOrderDetailVo userOrderDetailVo);
+
 
     /**
      * 添加机构专辑数据

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

@@ -17,12 +17,7 @@ import com.yonge.cooleshow.biz.dal.dto.ReasonDto;
 import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetOrderSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.TeacherMusicSheetAuditSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.TeacherMusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
@@ -33,6 +28,7 @@ import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.ActivityShareEnum;
@@ -1704,6 +1700,56 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     }
 
     @Override
+    public MusicCompareWrapper.SearchData search(MusicCompareWrapper.MusicSearch queryInfo) {
+        MusicCompareWrapper.SearchData searchData= new MusicCompareWrapper.SearchData();
+        List<MusicCompareWrapper.MusicName> musicNames = new ArrayList<>();
+        if (queryInfo.getType() == null || queryInfo.getType().equals("MUSIC")) {
+
+            PageUtil.getPage(queryInfo);
+            // 查询曲目列表
+            List<Long> musicIds = musicSheetDao.searchMusic(PageUtil.getPage(queryInfo),queryInfo);
+            MusicSheetSearch musicSheetSearch = new MusicSheetSearch();
+            musicSheetSearch.setMusicSheetIdlist(musicIds);
+            IPage<MusicSheetVo> musicSheetVoIPage = selectPage(PageUtil.getPage(queryInfo), musicSheetSearch);
+            List<MusicSheetVo> records = musicSheetVoIPage.getRecords();
+            if (CollectionUtils.isNotEmpty(records)) {
+                for (MusicSheetVo record : records) {
+                    MusicCompareWrapper.MusicName musicName = new MusicCompareWrapper.MusicName();
+                    musicName.setId(record.getId());
+                    musicName.setName(record.getMusicSheetName());
+                    musicName.setType("MUSIC");
+                    musicName.setSort(record.getFavoriteCount());
+                    musicNames.add(musicName);
+                }
+                searchData.setMusic(PageUtil.pageInfo(musicSheetVoIPage));
+            }
+        }
+        if (queryInfo.getType() == null || queryInfo.getType().equals("ALBUM")) {
+
+            // 查询专辑列表
+            List<Long> albumIds = musicSheetDao.searchAlbum(PageUtil.getPage(queryInfo),queryInfo);
+            MusicAlbumSearch musicSheetSearch = new MusicAlbumSearch();
+            musicSheetSearch.setAlbumIds(albumIds);
+            IPage<MusicAlbumVo> musicAlbumVoIPage = musicAlbumService.selectPage(PageUtil.getPage(queryInfo), musicSheetSearch);
+            List<MusicAlbumVo> records = musicAlbumVoIPage.getRecords();
+            if (CollectionUtils.isNotEmpty(records)) {
+                for (MusicAlbumVo record : records) {
+                    MusicCompareWrapper.MusicName musicName = new MusicCompareWrapper.MusicName();
+                    musicName.setId(record.getId());
+                    musicName.setName(record.getAlbumName());
+                    musicName.setType("MUSIC");
+                    musicName.setSort(record.getAlbumFavoriteCount());
+                    musicNames.add(musicName);
+                }
+                searchData.setAlbum(PageUtil.pageInfo(musicAlbumVoIPage));
+            }
+        }
+        musicNames.sort(Comparator.comparing(MusicCompareWrapper.MusicName::getSort).reversed());
+        searchData.setMusicNames(musicNames);
+        return searchData;
+    }
+
+    @Override
     public Boolean updateMusicImg(MusicImgDto musicImgDto, Long musicSheetId) {
         MusicSheet musicSheet = new MusicSheet();
         musicSheet.setMusicImg(musicImgDto.getMusicImg());

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQu
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.biz.dal.entity.*;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
@@ -278,7 +279,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
 
                 TenantAlbumWrapper.TenantAlbumContent tenantAlbumContent = JSON
                         .parseObject(userOrderDetailVo.getBizContent(), TenantAlbumWrapper.TenantAlbumContent.class);
-                TenantAlbumPurchase tenantAlbumPurchase = new TenantAlbumPurchase();
+                TenantAlbumPurchase tenantAlbumPurchase =  tenantAlbumPurchaseService.getByOrderNo(userOrderDetailVo.getOrderNo());
                 tenantAlbumPurchase.setTenantId(tenantAlbumContent.getTenantId());
                 tenantAlbumPurchase.setTenantAlbumId(userOrderDetailVo.getBizId());
                 tenantAlbumPurchase.setPurchaseTime(userOrderDetailVo.getCreateTime());
@@ -288,7 +289,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 tenantAlbumPurchase.setOrderNo(userOrderDetailVo.getOrderNo());
                 tenantAlbumPurchase.setPurchasePrice(userOrderDetailVo.getActualPrice());
                 tenantAlbumPurchase.setPurchaseStatus(OrderStatusEnum.PAID.getCode());
-                tenantAlbumPurchaseService.save(tenantAlbumPurchase);
+                tenantAlbumPurchaseService.updateById(tenantAlbumPurchase);
 
                 List<TenantActivationCode> tenantActivationCodes = new ArrayList<>();
                 for (int i = 0; i < userOrderDetailVo.getGoodNum(); i++) {
@@ -382,6 +383,41 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
         return list.stream().collect(Collectors.groupingBy(TenantAlbumMusic::getTenantAlbumId,Collectors.counting()));
     }
 
+    @Override
+    public void orderAfterSheet(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo) {
+        // 机构   插入机构专辑购买记录,生成机构专辑激活码
+
+        if (!orderGoodsInfo.getPaymentClient().equals(ClientEnum.TENANT)) {
+            return;
+        }
+
+
+        TenantAlbumWrapper.TenantAlbumContent tenantAlbumContent = JSON
+                .parseObject(JSON.toJSONString(orderGoodsInfo.getBizContent()), TenantAlbumWrapper.TenantAlbumContent.class);
+        TenantAlbumPurchase tenantAlbumPurchase = new TenantAlbumPurchase();
+        tenantAlbumPurchase.setTenantId(tenantAlbumContent.getTenantId());
+        tenantAlbumPurchase.setTenantAlbumId(orderGoodsInfo.getBizId());
+        tenantAlbumPurchase.setPurchaseTime(new Date());
+        tenantAlbumPurchase.setPurchaseQuantity(orderGoodsInfo.getUserOrderDetail().getGoodNum());
+        tenantAlbumPurchase.setPurchaseCycle(tenantAlbumContent.getBuyCycle());
+        tenantAlbumPurchase.setActiveQuantity(0);
+        tenantAlbumPurchase.setOrderNo(orderGoodsInfo.getOrderNo());
+        tenantAlbumPurchase.setPurchasePrice(orderGoodsInfo.getUserOrderDetail().getActualPrice());
+        tenantAlbumPurchase.setPurchaseStatus(OrderStatusEnum.WAIT_PAY.getCode());
+        tenantAlbumPurchaseService.save(tenantAlbumPurchase);
+    }
+
+    @Override
+    public void buyCancel(UserOrderDetailVo userOrderDetailVo) {
+
+        TenantAlbumPurchase tenantAlbumPurchase =  tenantAlbumPurchaseService.getByOrderNo(userOrderDetailVo.getOrderNo());
+        if (tenantAlbumPurchase == null) {
+            return;
+        }
+        tenantAlbumPurchase.setPurchaseStatus(OrderStatusEnum.CLOSE.getCode());
+        tenantAlbumPurchaseService.updateById(tenantAlbumPurchase);
+    }
+
     @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/UserOrderServiceImpl.java

@@ -211,6 +211,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         orderCancel.put(GoodTypeEnum.MUSIC, musicSheetService::buyMusicSheetCancel);
         // 专辑购买
         orderCancel.put(GoodTypeEnum.ALBUM, musicSheetService::buyMusicSheetCancel);
+        orderCancel.put(GoodTypeEnum.TENANT_ALBUM, tenantAlbumService::buyCancel);
     }
 
     @Override

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

@@ -178,6 +178,8 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         orderSuccessAfter.put(GoodTypeEnum.MUSIC, musicSheetService::orderAfterSheet);
         // 专辑购买
         orderSuccessAfter.put(GoodTypeEnum.ALBUM, musicSheetService::orderAfterSheet);
+        // 机构专辑
+        orderSuccessAfter.put(GoodTypeEnum.TENANT_ALBUM, tenantAlbumService::orderAfterSheet);
 
         /**********订单完成后 数据处理******************/
         // 沿用以前的流程

+ 70 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/music/MusicCompareWrapper.java

@@ -7,6 +7,9 @@ import com.yonge.cooleshow.biz.dal.enums.FeatureType;
 import com.yonge.cooleshow.biz.dal.enums.HeardLevelEnum;
 import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.enums.music.MusicCompareType;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -14,6 +17,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import org.checkerframework.checker.units.qual.A;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -358,4 +362,70 @@ public class MusicCompareWrapper {
         }
 
     }
+
+
+    /**
+     * 用户曲目练习时间统计
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class MusicSearch extends QueryInfo {
+
+        @ApiModelProperty("声部ID ")
+        private Integer subjectId;
+
+        @ApiModelProperty("名称 ")
+        private String name;
+
+
+        @ApiModelProperty("类型 MUSIC 曲目 ALBUM专辑")
+        private String type;
+    }
+
+
+
+    /**
+     * 用户曲目练习时间统计
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class SearchData {
+
+        @ApiModelProperty("下拉名称 ")
+        private List<MusicName> musicNames;
+
+        @ApiModelProperty("曲目分页")
+        private PageInfo<MusicSheetVo> music;
+
+        @ApiModelProperty("专辑分页")
+        private PageInfo<MusicAlbumVo> album;
+    }
+
+
+    /**
+     * 用户曲目练习时间统计
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class MusicName{
+
+        @ApiModelProperty("曲目/专辑ID ")
+        private Long id;
+
+        @ApiModelProperty("名称 ")
+        private String name;
+
+
+        @ApiModelProperty("类型 MUSIC 曲目 ALBUM专辑")
+        private String type;
+
+        @ApiModelProperty("排序")
+        private Integer sort = 0;
+    }
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml

@@ -92,6 +92,12 @@
             <if test="query.paymentType != null">
                 and t.payment_type_ = #{query.paymentType}
             </if>
+            <if test="query.albumIds != null and query.albumIds.size() != 0">
+                and t.id_ in
+                <foreach collection="query.albumIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
         </where>
         order by t.sort_number_ desc
         <if test="query.sortBy != null">

+ 29 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -804,5 +804,34 @@
         </foreach>
         group by user_id_
     </select>
+
+    <select id="searchMusic" resultType="java.util.List">
+        select id_ from music_sheet  t
+            <where>
+                t.state_=1 and t.audit_version_ = 0 and del_flag_ = 0 and audit_status_ = 'PASS'
+                <if test="param.subjectId != null">
+                    and ( t.music_subject_ = #{param.subjectId} or t.music_subject_ is null or t.music_subject_ = '')
+                </if>
+                <if test="param.name != null and param.name != ''">
+                    and t.music_sheet_name_ like concat('%',#{param.name},'%')
+                </if>
+            </where>
+        order by t.top_flag_ desc, t.sort_number_ desc, t.favorite_count_ desc
+
+    </select>
+
+    <select id="searchAlbum" resultType="java.util.List">
+        select id_ from music_album t
+        <where>
+            t.album_status_=1 and del_flag_=0 and audit_version_ = 0
+            <if test="param.subjectId != null">
+                and ( t.subject_id_ = #{param.subjectId} or t.subject_id_ is null or t.subject_id_ = '')
+            </if>
+            <if test="param.name != null and param.name != ''">
+                and t.album_name_ like concat('%',#{param.name},'%')
+            </if>
+        </where>
+        order by  t.sort_number_ desc
+    </select>
     <!--单曲专辑数量统计-->
 </mapper>

+ 10 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.student.controller;
 
+import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -405,4 +406,13 @@ public class MusicSheetController extends BaseController {
         }
         return succeed(appMusicSheetVo);
     }
+
+
+    @ApiOperation(value = "搜索")
+    @PostMapping(value="/search")
+    public HttpResponseResult<MusicCompareWrapper.SearchData> search(@RequestBody MusicCompareWrapper.MusicSearch queryInfo) {
+        return succeed(musicSheetService.search(queryInfo));
+    }
+
+
 }