浏览代码

Merge remote-tracking branch 'origin/master'

SheepHy 2 天之前
父节点
当前提交
1939d59bfb
共有 30 个文件被更改,包括 461 次插入69 次删除
  1. 7 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/OrderController.java
  2. 51 12
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/commercial/CommercialController.java
  3. 10 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/my/AppEvaluateController.java
  4. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/dto/AppOrderInfoDTO.java
  5. 4 2
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/dto/evaluate/AddEvaluateDTO.java
  6. 11 8
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IAppIsinService.java
  7. 45 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppIsinServiceImpl.java
  8. 28 6
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java
  9. 35 22
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java
  10. 48 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/AppCoursesPageVO.java
  11. 45 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/AppIsinVerifyVO.java
  12. 7 2
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/StadiumConcertsVO.java
  13. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/evaluate/FindEvaluateResponseDTO.java
  14. 7 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppCoursesVerificationRecord.java
  15. 10 3
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppIsin.java
  16. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/Evaluate.java
  17. 3 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppCoursesMapper.java
  18. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppIsinMapper.java
  19. 2 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppSitePlaceMapper.java
  20. 22 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppCoursesMapper.xml
  21. 24 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppIsinMapper.xml
  22. 24 3
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePlaceMapper.xml
  23. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/EvaluateMapper.xml
  24. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppCoureseService.java
  25. 6 4
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppCoureseServiceImpl.java
  26. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppOrderServiceImpl.java
  27. 8 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/EvaluateServiceImpl.java
  28. 35 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/StringMasker.java
  29. 3 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/TimeRangeFinder.java
  30. 7 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/time/NextSevenDayVo.java

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

@@ -134,6 +134,13 @@ public class OrderController {
         return Result.ok(appOrderService.queryOrderInfo(orderId));
     }
 
+    /**
+     * 订单-查询课程课时核销记录
+     *
+     * @param orderId
+     * @param ticketNo
+     * @return
+     */
     @Operation(summary = "订单-查询课程课时核销记录")
     @GetMapping("/queryOrderVerifyRecords")
     public Result<Map<Integer, List<AppCoursesVerificationRecord>>> queryOrderVerifyRecords(@Schema(description = "订单ID") @RequestParam(name = "orderId") String orderId,

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

@@ -14,10 +14,8 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.app.form.ClassPostponeForm;
 import org.jeecg.modules.app.form.CourseQueryUsersForm;
-import org.jeecg.modules.app.vo.FamilyUserVO;
-import org.jeecg.modules.app.vo.ScanCodeQueryOrderVO;
-import org.jeecg.modules.app.vo.VerifyCourseInfoVO;
-import org.jeecg.modules.system.app.entity.AppCourses;
+import org.jeecg.modules.app.service.IAppIsinService;
+import org.jeecg.modules.app.vo.*;
 import org.jeecg.modules.system.app.entity.AppCoursesPriceRules;
 import org.jeecg.modules.system.app.entity.AppCoursesVerificationRecord;
 import org.jeecg.modules.system.app.entity.FamilyMembers;
@@ -44,6 +42,8 @@ public class CommercialController {
 
     private final IFamilyMembersService familyMembersService;
 
+    private final IAppIsinService appIsinService;
+
     /**
      * 查询部门下的课程
      *
@@ -54,11 +54,18 @@ public class CommercialController {
      */
     @Operation(summary = "查询部门下的课程 ")
     @GetMapping("/getPageCourse")
-    public Result<IPage<AppCourses>> getPageCourse(@Schema(description = "部门编号") @RequestParam(name = "orgCode") String orgCode,
-                                                   @Schema(description = "页数") @RequestParam(name = "pageNo") Integer pageNo,
-                                                   @Schema(description = "条数") @RequestParam(name = "pageSize") Integer pageSize) {
-        Page<AppCourses> page = new Page<AppCourses>(pageNo, pageSize);
-        IPage<AppCourses> pageList = appCoureseService.page(page, Wrappers.<AppCourses>lambdaQuery().eq(AppCourses::getOrgCode, orgCode));
+    public Result<IPage<AppCoursesPageVO>> getPageCourse(@Schema(description = "部门编号") @RequestParam(name = "orgCode") String orgCode,
+                                                         @Schema(description = "页数") @RequestParam(name = "pageNo") Integer pageNo,
+                                                         @Schema(description = "条数") @RequestParam(name = "pageSize") Integer pageSize) {
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = null;
+        //如果是教练
+        String roleCode = loginUser.getRoleCode();
+        if (roleCode.contains("instructor")) {
+            userId = loginUser.getId();
+        }
+        Page<AppCoursesPageVO> page = new Page<>(pageNo, pageSize);
+        IPage<AppCoursesPageVO> pageList = appCoureseService.getPageCourse(page,orgCode,userId);
         return Result.OK(pageList);
     }
 
@@ -125,7 +132,7 @@ public class CommercialController {
      * @return
      */
     @Operation(summary = "临时约课")
-    @GetMapping("/temporaryCourse")
+    @PutMapping("/temporaryCourse")
     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));
@@ -174,7 +181,7 @@ public class CommercialController {
      * @return
      */
     @Operation(summary = "扫码核销确认")
-    @GetMapping("/scanCodeVerification")
+    @PutMapping("/scanCodeVerification")
     public Result<Boolean> scanCodeVerification(@RequestBody List<String> orderProInfoIds) {
         return Result.OK(appOrderService.scanCodeVerification(orderProInfoIds));
     }
@@ -187,7 +194,39 @@ public class CommercialController {
     @GetMapping("/queryMakeUpClassTable")
     public Result<List<AppCoursesPriceRules>> queryMakeUpClassTable() {
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        List<AppCoursesPriceRules> list = appCoursesPriceRulesService.list(Wrappers.<AppCoursesPriceRules>lambdaQuery().eq(AppCoursesPriceRules::getCoursesType, 1).eq(AppCoursesPriceRules::getOrgCode, loginUser.getOrgCode()));
+        List<AppCoursesPriceRules> list = appCoursesPriceRulesService.list(Wrappers.<AppCoursesPriceRules>lambdaQuery()
+                .eq(AppCoursesPriceRules::getCoursesType, 1)
+                .eq(AppCoursesPriceRules::getOrgCode, loginUser.getOrgCode()));
         return Result.OK(list);
     }
+
+    /**
+     * 查询部门下的核销记录
+     *
+     * @param pageNo
+     * @param pageSize
+     * @return
+     */
+    @Operation(summary = "查询部门下的使用核销记录 ")
+    @GetMapping("/pageAppIsinVerifyRecords")
+    public Result<IPage<AppIsinVerifyVO>> pageAppIsinVerifyRecords(@Schema(description = "页数") @RequestParam(name = "pageNo") Integer pageNo,
+                                                                   @Schema(description = "条数") @RequestParam(name = "pageSize") Integer pageSize) {
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String orgCode = loginUser.getOrgCode();
+        Page<AppIsinVerifyVO> page = new Page<>(pageNo, pageSize);
+        Page<AppIsinVerifyVO> pageList = appIsinService.pageAppIsinVerifyRecords(page, orgCode);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 使用核销记录撤销
+     *
+     * @param appIsinId
+     * @return
+     */
+    @Operation(summary = "使用核销记录撤销 ")
+    @PutMapping("/repealVerifyRecord")
+    public Result<String> repealVerifyRecord(@Schema(description = "appIsinId") @RequestParam(name = "appIsinId") String appIsinId) {
+        return Result.OK(appIsinService.repealVerifyRecord(appIsinId));
+    }
 }

+ 10 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/my/AppEvaluateController.java

@@ -13,7 +13,9 @@ import org.jeecg.modules.app.dto.PageDTO;
 import org.jeecg.modules.app.dto.evaluate.AddEvaluateDTO;
 import org.jeecg.modules.app.dto.evaluate.FindEvaluateDTO;
 import org.jeecg.modules.system.app.dto.evaluate.FindEvaluateResponseDTO;
+import org.jeecg.modules.system.app.entity.AppOrder;
 import org.jeecg.modules.system.app.entity.Evaluate;
+import org.jeecg.modules.system.app.service.IAppOrderService;
 import org.jeecg.modules.system.app.service.IEvaluateService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +35,8 @@ public class AppEvaluateController {
 
     @Autowired
     private IEvaluateService evaluateService;
+    @Autowired
+    private IAppOrderService iAppOrderService;
 
 
     /**
@@ -52,12 +56,18 @@ public class AppEvaluateController {
     @Operation(summary = "提交评价")
     public Result<String> submitFeedback(@RequestBody AddEvaluateDTO addEvaluateDTO) {
         //缺少订单校验逻辑 需要校验订单并且
+        AppOrder appOrder = iAppOrderService.getById(addEvaluateDTO.getOrderId());
+        if (appOrder==null){
+            return Result.error("提交评价失败,未查询到订单");
+        }
         Evaluate evaluate = new Evaluate();
         LoginUser principal = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         BeanUtils.copyProperties(addEvaluateDTO, evaluate);
         evaluate.setId(UuidUtils.getUUID());
         evaluate.setUserId(principal.getId());
         evaluate.setCreateTime(new Date());
+        evaluate.setDeptId(appOrder.getTenantId());
+        evaluate.setOrgCode(appOrder.getOrgCode());
         boolean save = evaluateService.save(evaluate);
         if (!save) {
             return Result.error("提交评价失败,请联系管理员");

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

@@ -34,6 +34,9 @@ public class AppOrderInfoDTO implements Serializable {
     @Schema(description = "订单状态")
     private Integer orderStatus;
 
+    @Schema(description = "订单类型")
+    private Integer type;
+
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Schema(description = "下单时间")
@@ -46,6 +49,7 @@ public class AppOrderInfoDTO implements Serializable {
 
     @Schema(description = "门店名称")
     private String siteName;
+
     @Schema(description = "经营状态 0-营业 1-休息")
     private Integer runStatus;
 

+ 4 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/dto/evaluate/AddEvaluateDTO.java

@@ -25,7 +25,7 @@ public class AddEvaluateDTO {
     private String deptId;
     /**场地/地点*/
     @Schema(description = "场地/地点")
-    private Integer siteId;
+    private String siteId;
     /**用户*/
     @Schema(description = "用户")
     private String userId;
@@ -50,6 +50,8 @@ public class AddEvaluateDTO {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @Schema(description = "创建时间;创建时间")
     private Date createTime;
-
+    /**是否匿名 0-匿名 1-不匿名*/
+    @Schema(description = "是否匿名 0-匿名 1-不匿名")
+    private Integer  isAnonymous;
 
 }

+ 11 - 8
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IAppIsinService.java

@@ -1,11 +1,14 @@
 package org.jeecg.modules.app.service;
 
-public interface IAppIsinService {
-    /**
-     * @Author SheepHy
-     * @Description 券使用记录
-     * @Date 16:10 2025/7/16
-     * @Param
-     * @return
-     **/
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.app.vo.AppIsinVerifyVO;
+import org.jeecg.modules.system.app.entity.AppIsin;
+
+public interface IAppIsinService extends IService<AppIsin> {
+
+    Page<AppIsinVerifyVO> pageAppIsinVerifyRecords(Page<AppIsinVerifyVO> page, String orgCode);
+
+    String repealVerifyRecord(String appIsinId);
+
 }

+ 45 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppIsinServiceImpl.java

@@ -1,10 +1,54 @@
 package org.jeecg.modules.app.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.log4j.Log4j2;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.app.service.IAppIsinService;
+import org.jeecg.modules.app.vo.AppIsinVerifyVO;
+import org.jeecg.modules.system.app.entity.AppIsin;
+import org.jeecg.modules.system.app.mapper.AppIsinMapper;
 import org.springframework.stereotype.Service;
 
+import java.util.Calendar;
+import java.util.Date;
+
 @Service
 @Log4j2
-public class AppIsinServiceImpl implements IAppIsinService {
+public class AppIsinServiceImpl extends ServiceImpl<AppIsinMapper, AppIsin> implements IAppIsinService {
+    @Override
+    public Page<AppIsinVerifyVO> pageAppIsinVerifyRecords(Page<AppIsinVerifyVO> page, String orgCode) {
+        return baseMapper.pageAppIsinVerifyRecords(page,orgCode);
+    }
+
+    @Override
+    public String repealVerifyRecord(String appIsinId) {
+
+        AppIsin appIsin = this.getById(appIsinId);
+        //校验核验时间
+        if(ObjectUtil.isNotEmpty(appIsin.getUseTime())){
+            Date expTime = getDate(appIsin.getUseTime());
+            if(expTime.before(new Date())){
+                throw new JeecgBootException("已超过可撤销时间,无法撤销!");
+            }
+        }
+        appIsin.setIsinStatus(0);
+        Date expireTime = appIsin.getExpireTime();
+        //判断当前时间是否过期
+        if(expireTime.before(new Date())) {
+            appIsin.setIsinStatus(2);
+        }
+        this.updateById(appIsin);
+        return "撤销成功!";
+    }
+
+    //时间加1小时
+    public static Date getDate(Date date){
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        // 24小时制
+        cal.add(Calendar.HOUR, 1);
+        return cal.getTime();
+    }
 }

+ 28 - 6
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java

@@ -16,6 +16,7 @@ import org.jeecg.modules.app.vo.CourseInfoVO;
 import org.jeecg.modules.app.vo.PlaceInfoVO;
 import org.jeecg.modules.app.vo.course.CourseRequestVo;
 import org.jeecg.modules.app.vo.course.CourseResponseVo;
+import org.jeecg.modules.app.vo.stadium.ConcertsDetailsVO;
 import org.jeecg.modules.app.vo.stadium.ConcertsVO;
 import org.jeecg.modules.app.vo.stadium.StadiumConcertsResponseVO;
 import org.jeecg.modules.app.vo.stadium.StadiumConcertsVO;
@@ -220,16 +221,37 @@ public class DetailServiceImpl implements IDetailService {
             stadiumConcertsResponseVO = new StadiumConcertsResponseVO();
         }
         List<StadiumConcertsVO> stadiumConcertsVOS = new ArrayList<>();
+        Boolean label = true;
         for (NextSevenDayVo nextSevenDay : nextSevenDays) {
             StadiumConcertsVO stadiumConcertsVO = new StadiumConcertsVO();
             BeanUtils.copyProperties(nextSevenDay,stadiumConcertsVO);
-            //
-            //查询预约总数
-//            appSitePlaceMapper.findCount();
-//            查询过期和已预约数
-            //查询当天所有场地和场次
-            List<ConcertsVO>  concertsVOList= appSitePlaceMapper.findByConcerts(stadiumConcertsVO.getWeekDay(),siteId,categoryId);
+            List<ConcertsVO>  concertsVOList=null;
+            //查询当天所有场地和场次及状态
+            if (label){
+                concertsVOList= appSitePlaceMapper.findByConcertsAndTime(stadiumConcertsVO.getWeekDay(),siteId,categoryId);
+            }else {
+                concertsVOList= appSitePlaceMapper.findByConcerts(stadiumConcertsVO.getWeekDay(),siteId,categoryId);
+            }
+
+            label=false;
             stadiumConcertsVO.setConcertsVOList(concertsVOList);
+            long count=0L;
+            if (concertsVOList!=null&&!concertsVOList.isEmpty()){
+
+                for (ConcertsVO concertsVO : concertsVOList) {
+                    List<ConcertsDetailsVO> concertsDetailsVOList = concertsVO.getConcertsDetailsVOList();
+                    if (concertsDetailsVOList!=null&&!concertsDetailsVOList.isEmpty()){
+                        count = count+concertsDetailsVOList.stream()
+                                .filter(Objects::nonNull) // 过滤掉null元素
+                                .filter(vo -> vo.getConcertStatus() == 0) // 精确匹配状态0
+                                .count();
+                    }
+                }
+
+            }
+            stadiumConcertsVO.setNoDayConcertsReservationNum(count);
+
+
             stadiumConcertsVOS.add(stadiumConcertsVO);
         }
         stadiumConcertsResponseVO.setStadiumConcertsVOList(stadiumConcertsVOS);

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

@@ -99,7 +99,7 @@ public class OrderServiceImpl implements IOrderService {
         appIsins.forEach(appIsin -> {
             OrderVO.couponNumberInformation information = new OrderVO.couponNumberInformation();
             information.setId(appIsin.getId())
-                    .setCouponCode(appIsin.getIsinCode())
+                    .setCouponCode(appIsin.getTicketNo())
                     .setCouponStatus(appIsin.getIsinStatus())
                     .setExpireTime(appIsin.getExpireTime())
                     .setUserName(familyMembersMapper.selectById(appIsin.getFamilyId()).getFullName());
@@ -655,7 +655,7 @@ public class OrderServiceImpl implements IOrderService {
                     .setFamilyId(appOrderProInfo.getFamilyUserId())
                     .setUseAddress(StrUtil.isBlank(appOrderProInfo.getAddress()) ? null : appOrderProInfo.getAddress())
                     //生成10位随机券号
-                    .setIsinCode(appOrderProInfo.getTicketNo())
+                    .setTicketNo(appOrderProInfo.getTicketNo())
                     .setIsinStatus(CommonConstant.ISIN_STATUS_1);
         }
 
@@ -714,6 +714,7 @@ public class OrderServiceImpl implements IOrderService {
         appOrderInfoDTO.setId(appOrder.getId());
         appOrderInfoDTO.setOrderCode(appOrder.getOrderCode());
         appOrderInfoDTO.setOrderStatus(appOrder.getOrderStatus());
+        appOrderInfoDTO.setType(appOrder.getType());
         appOrderInfoDTO.setCreateTime(appOrder.getCreateTime());
         appOrderInfoDTO.setPayTime(appOrder.getPayTime());
         appOrderInfoDTO.setPhoneNumber(appOrder.getUserPhone());
@@ -728,25 +729,38 @@ public class OrderServiceImpl implements IOrderService {
         List<AppOrderProInfo> proInfoList = appOrderProInfoMapper.selectList(Wrappers.<AppOrderProInfo>lambdaQuery().eq(AppOrderProInfo::getOrderId, orderId));
         appOrderInfoDTO.setProInfoList(proInfoList);
 
-        //商品信息
-        String productIds = appOrder.getProductIds();
-        AppCourses appCourses = appCoursesMapper.selectById(productIds);
-        appOrderInfoDTO.setAppCourses(appCourses);
-        //使用须知
-        if (ObjectUtils.isNotEmpty(appCourses.getReminder())) {
-            appOrderInfoDTO.setReminder(appCourses.getReminder());
+        //学校
+        if(appOrder.getType().equals(CommonConstant.ORDER_TYPE_0)){
+
+        }
+
+        //场地
+        if(appOrder.getType().equals(CommonConstant.ORDER_TYPE_1)){
+
+        }
+
+        //课程
+        if(appOrder.getType().equals(CommonConstant.ORDER_TYPE_2)){
+            //商品信息
+            String productIds = appOrder.getProductIds();
+            AppCourses appCourses = appCoursesMapper.selectById(productIds);
+            appOrderInfoDTO.setAppCourses(appCourses);
+            //使用须知
+            if (ObjectUtils.isNotEmpty(appCourses.getReminder())) {
+                appOrderInfoDTO.setReminder(appCourses.getReminder());
+            }
+            //门店信息
+            AppSite site = appSiteMapper.selectById(appCourses.getSiteId());
+            appOrderInfoDTO.setSiteName(site.getName());
+            appOrderInfoDTO.setRunStatus(site.getRunStatus());
+            //上课地点(经纬度)
+            AppSite courseSite = appSiteMapper.selectById(appCourses.getAddressSiteId());
+            appOrderInfoDTO.setCourseSiteAddress(courseSite.getAddress());
+            appOrderInfoDTO.setLatitude(courseSite.getLatitude());
+            appOrderInfoDTO.setLongitude(courseSite.getLongitude());
+            appOrderInfoDTO.setPhone(courseSite.getPhone());
+            appOrderInfoDTO.setAddressSiteId(courseSite.getId());
         }
-        //门店信息
-        AppSite site = appSiteMapper.selectById(appCourses.getSiteId());
-        appOrderInfoDTO.setSiteName(site.getName());
-        appOrderInfoDTO.setRunStatus(site.getRunStatus());
-        //上课地点(经纬度)
-        AppSite courseSite = appSiteMapper.selectById(appCourses.getAddressSiteId());
-        appOrderInfoDTO.setCourseSiteAddress(courseSite.getAddress());
-        appOrderInfoDTO.setLatitude(courseSite.getLatitude());
-        appOrderInfoDTO.setLongitude(courseSite.getLongitude());
-        appOrderInfoDTO.setPhone(courseSite.getPhone());
-        appOrderInfoDTO.setAddressSiteId(courseSite.getId());
 
         return appOrderInfoDTO;
     }
@@ -768,7 +782,6 @@ public class OrderServiceImpl implements IOrderService {
 
         Map<Integer, List<AppCoursesVerificationRecord>> map = verificationRecordList.stream().collect(Collectors.groupingBy(AppCoursesVerificationRecord::getCoursesType));
 
-
         return map;
     }
 
@@ -887,7 +900,7 @@ public class OrderServiceImpl implements IOrderService {
             AppIsin appIsin = new AppIsin();
             appIsin.setOrderId(orderId)
                     .setFamilyId(userId)
-                    .setIsinCode(lastFourDigits + nextInt + substring)
+                    .setTicketNo(lastFourDigits + nextInt + substring)
                     .setIsinStatus(1)
                     .setCreateTime(new Date())
                     .setUpdateTime(new Date());

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

@@ -0,0 +1,48 @@
+package org.jeecg.modules.app.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="查询部门下课程响应对象")
+public class AppCoursesPageVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "课程ID")
+    private String appCourseId;
+
+    @Schema(description = "上课地址")
+    private String siteAddress;
+
+    @Schema(description = "教练id(关联用户表)")
+    private String userId;
+
+    @Schema(description = "产品名称")
+    private String name;
+
+    @Schema(description = "封面")
+    private String cover;
+
+    @Schema(description = "课时数")
+    private Integer classNum;
+
+    @JsonFormat(timezone = "GMT+8",pattern = "MM-dd")
+    @DateTimeFormat(pattern="MM-dd")
+    @Schema(description = "开始时间")
+    private Date startTime;
+
+    @JsonFormat(timezone = "GMT+8",pattern = "MM-dd")
+    @DateTimeFormat(pattern="MM-dd")
+    @Schema(description = "结束时间")
+    private java.util.Date endTime;
+
+}

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

@@ -0,0 +1,45 @@
+package org.jeecg.modules.app.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="使用核销记录响应对象")
+public class AppIsinVerifyVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "ID")
+    private String id;
+
+    @Schema(description = "使用时间")
+    private Date useTime;
+
+    @Schema(description = "券号")
+    private String ticketNo;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "商品图片")
+    private String productImage;
+
+    @Schema(description = "商品名称")
+    private String productName;
+
+    @Schema(description = "价格/元")
+    private BigDecimal OriginalPrice;
+
+    @Schema(description = "日期")
+    private Date useDateStr;
+
+    @Schema(description = "时间段")
+    private String frameTimeStr;
+}

+ 7 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/StadiumConcertsVO.java

@@ -1,10 +1,13 @@
 package org.jeecg.modules.app.vo.stadium;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import java.util.Date;
 import java.util.List;
 
 @Data
@@ -23,7 +26,9 @@ public class StadiumConcertsVO {
     @Schema(description = "日期加星期")
     private String weekDayAndDate;
     @Schema(description = "日期")
-    private String weekDayDate;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date weekDayDate;
 //    /**当天场次总数*/
 //    @Schema(description = "当天场次总数")
 //    private String dayConcertsTotal;
@@ -31,7 +36,7 @@ public class StadiumConcertsVO {
 //    @Schema(description = "当天场次已预约数")
 //    private String dayConcertsReservationNum;
     @Schema(description = "当天场次未预约数")
-    private String noDayConcertsReservationNum;
+    private Long noDayConcertsReservationNum;
     /**当天场次已预约数*/
     @Schema(description = "当天场所明细")
     private List<ConcertsVO> concertsVOList;

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/evaluate/FindEvaluateResponseDTO.java

@@ -86,4 +86,8 @@ public class FindEvaluateResponseDTO {
     @Schema(description = "图片列表集合")
     private List<String> imageList;
 
+    /**是否匿名 0-匿名 1-不匿名*/
+    @Schema(description = "是否匿名 0-匿名 1-不匿名")
+    private Integer  isAnonymous;
+
 }

+ 7 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppCoursesVerificationRecord.java

@@ -35,6 +35,13 @@ public class AppCoursesVerificationRecord implements Serializable {
     @TableId(type = IdType.ASSIGN_ID)
     @Schema(description = "id")
     private String id;
+
+    /**
+     * id
+     */
+    @Schema(description = "部门编号")
+    private String orgCode;
+
     /**
      * 订单id
      */

+ 10 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppIsin.java

@@ -33,6 +33,10 @@ public class AppIsin implements Serializable {
 	@TableId(type = IdType.ASSIGN_ID)
     @Schema(description = "主键ID")
     private String id;
+    /**部门编号*/
+    @Excel(name = "部门编号", width = 15)
+    @Schema(description = "部门编号")
+    private String orgCode;
 	/**订单ID*/
 	@Excel(name = "订单ID", width = 15)
     @Schema(description = "订单ID")
@@ -56,7 +60,7 @@ public class AppIsin implements Serializable {
 	/**券码号*/
 	@Excel(name = "券码号", width = 15)
     @Schema(description = "券码号")
-    private String isinCode;
+    private String ticketNo;
 	/**券状态  0-待使用 1-已使用 2-已失效*/
 	@Excel(name = "券状态  0-待使用 1-已使用 2-已失效", width = 15)
     @Schema(description = "券状态  0-待使用 1-已使用 2-已失效")
@@ -80,6 +84,9 @@ public class AppIsin implements Serializable {
     @Excel(name = "使用照片", width = 20)
     @Schema(description = "使用照片")
     private String useImage;
+    @Excel(name = "备注", width = 20)
+    @Schema(description = "备注")
+    private String remark;
 	/**创建人;创建人*/
     @Schema(description = "创建人;创建人")
     private String createBy;
@@ -93,8 +100,8 @@ public class AppIsin implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @Schema(description = "更新时间")
     private Date updateTime;
-    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
     @Schema(description = "到期时间")
     private Date expireTime;
 	/**系统状态;状态(0-正常,1-冻结)*/

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/Evaluate.java

@@ -44,7 +44,7 @@ public class Evaluate implements Serializable {
 	/**场地/地点*/
 	@Excel(name = "场地/地点", width = 15)
     @Schema(description = "场地/地点")
-    private Integer siteId;
+    private String siteId;
 	/**用户*/
 	@Excel(name = "用户", width = 15)
     @Schema(description = "用户")

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.app.dto.SearchDTO;
+import org.jeecg.modules.app.vo.AppCoursesPageVO;
 import org.jeecg.modules.app.vo.CourseInfoVO;
 import org.jeecg.modules.app.vo.SearchVO;
 import org.jeecg.modules.app.vo.course.CourseRequestVo;
@@ -51,4 +52,6 @@ public interface AppCoursesMapper extends BaseMapper<AppCourses> {
     IPage<AppCoursesInfoPageDTO> queryWitchPriceRulesPage(Page<AppCourses> page, @Param("dto") AppCoursesPageDTO dto);
 
     List<String> findByInstructorId( @Param("instructorId") String instructorId);
+
+    IPage<AppCoursesPageVO> getPageCourse(Page<AppCoursesPageVO> page, @Param("orgCode")String orgCode, @Param("userId")String userId);
 }

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

@@ -1,6 +1,9 @@
 package org.jeecg.modules.system.app.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.app.vo.AppIsinVerifyVO;
 import org.jeecg.modules.system.app.entity.AppIsin;
 
 /**
@@ -11,4 +14,5 @@ import org.jeecg.modules.system.app.entity.AppIsin;
  */
 public interface AppIsinMapper extends BaseMapper<AppIsin> {
 
+    Page<AppIsinVerifyVO> pageAppIsinVerifyRecords(Page page,@Param("orgCode") String orgCode);
 }

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

@@ -38,4 +38,6 @@ public interface AppSitePlaceMapper extends BaseMapper<AppSitePlace> {
      * @return
      **/
     OrderVO.PreviewOrderPlaceGymnasiumNoFixation previewOrderPlaceGymnasiumNoFixation(@Param("placeId")String placeId);
+
+    List<ConcertsVO> findByConcertsAndTime(@Param("weekDay")Integer weekDay, @Param("siteId")String siteId, @Param("categoryId")String categoryId);
 }

+ 22 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppCoursesMapper.xml

@@ -203,5 +203,27 @@
          left join  nm_courses  b   on a.user_id =b.user_id and a.del_flag =0
          where a.id =#{instructorId}
     </select>
+    <select id="getPageCourse" resultType="org.jeecg.modules.app.vo.AppCoursesPageVO">
+        SELECT
+            c.id AS appCourseId,
+            s.address AS siteAddress,
+            c.cover,
+            c.name,
+            c.class_num,
+            c.start_time,
+            c.end_time
+        FROM
+            nm_courses c
+            LEFT JOIN nm_site s ON c.address_site_id = s.id
+        <where> c.del_flag = 0
+            <if test="orgCode != null and orgCode != ''">
+                and c.org_code = #{orgCode}
+            </if>
+            <if test="userId != null and userId != ''">
+                and c.user_id = #{userId}
+            </if>
+        </where>
+        ORDER BY c.create_time DESC
+    </select>
 
 </mapper>

+ 24 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppIsinMapper.xml

@@ -2,4 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.system.app.mapper.AppIsinMapper">
 
+    <select id="pageAppIsinVerifyRecords" resultType="org.jeecg.modules.app.vo.AppIsinVerifyVO">
+        SELECT
+            i.id,
+            i.use_time,
+            i.ticket_no,
+            i.remark,
+            opi.product_image,
+            opi.product_name,
+            opi.original_price,
+            opi.use_date_str,
+            opi.frame_time_str
+        FROM
+            nm_isin i
+                LEFT JOIN nm_order o ON i.order_id = o.id
+                LEFT JOIN nm_order_pro_info opi ON i.order_pro_info_id = opi.id
+        <where>
+            i.isin_status = 1
+            <if test="orgCode != null and orgCode != ''">
+                i.org_code = #{orgCode}
+            </if>
+        </where>
+        ORDER BY
+            i.use_time DESC
+    </select>
 </mapper>

+ 24 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePlaceMapper.xml

@@ -37,10 +37,17 @@
             selling_price ASC;
     </select>
     <select id="findByConcerts" resultMap="ConcertsVOResult" >
-        select b.site_place_id,a.name as site_place_name,
-        b.id,b.start_time,b.end_time ,b.selling_price
-        from nm_site_place a left join  nm_site_price_rules b on a.id = b.site_place_id
+     <![CDATA[   select b.site_place_id,a.name as site_place_name,
+        b.id,b.start_time,b.end_time ,b.selling_price,
+        CASE
+        WHEN c.order_status <=1 THEN 1
+        ELSE 0
+        END AS concertStatus
+        from nm_site_place a
+        left join  nm_site_price_rules b on a.id = b.site_place_id
+        LEFT JOIN nm_order_pro_info c on c.product_id =b.id
         where a.site_id = #{siteId} and b.category_id =#{categoryId} and b.day_of_week =#{weekDay}
+        ]]>
     </select>
     <select id="findBySidAndCid" resultType="org.jeecg.modules.app.vo.stadium.StadiumConcertsResponseVO">
         select early_refund_time,buy_limit from nm_site_place where site_id = #{siteId} and category_id =#{categoryId} limit 1
@@ -65,4 +72,18 @@
         WHERE
             a.id = #{placeId}
     </select>
+    <select id="findByConcertsAndTime" resultMap="ConcertsVOResult">
+        <![CDATA[  select b.site_place_id,a.name as site_place_name,
+               b.id,b.start_time,b.end_time ,b.selling_price,
+        CASE
+        WHEN c.order_status <=1 THEN 1
+        WHEN CURRENT_TIME() < TIME(b.end_time) THEN 0
+        ELSE 1
+        END AS concertStatus
+        from nm_site_place a
+        left join  nm_site_price_rules b on a.id = b.site_place_id
+        LEFT JOIN nm_order_pro_info c on c.product_id =b.id
+        where a.site_id = #{siteId} and b.category_id =#{categoryId} and b.day_of_week =#{weekDay}
+        ]]>
+    </select>
 </mapper>

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

@@ -4,7 +4,7 @@
 
     <select id="findPage" resultType="org.jeecg.modules.system.app.dto.evaluate.FindEvaluateResponseDTO">
         select ne.id,
-            ne.score,ne.evaluate_content,su.avatar,ne.images,ne.check_status,ne.reply_status,ne.reply_content,ne.reply_time,ne.type,ne.create_time,sd.depart_name,ns.address,su.username,su.phone
+            ne.score,ne.evaluate_content,su.avatar,ne.images,ne.check_status,ne.reply_status,ne.reply_content,ne.reply_time,ne.type,ne.create_time,sd.depart_name,ns.address,su.username,su.phone,ne.is_anonymous
         from nm_evaluate ne
         left join  sys_depart sd on  ne.dept_id = sd.id
         LEFT JOIN nm_site ns on  ne.site_id =ns.id

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

@@ -1,8 +1,10 @@
 package org.jeecg.modules.system.app.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.app.form.ClassPostponeForm;
+import org.jeecg.modules.app.vo.AppCoursesPageVO;
 import org.jeecg.modules.app.vo.FamilyUserVO;
 import org.jeecg.modules.app.vo.VerifyCourseInfoVO;
 import org.jeecg.modules.system.app.dto.AppCoursesDTO;
@@ -56,4 +58,6 @@ public interface IAppCoureseService extends IService<AppCourses> {
     List<FamilyUserVO> getClassPostponeUsers(String coursePriceRulesId);
 
     Boolean classPostpone(ClassPostponeForm form);
+
+    IPage<AppCoursesPageVO> getPageCourse(Page<AppCoursesPageVO> page, String orgCode, String userId);
 }

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

@@ -11,10 +11,7 @@ import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.app.form.ClassPostponeForm;
-import org.jeecg.modules.app.vo.CoursesPriceRulesVO;
-import org.jeecg.modules.app.vo.FamilyUserVO;
-import org.jeecg.modules.app.vo.VerifyCourseInfoDTO;
-import org.jeecg.modules.app.vo.VerifyCourseInfoVO;
+import org.jeecg.modules.app.vo.*;
 import org.jeecg.modules.system.app.dto.*;
 import org.jeecg.modules.system.app.entity.*;
 import org.jeecg.modules.system.app.mapper.*;
@@ -412,6 +409,11 @@ public class AppCoureseServiceImpl extends ServiceImpl<AppCoursesMapper, AppCour
         return Boolean.TRUE;
     }
 
+    @Override
+    public IPage<AppCoursesPageVO> getPageCourse(Page<AppCoursesPageVO> page, String orgCode, String userId) {
+        return baseMapper.getPageCourse(page,orgCode,userId);
+    }
+
     /**
      * 校验权限
      *

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppOrderServiceImpl.java

@@ -151,7 +151,7 @@ public class AppOrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> i
             Map<IsinUserInfoDTO, List<AppIsin>> map =
                     appIsinList.stream()
                             .collect(Collectors.groupingBy(
-                                    x -> new IsinUserInfoDTO(x.getFamilyId(), x.getFamilyUserName(), x.getUserPhone(), x.getIsinCode()),
+                                    x -> new IsinUserInfoDTO(x.getFamilyId(), x.getFamilyUserName(), x.getUserPhone(), x.getTicketNo()),
                                     Collectors.mapping(AppIsin -> AppIsin, Collectors.toCollection(ArrayList::new))));
             map.keySet().forEach(p -> {
                 AppIsinVO isinVO = new AppIsinVO();

+ 8 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/EvaluateServiceImpl.java

@@ -11,10 +11,10 @@ import org.jeecg.modules.system.app.entity.Evaluate;
 import org.jeecg.modules.system.app.mapper.AppCoursesMapper;
 import org.jeecg.modules.system.app.mapper.EvaluateMapper;
 import org.jeecg.modules.system.app.service.IEvaluateService;
+import org.jeecg.modules.system.app.utils.StringMasker;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -34,6 +34,8 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
     private AppCoursesMapper appCoursesMapper;
 
 
+
+
     @Override
     public IPage<FindEvaluateResponseDTO> findPage(Integer pageNo, Integer pageSize, FindEvaluateRequestDTO findEvaluateRequestDTO) {
         Page<FindEvaluateResponseDTO> page = new Page<FindEvaluateResponseDTO>(pageNo, pageSize);
@@ -46,6 +48,11 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
                 }else {
                     strings.add(record.getImages());
                 }
+                if (record.getIsAnonymous()!=null&&record.getIsAnonymous()==0){
+                    String username = record.getUsername();
+                    String mask = StringMasker.mask(username);
+                    record.setUsername(mask);
+                }
                 record.setImageList(strings);
             }
         }

+ 35 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/StringMasker.java

@@ -0,0 +1,35 @@
+package org.jeecg.modules.system.app.utils;
+
+import java.util.Objects;
+
+public class StringMasker {
+    private static final char MASK_CHAR = '*';
+
+    /**
+     * 掩码处理字符串(保留首字符,其余替换为*)
+     * @param input 原始字符串
+     * @return 掩码后的字符串(null返回null,空字符串返回空串)
+     */
+    public static String mask(String input) {
+        // 防御性空值处理
+        if (Objects.isNull(input) || input.isEmpty()) {
+            return input;
+        }
+
+        // 单字符快速返回
+        if (input.length() == 1) {
+            return input;
+        }
+
+        // 确定处理长度(最多处理前5个字符)
+        int processLength = Math.min(input.length(), 5);
+        char[] chars = new char[processLength];
+        // 设置第一个字符
+        chars[0] = input.charAt(0);
+        // 掩码后续字符(最多到第5个)
+        for (int i = 1; i < processLength; i++) {
+            chars[i] = MASK_CHAR;
+        }
+        return new String(chars);
+    }
+}

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

@@ -6,6 +6,7 @@ import org.jeecg.modules.system.app.vo.time.NextSevenDayVo;
 import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.format.TextStyle;
 import java.util.*;
@@ -91,6 +92,7 @@ public class TimeRangeFinder {
             LocalDate localDate = today.plusDays(i);
             Locale locale = Locale.CHINA;
             String format = localDate.format(formatter);
+            Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
             DayOfWeek dayOfWeek = localDate.getDayOfWeek();
             int dayOfWeekNum = dayOfWeek.getValue();
             String display;
@@ -109,7 +111,7 @@ public class TimeRangeFinder {
                     String weekday = dayOfWeek.getDisplayName(TextStyle.SHORT, locale);
                     display = weekday + "(" + format + ")";
             }
-            nextSevenDayVo.setWeekDayDate(format);
+            nextSevenDayVo.setWeekDayDate(date);
             nextSevenDayVo.setWeekDay(dayOfWeekNum);
             nextSevenDayVo.setWeekDayAndDate(display);
             dates.add(nextSevenDayVo);

+ 7 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/time/NextSevenDayVo.java

@@ -1,11 +1,15 @@
 package org.jeecg.modules.system.app.vo.time;
 
+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.util.Date;
 
 /**
  * @author DM
@@ -25,5 +29,7 @@ public class NextSevenDayVo {
     @Schema(description ="星期配合日期")
     private String weekDayAndDate;
     @Schema(description ="日期")
-    private String weekDayDate;
+    @JsonFormat( pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date weekDayDate;
 }