Forráskód Böngészése

添加曲目购买验证

liujunchi 2 éve
szülő
commit
9c778fc7aa

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

@@ -4,6 +4,7 @@ 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;
@@ -31,6 +32,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;
 
 /**
@@ -65,6 +67,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     @Autowired
     private MusicSheetAuthRecordService musicSheetAuthRecordService;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
     public MusicSheetDao getDao() {
         return musicSheetDao;
     }
@@ -300,7 +305,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     @Override
     public HttpResponseResult<OrderCreateRes> buyMusicSheetCheck(OrderReq.OrderReqInfo orderReqInfo) {
 
-        // todo 下单前的验证
+        // 下单前的验证
+        getSysUser(orderReqInfo.getUserId());
 
         MusicSheetPayDto musicSheetPayDto = JSON.parseObject(
                 JSON.toJSONString(orderReqInfo.getBizContent()), MusicSheetPayDto.class);
@@ -308,9 +314,13 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         MusicSheet musicSheet = this.getById(musicSheetPayDto.getMusicSheetId());
         OrderCreateRes orderCreateRes = new OrderCreateRes();
         if (musicSheet == null) {
-            // todo
+            throw new BizException("不存在曲目信息");
         }
 
+        // 检查已经购买
+        checkoutPay(orderReqInfo.getUserId(),musicSheetPayDto.getMusicSheetId());
+
+
 
         orderCreateRes.setRes(true);
         orderCreateRes.setMerchId(musicSheet.getUserId());
@@ -323,6 +333,26 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 
     }
 
+    /**
+     * 检查是否已购买当前曲目
+     *
+     * @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();
@@ -336,4 +366,10 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         musicSheetPurchaseRecordService.save(musicSheetPurchaseRecord);
 
     }
+
+    private SysUser getSysUser(Long userId) {
+        return Optional.ofNullable(userId)
+                       .map(sysUserFeignService::queryUserById)
+                       .orElseThrow(() -> new BizException("用户不存在"));
+    }
 }