From aba8d209561a130b6d849d96ff202fe172b1ad92 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 11 十一月 2025 13:54:33 +0800
Subject: [PATCH] 玩湃本次新增迭代所有代码

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java        |   16 +
 cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/SiteVo.java                         |    3 
 cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java                                         |    3 
 cloud-server-other/src/main/java/com/dsh/other/feignclient/activity/UserCouponClient.java                     |    6 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java              |   30 ++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html                          |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OssUploadUtil.java                     |    4 
 cloud-server-other/src/main/java/com/dsh/other/model/TSitePrice.java                                          |    2 
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java           |   15 +
 cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js                |    2 
 cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java                                 |   34 ++
 cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SiteVo.java                                  |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/QuerySiteTimes.java                   |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreConfig.java                      |    2 
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/CompetitionUser.java             |    2 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js                              |   10 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java        |   19 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                      |    9 
 cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java                         |    9 
 cloud-server-other/src/main/resources/mapper/SiteMapper.xml                                                   |    4 
 cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java                                       |    2 
 cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteList.java                                       |    2 
 cloud-server-other/src/main/java/com/dsh/other/entity/StoreConfig.java                                        |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java                         |   10 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html                           |   35 ++
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                  |   14 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js                                   |   21 +
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js                             |   14 +
 cloud-server-account/src/main/java/com/dsh/account/util/ALiSendSms.java                                       |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java                       |    2 
 cloud-server-course/src/main/java/com/dsh/course/util/ALiSendSms.java                                         |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TSiteServiceImpl.java          |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/ALiSendSms.java             |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java |   20 +
 cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java                     |   18 +
 cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java                        |    2 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionUser.java       |    2 
 cloud-server-other/src/main/resources/mapper/GameMapper.xml                                                   |    2 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                      |    9 
 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java                              |  309 ++++++++++++++++++++---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java       |    3 
 cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteTimes.java                                      |    5 
 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js                             |  110 ++++++++
 43 files changed, 652 insertions(+), 120 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/SiteVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/SiteVo.java
index 987a999..ef86e52 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/SiteVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/SiteVo.java
@@ -20,5 +20,6 @@
 
     @ApiModelProperty(value = "价格")
     private double price;
-
+    @ApiModelProperty(value = "是否可以预约(0=否,1=是)")
+    private Integer isCanBeBooked;
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index d395725..29e814b 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -1028,6 +1028,7 @@
         CommodityRequest commodityRequest = new CommodityRequest();
         commodityRequest.setLon(request.getLon());
         commodityRequest.setLat(request.getLat());
+        commodityRequest.setShopId(request.getShopId());
         PointMerchandiseVo vicinityGoods = mcClient.getVicinityGoods(commodityRequest);
         if (ToolUtil.isNotEmpty(vicinityGoods.getMerchandises())) {
             for (PointsMerchandise vicinityGood : vicinityGoods.getMerchandises()) {
@@ -1126,14 +1127,6 @@
             if (goods.size() > 0) {
                 goods = goods.stream()
                         .filter(merchandise -> merchandise.getGoodName().contains(request.getSearch()))
-                        .collect(Collectors.toList());
-            }
-        }
-        // 2.0 门店筛选
-        if (request.getShopId() != null) {
-            if (goods.size() > 0) {
-                goods = goods.stream()
-                        .filter(merchandise -> (merchandise.getGoodsType() == 1 && merchandise.getUseScope() == 2) || (merchandise.getGoodsType() == 1 && merchandise.getUseScope() == 1) || (merchandise.getGoodsType() == 4 && merchandise.getUseScope() == 2) || (merchandise.getGoodsType() == 4 && merchandise.getUseScope() == 1) || merchandise.getShopIds().contains(request.getShopId()))
                         .collect(Collectors.toList());
             }
         }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
index 677f74b..59ff421 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -33,10 +33,7 @@
 import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo;
 import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq;
 import com.dsh.account.model.vo.classDetails.classInsVo.StuListVo;
-import com.dsh.account.model.vo.exploreDetail.LonLatRequest;
-import com.dsh.account.model.vo.exploreDetail.QuestionIns;
-import com.dsh.account.model.vo.exploreDetail.StoreDetailsVo;
-import com.dsh.account.model.vo.exploreDetail.StoreOfCourseVo;
+import com.dsh.account.model.vo.exploreDetail.*;
 import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo;
 import com.dsh.account.model.vo.sourceDetail.CourseDetailsOfContinuationResp;
 import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest;
@@ -787,7 +784,9 @@
         detailsVo.setLon(store.getLon());
         detailsVo.setLat(store.getLat());
         detailsVo.setPhone(store.getPhone());
-        detailsVo.setVenueList(steClient.getAppUserSiteList(storeId));
+        List<SiteVo> appUserSiteList = steClient.getAppUserSiteList(storeId);
+        List<SiteVo> siteList = appUserSiteList.stream().filter(e -> e.getIsCanBeBooked() == 1).collect(Collectors.toList());
+        detailsVo.setVenueList(siteList);
         List<StoreOfCourseVo> storeOfCourseList = culisClient.getStoreOfCourseList(storeId);
         System.out.println(storeOfCourseList);
         for (StoreOfCourseVo storeOfCourseVo : storeOfCourseList) {
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/ALiSendSms.java b/cloud-server-account/src/main/java/com/dsh/account/util/ALiSendSms.java
index bb70cfb..f1d855b 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/ALiSendSms.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/ALiSendSms.java
@@ -21,8 +21,8 @@
     // 设置鉴权参数,初始化客户端
     private DefaultProfile profile = DefaultProfile.getProfile(
             "cn-hangzhou",// 地域ID
-            "LTAI5tE3ownRhJ7eXsuW7Vn7",// 您的AccessKey ID
-            "Crgi0OhtDRuJafIeyT3JQL9v0P4EgH");// 您的AccessKey Secret
+            "LTAI5tKLeAE1B5n2mvTZ5yy6",// 您的AccessKey ID
+            "zradDLTBGdzq26tYz9RUCUh0sPmfhh");// 您的AccessKey Secret
     private IAcsClient client = new DefaultAcsClient(profile);
 
     private static void log_print(String functionName, Object result) {
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
index 73fd2a4..01cebc9 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -825,6 +825,7 @@
             Integer pickUpQuantity = dataVo.getPickUpQuantity();
             // 赠送用户数量
             int count = quantityIssued / pickUpQuantity;
+
             // 自动发券
             if (dataVo.getDistributionMethod() == 3) {
                 // 判断用户人群 再判断限领数量
@@ -834,6 +835,9 @@
                         // 全部用户ids
                         List<Integer> collect = tAppUsers.stream()
                                 .map(TAppUser::getId).collect(Collectors.toList());
+                        if (collect.size()<count){
+                            count = collect.size();
+                        }
                         for (int i = 0; i < count; i++) {
                             for (int j = 0; j < pickUpQuantity; j++) {
                                 UserCoupon u1 = new UserCoupon();
@@ -852,6 +856,9 @@
                         List<Integer> collect1 = tAppUsers.stream().filter(t -> t.getVipEndTime().after(new Date()))
                                 .map(TAppUser::getId)
                                 .collect(Collectors.toList());
+                        if (collect1.size()<count){
+                            count = collect1.size();
+                        }
                         for (int i = 0; i < count; i++) {
                             for (int j = 0; j < pickUpQuantity; j++) {
                                 UserCoupon u1 = new UserCoupon();
@@ -868,6 +875,9 @@
                     case 3:
                         // 给已有学员用户发券 获取已有学员的用户ids
                         List<Integer> collect2 = studentClient.getHasStudentUser();
+                        if (collect2.size()<count){
+                            count = collect2.size();
+                        }
                         for (int i = 0; i < count; i++) {
                             for (int j = 0; j < pickUpQuantity; j++) {
                                 UserCoupon u1 = new UserCoupon();
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index f2a8644..774b374 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -398,7 +398,7 @@
     @PostMapping("/base/pointMerchars/getCommoditys")
     public PointMerchandiseVo getVicinityGoods(@RequestBody CommodityRequest request) {
 
-
+        System.err.println("积分商城请求参数"+request);
         PointMerchandiseVo pointMerchandiseVo = new PointMerchandiseVo();
         List<PointsMerchandise> list = new ArrayList<>();
         String provinceCode = "";
@@ -436,13 +436,15 @@
                 pointMerchandiseVo.setMerchandises(list);
                 return pointMerchandiseVo;
             }else{
-                List<PointsMerchandise> pointsMerchandiseList = pmdsService.lambdaQuery().in(PointsMerchandise::getId, pointsMerchandiseIds).list();
-                list.addAll(pointsMerchandiseList);
-                List<PointsMerchandise> listAll = list.stream().distinct().collect(Collectors.toList());
-                list = listAll;
+                List<PointsMerchandise> pointsMerchandiseList = pmdsService.lambdaQuery()
+                        .eq(PointsMerchandise::getState, 1)
+                        .eq(PointsMerchandise::getShelves,1)
+                        .in(PointsMerchandise::getId, pointsMerchandiseIds).list();
+
+                list = pointsMerchandiseList;
             }
         }
-
+        list = list.stream().distinct().collect(Collectors.toList());
         if (list.size() > 0) {
             Iterator<PointsMerchandise> iterator = list.iterator();
             while (iterator.hasNext()) {
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
index 0066308..d475fb7 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
@@ -203,19 +203,24 @@
             return null;
         }
     }
+
+
     /**
      * 根据id修改门票使用状态
      *
      * @param id
      * @return
      */
-    @PostMapping("/userCoupon/changeTicketStatus")
-    @ResponseBody
-    public void changeTicketStatus(String id){
+    @GetMapping("/userCoupon/changeTicketStatus/{id}")
+    public void changeTicketStatus(@PathVariable("id") String id){
+        System.err.println("数据id"+id);
         if (id.length()<=11){
             // 购买会员赠送的门票
+            System.err.println("会员赠送门票");
             VipDetail vipDetail = vipDetailService.getById(Integer.valueOf(id));
+            System.err.println("会员权益门票数据"+ vipDetail);
             if (vipDetail!=null){
+                System.err.println("修改使用状态");
                 vipDetail.setStatus(2);
                 vipDetailService.updateById(vipDetail);
             }else{
@@ -223,8 +228,13 @@
             }
         }else{
             // 积分商城门票
-            UserPointsMerchandise userPointsMerchandise = userPointsMerchandiseService.getById(Long.valueOf(id));
+            System.err.println("积分商城门票id");
+            UserPointsMerchandise userPointsMerchandise = userPointsMerchandiseService.getById(id);
+            System.err.println("积分商城门票数据"+ userPointsMerchandise);
             if (userPointsMerchandise!=null){
+                System.err.println("修改使用状态");
+                userPointsMerchandise.setUserId(null);
+                userPointsMerchandise.setVerificationTime(new Date());
                 userPointsMerchandise.setStatus(2);
                 userPointsMerchandiseService.updateById(userPointsMerchandise);
             }else{
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java
index b0bf114..d98aada 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java
@@ -25,6 +25,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -143,6 +144,10 @@
                     if (!aBoolean) {
                         return ResultUtil.error("身份证和姓名不匹配");
                     }
+                    // 根据身份证号获取生日
+                    String birthday18 = extractBirthdayFromIdCard(student.getIdCard());
+                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                    student.setBirthday(simpleDateFormat.parse(birthday18));
                 }
                 student.setPhone(editParticipant.getPhone());
                 studentClient.updateAppUser(student);
@@ -153,7 +158,32 @@
             return ResultUtil.runErr();
         }
     }
+    /**
+     * 根据身份证号码提取生日
+     * @param idCard 身份证号码
+     * @return 生日字符串 YYYY-MM-DD格式
+     */
+    public static String extractBirthdayFromIdCard(String idCard) {
+        if (idCard == null || idCard.isEmpty()) {
+            return null;
+        }
 
+        String birthday;
+        if (idCard.length() == 18) {
+            // 18位身份证:截取第7-14位
+            birthday = idCard.substring(6, 14);
+        } else if (idCard.length() == 15) {
+            // 15位身份证:截取第7-12位,并补上前缀"19"
+            birthday = "19" + idCard.substring(6, 12);
+        } else {
+            return null;
+        }
+
+        // 格式化为YYYY-MM-DD格式
+        return birthday.substring(0, 4) + "-" +
+                birthday.substring(4, 6) + "-" +
+                birthday.substring(6, 8);
+    }
 
     @ResponseBody
     @PostMapping("/api/participant/delParticipant")
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/CompetitionUser.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/CompetitionUser.java
index 2a6811c..869b68e 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/CompetitionUser.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/CompetitionUser.java
@@ -13,6 +13,8 @@
 
     private String phone;
     private String idCard;
+    private String registerPhone;
+    private Integer appUserId;
     private Integer state;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date insertTime;
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
index 1adf03e..8187160 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
@@ -6,7 +6,9 @@
 import com.dsh.competition.entity.Participant;
 import com.dsh.competition.entity.PaymentCompetition;
 import com.dsh.competition.entity.UserCompetition;
+import com.dsh.competition.feignclient.account.AppUserClient;
 import com.dsh.competition.feignclient.account.StudentClient;
+import com.dsh.competition.feignclient.account.model.AppUser;
 import com.dsh.competition.feignclient.account.model.Student;
 import com.dsh.competition.feignclient.account.model.TStudent;
 import com.dsh.competition.feignclient.course.CoursePackagePaymentClient;
@@ -45,6 +47,8 @@
 
     @Resource
     private StudentClient studentClient;
+    @Resource
+    private AppUserClient appUserClient;
 
     @Autowired
     private UserCompetitionService userCompetitionService;
@@ -314,6 +318,7 @@
     public  Page<CompetitionUser> getPeopleFromId1(long offset, long limit, Integer id, Integer state) {
         List<UserCompetition> peopleFromId1 = this.baseMapper.getPeopleFromId1(id, state, offset, limit);
         int count = this.baseMapper.getPeopleFromIdCount(id, state);
+        Map<Integer, AppUser> userMap = appUserClient.getAllUser().stream().collect(Collectors.toMap(AppUser::getId, e -> e));
         List<CompetitionUser> list = new ArrayList<>();
         for (UserCompetition userCompetition : peopleFromId1) {
             Long paymentCompetitionId = userCompetition.getPaymentCompetitionId();
@@ -321,12 +326,22 @@
             Participant participant = this.getById(userCompetition.getParticipantId());
             CompetitionUser competitionUser = new CompetitionUser();
             if(null != participant){
+                AppUser appUser = userMap.get(participant.getAppUserId());
+                if (appUser!=null){
+                    competitionUser.setAppUserId(appUser.getId());
+                    competitionUser.setRegisterPhone(appUser.getPhone());
+                }
                 competitionUser.setName(participant.getName());
                 competitionUser.setSex(participant.getGender());
                 competitionUser.setPhone(participant.getPhone());
                 competitionUser.setIdCard(participant.getIdcard());
             }else{
                 TStudent tStudent = studentClient.queryById(userCompetition.getParticipantId());
+                AppUser appUser = userMap.get(tStudent.getAppUserId());
+                if (appUser!=null){
+                    competitionUser.setAppUserId(appUser.getId());
+                    competitionUser.setRegisterPhone(appUser.getPhone());
+                }
                 competitionUser.setName(tStudent.getName());
                 competitionUser.setSex(tStudent.getSex());
                 competitionUser.setPhone(tStudent.getPhone());
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/ALiSendSms.java b/cloud-server-course/src/main/java/com/dsh/course/util/ALiSendSms.java
index 06dc440..faa47ca 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/ALiSendSms.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/ALiSendSms.java
@@ -21,8 +21,8 @@
     // 设置鉴权参数,初始化客户端
     private DefaultProfile profile = DefaultProfile.getProfile(
             "cn-hangzhou",// 地域ID
-            "LTAI5tE3ownRhJ7eXsuW7Vn7",// 您的AccessKey ID
-            "Crgi0OhtDRuJafIeyT3JQL9v0P4EgH");// 您的AccessKey Secret
+            "LTAI5tKLeAE1B5n2mvTZ5yy6",// 您的AccessKey ID
+            "zradDLTBGdzq26tYz9RUCUh0sPmfhh");// 您的AccessKey Secret
     private IAcsClient client = new DefaultAcsClient(profile);
 
     private static void log_print(String functionName, Object result) {
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionUser.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionUser.java
index 6c0d239..e3bbe43 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionUser.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionUser.java
@@ -12,6 +12,8 @@
     private Integer sex;
 
     private String phone;
+    private String registerPhone;
+    private Integer appUserId;
     private String idCard;
     private Integer state;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java
index 9f9d5bf..d1eaa3b 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java
@@ -168,6 +168,6 @@
         private Integer targetAudience;
         private Integer fieldType;
         private Double cashPrice;
-        private Double coinPrice;
+        private Integer coinPrice;
     }
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
index 8d60d0d..9221d31 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
@@ -75,11 +75,15 @@
             DateFormat format = new SimpleDateFormat("yyyyMMdd");
             String time1 = format.format(date);
             String fileName =name+"报名信息.xls";
-            String[] title = new String[] {"姓名","性别","联系电话","身份证号","状态"};
+            String[] title = new String[] {"姓名","性别","注册电话","联系电话","身份证号","状态"};
             GetPeopleQuery query = new GetPeopleQuery();
             query.setId(id);
             query.setState(state);
-            List<CompetitionUser> list = competitionClient.getPeoples(query);
+            // todo 临时处理 因为只能更新后台
+            Page<CompetitionUser> page = competitionClient.getPeopleFromId1(new GetPeopleQuery(999, 0, id, state));
+            List<CompetitionUser> list = page.getRecords();
+//            List<CompetitionUser> list = competitionClient.getPeoples(query);
+            System.err.println("导出查询人员列表"+ list);
             String[][] values = new String[list.size()][];
             for (int i = 0; i < list.size(); i++) {
                 CompetitionUser d = list.get(i);
@@ -95,15 +99,17 @@
                 }else {
                     values[i][1] = "未知";
                 }
-                values[i][2] = d.getPhone();
-                values[i][3] = d.getIdCard();
+                values[i][2] = d.getRegisterPhone();
+
+                values[i][3] = d.getPhone();
+                values[i][4] = d.getIdCard();
                 Integer state1 = d.getState();
                 if(1 == state1){
-                    values[i][4] = "正常";
+                    values[i][5] = "正常";
                 }else if(2 == state1){
-                    values[i][4] = "冻结";
+                    values[i][5] = "正常";
                 }else {
-                    values[i][4] = "删除";
+                    values[i][5] = "已取消";
                 }
             }
             HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
index 73bfb53..0aec5ba 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
@@ -454,10 +454,13 @@
         }
         //玩湃惠民卡
         StoreConfig c10 = storeConfigService.getOne(new LambdaQueryWrapper<StoreConfig>().eq(StoreConfig::getStoreId, id).eq(StoreConfig::getType,10));
-        model.addAttribute("c10",c10);
+        model.addAttribute("c10",c10!=null?c10:new StoreConfig());
         //会员卡板块
         StoreConfig c11 = storeConfigService.getOne(new LambdaQueryWrapper<StoreConfig>().eq(StoreConfig::getStoreId, id).eq(StoreConfig::getType,11));
-        model.addAttribute("c11",c11);
+        model.addAttribute("c11",c11!=null?c11:new StoreConfig());
+        //散客入场
+        StoreConfig c12 = storeConfigService.getOne(new LambdaQueryWrapper<StoreConfig>().eq(StoreConfig::getStoreId, id).eq(StoreConfig::getType,12));
+        model.addAttribute("c12",c12!=null?c12:new StoreConfig());
         return PREFIX + "TShop_imgAll.html";
     }
 
@@ -605,8 +608,8 @@
             map1.put("remark",tStore.getIntroduce());
             map1.put("lat",tStore.getLat());
             map1.put("lng",tStore.getLon());
-            String result = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpace", map1);
-//            String result = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addSpace", map1);
+//            String result = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpace", map1);
+            String result = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addSpace", map1);
             System.out.println(result);
             JSONObject jsonObject = JSONObject.parseObject(result);
             JSONObject data = jsonObject.getJSONObject("data");
@@ -747,9 +750,9 @@
     }
     @RequestMapping(value = "/saveImgAll")
     @ResponseBody
-    public Object saveImgAll(Integer id,Integer px1,Integer px2,Integer px3,Integer px4,Integer px5,Integer px6,Integer px7,Integer px8,Integer px10,Integer px11,
-                             String c1,String c2,String c3,String c4,String c5,String c6,String c7,String c8,String c10,String c111,
-                             Integer r1,Integer r2,Integer r3,Integer r4,Integer r5,Integer r6,Integer r7,Integer r8,Integer r10,Integer r11,String str) {
+    public Object saveImgAll(Integer id,Integer px1,Integer px2,Integer px3,Integer px4,Integer px5,Integer px6,Integer px7,Integer px8,Integer px10,Integer px11,Integer px12,
+                             String c1,String c2,String c3,String c4,String c5,String c6,String c7,String c8,String c10,String c111,String c12,
+                             Integer r1,Integer r2,Integer r3,Integer r4,Integer r5,Integer r6,Integer r7,Integer r8,Integer r10,Integer r11,Integer r12,String str) {
         try {
             ArrayList<StoreConfig> storeConfigs = new ArrayList<>();
             StoreConfig collect1 = collect(id, px1, r1, c1, 1);
@@ -762,6 +765,7 @@
             StoreConfig collect8 = collect(id, px8, r8, c8, 8);
             StoreConfig collect10 = collect(id, px10, r10, c10, 10);
             StoreConfig collect11 = collect(id, px11, r11, c111, 11);
+            StoreConfig collect12 = collect(id, px12, r12, c12, 12);
             storeConfigs.add(collect1);
             storeConfigs.add(collect2);
             storeConfigs.add(collect3);
@@ -772,6 +776,7 @@
             storeConfigs.add(collect8);
             storeConfigs.add(collect10);
             storeConfigs.add(collect11);
+            storeConfigs.add(collect12);
             storeConfigService.saveOrUpdateBatch(storeConfigs);
 
             // 修改世界杯
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
index bbb93a5..3495e14 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -544,8 +544,8 @@
         map.put("name",site.getName());
         map.put("space_id",store.getId().toString());
         String s = HttpRequestUtil.postRequest
-//                ("https://port.daowepark.com/v7/user_api/general/addSpaceArea", map);
-                ("https://try.daowepark.com/v7/user_api/general/addSpaceArea", map);
+                ("https://port.daowepark.com/v7/user_api/general/addSpaceArea", map);
+//                ("https://try.daowepark.com/v7/user_api/general/addSpaceArea", map);
         JSONObject jsonObject = JSONObject.parseObject(s);
         JSONObject data = jsonObject.getJSONObject("data");
         String area_id = data.getString("area_id");
@@ -560,6 +560,11 @@
         // 保存价格数据
         if (site.getPriceDTOS() != null && !site.getPriceDTOS().isEmpty()) {
             saveSitePriceDetails(site.getId(), site.getPriceDTOS());
+            List<Site.PriceDTO> priceDTOS = site.getPriceDTOS();
+            site.setAppointmentStartTime(priceDTOS.get(0).getStartTime());
+            site.setAppointmentEndTime(priceDTOS.get(priceDTOS.size()-1).getEndTime());
+            siteClient.addSite(site);
+
         }
 
         return ResultUtil.success("添加成功");
@@ -584,7 +589,7 @@
             sitePrice.setTargetAudience(detail.getTargetAudience());
             sitePrice.setFieldType(detail.getFieldType());
             sitePrice.setCashPrice(detail.getCashPrice() != null ? BigDecimal.valueOf(detail.getCashPrice()) : BigDecimal.ZERO);
-            sitePrice.setCoinPrice(detail.getCoinPrice() != null ? BigDecimal.valueOf(detail.getCoinPrice()) : BigDecimal.ZERO);
+            sitePrice.setCoinPrice(detail.getCoinPrice() != null ? detail.getCoinPrice() : 0);
             sitePrice.setInsertTime(now);
             sitePrice.setUpdateTime(now);
             
@@ -629,6 +634,11 @@
             // 先删除原有价格数据
             sitePriceService.remove(new QueryWrapper<TSitePrice>().eq("siteId", site.getId()));
             saveSitePriceDetails(site.getId(), site.getPriceDTOS());
+            List<Site.PriceDTO> priceDTOS = site.getPriceDTOS();
+            site.setAppointmentStartTime(priceDTOS.get(0).getStartTime());
+            site.setAppointmentEndTime(priceDTOS.get(priceDTOS.size()-1).getEndTime());
+            siteClient.addSite(site);
+
         }
         return ResultUtil.success();
     }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
index 77c7435..c03fea9 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -1572,6 +1572,9 @@
             siteBooking.setCityCode(byId.getCityCode());
         }
 
+        if (siteBooking.getIsHalf()==2){
+            siteBooking.setHalfName(null);
+        }
         siteClient.addSiteBooking(siteBooking);
         System.out.println("=================" + siteBooking);
         return new ResultUtil<>(null, 200, null, null, null);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/ALiSendSms.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/ALiSendSms.java
index d8d9e58..9518e36 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/ALiSendSms.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/ALiSendSms.java
@@ -21,8 +21,8 @@
     // 设置鉴权参数,初始化客户端
     private DefaultProfile profile = DefaultProfile.getProfile(
             "cn-hangzhou",// 地域ID
-            "LTAI5tE3ownRhJ7eXsuW7Vn7",// 您的AccessKey ID
-            "Crgi0OhtDRuJafIeyT3JQL9v0P4EgH");// 您的AccessKey Secret
+            "LTAI5tKLeAE1B5n2mvTZ5yy6",// 您的AccessKey ID
+            "zradDLTBGdzq26tYz9RUCUh0sPmfhh");// 您的AccessKey Secret
     private IAcsClient client = new DefaultAcsClient(profile);
 
     private static void log_print(String functionName, Object result) {
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/QuerySiteTimes.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/QuerySiteTimes.java
index 0612e5c..4435856 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/QuerySiteTimes.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/QuerySiteTimes.java
@@ -26,5 +26,5 @@
     @ApiModelProperty(value = "现金价格(元)")
     private BigDecimal cashPrice;
     @ApiModelProperty(value = "玩湃币价格(币)")
-    private BigDecimal coinPrice;
+    private Integer coinPrice;
 }
\ No newline at end of file
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreConfig.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreConfig.java
index 797a28b..73e3972 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreConfig.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreConfig.java
@@ -38,7 +38,7 @@
     @TableField("storeId")
     private Integer storeId;
     /**
-     * 数据类型(1=报名玩湃课程,2=预约场地,3=报名赛事及活动,4=免费福利,5=线上课程积分,6=购买优惠门票,7=看视频得奖励,8=智慧球场,9=世界杯,10=玩湃惠民卡)
+     1=报名玩湃课程,2=预约场地,3=报名赛事及活动,4=免费福利,5=线上课程积分,6=购买优惠门票,7=看视频得奖励,8=智慧球场,9=世界杯,10=玩湃惠民卡 11 会员 12=散客入场)
      */
     @TableField("type")
     private Integer type;
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java
index 15411a4..59f04aa 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java
@@ -48,7 +48,7 @@
 
     @TableField("coinPrice")
     @ApiModelProperty(value = "玩湃币价格(币)")
-    private BigDecimal coinPrice;
+    private Integer coinPrice;
 
     @TableField("insertTime")
     @ApiModelProperty(value = "创建时间")
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TSiteServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TSiteServiceImpl.java
index 95f2ce1..2a3b88e 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TSiteServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TSiteServiceImpl.java
@@ -48,6 +48,8 @@
 
         if (StringUtils.isBlank(siteName)) {
             siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", day));
+        }else{
+            siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", day));
         }
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OssUploadUtil.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OssUploadUtil.java
index 0948a11..40acbed 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OssUploadUtil.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OssUploadUtil.java
@@ -15,8 +15,8 @@
 	// zradDLTBGdzq26tYz9RUCUh0sPmfhh
 	//OSS图片访问域名
 	public static String oss_domain = "https://we-park-life.oss-cn-beijing.aliyuncs.com/";
-//	public static String accessKeyId = "LTAI5tE3ownRhJ7eXsuW7Vn7";
-//	public static String accessKeySecret = "Crgi0OhtDRuJafIeyT3JQL9v0P4EgH";
+//	public static String accessKeyId = "LTAI5tKLeAE1B5n2mvTZ5yy6";
+//	public static String accessKeySecret = "zradDLTBGdzq26tYz9RUCUh0sPmfhh";
 	public static String accessKeyId = "LTAI5tKLeAE1B5n2mvTZ5yy6";
 	public static String accessKeySecret = "zradDLTBGdzq26tYz9RUCUh0sPmfhh";
 	public static String bucketName="we-park-life";
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html
index f779cda..341fa13 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html
@@ -4,7 +4,7 @@
         <div class="form-horizontal" id="carInfoForm">
 
 
-            <#avatar id="url" name="*图片(推荐像素宽度316px)"/>
+            <#avatar id="url" name="*图片(推荐像素宽度316px)" avatarImg="" />
 
             <div class="input-group" style="margin-left: 342px;">
                 <div class="input-group-btn">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html
index 91b1fe2..2b3ca1f 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html
@@ -34,6 +34,9 @@
             @if(c11!=null){
             <input hidden id="s11" value="${c11.isOpen}">
             @}
+            @if(c12!=null){
+            <input hidden id="s12" value="${c12.isOpen}">
+            @}
             <div class="row">
                 <div class="col-lg-6" style="">
                     <div class="form-group" style="margin-left: 96px">
@@ -242,6 +245,32 @@
                     @}
                 </div>
             </div>
+            <div class="row">
+                <div class="col-lg-6" style="">
+                    <div class="form-group" style="margin-left: 96px">
+                        <label class="col-sm-4 control-label" >
+                            散客入场:<input type="radio" name="r12" value="1">开启 <input type="radio" name="r12" value="0">关闭
+                        </label>
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-3 control-label">排序:</label>
+                        <div class="col-sm-9">
+                            @if(c12==null){
+                            <input class="form-control"  style="width: 200px;"  type="text" id="px12" value="">
+                            @}
+                            @if(c12!=null){
+                            <input class="form-control"  style="width: 200px;"  type="text" id="px12" value="${c12.sort}">
+                            @}
+                        </div>
+                    </div>
+                    @if(c12==null){
+                    <#avatar id="c12" name="背景图" avatarImg="" />
+                    @}
+                    @if(c2!=null){
+                    <#avatar id="c12" name="背景图" avatarImg="${c12.backgroundImage}"/>
+                    @}
+                </div>
+            </div>
             <div style="font-size: x-large; display: none" >赛事比赛板块</div>
             @for(obj in worldCupStores){
             <div class="row " style="display: none" >
@@ -409,6 +438,12 @@
                 OBJradio[i].checked=true//修改选中状态
             }
         }
+        var OBJradio=document.getElementsByName("r12")
+        for(i=0;i<OBJradio.length;i++){//循环查找这个radio
+            if($("#s12").val()==OBJradio[i].value){//判断是否与radio的值相同
+                OBJradio[i].checked=true//修改选中状态
+            }
+        }
         // for (let i = 0; i < $('input[name="isOpen"]').length; i++) {
         //     var OBJradio=document.getElementsByName("r9")
         //     for(i=0;i<OBJradio.length;i++){//循环查找这个radio
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
index dcc182d..04ebd09 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
@@ -18,6 +18,24 @@
             {title: '所在省', field: 'province', visible: true, align: 'center', valign: 'middle'},
             {title: '所在市', field: 'city', visible: true, align: 'center', valign: 'middle'},
             {title: '预约门店', field: 'name', visible: true, align: 'center', valign: 'middle'},
+        {
+            title: '入场方式',
+            field: 'targetAudience',
+            visible: true,
+            align: 'center',
+            valign: 'middle',
+            formatter: function(value, row) {
+                switch (value) {
+
+                    case 1:
+                        return '订场';
+                    case 2:
+                        return '散客';
+                    default:
+                        return '';
+                }
+            }
+        },
         { title: '预约场地', field: 'siteName', visible: true, align: 'center', valign: 'middle'},
         { title: '姓名', field: 'booker', visible: true, align: 'center', valign: 'middle'},
         { title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'},
@@ -79,7 +97,8 @@
                         return '';
                 }
             }
-        }
+        },
+
 
 
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
index 05519ed..c361ad4 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
@@ -200,8 +200,9 @@
         console.log("================"+data)
         if(data!=null){
             let htmlStr = '';
-            if (data.length>0){
-
+            if (data.length>1){
+                console.log(8888)
+                console.log(data.length)
             for (let i = 0; i < data.length; i++) {
                 htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
             }
@@ -210,6 +211,7 @@
 
 
             }else {
+                console.log("9999")
                 $("#nextSite1").hide()
                 $("#nextSite").empty()
             }
@@ -279,8 +281,10 @@
     let cityCode = $('#cityCode').val();
     let storeId = $('#storeId').val();
     let siteId = $('#siteId').val();
-    let site = $('#siteId option:checked').text();
+    let site = $('#nextSite').val();
 
+    console.log("===========")
+    console.log(site)
 
     var radios = document.getElementsByName("type");
     var selectedValue;
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
index 45ae474..1979a0f 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
@@ -27,6 +27,8 @@
                 return {1:"男",2:"女"}[data]
             }
         },
+        {title: '注册电话', field: 'registerPhone', visible: true, align: 'center', valign: 'middle',width:'8%',
+        },
         {title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle',width:'8%',
         },
         {title:  '身份证号', field: 'idCard', visible: true, align: 'center', valign: 'middle',width:'8%',
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js
index e06a346..9e2eddd 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js
@@ -328,6 +328,7 @@
     var px8 = $("#px8").val()
     var px10 = $("#px10").val()
     var px11 = $("#px11").val()
+    var px12 = $("#px12").val()
     var c1 = $("#c1").val()
     var c2 = $("#c2").val()
     var c3 = $("#c3").val()
@@ -338,6 +339,7 @@
     var c8 = $("#c8").val()
     var c10 = $("#c10").val()
     var c111 = $("#c111").val()
+    var c12 = $("#c12").val()
     var r1 =  document.querySelector('input[name="r1"]').checked;
     var r2 =  document.querySelector('input[name="r2"]').checked;
     var r3 =  document.querySelector('input[name="r3"]').checked;
@@ -348,6 +350,7 @@
     var r8 =  document.querySelector('input[name="r8"]').checked;
     var r10 =  document.querySelector('input[name="r10"]').checked;
     var r11 =  document.querySelector('input[name="r11"]').checked;
+    var r12 =  document.querySelector('input[name="r12"]').checked;
 
     var json1=[];
     for (let i = 0; i < $('input[name="px9"]').length; i++) {
@@ -420,6 +423,11 @@
     }else{
         r11=0
     }
+    if(r12){
+        r12 =1
+    }else{
+        r12=0
+    }
 
     var ajax = new $ax(Feng.ctxPath + "/tShop/saveImgAll", function(data){
         if(data.code == 200){
@@ -443,6 +451,7 @@
     ajax.set("px8",px8);
     ajax.set("px10",px10);
     ajax.set("px11",px11);
+    ajax.set("px12",px12);
     ajax.set("c1",c1);
     ajax.set("c2",c2);
     ajax.set("c3",c3);
@@ -453,6 +462,7 @@
     ajax.set("c8",c8);
     ajax.set("c10",c10);
     ajax.set("c111",c111);
+    ajax.set("c12",c12);
     ajax.set("r1",r1);
     ajax.set("r2",r2);
     ajax.set("r3",r3);
@@ -463,6 +473,7 @@
     ajax.set("r8",r8);
     ajax.set("r10",r10);
     ajax.set("r11",r11);
+    ajax.set("r12",r12);
     ajax.set("str",JSON.stringify(json1));
     ajax.start();
 }
@@ -539,6 +550,9 @@
     var carPhoto = new $WebUpload("c111");
     carPhoto.setUploadBarId("progressBar");
     carPhoto.init();
+    var carPhoto = new $WebUpload("c12");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
 
 
     for (let i = 0; i < $('input[name="px9"]').length; i++) {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
index 667ab26..eff8be2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
@@ -773,6 +773,31 @@
     TSiteInfo.bookingRowIndex = 0;
     TSiteInfo.walkinRowIndex = 0;
     
+    // 如果是编辑模式,初始化 priceConfig(从步骤2的单选按钮获取 isHalf)
+    var siteId = $("#id").val();
+    if (siteId) {
+        // 确保 priceConfig 对象存在
+        if (!TSiteInfo.priceConfig) {
+            TSiteInfo.priceConfig = {};
+        }
+        // 从步骤2的单选按钮获取 isHalf 值
+        var isHalfStep2 = $("input[name='ishalf_step2']:checked").val();
+        if (isHalfStep2) {
+            TSiteInfo.priceConfig.isHalf = parseInt(isHalfStep2);
+        } else {
+            // 如果没有选中,从隐藏字段获取(兼容旧数据)
+            var hiddenIsHalf = $("#type_").val();
+            TSiteInfo.priceConfig.isHalf = hiddenIsHalf ? parseInt(hiddenIsHalf) : 2;
+        }
+    } else {
+        // 新增模式:确保 priceConfig 已初始化(应该由 nextStep 初始化)
+        if (!TSiteInfo.priceConfig) {
+            TSiteInfo.priceConfig = {
+                isHalf: 2  // 默认不可预订半场
+            };
+        }
+    }
+    
     // 监听人群选择变化
     $("#audience_booking, #audience_walkin").off('change').on('change', function() {
         TSiteInfo.updateAudienceUI();
@@ -786,7 +811,6 @@
     TSiteInfo.updateAudienceUI();
         
     // 加载已有的价格数据(如果是编辑模式)
-    var siteId = $("#id").val();
     if (siteId) {
         TSiteInfo.loadSitePrices(siteId);
     }
@@ -1095,7 +1119,26 @@
  * 构建表头
  */
 TSiteInfo.buildTableHeaders = function() {
-    var isHalf = TSiteInfo.priceConfig.isHalf;
+    // 获取 isHalf 值,优先从 priceConfig 获取,如果没有则从步骤2的单选按钮获取
+    var isHalf = 2; // 默认值
+    if (TSiteInfo.priceConfig && TSiteInfo.priceConfig.isHalf !== undefined) {
+        isHalf = TSiteInfo.priceConfig.isHalf;
+    } else {
+        // 从步骤2的单选按钮获取
+        var isHalfStep2 = $("input[name='ishalf_step2']:checked").val();
+        if (isHalfStep2) {
+            isHalf = parseInt(isHalfStep2);
+        } else {
+            // 最后从隐藏字段获取(兼容旧数据)
+            var hiddenIsHalf = $("#type_").val();
+            isHalf = hiddenIsHalf ? parseInt(hiddenIsHalf) : 2;
+        }
+        // 更新 priceConfig 以便后续使用
+        if (!TSiteInfo.priceConfig) {
+            TSiteInfo.priceConfig = {};
+        }
+        TSiteInfo.priceConfig.isHalf = isHalf;
+    }
     
     var headerHtml = '<tr>' +
                         '<th rowspan="3" width="120">时段开始</th>' +
@@ -1162,7 +1205,26 @@
  * 添加订场时段
  */
 TSiteInfo.addBookingTimeSlot = function() {
-    var isHalf = TSiteInfo.priceConfig.isHalf;
+    // 获取 isHalf 值,优先从 priceConfig 获取,如果没有则从步骤2的单选按钮获取
+    var isHalf = 2; // 默认值
+    if (TSiteInfo.priceConfig && TSiteInfo.priceConfig.isHalf !== undefined) {
+        isHalf = TSiteInfo.priceConfig.isHalf;
+    } else {
+        // 从步骤2的单选按钮获取
+        var isHalfStep2 = $("input[name='ishalf_step2']:checked").val();
+        if (isHalfStep2) {
+            isHalf = parseInt(isHalfStep2);
+        } else {
+            // 最后从隐藏字段获取(兼容旧数据)
+            var hiddenIsHalf = $("#type_").val();
+            isHalf = hiddenIsHalf ? parseInt(hiddenIsHalf) : 2;
+        }
+        // 更新 priceConfig 以便后续使用
+        if (!TSiteInfo.priceConfig) {
+            TSiteInfo.priceConfig = {};
+        }
+        TSiteInfo.priceConfig.isHalf = isHalf;
+    }
     var index = TSiteInfo.bookingRowIndex++;
     
     var html = '<tr data-index="' + index + '">' +
@@ -1194,7 +1256,26 @@
  * 添加散客时段
  */
 TSiteInfo.addWalkinTimeSlot = function() {
-    var isHalf = TSiteInfo.priceConfig.isHalf;
+    // 获取 isHalf 值,优先从 priceConfig 获取,如果没有则从步骤2的单选按钮获取
+    var isHalf = 2; // 默认值
+    if (TSiteInfo.priceConfig && TSiteInfo.priceConfig.isHalf !== undefined) {
+        isHalf = TSiteInfo.priceConfig.isHalf;
+    } else {
+        // 从步骤2的单选按钮获取
+        var isHalfStep2 = $("input[name='ishalf_step2']:checked").val();
+        if (isHalfStep2) {
+            isHalf = parseInt(isHalfStep2);
+        } else {
+            // 最后从隐藏字段获取(兼容旧数据)
+            var hiddenIsHalf = $("#type_").val();
+            isHalf = hiddenIsHalf ? parseInt(hiddenIsHalf) : 2;
+        }
+        // 更新 priceConfig 以便后续使用
+        if (!TSiteInfo.priceConfig) {
+            TSiteInfo.priceConfig = {};
+        }
+        TSiteInfo.priceConfig.isHalf = isHalf;
+    }
     var index = TSiteInfo.walkinRowIndex++;
     
     var html = '<tr data-index="' + index + '">' +
@@ -1702,7 +1783,26 @@
  */
 TSiteInfo.collectPriceData = function() {
     var priceDTOS = [];
-    var isHalf = TSiteInfo.priceConfig.isHalf;
+    // 获取 isHalf 值,优先从 priceConfig 获取,如果没有则从步骤2的单选按钮获取
+    var isHalf = 2; // 默认值
+    if (TSiteInfo.priceConfig && TSiteInfo.priceConfig.isHalf !== undefined) {
+        isHalf = TSiteInfo.priceConfig.isHalf;
+    } else {
+        // 从步骤2的单选按钮获取
+        var isHalfStep2 = $("input[name='ishalf_step2']:checked").val();
+        if (isHalfStep2) {
+            isHalf = parseInt(isHalfStep2);
+        } else {
+            // 最后从隐藏字段获取(兼容旧数据)
+            var hiddenIsHalf = $("#type_").val();
+            isHalf = hiddenIsHalf ? parseInt(hiddenIsHalf) : 2;
+        }
+        // 更新 priceConfig 以便后续使用
+        if (!TSiteInfo.priceConfig) {
+            TSiteInfo.priceConfig = {};
+        }
+        TSiteInfo.priceConfig.isHalf = isHalf;
+    }
     var bookingChecked = $("#audience_booking").is(':checked');
     var walkinChecked = $("#audience_walkin").is(':checked');
     var validationFailed = false;  // 验证失败标志
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java
index 81604b3..a2e66ca 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java
@@ -7,6 +7,7 @@
 import com.dsh.other.service.ISiteService;
 import com.dsh.other.util.ResultUtil;
 import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -29,6 +30,7 @@
 @RestController
 @Api(tags = "硬件方调用 存储玩湃惠民卡使用记录")
 @RequestMapping("/base/code")
+@Slf4j
 public class CodeCallBackController {
     @Autowired
     private ISiteBookingService siteBookingService;
@@ -42,6 +44,7 @@
      */
     @GetMapping("/verify")
     public ResultUtil verify(Integer codeType,String dataId, Integer rid, Integer sid) throws Exception {
+        log.info("硬件开门后回调 校验是否可入场");
         System.err.println("硬件开门后回调 校验是否可入场");
         System.err.println("codeType:"+codeType);
         System.err.println("dataId:"+dataId);
@@ -51,7 +54,7 @@
 
         // codeType二维码类型1=订场 2=散客,3=门票,玩湃惠民卡codeType=4 234需要校验能否进场
         if (codeType==1 || codeType==2){
-            // 将订单设置为已核销
+            // 将订单设置为已使用
             SiteBooking siteBooking = siteBookingService.getById(Integer.valueOf(dataId));
             if (siteBooking==null){
                 System.err.println("未查询到订场记录"+dataId);
@@ -65,10 +68,9 @@
         }
         if (codeType==3){
             //  判断是否能入场 远程调用将门票设置为已使用
-            LocalDate now = LocalDate.now();
             Date date1 = new Date();
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-            String day = simpleDateFormat.format(now);
+            String day = simpleDateFormat.format(date1);
 
             List<QuerySiteTimes> querySiteTimes = siteService.querySiteTimes(rid, day, null, null, 2);
             Integer flag =0;
@@ -101,6 +103,7 @@
                 }
             }
             if (flag==0){
+                log.info("该时间段已无空位");
                 return ResultUtil.error("该时间段已无空位");
             }else{
                 return ResultUtil.success();
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
index 42c9ced..f3a8644 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
@@ -4,6 +4,7 @@
 import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.other.entity.*;
@@ -41,6 +42,8 @@
 import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -262,7 +265,8 @@
         }
     }
 
-
+    @Autowired
+    private ITSitePriceService sitePriceService;
     @ResponseBody
     @PostMapping("/base/site/querySiteList")
     @ApiOperation(value = "获取场地列表", tags = {"用户—预约场地"})
@@ -270,6 +274,8 @@
     })
     public ResultUtil<List<QuerySiteListVo>> querySiteList(QuerySiteList querySiteList) {
         try {
+
+
             List<QuerySiteListVo> querySiteListVos = siteService.querySiteList(querySiteList);
             return ResultUtil.success(querySiteListVos);
         } catch (Exception e) {
@@ -654,6 +660,7 @@
             System.err.println("订场类型:"+targetAudience);
 
             map.put("name", site.getName());
+            map.put("targetAudience", targetAudience);
 
 
             List<Integer> ids = getIds(siteBooking.getSiteId());
@@ -950,18 +957,36 @@
     @PostMapping("/base/site/getNewAddSiteList")
     public List<SiteVo> getAppUserSiteList(@RequestBody Integer storeId) {
         List<SiteVo> siteVos = new ArrayList<>();
-
+        DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();
+        Map<Integer, List<TSitePrice>> priceMap = sitePriceService.lambdaQuery().eq(TSitePrice::getDayOfWeek, dayOfWeek.getValue())
+                .list()
+                .stream().collect(Collectors.groupingBy(TSitePrice::getSiteId));
         List<Site> list = siteService.list(new QueryWrapper<Site>().eq("state", 1).eq("storeId", storeId)
                 .orderByDesc("insertTime"));
         if (list.size() > 0) {
             for (Site site : list) {
+                List<TSitePrice> tSitePrices = priceMap.get(site.getId());
+
                 SiteVo vo = new SiteVo();
+                vo.setIsCanBeBooked(site.getIsCanBeBooked());
                 vo.setSiteId(site.getId());
                 vo.setSiteName(site.getName());
-                vo.setSiteTime(site.getAppointmentStartTime() + "-" + site.getAppointmentEndTime());
+                vo.setSiteTime("");
+                vo.setPrice(0.0);
+                if (tSitePrices!=null&& !tSitePrices.isEmpty()){
+                    BigDecimal bigDecimal = tSitePrices.get(0).getCashPrice();
+                    // 遍历 查询最小的价格
+                    for (TSitePrice tSitePrice : tSitePrices) {
+                        if (bigDecimal.compareTo(tSitePrice.getCashPrice()) > 0) {
+                            bigDecimal = tSitePrice.getCashPrice();
+                        }
+                    }
+                    vo.setPrice(bigDecimal.doubleValue());
+                    vo.setSiteTime(tSitePrices.get(0).getStartTime() + "-" + tSitePrices.get(tSitePrices.size()-1).getEndTime());
+                }
                 SiteType byId = siteTypeService.getById(site.getSiteTypeId());
                 vo.setSiteType(byId.getName());
-                vo.setPrice(site.getCashPrice());
+
                 siteVos.add(vo);
             }
         }
@@ -969,4 +994,5 @@
 
     }
 
+
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/StoreConfig.java b/cloud-server-other/src/main/java/com/dsh/other/entity/StoreConfig.java
index 17ffa3c..c668081 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/entity/StoreConfig.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/StoreConfig.java
@@ -38,7 +38,7 @@
     @TableField("storeId")
     private Integer storeId;
     /**
-     * 数据类型(1=报名玩湃课程,2=预约场地,3=报名赛事及活动,4=免费福利,5=线上课程积分,6=购买优惠门票,7=看视频得奖励,8=智慧球场)
+     1=报名玩湃课程,2=预约场地,3=报名赛事及活动,4=免费福利,5=线上课程积分,6=购买优惠门票,7=看视频得奖励,8=智慧球场,9=世界杯,10=玩湃惠民卡 11 会员 12=散客入场)
      */
     @TableField("type")
     private Integer type;
diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/activity/UserCouponClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/activity/UserCouponClient.java
index 9a2644c..f2aa039 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/feignclient/activity/UserCouponClient.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/activity/UserCouponClient.java
@@ -4,6 +4,8 @@
 import com.dsh.other.feignclient.activity.model.QueryUserCouponByIdAndUserId;
 import com.dsh.other.feignclient.activity.model.UserCoupon;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 
 /**
@@ -19,8 +21,8 @@
      * @param id
      * @return
      */
-    @PostMapping("/userCoupon/changeTicketStatus")
-    void changeTicketStatus(String id);
+    @GetMapping("/userCoupon/changeTicketStatus/{id}")
+    void changeTicketStatus(@PathVariable("id") String id);
     /**
      * 根据id获取用户优惠券数据
      *
diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SiteVo.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SiteVo.java
index 9138abf..7dd1cdd 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SiteVo.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SiteVo.java
@@ -20,5 +20,7 @@
 
     @ApiModelProperty(value = "价格")
     private Double price;
+    @ApiModelProperty(value = "是否可以预约(0=否,1=是)")
+    private Integer isCanBeBooked;
 
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java b/cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java
index baa34e5..f2bb436 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java
@@ -13,6 +13,8 @@
 public class QueryMySiteVo {
     @ApiModelProperty("场地id")
     private Integer id;
+    @ApiModelProperty("面向人群 1订场 2散客")
+    private Integer targetAudience;
     @ApiModelProperty("场地名称")
     private String name;
     @ApiModelProperty("场地类型名称")
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteList.java b/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteList.java
index d54d564..c9e0be7 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteList.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteList.java
@@ -31,4 +31,6 @@
     private String lon;
     @ApiModelProperty(value = "当前纬度", required = true, dataType = "String")
     private String lat;
+    @ApiModelProperty(value = "入场方式 1订场 2散客", required = true, dataType = "Integer")
+    private Integer targetAudience;
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteTimes.java b/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteTimes.java
index ba941f2..66120a2 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteTimes.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/QuerySiteTimes.java
@@ -18,8 +18,7 @@
     private String time;
     @ApiModelProperty("是否可选(0=否,1=是)")
     private Integer selectable;
-    @ApiModelProperty("是否过期(0=否,1=是)")
-    private Integer timeAfter;
+
     @ApiModelProperty("已预约人数")
     private Integer selectCount;
     @ApiModelProperty("最大预约人数")
@@ -29,5 +28,5 @@
     @ApiModelProperty(value = "现金价格(元)")
     private BigDecimal cashPrice;
     @ApiModelProperty(value = "玩湃币价格(币)")
-    private BigDecimal coinPrice;
+    private Integer coinPrice;
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/TSitePrice.java b/cloud-server-other/src/main/java/com/dsh/other/model/TSitePrice.java
index dddd3a8..26ecf4f 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/model/TSitePrice.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/TSitePrice.java
@@ -50,7 +50,7 @@
 
     @TableField("coinPrice")
     @ApiModelProperty(value = "玩湃币价格(币)")
-    private BigDecimal coinPrice;
+    private Integer coinPrice;
 
     @TableField("insertTime")
     @ApiModelProperty(value = "创建时间")
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
index d21f19d..966f980 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -104,11 +104,12 @@
         querySiteList.setPageNum((querySiteList.getPageNum() - 1) * querySiteList.getPageSize());
         DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();
         Map<Integer, List<TSitePrice>> priceMap = sitePriceService.lambdaQuery().eq(TSitePrice::getDayOfWeek, dayOfWeek.getValue())
-                .eq(TSitePrice::getTargetAudience,1).list()
+                .list()
                 .stream().collect(Collectors.groupingBy(TSitePrice::getSiteId));
         List<QuerySiteListVo> querySiteListVos = this.baseMapper.querySiteList(querySiteList);
         for (QuerySiteListVo querySiteListVo : querySiteListVos) {
             querySiteListVo.setPrice(0.0);
+            querySiteListVo.setTimes("");
             if (ToolUtil.isEmpty(querySiteList.getLon())) {
                 querySiteListVo.setDistance(0D);
                 continue;
@@ -282,7 +283,6 @@
             querySiteTimes.setSelectCount(0);
             querySiteTimes.setSelectMaxCount(site.getWalkinCapacity());
             querySiteTimes.setIsReserve(0);
-            querySiteTimes.setTimeAfter(0);
             querySiteTimes.setCashPrice(tSitePrice.getCashPrice());
             querySiteTimes.setCoinPrice(tSitePrice.getCoinPrice());
             String temp = tSitePrice.getStartTime().substring(0, tSitePrice.getStartTime().length() - 3) + "-" + tSitePrice.getEndTime().substring(0, tSitePrice.getEndTime().length() - 3);
@@ -317,11 +317,247 @@
             }
             if (querySiteTimes.getSelectable() == 1&&end.before(now)){
                 querySiteTimes.setSelectable(0);
-                querySiteTimes.setTimeAfter(1);
             }
             if (end.before(now)){
                 querySiteTimes.setSelectable(0);
-                querySiteTimes.setTimeAfter(1);
+            }
+            querySiteTimes.setSelectCount(count);
+            if (flag == 0 &&  querySiteTimes.getSelectable() == 1) {
+                // 当前时间段还没有预约
+                Integer walkinCapacity = site.getWalkinCapacity();
+                // 计算散客预约人数和最大散客容纳数
+                System.err.println("预约人数" + count);
+                System.err.println("最大散客容纳数" + walkinCapacity);
+                if (walkinCapacity <= count) {
+                    if (targetAudience==1 && walkinCapacity!=0){
+                        // 不可预约
+                        System.err.println("不可预约 也不能散客");
+                        querySiteTimes.setSelectable(0);
+                        querySiteTimes.setIsReserve(0);
+                    }else if (targetAudience==2){
+                        // 不能散客
+                        System.err.println("不可预约 也不能散客");
+                        querySiteTimes.setSelectable(0);
+                        querySiteTimes.setIsReserve(0);
+                    }else{
+                        querySiteTimes.setSelectable(1);
+                    }
+                }else{
+                    if (targetAudience==2){
+                        // 散客只能预约当前时间段
+                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                        String nowStr = simpleDateFormat.format(now);
+                        // 判断当前时间有没有在timePriceStart和timePriceEnd之间
+                        if (DateComparisonExample.isStringWithinTimeRange(nowStr, simpleDateFormat.parse(timePriceStart),  simpleDateFormat.parse(timePriceEnd))) {
+                            querySiteTimes.setSelectable(1);
+                        }else{
+                            querySiteTimes.setSelectable(0);
+                        }
+                    }
+                }
+            }
+            // 查出lock
+            List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id));
+            for (SiteLock siteLock : list) {
+                String stime = day + " " + tSitePrice.getStartTime().substring(0, tSitePrice.getStartTime().length() - 3);
+                String etime = day + " " + tSitePrice.getEndTime().substring(0, tSitePrice.getEndTime().length() - 3);
+                boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime());
+                if (stringDateBetween) {
+                    System.err.println("11111预约开始" + stime + "预约结束" + etime);
+                    querySiteTimes.setSelectable(0);
+                    querySiteTimes.setIsReserve(1);
+                }
+                if (DateComparisonExample.isStringWithinTimeRange(stime, siteLock.getStartTime(), siteLock.getEndTime())) {
+                    System.err.println("22222预约开始" + stime + "预约结束" + etime);
+
+                    querySiteTimes.setSelectable(0);
+                    querySiteTimes.setIsReserve(1);
+                }
+                if (DateComparisonExample.isStringWithinTimeRange(etime, siteLock.getStartTime(), siteLock.getEndTime())) {
+                    System.err.println("33333预约开始" + stime + "预约结束" + etime);
+
+                    querySiteTimes.setSelectable(0);
+                    querySiteTimes.setIsReserve(1);
+                }
+            }
+            timeRanges.add(querySiteTimes);
+        }
+        System.out.println("封装后的基础时间段和价格" + site);
+
+//        System.out.println("================" + site);
+//        String appointmentStartTime = site.getAppointmentStartTime();
+//        String appointmentEndTime = site.getAppointmentEndTime();
+//
+//        String currentTime = appointmentStartTime;
+//        while (currentTime.compareTo(appointmentEndTime) < 0) {
+//            String nextTime = null;
+//            if ("智慧场地".equals(site.getTypeName())) {
+//                nextTime = getNextTimeOne(currentTime);
+//            } else {
+//                nextTime = getNextTime(currentTime);
+//            }
+//
+//
+//            String timeRange = currentTime + "-" + nextTime;
+//            QuerySiteTimes orderDto = new QuerySiteTimes();
+//            orderDto.setTime(timeRange);
+//
+//            LocalTime currentTime1 = LocalTime.now();
+//            LocalTime targetTime = LocalTime.parse(currentTime);
+//
+//            boolean hasExceeded = currentTime1.isAfter(targetTime);
+////            if (hasExceeded){
+////                orderDto.setSelectable(0);
+////            }
+//            if (strings.contains(timeRange)) {
+//
+//                orderDto.setSelectable(0);
+//            } else {
+//
+//                String stime = day + " " + currentTime;
+//                String etime = day + " " + nextTime;
+//                orderDto.setSelectable(1);
+//                // 查出lock
+//                List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id));
+//                for (SiteLock siteLock : list) {
+//                    boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime());
+//                    if (stringDateBetween) {
+//                        orderDto.setSelectable(0);
+//                    }
+//                    if (DateComparisonExample.isStringWithinTimeRange(stime, siteLock.getStartTime(), siteLock.getEndTime())) {
+//                        orderDto.setSelectable(0);
+//                    }
+//                    if (DateComparisonExample.isStringWithinTimeRange(etime, siteLock.getStartTime(), siteLock.getEndTime())) {
+//                        orderDto.setSelectable(0);
+//                    }
+//
+//                }
+//
+//
+//            }
+//
+//
+//            timeRanges.add(orderDto);
+//            currentTime = nextTime;
+//        }
+        System.out.println("----最后封装的时间段数据------" + timeRanges);
+
+        return timeRanges;
+
+
+    }
+
+    // 用于继续支付
+    public List<QuerySiteTimes> querySiteTimes1(Integer siteBookingId, String day, String halfName, String siteName, Integer targetAudience) throws Exception {
+
+        SiteBooking siteBookingServiceById = iSiteBookingService.getById(siteBookingId);
+        Integer id = siteBookingServiceById.getSiteId();
+        System.out.println("=======date======" + day);
+        List<String> strings = new ArrayList<>();
+
+        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>()
+                .ne("id", siteBookingId).eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", day));
+
+        if (siteName == null || siteName.equals("")) {
+            siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", day));
+        }
+
+
+        System.out.println("=======已预约列表======" + siteBookings);
+        for (SiteBooking siteBooking : siteBookings) {
+
+
+            String[] split = siteBooking.getTimes().split(";");
+
+            if (siteBooking.getIsHalf() == 2) {
+                for (String s : split) {
+                    String convertedValue = s.substring(11);
+                    strings.add(convertedValue + (siteBooking.getTargetAudience() != null ? "," + siteBooking.getTargetAudience() : ",1"));
+                }
+            } else {
+                if (halfName == null) {
+                    for (String s : split) {
+                        String convertedValue = s.substring(11);
+                        strings.add(convertedValue + (siteBooking.getTargetAudience() != null ? "," + siteBooking.getTargetAudience() : ",1"));
+                    }
+                }
+
+                if (siteBooking.getHalfName().equals(halfName)) {
+                    for (String s : split) {
+                        String convertedValue = s.substring(11);
+                        strings.add(convertedValue + (siteBooking.getTargetAudience() != null ? "," + siteBooking.getTargetAudience() : ",1"));
+                    }
+
+                }
+            }
+        }
+        System.out.println("======已经预约时间段=======" + strings);
+
+
+        Site site = siteService.getById(id);
+        List<QuerySiteTimes> timeRanges = new ArrayList<>();
+        day = day.split(";")[0].split(" ")[0];
+        LocalDate date = LocalDate.parse(day);
+        DayOfWeek dayOfWeek = date.getDayOfWeek();
+        // 通过日期 确定周X 查询设置的可以约时间段和金额 封装基础时间段数据
+        LambdaQueryWrapper<TSitePrice> tSitePriceLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        tSitePriceLambdaQueryWrapper.eq(TSitePrice::getSiteId, id);
+        tSitePriceLambdaQueryWrapper.orderByAsc(TSitePrice::getStartTime);
+        tSitePriceLambdaQueryWrapper.eq(TSitePrice::getTargetAudience, targetAudience);
+        tSitePriceLambdaQueryWrapper.eq(TSitePrice::getDayOfWeek, dayOfWeek.getValue());
+        if (StringUtils.hasLength(halfName)) {
+            tSitePriceLambdaQueryWrapper.eq(TSitePrice::getFieldType, 2);
+        } else {
+            tSitePriceLambdaQueryWrapper.eq(TSitePrice::getFieldType, 1);
+        }
+        List<TSitePrice> sitePrice = sitePriceService.list(tSitePriceLambdaQueryWrapper);
+
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+        for (TSitePrice tSitePrice : sitePrice) {
+            QuerySiteTimes querySiteTimes = new QuerySiteTimes();
+            querySiteTimes.setTime(tSitePrice.getStartTime().substring(0, tSitePrice.getStartTime().length() - 3) + "-" + tSitePrice.getEndTime().substring(0, tSitePrice.getEndTime().length() - 3));
+            querySiteTimes.setSelectable(1);
+            querySiteTimes.setSelectCount(0);
+            querySiteTimes.setSelectMaxCount(site.getWalkinCapacity());
+            querySiteTimes.setIsReserve(0);
+            querySiteTimes.setCashPrice(tSitePrice.getCashPrice());
+            querySiteTimes.setCoinPrice(tSitePrice.getCoinPrice());
+            String temp = tSitePrice.getStartTime().substring(0, tSitePrice.getStartTime().length() - 3) + "-" + tSitePrice.getEndTime().substring(0, tSitePrice.getEndTime().length() - 3);
+            String timePriceStart = day + " " + tSitePrice.getStartTime().substring(0, tSitePrice.getStartTime().length() - 3);
+            String timePriceEnd = day + " " + tSitePrice.getEndTime().substring(0, tSitePrice.getEndTime().length() - 3);
+            Date now = new Date();
+            Date start = simpleDateFormat1.parse(timePriceStart);
+            Date end = simpleDateFormat1.parse(timePriceEnd);
+            // 已经预约了 判断是散客模式还是订场模式
+            Integer flag = 0;
+            // 散客预约人数
+            Integer count = 0;
+            for (String time : strings) {
+                // 先判断时间是否和预约时间有交集
+                String s = time.split(",")[1];
+                String timeRange = time.split(",")[0];
+                String[] split = timeRange.split("-");
+                String bookingStart = day + " " + split[0];
+                String bookingEnd = day + " " + split[1];
+                if (!isTimePeriodsIntersect(timePriceStart, timePriceEnd, bookingStart, bookingEnd)) {
+                    // 不相交
+                } else {
+                    if (s.equals("1")) {
+                        // 订场 不可再预约了
+                        querySiteTimes.setIsReserve(1);
+                        querySiteTimes.setSelectable(0);
+                        flag = 1;
+                        break;
+                    }
+                    count++;
+                }
+            }
+            if (querySiteTimes.getSelectable() == 1&&end.before(now)){
+                querySiteTimes.setSelectable(0);
+            }
+            if (end.before(now)){
+                querySiteTimes.setSelectable(0);
             }
             querySiteTimes.setSelectCount(count);
             if (flag == 0 &&  querySiteTimes.getSelectable() == 1) {
@@ -528,7 +764,7 @@
         String[] split = reservationSite.getTimes().split(";");
         // 所选时间段 所需总计金额
         BigDecimal money = BigDecimal.ZERO;
-        BigDecimal playCoin = BigDecimal.ZERO;
+        Integer playCoin = 0;
         for (String s : split) {
             String day = s.split(" ")[0];
             String time = s.split(" ")[1];
@@ -551,7 +787,7 @@
                 }
                 if (querySiteTime.getTime().equals(time)) {
                     money = money.add(querySiteTime.getCashPrice());
-                    playCoin = playCoin.add(querySiteTime.getCoinPrice());
+                    playCoin = playCoin+querySiteTime.getCoinPrice();
                     break;
                 }
             }
@@ -649,7 +885,7 @@
             return aliPaymentSite(money.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), siteBooking);
         }
         if (reservationSite.getPayType() == 3) {//玩湃币支付
-            return playPaiCoinPaymentSite(appUser, playCoin.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), siteBooking);
+            return playPaiCoinPaymentSite(appUser, playCoin.doubleValue(), siteBooking);
 
         }
         return ResultUtil.success();
@@ -859,11 +1095,14 @@
         pageNo = (pageNo - 1) * pageSize;
         List<QueryMySiteVo> queryMySiteVos = this.baseMapper.queryMySite(uid, status, pageNo, pageSize);
         for (QueryMySiteVo queryMySiteVo : queryMySiteVos) {
+            if (queryMySiteVo.getTargetAudience()==null){
+                queryMySiteVo.setTargetAudience(1);
+            }
             SiteBooking siteBooking = siteBookingService.getById(queryMySiteVo.getId());
             String[] split = siteBooking.getTimes().split(";");
             // 所选时间段 所需总计金额
             BigDecimal money = BigDecimal.ZERO;
-            BigDecimal playCoin = BigDecimal.ZERO;
+            Integer playCoin = 0;
             for (String s : split) {
 
                 String day = s.split(" ")[0];
@@ -887,12 +1126,12 @@
 //                    }
                     if (querySiteTime.getTime().equals(time)) {
                         money = money.add(querySiteTime.getCashPrice());
-                        playCoin = playCoin.add(querySiteTime.getCoinPrice());
+                        playCoin = playCoin+querySiteTime.getCoinPrice();
                         break;
                     }
                 }
             }
-            queryMySiteVo.setPlayPaiCoin(playCoin.setScale(0, RoundingMode.DOWN).intValue());
+            queryMySiteVo.setPlayPaiCoin(playCoin);
         }
         return queryMySiteVos;
     }
@@ -911,10 +1150,15 @@
         Site byId = siteService.getById(siteBooking.getSiteId());
         SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
         Date startTime = siteBooking.getStartTime();
-        if (format.format(new Date()).equals(format.format(startTime)) && siteBooking.getStatus() != 0) {
+        if (siteBooking.getTargetAudience() == 1 && format.format(new Date()).equals(format.format(startTime)) && siteBooking.getStatus() != 0) {
             return ResultUtil.error("预约当天,不能取消");
         }
-
+        if (siteBooking.getTargetAudience() == 2){
+            Date date = new Date();
+            if (siteBooking.getEndTime().before( date)){
+                return ResultUtil.error("已过期,不能取消");
+            }
+        }
         if (siteBooking.getStatus() == 0) {
             siteBooking.setStatus(5);
             siteBookingService.updateById(siteBooking);
@@ -1034,30 +1278,19 @@
         String[] split = siteBooking.getTimes().split(";");
         // 所选时间段 所需总计金额
         BigDecimal money = BigDecimal.ZERO;
-        BigDecimal playCoin = BigDecimal.ZERO;
+        Integer playCoin = 0;
         for (String s : split) {
             String day = s.split(" ")[0];
             String time = s.split(" ")[1];
             String bookingStart = day + " " + time.split("-")[0];
             String bookingEnd = day + " " + time.split("-")[1];
-            List<QuerySiteTimes> querySiteTimes = querySiteTimes(siteBooking.getId(), day, siteBooking.getHalfName(), siteBooking.getNextName(), siteBooking.getTargetAudience());
+            List<QuerySiteTimes> querySiteTimes = querySiteTimes1(siteBooking.getId(), day, siteBooking.getHalfName(), siteBooking.getNextName(), siteBooking.getTargetAudience());
             for (QuerySiteTimes querySiteTime : querySiteTimes) {
                 String timePriceStart = day + " " + querySiteTime.getTime().split("-")[0];
                 String timePriceEnd = day + " " + querySiteTime.getTime().split("-")[1];
-                if (!isTimePeriodsIntersect(timePriceStart, timePriceEnd, bookingStart, bookingEnd)) {
-                    // 时间不相交
-                } else if (querySiteTime.getSelectable() == 0) {
-                    if (querySiteTime.getIsReserve() == 1) {
-                        return ResultUtil.error("【" + s + "】" +
-                                "时间段已被使用");
-                    } else {
-                        return ResultUtil.error("【" + s + "】" +
-                                "时间段散客人数已满");
-                    }
-                }
                 if (querySiteTime.getTime().equals(time)) {
                     money = money.add(querySiteTime.getCashPrice());
-                    playCoin = playCoin.add(querySiteTime.getCoinPrice());
+                    playCoin = playCoin+querySiteTime.getCoinPrice();
                     break;
                 }
             }
@@ -1091,8 +1324,13 @@
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         siteBooking.setOrderNo(sdf.format(new Date()) + UUIDUtil.getNumberRandom(3));
+
         siteBooking.setPayType(payType);
-        siteBooking.setPayMoney(money.doubleValue());
+        if (payType==3){
+            siteBooking.setPayMoney(playCoin.doubleValue());
+        }else{
+            siteBooking.setPayMoney(money.doubleValue());
+        }
         if (payType == 3) {
             siteBooking.setUserCouponId(null);
         }
@@ -1128,30 +1366,19 @@
         Map<String, Double> map = new HashMap<>();
         // 所选时间段 所需总计金额
         BigDecimal money = BigDecimal.ZERO;
-        BigDecimal playCoin = BigDecimal.ZERO;
+        Integer playCoin = 0;
         for (String s : split) {
             String day = s.split(" ")[0];
             String time = s.split(" ")[1];
             String bookingStart = day + " " + time.split("-")[0];
             String bookingEnd = day + " " + time.split("-")[1];
-            List<QuerySiteTimes> querySiteTimes = querySiteTimes(siteBooking.getId(), day, siteBooking.getHalfName(), siteBooking.getNextName(), siteBooking.getTargetAudience());
+            List<QuerySiteTimes> querySiteTimes = querySiteTimes1(siteBooking.getId(), day, siteBooking.getHalfName(), siteBooking.getNextName(), siteBooking.getTargetAudience());
             for (QuerySiteTimes querySiteTime : querySiteTimes) {
                 String timePriceStart = day + " " + querySiteTime.getTime().split("-")[0];
                 String timePriceEnd = day + " " + querySiteTime.getTime().split("-")[1];
-                if (!isTimePeriodsIntersect(timePriceStart, timePriceEnd, bookingStart, bookingEnd)) {
-                    // 时间不相交
-                } else if (querySiteTime.getSelectable() == 0) {
-                    if (querySiteTime.getIsReserve() == 1) {
-                        return ResultUtil.error("【" + s + "】" +
-                                "时间段已被使用");
-                    } else {
-                        return ResultUtil.error("【" + s + "】" +
-                                "时间段散客人数已满");
-                    }
-                }
                 if (querySiteTime.getTime().equals(time)) {
                     money = money.add(querySiteTime.getCashPrice());
-                    playCoin = playCoin.add(querySiteTime.getCoinPrice());
+                    playCoin = playCoin+querySiteTime.getCoinPrice();
                     break;
                 }
             }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
index 6a79717..edffd36 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
@@ -63,7 +63,8 @@
 
     private String alipay_root_cert_path = "C:/cert/alipay/user/alipay_root_cert_path.crt";//支付宝CA根证书文件路径
 
-    private String certPath = "/usr/playpai/cert/weixin/apiclient_cert.p12";//微信证书
+//    private String certPath = "/usr/playpai/cert/weixin/apiclient_cert.p12";//微信证书
+    private String certPath = "E:\\apiclient_cert.p12";//微信证书
 
 
     public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) throws AlipayApiException {
diff --git a/cloud-server-other/src/main/resources/mapper/GameMapper.xml b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
index 950f72e..34dc578 100644
--- a/cloud-server-other/src/main/resources/mapper/GameMapper.xml
+++ b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
@@ -38,7 +38,7 @@
     </select>
     <select id="orderlist" resultType="map">
         SELECT *,st.`name` as storeName,si.`name` as siteName,CONCAT(DATE_FORMAT(bk.startTime, '%Y-%m-%d %H:%i:%s'), ' -
-        ', TIME_FORMAT(bk.endTime, '%H:%i:%s')) AS timeRange
+        ', TIME_FORMAT(bk.endTime, '%H:%i:%s')) AS timeRange,bk.targetAudience
         FROM t_site_booking bk
         LEFT JOIN t_store st on bk.storeId = st.id
         LEFT JOIN t_site si on bk.siteId = si.id
diff --git a/cloud-server-other/src/main/resources/mapper/SiteMapper.xml b/cloud-server-other/src/main/resources/mapper/SiteMapper.xml
index b7bcca4..f7d8693 100644
--- a/cloud-server-other/src/main/resources/mapper/SiteMapper.xml
+++ b/cloud-server-other/src/main/resources/mapper/SiteMapper.xml
@@ -46,6 +46,9 @@
         <if test="null != item.search and '' != item.search">
             and (a.name like CONCAT('%', #{item.search}, '%') or b.name like CONCAT('%', #{item.search}, '%'))
         </if>
+        <if test="null != item.targetAudience and '' != item.targetAudience">
+            and (a.targetAudience like CONCAT('%', #{item.targetAudience}, '%'))
+        </if>
         order by a.insertTime desc limit #{item.pageNum}, #{item.pageSize}
     </select>
 
@@ -62,6 +65,7 @@
         a.payMoney as payMoney,
         a.payType as payType,
         a.isHalf as isHalf,
+        a.targetAudience as targetAudience,
         CONCAT(DATE_FORMAT(a.startTime, '%Y-%m-%d %H:%i'), '-', DATE_FORMAT(a.endTime, '%H:%i')) as appointment,
         a.`status`,
         UNIX_TIMESTAMP(a.insertTime) * 1000 as insertTime

--
Gitblit v1.7.1