Răsfoiți Sursa

feat(app): 新增用户分班信息查询功能

- 在AppClassGroupingMapper中新增queryByUserId方法用于查询用户分班信息- 新增ClassGroupingDTO类用于封装分班数据传输对象
- 修改AppOrderInfoDTO中的proInfoList类型为AppOrderProInfoVO列表
- 在OrderServiceImpl中注入AppClassGroupingMapper并实现分班信息查询逻辑
- 优化ClassGroupingVO和ClassGroupingCaseVO的时间格式化注解
- 完善订单信息查询时的班级和教练名称展示逻辑
wzq 2 zile în urmă
părinte
comite
e3f8608555

+ 2 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/dto/AppOrderInfoDTO.java

@@ -11,6 +11,7 @@ import org.jeecg.modules.app.vo.AppGameScheduleVO;
 import org.jeecg.modules.system.app.entity.AppCourses;
 import org.jeecg.modules.system.app.entity.AppOrderProInfo;
 import org.jeecg.modules.system.app.entity.InsureOrderInfo;
+import org.jeecg.modules.system.app.vo.AppOrderProInfoVO;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -143,7 +144,7 @@ public class AppOrderInfoDTO implements Serializable {
     private BigDecimal price;
 
     @Schema(description = "订单信息")
-    private List<AppOrderProInfo> proInfoList;
+    private List<AppOrderProInfoVO> proInfoList;
 
     @Schema(description = "赛事安排")
     private List<AppGameScheduleVO> appGameScheduleVOList;

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

@@ -39,6 +39,7 @@ import org.jeecg.modules.pay.config.RatiosUtil;
 import org.jeecg.modules.pay.config.WechatConstants;
 import org.jeecg.modules.pay.config.WechatUrlConstants;
 import org.jeecg.modules.rabbitmq.DelayedMessageService;
+import org.jeecg.modules.system.app.dto.ClassGroupingDTO;
 import org.jeecg.modules.system.app.dto.receiptPaymentDetails.ReceiptPaymentDetailsInfoVo;
 import org.jeecg.modules.system.app.entity.*;
 import org.jeecg.modules.system.app.form.PriceChangeForm;
@@ -2434,6 +2435,9 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
         return previewOrderPlaceGymnasiumNoFixation;
     }
 
+    @Resource
+    private AppClassGroupingMapper appClassGroupingMapper;
+
     @Override
     public AppOrderInfoDTO queryOrderInfo(String orderId) {
 
@@ -2469,13 +2473,22 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
 
         //子订单
         List<AppOrderProInfo> proInfoList = appOrderProInfoMapper.selectList(Wrappers.<AppOrderProInfo>lambdaQuery().eq(AppOrderProInfo::getOrderId, orderId));
+        List<AppOrderProInfoVO> appOrderProInfoVOList = new ArrayList<>();
         for (AppOrderProInfo appOrderProInfo : proInfoList) {
             AppOrderProInfoVO appOrderProInfoVO = new AppOrderProInfoVO();
             BeanUtil.copyProperties(appOrderProInfo, appOrderProInfoVO);
-            //班级、教练名称
-//            appOrderProInfoVO.setClassGroupingName().setCoachName();
+            //课程
+            if (appOrderProInfo.getType().equals(CommonConstant.ORDER_PRO_INFO_TYPE_5)){
+                //根据当前用户和课程获取班级名称
+                ClassGroupingDTO classGroupingDTO = appClassGroupingMapper.queryByUserId(appOrderProInfo.getFamilyUserId(), appOrderProInfo.getProductId());
+                //班级、教练名称
+                if (ObjectUtil.isNotEmpty(classGroupingDTO)){
+                    appOrderProInfoVO.setClassGroupingName(classGroupingDTO.getClassName()).setCoachName(classGroupingDTO.getCoachUserName());
+                }
+            }
+            appOrderProInfoVOList.add(appOrderProInfoVO);
         }
-        appOrderInfoDTO.setProInfoList(proInfoList);
+        appOrderInfoDTO.setProInfoList(appOrderProInfoVOList);
 
         //学校
         if (appOrder.getType().equals(CommonConstant.ORDER_TYPE_0)) {

+ 3 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppClassGroupingController.java

@@ -51,7 +51,9 @@ public class AppClassGroupingController {
     public Result<IPage<ClassGroupingVO>> queryPage(ClassGroupingPageForm classGroupingPageForm) {
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String orgCode = loginUser.getOrgCode();
-        classGroupingPageForm.setOrgCode(orgCode);
+        if (!"A01".equals(orgCode)){
+            classGroupingPageForm.setOrgCode(orgCode);
+        }
         IPage<ClassGroupingVO> classGroupingVOIPage = appClassGroupingService.queryPage(classGroupingPageForm);
         return Result.OK(classGroupingVOIPage);
     }

+ 29 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/ClassGroupingDTO.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.system.app.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+public class ClassGroupingDTO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private String className;
+
+    private String coachUserId;
+
+    private String coachUserName;
+}

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.system.app.dto.ClassGroupingDTO;
 import org.jeecg.modules.system.app.entity.AppClassGrouping;
 import org.jeecg.modules.system.app.form.ClassGroupingCasePageForm;
 import org.jeecg.modules.system.app.form.ClassGroupingPageForm;
@@ -16,4 +17,7 @@ public interface AppClassGroupingMapper extends BaseMapper<AppClassGrouping> {
     IPage<ClassGroupingVO> queryPage(Page<ClassGroupingVO> page, @Param("classGroupingPageForm") ClassGroupingPageForm classGroupingPageForm);
 
     IPage<ClassGroupingCaseVO> queryCasePage(Page<ClassGroupingCaseVO> page, @Param("classGroupingCasePageForm") ClassGroupingCasePageForm classGroupingCasePageForm);
+
+    //根据用户ID查询当前用户的分班信息
+    ClassGroupingDTO queryByUserId(@Param("userId") String userId, @Param("classId") String classId);
 }

+ 17 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppClassGroupingMapper.xml

@@ -10,7 +10,8 @@
         s.NAME AS address,
         c.start_time,
         c.end_time,
-        COUNT(op.product_id) AS applyNum
+        COUNT(op.product_id) AS applyNum,
+        c.create_time
         FROM
         nm_courses c
         LEFT JOIN nm_site s ON c.address_site_id = s.id
@@ -52,4 +53,19 @@
         cg.class_name
         ORDER BY cg.create_time DESC
     </select>
+    <select id="queryByUserId" resultType="org.jeecg.modules.system.app.dto.ClassGroupingDTO">
+        SELECT
+            cg.id,
+            cg.class_name,
+            cg.coach_user_id,
+            u.realname AS coachUserName
+        FROM
+            `nm_class_grouping` cg
+                LEFT JOIN nm_class_user cu ON cu.class_grouping_id = cg.id
+                LEFT JOIN sys_user u ON u.id = cg.coach_user_id
+        WHERE
+            cg.del_flag = 0
+            AND cu.family_member_id = #{userId}
+	        AND cu.course_id = #{classId}
+    </select>
 </mapper>

+ 3 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppClassGroupingServiceImpl.java

@@ -39,7 +39,8 @@ public class AppClassGroupingServiceImpl extends ServiceImpl<AppClassGroupingMap
     @Override
     public IPage<ClassGroupingVO> queryPage(ClassGroupingPageForm classGroupingPageForm) {
         Page<ClassGroupingVO> page = new Page<ClassGroupingVO>(classGroupingPageForm.getPageNo(), classGroupingPageForm.getPageSize());
-        page.getRecords().forEach(record -> {
+        IPage<ClassGroupingVO> queryPage = baseMapper.queryPage(page, classGroupingPageForm);
+        queryPage.getRecords().forEach(record -> {
 
             long AlreadyClassGroupingNum =
                     appClassUserMapper.selectCount(Wrappers.lambdaQuery(AppClassUser.class).eq(AppClassUser::getClassGroupingId, record.getId()));
@@ -48,7 +49,7 @@ public class AppClassGroupingServiceImpl extends ServiceImpl<AppClassGroupingMap
 
             record.setAlreadyClassGroupingNum((int) AlreadyClassGroupingNum).setUnClassGroupingNum((int) UnClassGroupingNum);
         });
-        return baseMapper.queryPage(page, classGroupingPageForm);
+        return queryPage;
     }
 
     @Override

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

@@ -1,11 +1,13 @@
 package org.jeecg.modules.system.app.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -44,6 +46,8 @@ public class ClassGroupingCaseVO implements Serializable {
     /**
      * 创建时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
 }

+ 13 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/ClassGroupingVO.java

@@ -1,11 +1,13 @@
 package org.jeecg.modules.system.app.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -44,11 +46,15 @@ public class ClassGroupingVO implements Serializable {
     /**
      * 开课时间
      */
+    @DateTimeFormat(pattern = "MM:dd")
+    @JsonFormat(pattern = "MM:dd", timezone = "GMT+8")
     private Date startTime;
 
     /**
      * 结束时间
      */
+    @DateTimeFormat(pattern = "MM:dd")
+    @JsonFormat(pattern = "MM:dd", timezone = "GMT+8")
     private Date endTime;
 
     /**
@@ -65,4 +71,11 @@ public class ClassGroupingVO implements Serializable {
      * 未分班人数
      */
     private Integer unClassGroupingNum;
+
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
 }