浏览代码

feat(app):
1.查询课程课时核销记录

wzq 3 天之前
父节点
当前提交
3f0418c4af

+ 9 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/OrderController.java

@@ -11,12 +11,14 @@ import org.jeecg.modules.app.form.CreateOrderForm;
 import org.jeecg.modules.app.form.UserPayForm;
 import org.jeecg.modules.app.service.IOrderService;
 import org.jeecg.modules.app.vo.OrderVO;
+import org.jeecg.modules.system.app.entity.AppCoursesVerificationRecord;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Tag(name = "APP订单相关接口")
@@ -131,6 +133,13 @@ public class OrderController {
         return Result.ok(appOrderService.queryOrderInfo(orderId));
     }
 
+    @Operation(summary = "订单-查询课程课时核销记录")
+    @GetMapping("/queryOrderVerifyRecords")
+    public Result<Map<Integer, List<AppCoursesVerificationRecord>>> queryOrderVerifyRecords(@Schema(description = "订单ID") @RequestParam(name = "orderId") String orderId,
+                                                                                            @Schema(description = "券号")@RequestParam(name = "ticketNo")String ticketNo) {
+        return Result.ok(appOrderService.queryOrderVerifyRecords(orderId,ticketNo));
+    }
+
     /**
      * @Author SheepHy
      * @Description 体育馆无固定场-预览页

+ 10 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/commercial/CommercialController.java

@@ -10,6 +10,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.app.form.ClassPostponeForm;
 import org.jeecg.modules.app.form.CourseQueryUsersForm;
 import org.jeecg.modules.app.vo.VerifyCourseInfoVO;
 import org.jeecg.modules.system.app.entity.AppCourses;
@@ -118,8 +119,15 @@ public class CommercialController {
      */
     @Operation(summary = "临时约课")
     @GetMapping("/temporaryCourse")
-    public Result<Boolean> temporaryCourse(@Schema(description = "页数") @RequestParam(name = "coursePriceRulesId") String coursePriceRulesId,
-                                           @Schema(description = "页数") @RequestParam(name = "userId") String userId) {
+    public Result<Boolean> temporaryCourse(@Schema(description = "课时ID") @RequestParam(name = "coursePriceRulesId") String coursePriceRulesId,
+                                           @Schema(description = "学生ID") @RequestParam(name = "userId") String userId) {
         return Result.OK(appCoureseService.temporaryCourse(coursePriceRulesId, userId));
     }
+
+    @Operation(summary = "课时延期(创建补课课时)")
+    @PostMapping("/classPostpone")
+    public Result<Boolean> classPostpone(@RequestBody ClassPostponeForm form) {
+
+        return Result.OK();
+    }
 }

+ 18 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/form/ClassPostponeForm.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.app.form;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "课程延期表单对象")
+public class ClassPostponeForm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IOrderService.java

@@ -4,9 +4,11 @@ import org.jeecg.modules.app.dto.AppOrderInfoDTO;
 import org.jeecg.modules.app.form.CreateOrderForm;
 import org.jeecg.modules.app.form.UserPayForm;
 import org.jeecg.modules.app.vo.OrderVO;
+import org.jeecg.modules.system.app.entity.AppCoursesVerificationRecord;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 public interface IOrderService {
 
@@ -76,4 +78,6 @@ public interface IOrderService {
     OrderVO.PreviewOrderPlaceGymnasiumNoFixation previewOrderPlaceGymnasiumNoFixation(String placeId);
 
     AppOrderInfoDTO queryOrderInfo(String orderCode);
+
+    Map<Integer, List<AppCoursesVerificationRecord>> queryOrderVerifyRecords(String orderId, String ticketNo);
 }

+ 24 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -19,7 +19,9 @@ import org.jeecg.modules.app.form.CreateOrderForm;
 import org.jeecg.modules.app.form.InsureOrderInfoForm;
 import org.jeecg.modules.app.form.UserPayForm;
 import org.jeecg.modules.app.service.IOrderService;
+import org.jeecg.modules.app.vo.CoursesPriceRulesVO;
 import org.jeecg.modules.app.vo.OrderVO;
+import org.jeecg.modules.app.vo.VerifyCourseInfoDTO;
 import org.jeecg.modules.system.app.entity.*;
 import org.jeecg.modules.system.app.mapper.*;
 import org.jeecg.modules.system.mapper.SysDepartMapper;
@@ -30,10 +32,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 
@@ -721,6 +720,27 @@ public class OrderServiceImpl implements IOrderService {
         return appOrderInfoDTO;
     }
 
+    @Override
+    public Map<Integer, List<AppCoursesVerificationRecord>> queryOrderVerifyRecords(String orderId, String ticketNo) {
+
+        List<VerifyCourseInfoDTO> verifyCourseInfoDTOList = new ArrayList<>();
+
+        AppOrderProInfo proInfo = appOrderProInfoMapper.selectOne(Wrappers.<AppOrderProInfo>lambdaQuery().eq(AppOrderProInfo::getOrderId, orderId).eq(AppOrderProInfo::getTicketNo, ticketNo));
+
+        String familyUserId = proInfo.getFamilyUserId();
+        String appCourseId = proInfo.getProductId();
+
+        List<AppCoursesVerificationRecord> verificationRecordList = appCoursesVerificationRecordMapper.selectList(Wrappers.<AppCoursesVerificationRecord>lambdaQuery()
+                .eq(AppCoursesVerificationRecord::getOrderId, orderId)
+                .eq(AppCoursesVerificationRecord::getCoursesId, appCourseId)
+                .eq(AppCoursesVerificationRecord::getUseUserId, familyUserId));
+
+        Map<Integer, List<AppCoursesVerificationRecord>> map = verificationRecordList.stream().collect(Collectors.groupingBy(AppCoursesVerificationRecord::getCoursesType));
+
+
+        return map;
+    }
+
 
     /**
      * @return boolean

+ 10 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppCoureseServiceImpl.java

@@ -330,6 +330,16 @@ public class AppCoureseServiceImpl extends ServiceImpl<AppCoursesMapper, AppCour
             throw new JeecgBootException("当前用户不存在,请确认后重新提交");
         }
 
+        //判断是否已存在
+        List<AppCoursesVerificationRecord> verificationRecords =
+                appCoursesVerificationRecordMapper.selectList(Wrappers.<AppCoursesVerificationRecord>lambdaQuery()
+                        .eq(AppCoursesVerificationRecord::getCoursesPriceRuleId, coursePriceRulesId)
+                        .eq(AppCoursesVerificationRecord::getUseUserId,familyMemberId)
+                );
+        if (ObjUtil.isNotEmpty(verificationRecords)) {
+            throw new JeecgBootException(familyMembers.getFullName()+"已经在课程中,请确认后重新提交");
+        }
+
         AppCoursesVerificationRecord appCoursesVerificationRecord = new AppCoursesVerificationRecord();
         appCoursesVerificationRecord.setCoursesId(appCoursesPriceRules.getCoursesId());
         appCoursesVerificationRecord.setCoursesPriceRuleId(appCoursesPriceRules.getId());