|
|
@@ -239,6 +239,90 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
bo.setMsg("该身份证用户不存在");
|
|
|
continue;
|
|
|
}
|
|
|
+ OrderGoodsQueryBo orderGoodsQueryBo = new OrderGoodsQueryBo();
|
|
|
+ Long userId = user.getUserId();
|
|
|
+ Long goodsId = bo.getGoodsId();
|
|
|
+ orderGoodsQueryBo.setUserId(userId);
|
|
|
+ orderGoodsQueryBo.setGoodsId(goodsId);
|
|
|
+ List<Integer> refundStatusList = new ArrayList<>();
|
|
|
+ refundStatusList.add(0);
|
|
|
+ refundStatusList.add(1);
|
|
|
+ refundStatusList.add(3);
|
|
|
+ orderGoodsQueryBo.setRefundStatusList(refundStatusList);
|
|
|
+ List<Integer> payStatusList = new ArrayList<>();
|
|
|
+ payStatusList.add(2);
|
|
|
+ payStatusList.add(3);
|
|
|
+ payStatusList.add(4);
|
|
|
+ orderGoodsQueryBo.setPayStatusList(payStatusList);
|
|
|
+ List<OrderGoodsVo> list1 = iOrderGoodsService.selectList(orderGoodsQueryBo);
|
|
|
+ for(OrderGoodsVo goodsVo : list1){
|
|
|
+ if (goods.getGoodsType() == 6) {
|
|
|
+ //直播商品
|
|
|
+ bo.setMsg("直播商品不允许复购");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(Validator.isNotEmpty(goodsVo.getServiceEndTime())&&(goodsVo.getServiceEndTime().longValue()>(System.currentTimeMillis()/1000))){
|
|
|
+ if(goodsVo.getGoodsType()==1){
|
|
|
+ if(Validator.isNotEmpty(goodsVo.getGradeId())){
|
|
|
+ ClassGrade grade = iClassGradeService.getOne(new LambdaQueryWrapper<ClassGrade>()
|
|
|
+ .eq(ClassGrade::getGradeId, goodsVo.getGradeId()));
|
|
|
+ //不存在班级有效期才校验服务期是否过期
|
|
|
+ if(Validator.isEmpty(grade.getClassEndTime())){
|
|
|
+ bo.setMsg("存在已购买【学习服务期未过期】的视频商品,不可以重复购买商品");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(goodsVo.getGoodsType()==2){
|
|
|
+ bo.setMsg("存在已购买【学习服务期未过期】的题库商品,不可以重复购买商品");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (goods.getGoodsType() == 1) {
|
|
|
+ Long gradeId = bo.getGradeId();
|
|
|
+ //指定班级
|
|
|
+ if (gradeId != null && gradeId > 0) {
|
|
|
+ ClassGradeVo classGradeVo = iClassGradeService.queryById(gradeId);
|
|
|
+ if (classGradeVo == null) {
|
|
|
+ bo.setMsg("班级不存在");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (classGradeVo.getStatus() != 1) {
|
|
|
+ bo.setMsg("班级已失效");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ ClassGradeGoods gradeGoods = iClassGradeGoodsService.getOne(new LambdaQueryWrapper<ClassGradeGoods>().eq(ClassGradeGoods::getGradeId, gradeId)
|
|
|
+ .eq(ClassGradeGoods::getGoodsId, goodsId));
|
|
|
+ if (gradeGoods == null) {
|
|
|
+ bo.setMsg("该班级不支持该商品使用");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<ClassGradeUser> lqw = new LambdaQueryWrapper<>();
|
|
|
+ lqw.eq(ClassGradeUser::getGradeId, gradeId);
|
|
|
+ lqw.eq(ClassGradeUser::getStatus, 1);
|
|
|
+ int studentNum = iClassGradeUserService.count(lqw);
|
|
|
+ //临时锁定的班级学员数量
|
|
|
+ LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
|
|
|
+ lqwLock.eq(ClassGradeUserTemp::getGradeId, gradeId);
|
|
|
+ lqwLock.eq(ClassGradeUserTemp::getStatus, 1);
|
|
|
+ int locakStudentNum = iClassGradeUserTempService.count(lqwLock);
|
|
|
+ //预留0空位避免超人数
|
|
|
+ if ((classGradeVo.getStudentUpper() - studentNum - locakStudentNum) > 0) {
|
|
|
+ ClassGradeUser gradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getGradeId, gradeId)
|
|
|
+ .eq(ClassGradeUser::getUserId, userId));
|
|
|
+ //不在此班级内
|
|
|
+ if(Validator.isNotEmpty(gradeUser)){
|
|
|
+ bo.setMsg("用户已在此班级内");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ bo.setMsg("班级人数已满");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ bo.setMsg("下单验证成功");
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
@@ -468,6 +552,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
for (OrderGoodsAddBo g : goodsList) {
|
|
|
//订单商品
|
|
|
Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, g.getGoodsId()));
|
|
|
+ if (Validator.isEmpty(goods)) {
|
|
|
+ throw new CustomException("商品不存在", 510);
|
|
|
+ }
|
|
|
if (goods.getGoodsStatus() != 1) {
|
|
|
throw new CustomException(goods.getGoodsName()+"商品已下架,请重新选择商品下单", 510);
|
|
|
}
|