|
@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.extension.service.additional.update.impl.LambdaU
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.MusicAlbumDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.*;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
|
|
|
import com.yonge.cooleshow.common.enums.ActivityShareEnum;
|
|
@@ -114,6 +116,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
private StudentStarService studentStarService;
|
|
|
@Autowired
|
|
|
private UserOrderService userOrderService;
|
|
|
+ @Autowired
|
|
|
+ private MusicAlbumDao musicAlbumMapper;
|
|
|
|
|
|
public MusicSheetDao getDao() {
|
|
|
return musicSheetDao;
|
|
@@ -286,7 +290,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
if (ChargeTypeEnum.CHARGE.getCode().equals(detail.getChargeType().getCode())) {
|
|
|
// 学生须判断是否能播放曲目
|
|
|
MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
|
|
|
- studentId, detail.getId(), userType);
|
|
|
+ studentId, detail.getId(), userType, PurchaseRecordTypeEnum.MUSIC);
|
|
|
if (musicSheetPurchaseRecord != null) {
|
|
|
detail.setOrderStatus(musicSheetPurchaseRecord.getOrderStatus());
|
|
|
detail.setOrderNo(musicSheetPurchaseRecord.getOrderNo());
|
|
@@ -297,7 +301,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
} else if (ChargeTypeEnum.VIP.getCode().equals(detail.getChargeType().getCode())) {
|
|
|
// 先判断是否购买过
|
|
|
MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
|
|
|
- studentId, detail.getId(), userType);
|
|
|
+ studentId, detail.getId(), userType, PurchaseRecordTypeEnum.MUSIC);
|
|
|
if (musicSheetPurchaseRecord != null) {
|
|
|
detail.setPlay(YesOrNoEnum.YES);
|
|
|
} else
|
|
@@ -643,24 +647,53 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
MusicSheetPayDto musicSheetPayDto = JSON.parseObject(
|
|
|
JSON.toJSONString(orderReqInfo.getBizContent()), MusicSheetPayDto.class);
|
|
|
|
|
|
- MusicSheet musicSheet = this.getById(musicSheetPayDto.getMusicSheetId());
|
|
|
OrderCreateRes orderCreateRes = new OrderCreateRes();
|
|
|
- if (musicSheet == null) {
|
|
|
- throw new BizException("不存在曲目信息");
|
|
|
- }
|
|
|
+ orderCreateRes.setGoodType(orderCreateRes.getGoodType());
|
|
|
+ orderCreateRes.setGoodNum(1);
|
|
|
+ orderCreateRes.setOrderType(orderReqInfo.getOrderType());
|
|
|
+
|
|
|
+ switch (orderReqInfo.getOrderType()) {
|
|
|
+ case MUSIC: // 单曲
|
|
|
+ {
|
|
|
+ MusicSheet musicSheet = this.getById(musicSheetPayDto.getMusicSheetId());
|
|
|
+ if (musicSheet == null) {
|
|
|
+ throw new BizException("不存在曲目信息");
|
|
|
+ }
|
|
|
|
|
|
- // 检查已经购买
|
|
|
- checkoutPay(orderReqInfo.getUserId(), musicSheetPayDto.getMusicSheetId(), musicSheetPayDto.getClientType());
|
|
|
+ orderCreateRes.setRes(true);
|
|
|
+ if (!musicSheet.getSourceType().getCode().equals(SourceTypeEnum.PLATFORM.getCode())) {
|
|
|
+ orderCreateRes.setMerchId(musicSheet.getUserId());
|
|
|
+ }
|
|
|
|
|
|
- orderCreateRes.setRes(true);
|
|
|
- if (!musicSheet.getSourceType().getCode().equals(SourceTypeEnum.PLATFORM.getCode())) {
|
|
|
- orderCreateRes.setMerchId(musicSheet.getUserId());
|
|
|
+
|
|
|
+ orderCreateRes.setBizId(musicSheet.getId());
|
|
|
+ orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice());
|
|
|
+ orderCreateRes.setExpectPrice(musicSheet.getMusicPrice());
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ALBUM: // 专辑
|
|
|
+ {
|
|
|
+ MusicAlbum album = musicAlbumMapper.selectById(musicSheetPayDto.getMusicSheetId());
|
|
|
+
|
|
|
+ if (Objects.isNull(album)) {
|
|
|
+ throw new BizException("无效的专辑信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ orderCreateRes.setRes(true);
|
|
|
+ orderCreateRes.setMerchId(0L);
|
|
|
+ orderCreateRes.setBizId(album.getId());
|
|
|
+ orderCreateRes.setOriginalPrice(BigDecimal.valueOf(album.getAlbumPrice()));
|
|
|
+ orderCreateRes.setExpectPrice(BigDecimal.valueOf(album.getAlbumPrice()));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
- orderCreateRes.setGoodType(orderCreateRes.getGoodType());
|
|
|
- orderCreateRes.setBizId(musicSheet.getId());
|
|
|
- orderCreateRes.setGoodNum(1);
|
|
|
- orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice());
|
|
|
- orderCreateRes.setExpectPrice(musicSheet.getMusicPrice());
|
|
|
+
|
|
|
+ // 检查已经购买,抛出已购买异常
|
|
|
+ checkoutPay(orderReqInfo.getUserId(), musicSheetPayDto.getMusicSheetId(), musicSheetPayDto.getClientType(),
|
|
|
+ PurchaseRecordTypeEnum.valueOf(orderReqInfo.getOrderType().getCode()));
|
|
|
+
|
|
|
return HttpResponseResult.succeed(orderCreateRes);
|
|
|
|
|
|
}
|
|
@@ -672,12 +705,13 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
* @param musicSheetId 曲目id
|
|
|
* @param clientType
|
|
|
*/
|
|
|
- private void checkoutPay(Long userId, Long musicSheetId, String clientType) {
|
|
|
+ private void checkoutPay(Long userId, Long musicSheetId, String clientType, PurchaseRecordTypeEnum purchaseType) {
|
|
|
List<MusicSheetPurchaseRecord> list = musicSheetPurchaseRecordService
|
|
|
.lambdaQuery()
|
|
|
.eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId)
|
|
|
.eq(MusicSheetPurchaseRecord::getStudentId, userId)
|
|
|
.eq(MusicSheetPurchaseRecord::getClientType, clientType)
|
|
|
+ .eq(MusicSheetPurchaseRecord::getPurchaseType, purchaseType)
|
|
|
.eq(MusicSheetPurchaseRecord::getOrderStatus, OrderStatusEnum.PAID)
|
|
|
.list();
|
|
|
if (!CollectionUtils.isEmpty(list)) {
|
|
@@ -784,8 +818,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
* @param serviceFeeAmount 服务费
|
|
|
*/
|
|
|
private void addMusicSheetPurchaseRecord(UserOrderDetailVo userOrderDetailVo, BigDecimal actualPrice, BigDecimal serviceFeeAmount) {
|
|
|
- MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
|
|
|
- .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(), userOrderDetailVo.getOrderClient());
|
|
|
+ MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
|
|
|
+ userOrderDetailVo.getUserId(),
|
|
|
+ userOrderDetailVo.getBizId(),
|
|
|
+ userOrderDetailVo.getOrderClient(),
|
|
|
+ PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode()));
|
|
|
if (musicSheetPurchaseRecord == null) {
|
|
|
musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
|
|
|
}
|
|
@@ -799,6 +836,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
musicSheetPurchaseRecord.setMusicSheetServiceFee(serviceFeeAmount);
|
|
|
musicSheetPurchaseRecord.setOrderStatus(OrderStatusEnum.PAID);
|
|
|
musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
|
|
|
+ musicSheetPurchaseRecord.setPurchaseType(PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode()));
|
|
|
musicSheetPurchaseRecordService.saveOrUpdate(musicSheetPurchaseRecord);
|
|
|
}
|
|
|
|
|
@@ -824,8 +862,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void orderAfterSheet(UserOrderDetailVo userOrderDetailVo) {
|
|
|
// 保存购买记录
|
|
|
- MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
|
|
|
- .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(), userOrderDetailVo.getOrderClient());
|
|
|
+ MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
|
|
|
+ userOrderDetailVo.getUserId(),
|
|
|
+ userOrderDetailVo.getBizId(),
|
|
|
+ userOrderDetailVo.getOrderClient(),
|
|
|
+ PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode()));
|
|
|
if (musicSheetPurchaseRecord == null) {
|
|
|
musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
|
|
|
}
|
|
@@ -836,14 +877,19 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
musicSheetPurchaseRecord.setOriginalPrice(userOrderDetailVo.getOriginalPrice());
|
|
|
musicSheetPurchaseRecord.setOrderStatus(OrderStatusEnum.WAIT_PAY);
|
|
|
musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
|
|
|
+ musicSheetPurchaseRecord.setPurchaseType(PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode()));
|
|
|
+
|
|
|
musicSheetPurchaseRecordService.saveOrUpdate(musicSheetPurchaseRecord);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void buyMusicSheetCancel(UserOrderDetailVo userOrderDetailVo) {
|
|
|
- MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
|
|
|
- .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(), userOrderDetailVo.getOrderClient());
|
|
|
+ MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
|
|
|
+ userOrderDetailVo.getUserId(),
|
|
|
+ userOrderDetailVo.getBizId(),
|
|
|
+ userOrderDetailVo.getOrderClient(),
|
|
|
+ PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode()));
|
|
|
|
|
|
if (musicSheetPurchaseRecord == null) return;
|
|
|
musicSheetPurchaseRecordService.removeById(musicSheetPurchaseRecord.getId());
|