|
@@ -1,11 +1,17 @@
|
|
|
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;
|
|
|
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
import com.yonge.cooleshow.auth.api.enums.SysUserType;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.MusicSheetPayDto;
|
|
|
+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.*;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
@@ -13,6 +19,8 @@ import com.yonge.cooleshow.biz.dal.enums.*;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
import com.yonge.cooleshow.biz.dal.support.PageUtil;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.*;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
|
|
|
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
|
import com.yonge.cooleshow.common.exception.BizException;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -25,6 +33,7 @@ import org.springframework.util.CollectionUtils;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -59,6 +68,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
|
|
|
@Autowired
|
|
|
private MusicSheetAuthRecordService musicSheetAuthRecordService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserAccountService userAccountService;
|
|
|
+
|
|
|
public MusicSheetDao getDao() {
|
|
|
return musicSheetDao;
|
|
|
}
|
|
@@ -290,4 +305,85 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
|
|
|
return this.saveOrUpdate(musicSheet);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResponseResult<OrderCreateRes> buyMusicSheetCheck(OrderReq.OrderReqInfo orderReqInfo) {
|
|
|
+
|
|
|
+ // 下单前的验证
|
|
|
+ getSysUser(orderReqInfo.getUserId());
|
|
|
+
|
|
|
+ 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("不存在曲目信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查已经购买
|
|
|
+ checkoutPay(orderReqInfo.getUserId(),musicSheetPayDto.getMusicSheetId());
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ orderCreateRes.setRes(true);
|
|
|
+ orderCreateRes.setMerchId(musicSheet.getUserId());
|
|
|
+ orderCreateRes.setGoodType(orderCreateRes.getGoodType());
|
|
|
+ orderCreateRes.setBizId(musicSheet.getId());
|
|
|
+ orderCreateRes.setGoodNum(1);
|
|
|
+ orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice());
|
|
|
+ orderCreateRes.setExpectPrice(musicSheet.getMusicPrice());
|
|
|
+ return HttpResponseResult.succeed(orderCreateRes);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查是否已购买当前曲目
|
|
|
+ *
|
|
|
+ * @param userId 用户id
|
|
|
+ * @param musicSheetId 曲目id
|
|
|
+ */
|
|
|
+ private void checkoutPay(Long userId, Long musicSheetId) {
|
|
|
+ List<MusicSheetPurchaseRecord> list = musicSheetPurchaseRecordService
|
|
|
+ .lambdaQuery()
|
|
|
+ .eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId)
|
|
|
+ .eq(MusicSheetPurchaseRecord::getStudentId, userId)
|
|
|
+ .eq(MusicSheetPurchaseRecord::getOrderStatus, YesOrNoEnum.YES)
|
|
|
+ .list();
|
|
|
+ if (!CollectionUtils.isEmpty(list)) {
|
|
|
+ throw new BizException("已经购买了当前曲目");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void buyMusicSheetSuccess(UserOrderDetailVo userOrderDetailVo) {
|
|
|
+ // 保存购买记录
|
|
|
+ MusicSheetPurchaseRecord musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
|
|
|
+ musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
|
|
|
+ musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
|
|
|
+ musicSheetPurchaseRecord.setPurchasePrice(userOrderDetailVo.getExpectPrice());
|
|
|
+ musicSheetPurchaseRecord.setPurchaseTime(new Date());
|
|
|
+ musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId());
|
|
|
+ musicSheetPurchaseRecord.setOrderStatus(YesOrNoEnum.YES);
|
|
|
+ musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
|
|
|
+ musicSheetPurchaseRecordService.save(musicSheetPurchaseRecord);
|
|
|
+
|
|
|
+ // 加入账户
|
|
|
+ UserAccountRecordDto userAccountRecordDto = new UserAccountRecordDto();
|
|
|
+ userAccountRecordDto.setUserId(userOrderDetailVo.getMerchId());
|
|
|
+ userAccountRecordDto.setFrozenType(FrozenTypeEnum.NONE);
|
|
|
+ userAccountRecordDto.setTransAmount(musicSheetPurchaseRecord.getPurchasePrice());
|
|
|
+ userAccountRecordDto.setInOrOut(InOrOutEnum.IN);
|
|
|
+ userAccountRecordDto.setBizType(AccountBizTypeEnum.MUSIC);
|
|
|
+ userAccountRecordDto.setBizId(musicSheetPurchaseRecord.getMusicSheetId());
|
|
|
+ userAccountRecordDto.setBizName(userOrderDetailVo.getGoodName());
|
|
|
+ userAccountRecordDto.setOrderNo(userOrderDetailVo.getOrderNo());
|
|
|
+ userAccountService.accountChange(userAccountRecordDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ private SysUser getSysUser(Long userId) {
|
|
|
+ return Optional.ofNullable(userId)
|
|
|
+ .map(sysUserFeignService::queryUserById)
|
|
|
+ .orElseThrow(() -> new BizException("用户不存在"));
|
|
|
+ }
|
|
|
}
|