浏览代码

增加专辑购买接口

Eric 2 年之前
父节点
当前提交
92e5e7789a

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

@@ -1,5 +1,8 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 package com.yonge.cooleshow.biz.dal.dto.search;
 
 
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 /**
 /**
@@ -14,6 +17,20 @@ public class StudentMusicAlbumSearch extends MusicAlbumSearch{
     @ApiModelProperty(value = "登录学生id",hidden = true)
     @ApiModelProperty(value = "登录学生id",hidden = true)
     private Long studentId;
     private Long studentId;
 
 
+    @ApiModelProperty(value = "收藏专辑标识", hidden = true)
+    private Boolean albumFavorite;
+
+    @ApiModelProperty("已购买专辑 ")
+    private Boolean albumPurchased;
+
+    @ApiModelProperty(value = "订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)", hidden = true)
+    private OrderStatusEnum orderStatus;  //订单状态(1:已完成;0:取消)
+
+    @ApiModelProperty(value = "购买类型 ", hidden = true)
+    private PurchaseRecordTypeEnum purchaseType;
+
+    @ApiModelProperty(value = "用户类型 TEACHER:老师,STUDENT:学生", hidden = true)
+    private ClientEnum clientType;
 
 
     public Long getStudentId() {
     public Long getStudentId() {
         return studentId;
         return studentId;
@@ -22,4 +39,75 @@ public class StudentMusicAlbumSearch extends MusicAlbumSearch{
     public void setStudentId(Long studentId) {
     public void setStudentId(Long studentId) {
         this.studentId = studentId;
         this.studentId = studentId;
     }
     }
+
+    public Boolean getAlbumFavorite() {
+        return albumFavorite;
+    }
+
+    public void setAlbumFavorite(Boolean albumFavorite) {
+        this.albumFavorite = albumFavorite;
+    }
+
+    public Boolean getAlbumPurchased() {
+        return albumPurchased;
+    }
+
+    public void setAlbumPurchased(Boolean albumPurchased) {
+        this.albumPurchased = albumPurchased;
+    }
+
+    public OrderStatusEnum getOrderStatus() {
+        return orderStatus;
+    }
+
+    public void setOrderStatus(OrderStatusEnum orderStatus) {
+        this.orderStatus = orderStatus;
+    }
+
+    public PurchaseRecordTypeEnum getPurchaseType() {
+        return purchaseType;
+    }
+
+    public void setPurchaseType(PurchaseRecordTypeEnum purchaseType) {
+        this.purchaseType = purchaseType;
+    }
+
+    public ClientEnum getClientType() {
+        return clientType;
+    }
+
+    public void setClientType(ClientEnum clientType) {
+        this.clientType = clientType;
+    }
+
+
+    public StudentMusicAlbumSearch studentId(Long studentId) {
+        this.studentId = studentId;
+        return this;
+    }
+
+    public StudentMusicAlbumSearch albumFavorite(Boolean albumFavorite) {
+        this.albumFavorite = albumFavorite;
+        return this;
+    }
+
+    public StudentMusicAlbumSearch albumPurchased(Boolean albumPurchased) {
+        this.albumPurchased = albumPurchased;
+        return this;
+    }
+
+    public StudentMusicAlbumSearch orderStatus(OrderStatusEnum orderStatus) {
+        this.orderStatus = orderStatus;
+        return this;
+    }
+
+    public StudentMusicAlbumSearch purchaseType(PurchaseRecordTypeEnum purchaseType) {
+        this.purchaseType = purchaseType;
+        return this;
+    }
+
+    public StudentMusicAlbumSearch clientType(ClientEnum clientType) {
+        this.clientType = clientType;
+        return this;
+    }
 }
 }

+ 30 - 7
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml

@@ -104,14 +104,35 @@
         ,(select group_concat(s.name_) from subject s
         ,(select group_concat(s.name_) from subject s
         where find_in_set(s.id_,t.subject_id_) and s.del_flag_ = 0 ) as subjectNames
         where find_in_set(s.id_,t.subject_id_) and s.del_flag_ = 0 ) as subjectNames
         from music_album t
         from music_album t
-        left join album_favorite af2 on af2.album_id_ = t.id_
+        <if test="query.albumFavorite != null">
+            left join album_favorite af2 on af2.album_id_ = t.id_
+        </if>
+        <if test="query.albumPurchased != null">
+            JOIN music_sheet_purchase_record t2 ON (t.id_ = t2.music_sheet_id_)
+        </if>
         <where>
         <where>
-            t.del_flag_ = 0
-            <if test="query.studentId != null">
-                and af2.user_id_ = #{query.studentId}
+            <if test="query.albumFavorite != null">
+                t.del_flag_ = 0
+                <if test="query.studentId != null">
+                    and af2.user_id_ = #{query.studentId}
+                </if>
+                <if test="clientType != null">
+                    AND af2.client_type_ = #{clientType}
+                </if>
             </if>
             </if>
-            <if test="clientType != null">
-                AND af2.client_type_ = #{clientType}
+            <if test="query.albumPurchased != null">
+                <if test="query.clientType != null">
+                    AND t2.client_type_ = #{query.clientType}
+                </if>
+                <if test="query.orderStatus != null">
+                    AND t2.order_status_ #{query.orderStatus}
+                </if>
+                <if test="query.purchaseType != null">
+                    AND t2.purchase_type_ = #{query.purchaseType}
+                </if>
+                <if test="query.studentId != null">
+                    AND t2.student_id_ = #{query.studentId}
+                </if>
             </if>
             </if>
             <if test="query.idAndName != null and query.idAndName != ''">
             <if test="query.idAndName != null and query.idAndName != ''">
                 and (t.id_ like concat('%',#{query.idAndName},'%') or
                 and (t.id_ like concat('%',#{query.idAndName},'%') or
@@ -136,7 +157,9 @@
                 and t.album_status_ = #{query.albumStatus}
                 and t.album_status_ = #{query.albumStatus}
             </if>
             </if>
         </where>
         </where>
-        order by  af2.favorite_time_ desc
+        <if test="query.albumFavorite != null">
+            order by  af2.favorite_time_ desc
+        </if>
     </select>
     </select>
 
 
     <select id="selectFavoriteNumAndMusicNum" resultType="com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo">
     <select id="selectFavoriteNumAndMusicNum" resultType="com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo">

+ 29 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java

@@ -12,6 +12,8 @@ import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
@@ -157,8 +159,33 @@ public class MusicAlbumController extends BaseController {
             return failed("用户信息获取失败");
             return failed("用户信息获取失败");
         }
         }
         StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
         StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
-        search.setStudentId(sysUser.getId());
-        search.setAlbumStatus(YesOrNoEnum.YES);
+        search.studentId(sysUser.getId())
+                .albumFavorite(true)
+                .setAlbumStatus(YesOrNoEnum.YES);
+
+        IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.STUDENT);
+        return succeed(PageUtil.pageInfo(albumVoIPage));
+    }
+
+    /**
+     * 已购买专辑信息
+     * @return HttpResponseResult<PageInfo<MusicAlbumVo>>
+     */
+    @ApiOperation(value = "已购买专辑信息")
+    @GetMapping("/purchased")
+    public HttpResponseResult<PageInfo<MusicAlbumVo>> purchasedAlbumInfo(QueryInfo query) {
+
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+        StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
+        search.studentId(sysUser.getId())
+                .albumPurchased(true)
+                .purchaseType(PurchaseRecordTypeEnum.ALBUM)
+                .orderStatus(OrderStatusEnum.PAID)
+                .clientType(ClientEnum.STUDENT);
+
         IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.STUDENT);
         IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.STUDENT);
         return succeed(PageUtil.pageInfo(albumVoIPage));
         return succeed(PageUtil.pageInfo(albumVoIPage));
     }
     }

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

@@ -1,6 +1,8 @@
 package com.yonge.cooleshow.teacher.controller;
 package com.yonge.cooleshow.teacher.controller;
 
 
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiParam;
@@ -164,8 +166,33 @@ public class MusicAlbumController extends BaseController {
             return failed("用户信息获取失败");
             return failed("用户信息获取失败");
         }
         }
         StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
         StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
-        search.setStudentId(sysUser.getId());
-        search.setAlbumStatus(YesOrNoEnum.YES);
+        search.studentId(sysUser.getId())
+                .albumFavorite(true)
+                 .setAlbumStatus(YesOrNoEnum.YES);
+
+        IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.TEACHER);
+        return succeed(PageUtil.pageInfo(albumVoIPage));
+    }
+
+    /**
+     * 已购买专辑信息
+     * @return HttpResponseResult<PageInfo<MusicAlbumVo>>
+     */
+    @ApiOperation(value = "已购买专辑信息")
+    @GetMapping("/purchased")
+    public HttpResponseResult<PageInfo<MusicAlbumVo>> purchasedAlbumInfo(QueryInfo query) {
+
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+        StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
+        search.studentId(sysUser.getId())
+                .albumPurchased(true)
+                .purchaseType(PurchaseRecordTypeEnum.ALBUM)
+                .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));
         return succeed(PageUtil.pageInfo(albumVoIPage));
     }
     }

+ 30 - 2
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicAlbumController.java

@@ -5,6 +5,8 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -73,8 +75,34 @@ public class MusicAlbumController extends BaseController {
         }
         }
 
 
         StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
         StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
-        search.setStudentId(sysUser.getId());
-        search.setAlbumStatus(YesOrNoEnum.YES);
+        search.studentId(sysUser.getId())
+                .albumFavorite(true)
+                .setAlbumStatus(YesOrNoEnum.YES);
+
+        IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.valueOf(clientType));
+        return succeed(PageUtil.pageInfo(albumVoIPage));
+    }
+
+    /**
+     * 已购买专辑信息
+     * @return HttpResponseResult<PageInfo<MusicAlbumVo>>
+     */
+    @ApiOperation(value = "已购买专辑信息")
+    @GetMapping("/purchased")
+    public HttpResponseResult<PageInfo<MusicAlbumVo>> purchasedAlbumInfo(@ApiParam(value = "客户端类型") @RequestParam(value = "clientType", required = false, defaultValue = "STUDENT") String clientType,
+                                                                         QueryInfo query) {
+
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+        StudentMusicAlbumSearch search = new StudentMusicAlbumSearch();
+        search.studentId(sysUser.getId())
+                .albumPurchased(true)
+                .purchaseType(PurchaseRecordTypeEnum.ALBUM)
+                .orderStatus(OrderStatusEnum.PAID)
+                .clientType(ClientEnum.valueOf(clientType));
+
         IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.valueOf(clientType));
         IPage<MusicAlbumVo> albumVoIPage = musicAlbumService.favoriteAlbum(PageUtil.getPage(query), search, ClientEnum.valueOf(clientType));
         return succeed(PageUtil.pageInfo(albumVoIPage));
         return succeed(PageUtil.pageInfo(albumVoIPage));
     }
     }

+ 1 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicAlbumController.java

@@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.validation.Valid;
 import javax.validation.Valid;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**