luo
2023-10-09 014d7a35addafbc63689cda7c20bae61951f7852
10.9
19个文件已修改
6个文件已添加
2360 ■■■■■ 已修改文件
.idea/workspace.xml 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/test/java/com/dsh/AccountApplicationTests.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java 375 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/MethodDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TStoreMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/cancel.html 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/join.html 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html 384 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/GameMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml
@@ -25,13 +25,26 @@
    <select />
  </component>
  <component name="ChangeListManager">
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="10.8">
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="10.8。1">
      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/GameMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/GameMapper.xml" afterDir="false" />
    </list>
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -79,43 +92,43 @@
    <option name="hideEmptyMiddlePackages" value="true" />
    <option name="showLibraryContents" value="true" />
  </component>
  <component name="PropertiesComponent">{
  &quot;keyToString&quot;: {
    &quot;DefaultHtmlFileTemplate&quot;: &quot;HTML File&quot;,
    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
    &quot;last_opened_file_path&quot;: &quot;D:/Javaproject/PlayPay/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball&quot;,
    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
    &quot;project.structure.last.edited&quot;: &quot;模块&quot;,
    &quot;project.structure.proportion&quot;: &quot;0.15&quot;,
    &quot;project.structure.side.proportion&quot;: &quot;0.54367816&quot;,
    &quot;service.view.auto.scroll.to.source&quot;: &quot;true&quot;,
    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
    &quot;spring.configuration.checksum&quot;: &quot;6e27eb92c8707375af194da5aa857bbc&quot;,
    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
  <component name="PropertiesComponent"><![CDATA[{
  "keyToString": {
    "DefaultHtmlFileTemplate": "HTML File",
    "RequestMappingsPanelOrder0": "0",
    "RequestMappingsPanelOrder1": "1",
    "RequestMappingsPanelWidth0": "75",
    "RequestMappingsPanelWidth1": "75",
    "RunOnceActivity.OpenProjectViewOnStart": "true",
    "RunOnceActivity.ShowReadmeOnStart": "true",
    "WebServerToolWindowFactoryState": "false",
    "git-widget-placeholder": "master",
    "ignore.virus.scanning.warn.message": "true",
    "last_opened_file_path": "D:/Javaproject/PlayPay/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball",
    "node.js.detected.package.eslint": "true",
    "node.js.detected.package.tslint": "true",
    "node.js.selected.package.eslint": "(autodetect)",
    "node.js.selected.package.tslint": "(autodetect)",
    "nodejs_package_manager_path": "npm",
    "project.structure.last.edited": "模块",
    "project.structure.proportion": "0.15",
    "project.structure.side.proportion": "0.54367816",
    "service.view.auto.scroll.to.source": "true",
    "settings.editor.selected.configurable": "preferences.lookFeel",
    "spring.configuration.checksum": "6e27eb92c8707375af194da5aa857bbc",
    "vue.rearranger.settings.migration": "true"
  }
}</component>
}]]></component>
  <component name="ReactorSettings">
    <option name="notificationShown" value="true" />
  </component>
  <component name="RecentsManager">
    <key name="CopyFile.RECENT_KEYS">
      <recent name="D:\Javaproject\PlayPay\cloud-server-management\src\main\webapp\WEB-INF\view\system\ball" />
      <recent name="D:\Javaproject\PlayPay\cloud-server-account\src\test\java\com\dsh" />
      <recent name="D:\Javaproject\PlayPay\cloud-server-management\src\main\webapp\static\modular\system\ball" />
      <recent name="D:\Javaproject\PlayPay\cloud-server-course\src\main\resources\mapper" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\ball" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\static\modular\system\ball" />
    </key>
    <key name="MoveFile.RECENT_KEYS">
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
@@ -147,6 +160,30 @@
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration name="AccountApplicationTests.contextLoads" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
      <module name="mb-cloud-account" />
      <shortenClasspath name="MANIFEST" />
      <extension name="coverage">
        <pattern>
          <option name="PATTERN" value="com.dsh.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <option name="PACKAGE_NAME" value="com.dsh" />
      <option name="MAIN_CLASS_NAME" value="com.dsh.AccountApplicationTests" />
      <option name="METHOD_NAME" value="contextLoads" />
      <option name="TEST_OBJECT" value="method" />
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration default="true" type="JUnit" factoryName="JUnit">
      <shortenClasspath name="MANIFEST" />
      <option name="TEST_OBJECT" value="class" />
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
@@ -235,8 +272,9 @@
      </method>
    </configuration>
    <list>
      <item itemvalue="Spring Boot.GatewayApplication" />
      <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
      <item itemvalue="Spring Boot.ManagementApplication" />
      <item itemvalue="Spring Boot.GatewayApplication" />
      <item itemvalue="Spring Boot.OtherApplication" />
      <item itemvalue="Spring Boot.UserApplication" />
      <item itemvalue="Spring Boot.AccountApplication" />
@@ -248,6 +286,7 @@
    </list>
    <recent_temporary>
      <list>
        <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
        <item itemvalue="应用程序.BigDecimalToChineseWords" />
      </list>
    </recent_temporary>
@@ -307,7 +346,7 @@
      <workItem from="1696433675086" duration="2211000" />
      <workItem from="1696462020097" duration="481000" />
      <workItem from="1696465598653" duration="19850000" />
      <workItem from="1696639362946" duration="45956000" />
      <workItem from="1696639362946" duration="88523000" />
    </task>
    <task id="LOCAL-00001" summary="后台代码删除">
      <created>1690249807612</created>
@@ -608,7 +647,15 @@
      <option name="project" value="LOCAL" />
      <updated>1696749061197</updated>
    </task>
    <option name="localTasksCounter" value="40" />
    <task id="LOCAL-00040" summary="10.8。1">
      <option name="closed" value="true" />
      <created>1696753188954</created>
      <option name="number" value="00040" />
      <option name="presentableId" value="LOCAL-00040" />
      <option name="project" value="LOCAL" />
      <updated>1696753188954</updated>
    </task>
    <option name="localTasksCounter" value="41" />
    <servers />
  </component>
  <component name="TypeScriptGeneratedFilesManager">
@@ -650,7 +697,8 @@
    <MESSAGE value="9.26。14" />
    <MESSAGE value="9.26。15" />
    <MESSAGE value="10.8" />
    <option name="LAST_COMMIT_MESSAGE" value="10.8" />
    <MESSAGE value="10.8。1" />
    <option name="LAST_COMMIT_MESSAGE" value="10.8。1" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager>
@@ -674,11 +722,6 @@
          <url>file://$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java</url>
          <line>1358</line>
          <option name="timeStamp" value="14" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="java-line">
          <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java</url>
          <line>139</line>
          <option name="timeStamp" value="21" />
        </line-breakpoint>
      </breakpoints>
    </breakpoint-manager>
cloud-server-account/src/test/java/com/dsh/AccountApplicationTests.java
New file
@@ -0,0 +1,22 @@
package com.dsh;
import com.dsh.account.controller.CoachTypeController;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = AccountApplication.class)
class AccountApplicationTests {
    @Autowired
    private CoachTypeController controller;
    @Test
    void contextLoads() {
      System.out.println("==============="+controller.list());
    }
}
cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
@@ -7,6 +7,7 @@
import com.dsh.guns.modular.system.model.TStore;
import com.dsh.guns.modular.system.model.TStoreListVo;
import com.dsh.guns.modular.system.model.TTurn;
import com.dsh.guns.modular.system.model.dto.SelectDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -69,4 +70,6 @@
    void inset(JsDto jsDto);
    JsDto get(Integer id);
    List<SelectDto> getSelect();
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -830,8 +830,10 @@
            String jsonString = jsonArray.getString(i);
            String[] split = jsonString.split("-");
            System.out.println("============"+split);
            if (split.length>1){
            first.add(split[0]);
            second.add(split[1]);
            second.add(split[1]);}
        }
        String firstString = String.join(",",first);
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -22,10 +22,7 @@
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.model.dto.*;
import com.dsh.guns.modular.system.service.ICityService;
import com.dsh.guns.modular.system.service.ICoursePackageService;
import com.dsh.guns.modular.system.service.IStoreService;
import com.dsh.guns.modular.system.service.ITSiteService;
import com.dsh.guns.modular.system.service.*;
import com.dsh.guns.modular.system.util.HttpRequestUtil;
import com.dsh.guns.modular.system.util.ResultUtil;
import com.google.common.base.Ascii;
@@ -56,7 +53,9 @@
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@Controller
@@ -106,6 +105,72 @@
        return PREFIX+"ball.html";
    }
    //入园方式
    @RequestMapping("/joinmethod/{id}")
    public String joinmethod(Model model,@PathVariable("id") Integer id) {
        model.addAttribute("id",id);
        return PREFIX+"join.html";
    }
    @RequestMapping("/selectJoin")
    @ResponseBody
    public ResultUtil join(@RequestBody MethodDto method) {
        System.out.println("============"+method);
        SiteBooking siteBooking = new SiteBooking();
        siteBooking.setStatus(2);
        siteBooking.setId(method.getId());
        siteBooking.setGoType(method.getMethod());
        iSiteBookingService.updateById(siteBooking);
        return new ResultUtil<>(0,0,"到店成功",null,null);
    }
    @RequestMapping(value = "/yunying")
    @ResponseBody
    public ResultUtil getUserSlect() {
        List<SelectDto>  selectDtos =  storeService.getSelect();
        Map<String,List<SelectDto>> map = new HashMap<>();
        map.put("options",selectDtos);
        System.out.println("=======selectDtos====="+selectDtos);
        return new ResultUtil(0,0,"编辑成功",map,"");
    }
    //取消凭证页面
    @RequestMapping("/tocancel/{id}")
    public String tocancel(Model model,@PathVariable("id") Integer id) {
        model.addAttribute("id",id);
        return PREFIX+"cancel.html";
    }
    @RequestMapping("/cancel")
    @ResponseBody
    public ResultUtil cancel(Integer id,String voucher,String textarea) {
        System.out.println("============"+id);
        SiteBooking siteBooking = new SiteBooking();
        siteBooking.setId(id);
        siteBooking.setStatus(5);
        siteBooking.setVoucher(voucher);
        siteBooking.setRemark(textarea);
        siteBooking.setCancelUserId(UserExt.getUser().getId());
        iSiteBookingService.updateById(siteBooking);
        return new ResultUtil<>(0,0,"到店成功",null,null);
    }
    /**
     * 获取变更列表
@@ -123,7 +188,7 @@
    @RequestMapping("/save")
    @ResponseBody
    public ResultUtil save(String red, String blue, String province, String city, Integer site, Integer store
    public ResultUtil save(String operationId,String red, String blue, String province, String city, Integer site, Integer store
    , String kuacheng, BigDecimal kuachengCoin, BigDecimal kuachengCash,String kuachengImage,BigDecimal kuachengInt,Integer kuachengId
            , String shequ, BigDecimal shequCoin, BigDecimal shequCash,String shequImage,BigDecimal shequInt,Integer shequId
            , String shemen, BigDecimal shemenCoin, BigDecimal shemenCash,String shemenImage,BigDecimal shemenInt,Integer shemenId
@@ -148,6 +213,13 @@
        game.setCityCode(city);
        game.setSiteId(site);
        game.setStoreId(store);
        if (!operationId.equals("平台")){
        game.setOperationId(Integer.valueOf(operationId));}
        else {
            game.setOperationId(0);
        }
        System.out.println("============"+game);
        Integer gameId = ballClient.save(game);
@@ -285,7 +357,7 @@
    @RequestMapping("/pre_add")
    public String add(Model model) {
        model.addAttribute("is","${is}");
        return PREFIX+"ball_pre_add.html";
    }
@@ -301,6 +373,260 @@
        return PREFIX+"ball_pre_edit.html";
    }
    @Autowired
     private ISiteBookingService iSiteBookingService;
    @RequestMapping("/yueyue_edit/{id}")
    public String yueyue_edit(@PathVariable("id") Integer id,Model model) {
        List<String> strings1 = new ArrayList<>();
        SiteBooking book = iSiteBookingService.getById(id);
        model.addAttribute("item", book);
        if (book.getMoney()!=null){
        model.addAttribute("money",book.getMoney().split(","));}
        String[] split1 = book.getTimes().split(";");
        model.addAttribute("date",split1[0].substring(0,10));
        for (String s : split1) {
            String convertedValue = s.substring(11);
            strings1.add(convertedValue);
        }
        System.out.println("========strings1====="+strings1);
//时间段
        List<String> strings = new ArrayList<>();
//        List<SiteBooking> siteBookings = siteClient.listBooks(book.getSiteId());
        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", book.getSiteId()).like("times",split1[0].substring(0,10)));
        System.out.println("=======siteBookings======"+siteBookings);
        for (SiteBooking siteBooking : siteBookings) {
            String[] split = siteBooking.getTimes().split(";");
            for (String s : split) {
                String convertedValue = s.substring(11);
                strings.add(convertedValue);
            }
        }
        System.out.println("======strings======="+strings);
        List<OrderDto> timeRanges = new ArrayList<>();
        Site site =  siteClient.listById(book.getSiteId());
        System.out.println("================"+site);
        String appointmentStartTime = site.getAppointmentStartTime();
        String appointmentEndTime = site.getAppointmentEndTime();
        //生成用于比较日期是否超过的当前日期
        LocalDate currentDate = LocalDate.now();
        LocalDate parsedDate = LocalDate.parse(split1[0].substring(0,10), DateTimeFormatter.ISO_DATE);
        boolean isAfterCurrentDate = parsedDate.isBefore(currentDate);
        System.out.println("是否超过当前日期"+isAfterCurrentDate);
        String currentTime = appointmentStartTime;
        while (currentTime.compareTo(appointmentEndTime) < 0) {
            String nextTime = getNextTime(currentTime);
            String timeRange = currentTime + "-" + nextTime;
            OrderDto orderDto = new OrderDto();
            orderDto.setTime(timeRange);
            LocalTime currentTime1 = LocalTime.now();
            LocalTime targetTime = LocalTime.parse(currentTime);
            boolean hasExceeded = currentTime1.isAfter(targetTime);
            //是否超过当前时间
            if (hasExceeded){
                orderDto.setState(0);
            }
            //是否已经预定
            if (strings.contains(timeRange)){
                orderDto.setState(0);
            }
            //日期是否超过
            if (isAfterCurrentDate){
                orderDto.setState(0);
            }
            //是否是当前场地当前日期预定的
            if (strings1.contains(timeRange)){
                orderDto.setState(1);
            }
            timeRanges.add(orderDto);
            currentTime = nextTime;
        }
        System.out.println("-------------"+timeRanges);
            model.addAttribute("timeRanges",timeRanges);
System.out.println("======timeRanges========"+timeRanges);
        Integer objectType = UserExt.getUser().getObjectType();
        Integer objectId = UserExt.getUser().getObjectId();
        String cityCode = null;
        if(objectType == 2){//城市管理员
            CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
            cityCode = cityManager.getCityCode();
        }
        List<Map<String, Object>> list = storeService.queryProvince(cityCode);
        model.addAttribute("province", list);
        Object code = list.get(0).get("code");
        List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode);
        model.addAttribute("city", list1);
        String code1 = list1.get(0).get("code").toString();
        List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1));
        model.addAttribute("store", list2);
        TStore store = list2.get(0);
        List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
        model.addAttribute("site", list3);
        return PREFIX+"yuyue_edit.html";
    }
@Autowired
private IUserService userService;
    @RequestMapping("/yueyue_info/{id}")
    public String yueyue_info(@PathVariable("id") Integer id,Model model) {
        List<String> strings1 = new ArrayList<>();
        SiteBooking book = iSiteBookingService.getById(id);
        model.addAttribute("item", book);
        if (book.getMoney()!=null){
            model.addAttribute("money",book.getMoney().split(","));}
        String[] split1 = book.getTimes().split(";");
        model.addAttribute("date",split1[0].substring(0,10));
        User user = userService.getById(book.getCancelUserId());
        if (user!=null) {
            model.addAttribute("cancelUser", user.getName());
        }
        for (String s : split1) {
            String convertedValue = s.substring(11);
            strings1.add(convertedValue);
        }
        System.out.println("========strings1====="+strings1);
//时间段
        List<String> strings = new ArrayList<>();
//        List<SiteBooking> siteBookings = siteClient.listBooks(book.getSiteId());
        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", book.getSiteId()).like("times",split1[0].substring(0,10)));
        System.out.println("=======siteBookings======"+siteBookings);
        for (SiteBooking siteBooking : siteBookings) {
            String[] split = siteBooking.getTimes().split(";");
            for (String s : split) {
                String convertedValue = s.substring(11);
                strings.add(convertedValue);
            }
        }
        System.out.println("======strings======="+strings);
        List<OrderDto> timeRanges = new ArrayList<>();
        Site site =  siteClient.listById(book.getSiteId());
        System.out.println("================"+site);
        String appointmentStartTime = site.getAppointmentStartTime();
        String appointmentEndTime = site.getAppointmentEndTime();
        //生成用于比较日期是否超过的当前日期
        LocalDate currentDate = LocalDate.now();
        LocalDate parsedDate = LocalDate.parse(split1[0].substring(0,10), DateTimeFormatter.ISO_DATE);
        boolean isAfterCurrentDate = parsedDate.isBefore(currentDate);
        System.out.println("是否超过当前日期"+isAfterCurrentDate);
        String currentTime = appointmentStartTime;
        while (currentTime.compareTo(appointmentEndTime) < 0) {
            String nextTime = getNextTime(currentTime);
            String timeRange = currentTime + "-" + nextTime;
            OrderDto orderDto = new OrderDto();
            orderDto.setTime(timeRange);
            LocalTime currentTime1 = LocalTime.now();
            LocalTime targetTime = LocalTime.parse(currentTime);
            boolean hasExceeded = currentTime1.isAfter(targetTime);
            //是否超过当前时间
            if (hasExceeded){
                orderDto.setState(0);
            }
            //是否已经预定
            if (strings.contains(timeRange)){
                orderDto.setState(0);
            }
            //日期是否超过
            if (isAfterCurrentDate){
                orderDto.setState(0);
            }
            //是否是当前场地当前日期预定的
            if (strings1.contains(timeRange)){
                orderDto.setState(1);
            }
            timeRanges.add(orderDto);
            currentTime = nextTime;
        }
        System.out.println("-------------"+timeRanges);
        model.addAttribute("timeRanges",timeRanges);
        System.out.println("======timeRanges========"+timeRanges);
        Integer objectType = UserExt.getUser().getObjectType();
        Integer objectId = UserExt.getUser().getObjectId();
        String cityCode = null;
        if(objectType == 2){//城市管理员
            CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
            cityCode = cityManager.getCityCode();
        }
        List<Map<String, Object>> list = storeService.queryProvince(cityCode);
        model.addAttribute("province", list);
        Object code = list.get(0).get("code");
        List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode);
        model.addAttribute("city", list1);
        String code1 = list1.get(0).get("code").toString();
        List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1));
        model.addAttribute("store", list2);
        TStore store = list2.get(0);
        List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
        model.addAttribute("site", list3);
        return PREFIX+"yuyue_info.html";
    }
    @RequestMapping("/paike")
@@ -434,11 +760,13 @@
    @RequestMapping("/yuyuetimes/{id}")
    @ResponseBody
    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id) {
    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date) {
        System.out.println("=======date======"+date);
        List<String> strings = new ArrayList<>();
        List<SiteBooking> siteBookings = siteClient.listBooks(id);
//        List<SiteBooking> siteBookings = siteClient.listBooks(id);
        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).like("times",date));
System.out.println("=======siteBookings======"+siteBookings);
        for (SiteBooking siteBooking : siteBookings) {
            String[] split = siteBooking.getTimes().split(";");
@@ -503,6 +831,25 @@
        }
        return String.format("%02d:%02d", hour, minute);
//        String[] parts = currentTime.split(":");
//        int hour = Integer.parseInt(parts[0]);
//        int minute = Integer.parseInt(parts[1]);
//
//        if (minute == 45) {
//            hour++;
//            minute = 0;
//        } else if (minute == 0){
//            minute = 15;
//        }else if (minute == 15){
//            minute = 30;
//        }else if (minute == 30){
//            minute = 45;
//        }
//
//        return String.format("%02d:%02d", hour, minute);
    }
@@ -556,4 +903,14 @@
        return new ResultUtil<>(null,200,null,null,null);
    }
    @RequestMapping("/orderedit")
    @ResponseBody
    public ResultUtil orderedit(SiteBooking siteBooking){
            iSiteBookingService.updateById(siteBooking);
        System.out.println("================="+siteBooking);
        return new ResultUtil<>(null,200,null,null,null);
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/MethodDto.java
New file
@@ -0,0 +1,9 @@
package com.dsh.guns.modular.system.model.dto;
import lombok.Data;
@Data
public class MethodDto {
    Integer id;
    Integer method;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.model.dto.SelectDto;
import io.swagger.models.auth.In;
import com.dsh.course.dto.JsDto;
import com.dsh.guns.modular.system.model.Dict;
@@ -71,4 +72,6 @@
    void insert(JsDto jsDto);
    JsDto get(Integer id);
    List<SelectDto> getSelect();
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
@@ -8,6 +8,7 @@
import com.dsh.guns.modular.system.model.TStore;
import com.dsh.guns.modular.system.model.TStoreListVo;
import com.dsh.guns.modular.system.model.TTurn;
import com.dsh.guns.modular.system.model.dto.SelectDto;
import com.dsh.guns.modular.system.service.IStoreService;
import org.springframework.stereotype.Service;
@@ -104,6 +105,11 @@
    }
    @Override
    public List<SelectDto> getSelect() {
        return this.baseMapper.getSelect();
    }
    @Override
    public List<TImgConfig> getConfig() {
        return this.baseMapper.getConfig1();
cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
@@ -127,4 +127,15 @@
    <select id="getConfig1" resultType="com.dsh.guns.modular.system.model.TImgConfig">
        select * from t_img_config
    </select>
    <select id="getSelect" resultType="com.dsh.guns.modular.system.model.dto.SelectDto">
        SELECT op.id , CONCAT(us.name,'-',us.`phone`) as value
        FROM t_operator op
            LEFT JOIN sys_user us on op.userId = us.id
    </select>
</mapper>
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
@@ -42,15 +42,24 @@
        {
          "type": "form",
          "id": "u:24af29be25d2",
          "title": "111",
          "title": "",
          "body": [
            {
              "label": "所属运营商:",
              "type": "tpl",
              "id": "u:587781d5d181",
              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp*所属运营商:",
              "inline": true,
              "wrapperComponent": "",
              "style": {
                "marginLeft": "0"
              }
            },{
              "type": "select",
              "name": "operator",
              "id": "u:970f68a2c4ee",
              "mode": "horizontal",
              "size": "lg",
              "label": "",
              "name": "operationId",
              "id": "u:c037c33c2c81",
              "mode": "inline",
              "size": "md",
              "multiple": false,
              "showInvalidMatch": false,
              "searchable": true,
@@ -58,12 +67,38 @@
              "horizontal": {
                "leftFixed": "lg"
              },
              "options": [
              "disabledOn": "is!=0",
              "required": true,
              "source": {
                "url": "/ball/yunying",
                "method": "post",
                "messages": {
                }
              },
              "labelField": "value",
              "valueField": "id"
            },{
              "type": "checkbox",
              "option": "平台",
              "name": "is",
              "id": "u:88f23ebcf4f7",
              "onEvent": {
                "change": {
                  "weight": 0,
                  "actions": [
                {
                  "label": "等待沟通中",
                  "value": "等待沟通中"
                      "componentId": "u:c037c33c2c81",
                      "args": {
                        "value": "$event.data.value"
                      },
                      "actionType": "setValue"
                }
              ]
                }
              },
              "trueValue": "平台",
              "falseValue": 0,
              "mode": "inline"
            },
            {
              "type": "select",
@@ -214,6 +249,7 @@
              },
              "value": "",
              "required": true
            },
            {
              "type": "input-text",
@@ -224,6 +260,7 @@
              "clearValueOnHidden": false,
              "hidden": false,
              "required": true
            },
            {
              "type": "button",
@@ -301,6 +338,16 @@
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "14"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
@@ -385,6 +432,16 @@
                          "value": "16"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "shequCoin",
@@ -466,6 +523,16 @@
                          "value": "13"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "shemenCoin",
@@ -544,10 +611,20 @@
                          "value": "玩湃熊之力-速度"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "suduId",
                          "id": "u:f0f7e6028e17",
                          "id": "u:ca5a1fd9c191",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "15"
@@ -635,6 +712,16 @@
                          "value": "1"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "fangkuaiCoin",
@@ -714,6 +801,16 @@
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "7"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
@@ -803,6 +900,16 @@
                          "value": "8"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "sqCoin",
@@ -883,6 +990,16 @@
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "10"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
@@ -966,6 +1083,16 @@
                          "value": "11"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "zs2Coin",
@@ -1036,7 +1163,7 @@
                        },
                        {
                          "type": "hidden",
                          "label": "游戏名称",
                          "label": "",
                          "name": "ly",
                          "id": "u:c4a543b6cda0",
                          "mode": "inline",
@@ -1045,12 +1172,22 @@
                        },
                        {
                          "type": "hidden",
                          "label": "游戏id",
                          "label": "",
                          "name": "lyId",
                          "id": "u:90d5f2fa406a",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "5"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
@@ -1137,10 +1274,18 @@
                              "actions": [
                                {
                                  "componentId": "u:24af29be25d2",
                                  "actionType": "submit"
                                },
                                {
                                  "args": {
                                  },
                                  "outputVar": "responseResult",
                                  "actionType": "submit"
                                  "script": "window.parent.TStudent.table.refresh();",
                                  "actionType": "custom"
                                },
                                {
                                  "args": {},
                                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                                  "actionType": "custom"
                                }
                              ]
                            }
@@ -1166,8 +1311,21 @@
            "dataType": "form-data"
          },
          "actions": [
          ],
          "onEvent": {
            "submitSucc": {
              "weight": 0,
              "actions": [
                {
                  "args": {
                  },
                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                  "actionType": "custom"
                }
          ]
        }
          }
        }
      ]
    };
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
@@ -45,12 +45,21 @@
          "title": "",
          "body": [
            {
              "label": "所属运营商:",
              "type": "tpl",
              "id": "u:587781d5d181",
              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp*所属运营商:",
              "inline": true,
              "wrapperComponent": "",
              "style": {
                "marginLeft": "0"
              }
            },{
              "type": "select",
              "name": "operator",
              "id": "u:970f68a2c4ee",
              "mode": "horizontal",
              "size": "lg",
              "label": "",
              "name": "operationId",
              "id": "u:c037c33c2c81",
              "mode": "inline",
              "size": "md",
              "multiple": false,
              "showInvalidMatch": false,
              "searchable": true,
@@ -58,12 +67,38 @@
              "horizontal": {
                "leftFixed": "lg"
              },
              "options": [
              "disabledOn": "is!=0",
              "required": true,
              "source": {
                "url": "/ball/yunying",
                "method": "post",
                "messages": {
                }
              },
              "labelField": "value",
              "valueField": "id"
            },{
              "type": "checkbox",
              "option": "平台",
              "name": "is",
              "id": "u:88f23ebcf4f7",
              "onEvent": {
                "change": {
                  "weight": 0,
                  "actions": [
                {
                  "label": "等待沟通中",
                  "value": "等待沟通中"
                      "componentId": "u:c037c33c2c81",
                      "args": {
                        "value": "$event.data.value"
                      },
                      "actionType": "setValue"
                }
              ]
                }
              },
              "trueValue": "平台",
              "falseValue": 0,
              "mode": "inline"
            },
            {
              "type": "select",
@@ -1245,10 +1280,18 @@
                              "actions": [
                                {
                                  "componentId": "u:24af29be25d2",
                                  "actionType": "submit"
                                },
                                {
                                  "args": {
                                  },
                                  "outputVar": "responseResult",
                                  "actionType": "submit"
                                  "script": "window.parent.TStudent.table.refresh();",
                                  "actionType": "custom"
                                },
                                {
                                  "args": {},
                                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                                  "actionType": "custom"
                                }
                              ]
                            }
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/cancel.html
New file
@@ -0,0 +1,206 @@
<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8" />
  <title>amis demo</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta
          name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1"
  />
  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
  <link rel="stylesheet" href="${ctxPath}/sdk/sdk.css" />
  <link rel="stylesheet" href="${ctxPath}/sdk/helper.css" />
  <link rel="stylesheet" href="${ctxPath}/sdk/iconfont.css" />
  <!-- 这是默认主题所需的,如果是其他主题则不需要 -->
  <!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 -->
  <!-- <link rel="stylesheet" href="sdk-ie11.css" /> -->
  <!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue -->
  <style>
    html,
    body,
    .app-wrapper {
      position: relative;
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
    }
  </style>
</head>
<body>
<div id="root" class="app-wrapper"></div>
<script src="${ctxPath}/sdk/sdk.js"></script>
<script type="text/javascript">
  (function () {
    let amis = amisRequire('amis/embed');
    // 通过替换下面这个配置来生成不同页面
    let amisJSON ={
      "type": "page",
      "title": "",
      "body": [
        {
          "type": "form",
          "id": "u:6d72ddddf222",
          "title": "",
          "body": [
            {
              "type": "grid",
              "columns": [
              ],
              "id": "u:313016b48f71"
            },
            {
              "type": "flex",
              "id": "u:e21645a48093",
              "className": "p-1",
              "items": [
                {
                  "type": "tpl",
                  "id": "u:5130236fd5a1",
                  "tpl": "入园方式",
                  "inline": true,
                  "wrapperComponent": "h2"
                }
              ],
              "style": {
                "position": "static",
                "flexWrap": "nowrap"
              },
              "direction": "row",
              "justify": "center",
              "alignItems": "stretch",
              "isFixedHeight": false,
              "isFixedWidth": false
            },
            {
              "type": "input-image",
              "label": "上传凭证",
              "name": "voucher",
              "autoUpload": true,
              "proxy": true,
              "uploadType": "fileReceptor",
              "imageClassName": "r w-full",
              "receiver": {
                "url": "/mgr/uploadImgAmis",
                "method": "post"
              },
              "id": "u:15f57e1e7de6",
              "accept": ".jpeg, .jpg, .png, .gif",
              "multiple": false,
              "hideUploadButton": false,
              "fixedSize": false,
              "required": true,
              "mode": "horizontal"
            },
            {
              "type": "textarea",
              "label": "备注:",
              "name": "textarea",
              "id": "u:d98613414ea8",
              "minRows": 3,
              "maxRows": 20,
              "mode": "horizontal",
              "size": "md"
            },
            {
              "type": "hidden",
              "name": "id",
              "id": "u:91f4afc2930e",
              "value": `${id}`
            },
            {
              "type": "flex",
              "id": "u:8254704349a2",
              "className": "p-1",
              "items": [
                {
                  "type": "button",
                  "id": "u:6c0b8f917bf7",
                  "label": "关闭",
                  "onEvent": {
                    "click": {
                      "actions": [
                        {
                          "args": {
                          },
                          "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                          "actionType": "custom"
                        }
                      ]
                    }
                  }
                },
                {
                  "type": "button",
                  "id": "u:6c0b8f917bf7",
                  "label": "保存",
                  "level": "info",
                  "onEvent": {
                    "click": {
                      "actions": [
                        {
                          "componentId": "u:6d72ddddf222",
                          "actionType": "submit"
                        }
                      ]
                    }
                  }
                }
              ],
              "style": {
                "position": "relative"
              }
            },
            {
              "type": "grid",
              "columns": [
              ],
              "id": "u:ec43218540fa"
            }
          ],
          "api": {
            "url": "/ball/cancel",
            "method": "post",
            "messages": {
            },
            "dataType": "form-data"
          },
          "actions": [
          ],
          "onEvent": {
            "submitSucc": {
              "weight": 0,
              "actions": [
                {
                  "args": {
                  },
                  "script": "window.parent.TStudent.table.refresh();",
                  "actionType": "custom"
                },
                {
                  "args": {
                  },
                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                  "actionType": "custom"
                }
              ]
            }
          }
        }
      ],
      "id": "u:b97e4e9b9f48",
      "actions": [
      ]
    };
    let amisScoped = amis.embed('#root', amisJSON);
  })();
</script>
</body>
</html>
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/join.html
New file
@@ -0,0 +1,189 @@
<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8" />
  <title>amis demo</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta
          name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1"
  />
  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
  <link rel="stylesheet" href="${ctxPath}/sdk/sdk.css" />
  <link rel="stylesheet" href="${ctxPath}/sdk/helper.css" />
  <link rel="stylesheet" href="${ctxPath}/sdk/iconfont.css" />
  <!-- 这是默认主题所需的,如果是其他主题则不需要 -->
  <!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 -->
  <!-- <link rel="stylesheet" href="sdk-ie11.css" /> -->
  <!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue -->
  <style>
    html,
    body,
    .app-wrapper {
      position: relative;
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
    }
  </style>
</head>
<body>
<div id="root" class="app-wrapper"></div>
<script src="${ctxPath}/sdk/sdk.js"></script>
<script type="text/javascript">
  (function () {
    let amis = amisRequire('amis/embed');
    // 通过替换下面这个配置来生成不同页面
    let amisJSON ={
      "type": "page",
      "title": "",
      "body": [
        {
          "type": "form",
          "id": "u:6d72ddddf25c",
          "title": "",
          "body": [
            {
              "type": "grid",
              "columns": [
              ],
              "id": "u:313016b48f71"
            },
            {
              "type": "flex",
              "id": "u:e21645a48093",
              "className": "p-1",
              "items": [
                {
                  "type": "tpl",
                  "id": "u:5130236fd5a1",
                  "tpl": "入园方式",
                  "inline": true,
                  "wrapperComponent": "h2"
                }
              ],
              "style": {
                "position": "static",
                "flexWrap": "nowrap"
              },
              "direction": "row",
              "justify": "center",
              "alignItems": "stretch",
              "isFixedHeight": false,
              "isFixedWidth": false
            },
            {
              "type": "hidden",
              "name": "id",
              "id": "u:91f4afc2930e",
              "value": `${id}`
            },
            {
              "type": "radios",
              "id": "u:d98068b4f7d2",
              "label": "请选择:",
              "name": "method",
              "options": [
                {
                  "label": "手环",
                  "value": "1"
                }
              ],
              "mode": "inline",
              "required": true
            },
            {
              "type": "flex",
              "id": "u:8254704349a2",
              "className": "p-1",
              "items": [
                {
                  "type": "button",
                  "id": "u:6c0b8f917bf7",
                  "label": "关闭",
                  "onEvent": {
                    "click": {
                      "actions": [
                        {
                          "args": {
                          },
                          "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                          "actionType": "custom"
                        }
                      ]
                    }
                  }
                },
                {
                  "type": "button",
                  "id": "u:6c0b8f917bf7",
                  "label": "保存",
                  "level": "info",
                  "onEvent": {
                    "click": {
                      "actions": [
                        {
                          "componentId": "u:6d72ddddf25c",
                          "actionType": "submit"
                        }
                      ]
                    }
                  }
                }
              ],
              "style": {
                "position": "relative"
              }
            },
            {
              "type": "grid",
              "columns": [
              ],
              "id": "u:ec43218540fa"
            }
          ],
          "api": {
            "url": "/ball/selectJoin",
            "method": "post",
            "messages": {
            }
          },
          "actions": [
          ],
          "onEvent": {
            "submitSucc": {
              "weight": 0,
              "actions": [
                {
                  "args": {
                  },
                  "script": "window.parent.TStudent.table.refresh();",
                  "actionType": "custom"
                },
                {
                  "args": {
                  },
                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                  "actionType": "custom"
                }
              ]
            }
          }
        }
      ],
      "id": "u:b97e4e9b9f48",
      "actions": [
      ]
    };
    let amisScoped = amis.embed('#root', amisJSON);
  })();
</script>
</body>
</html>
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html
@@ -55,6 +55,45 @@
                            </div>
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            支付方式
                                        </button>
                                    </div>
                                    <select class="form-control" id="payMethod">
                                        <option value="">全部</option>
                                        <option value=1>微信</option>
                                        <option value=2>支付宝</option>
                                        <option value=3>玩湃币</option>
                                        <option value=4>手动支付</option>
                                    </select>
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            支付方式
                                        </button>
                                    </div>
                                    <select class="form-control" id="state">
                                        <option value="">全部</option>
                                        <option value="0">待支付</option>
                                        <option value="1">待核销</option>
                                        <option value="2">已到店</option>
                                        <option value="3">已完成</option>
                                        <option value="4">已过期</option>
                                        <option value="5">已取消</option>
                                    </select>
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TStudent.search()"/>
                            </div>
                        </div>
@@ -62,7 +101,10 @@
                                <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/>
                                <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/>
                            <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" space="true"/>
                            <#button name="确认到店" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" space="true"/>
                            <#button name="取消凭证" icon="fa-edit" clickFun="TStudent.openTStudentDetail4()" space="true"/>
                            <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail5()" space="true"/>
                            @if(shiro.hasPermission("/tStudent/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TStudent.delete()" space="true"/>
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
@@ -52,7 +52,7 @@
                <div class="form-group">
                    <label class="col-sm-3 control-label">*上课场地:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="siteId" name="siteId"  onchange="CoursePackageInfo.addTime(this.value)">
                        <select class="form-control" id="siteId" name="siteId"  >
                            <option >请选择场地</option>
@@ -76,7 +76,7 @@
                <div class="form-group">
                    <label class="col-sm-3 control-label">预约时间:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="time" name="time" type="text" >
                        <input class="form-control" id="time" name="time" type="text" onchange="CoursePackageInfo.addTime()">
                    </div>
                </div>
@@ -248,7 +248,42 @@
        elem: '#time'
        ,lang:"CN",
        min:0,
        max:10
        max:10,
        format:'yyyy-MM-dd',
        done:function (a) {
            console.log("==========="+a)
            var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
                console.log("================"+data)
                if(data!=null){
                    var content='';
                    $.each(data, function(k, v) {
                        var buttonClass = "layui-btn layui-btn-primary";
                        var style = "";
                        if (v.state === 0) {
                            style = "background-color: red;";
                        }
                        var disabledAttribute = v.state === 0 ? "disabled" : "";
                        content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
                    });
                    $("#ttt2").empty().append(content);
                }
            })
            ajax.set("date",$('#time').val());
            ajax.start()
            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
                console.log("================"+data)
                if(data!=null){
                    let htmlStr = '';
                    for (let i = 0; i < data.length; i++) {
                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
                    }
                    $("#half").empty().append(htmlStr);
                }
            })
            ajax1.start()
        }
    });
    laydate.render({
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html
New file
@@ -0,0 +1,354 @@
@layout("/common/_container.html"){
<style>
    .green-button {
        background-color: green;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <input type="hidden" id="id" value="${item.id}">
        <div class="form-horizontal">
            <div class="row">
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所在省:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="provinceCode" name="provinceCode">
                            @for(obj in province){
                            <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所在市:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="cityCode" name="cityCode">
                            @for(obj in city){
                            <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所属门店:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="storeId" name="storeId">
                            @for(obj in store){
                            <option value="${obj.id}" ${obj.id == item.storeId ? 'selected=selected' : ''}>${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*预约类型:</label>
                    <div class="col-sm-4">
                       <input type="radio" name="type" value="1"  checked="" onclick="updateType(1)"  > 全场
                        <input type="radio" name="type" value="2" onclick="updateType(2)" > 半场
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*上课场地:</label>
                    <input type="hidden" id="selSiteId" value="${item.siteId}">
                    <div class="col-sm-4">
                        <select class="form-control" id="siteId" name="siteId"  onchange="CoursePackageInfo.addTime1()" >
                            <option >请选择场地</option>
                            @for(obj in site){
                            <option value="${obj.id}"  data-custom-data="1" ${obj.id == item.siteId ? 'selected=selected' : ''} >${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group"  id="half1"  hidden="hidden">
                    <label class="col-sm-3 control-label">*选择半场:</label>
                    <div class="col-sm-4">
                        <select class="form-control"  name="half" id="half">
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <input type="hidden" id="selDate" value="${date}">
                    <label class="col-sm-3 control-label">预约时间:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="time" name="time" type="text"  value="${date}">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*预约时间段:</label>
                    <div class="col-sm-5" id="ttt1">
                        <div class="layui-btn-group" id="ttt2">
                        </div>
                        <div class="layui-btn-group" id="ttt3">
                            @for(obj in timeRanges){
                            <button  name="has" type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : obj.state == 1 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>
<!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : "class = 'layui-btn layui-btn-primary' "} onclick="toggleColor(this)">${obj.time}</button>-->
<!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>-->
                            @}
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">现金价格:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="cash" name="cash" type="text" value="${money[0]!}" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">玩派币价格:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="play" name="play" type="text" value="${money[1]!}" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">预约人:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="booker" name="booker" type="text" value="${item.booker}" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">联系电话:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="phone" name="phone" type="text" value="${item.phone}" >
                    </div>
                </div>
<!--                <input type="text" id = "counpons">-->
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.addSubmit1()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="CoursePackageInfo.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/ball/yuyue_info.js"></script>
<script type="text/javascript">
    function updateType(o) {
        if(o==1){
            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
            var count = elements.length;
            console.log("Number of elements: " + count);
            $("#half1").hide()
            var radios = document.getElementsByName("type");
            var selectedValue;
            for (var i = 0; i < radios.length; i++) {
                if (radios[i].checked) {
                    selectedValue = radios[i].value;
                    break;
                }
            }
            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
                console.log("===========3333====="+data)
                if(data!=null){
                    $("#cash").val(data[0] * count);
                    $("#play").val(data[1] * count);
                }
            })
            ajax3.start()
        }else {
            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
            var count = elements.length;
            console.log("Number of elements: " + count);
            $("#half1").show()
            var radios = document.getElementsByName("type");
            var selectedValue;
            for (var i = 0; i < radios.length; i++) {
                if (radios[i].checked) {
                    selectedValue = radios[i].value;
                    break;
                }
            }
            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
                console.log("===========3333====="+data)
                if(data!=null){
                    $("#cash").val(data[0] * count);
                    $("#play").val(data[1] * count);
                }
            })
            ajax3.start()
        }
    }
    function toggleColor(button) {
        button.classList.toggle("green-button");
        var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
        var count = elements.length;
        console.log("Number of elements: " + count);
        var radios = document.getElementsByName("type");
        var selectedValue;
        for (var i = 0; i < radios.length; i++) {
            if (radios[i].checked) {
                selectedValue = radios[i].value;
                break;
            }
        }
        var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
            console.log("===========3333====="+data)
            if(data!=null){
                $("#cash").val(data[0] * count);
                $("#play").val(data[1] * count);
            }
        })
        ajax3.start()
    }
    laydate.render({
        elem: '#time'
        ,lang:"CN",
        min:0,
        max:10,
        format:'yyyy-MM-dd',
        done:function (a) {
        console.log("==============="+$('#time').val())
        console.log("==============="+$('#selDate').val())
        console.log("==============="+$('#siteId').val())
        console.log("==============="+$('#selSiteId').val())
            if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()){
                $("#ttt3").hide()
                $("#ttt2").show()
            }else {
                $("#ttt3").show()
                $("#ttt2").hide()
            }
            console.log("==========="+a)
            var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
                console.log("================"+data)
                if(data!=null){
                    var content='';
                    $.each(data, function(k, v) {
                        var buttonClass = "layui-btn layui-btn-primary";
                        var style = "";
                        if (v.state === 0) {
                            style = "background-color: red;";
                        }
                        var disabledAttribute = v.state === 0 ? "disabled" : "";
                        content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
                    });
                    $("#ttt2").empty().append(content);
                }
            })
            ajax.start()
            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
                console.log("================"+data)
                if(data!=null){
                    let htmlStr = '';
                    for (let i = 0; i < data.length; i++) {
                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
                    }
                    $("#half").empty().append(htmlStr);
                }
            })
            ajax1.start()
        }
    });
    laydate.render({
        elem: '#holitime'
        ,range: true //或 range: '~' 来自定义分割字符
    });
    var avatarUp = new $WebUpload("coverDrawing");
    avatarUp.setUploadBarId("progressBar");
    avatarUp.init();
    var avatarUp1 = new $WebUpload("detailDrawing");
    avatarUp1.setUploadBarId("progressBar");
    avatarUp1.init();
    var avatarUp1 = new $WebUpload("introduceDrawing");
    avatarUp1.setUploadBarId("progressBar");
    avatarUp1.init();
    function addTime(){
        var i =  $('#dayTime > div').length
        let htmlStr ='           <div style="display:flex">\n' +
            '                                <input class="form-control" id="classStartTime'+i+'" name="classStartTime" placeholder="请选择" style="width: 200px;">\n' +
            '                                <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)"></i>\n' +
            '                            </div>'
        $('#dayTime').append(htmlStr);
        console.log("========="+i)
        laydate.render({
            elem: '#classStartTime'+i,
            type: 'time',
            range: true
        });
    }
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html
New file
@@ -0,0 +1,384 @@
@layout("/common/_container.html"){
<style>
    .green-button {
        background-color: green;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <input type="hidden" id="id" value="${item.id}">
        <div class="form-horizontal">
            <div class="row">
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所在省:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="provinceCode" name="provinceCode" disabled>
                            @for(obj in province){
                            <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所在市:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="cityCode" name="cityCode" disabled>
                            @for(obj in city){
                            <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所属门店:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="storeId" name="storeId" disabled>
                            @for(obj in store){
                            <option value="${obj.id}" ${obj.id == item.storeId ? 'selected=selected' : ''}>${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*预约类型:</label>
                    <div class="col-sm-4">
                        <input type="radio" name="type" value="1"  checked="" onclick="updateType(1)"   disabled> 全场
                        <input type="radio" name="type" value="2" onclick="updateType(2)"  disabled> 半场
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*上课场地:</label>
                    <input type="hidden" id="selSiteId" value="${item.siteId}">
                    <div class="col-sm-4">
                        <select class="form-control" id="siteId" name="siteId"  onchange="CoursePackageInfo.addTime1()" disabled >
                            <option >请选择场地</option>
                            @for(obj in site){
                            <option value="${obj.id}"  data-custom-data="1" ${obj.id == item.siteId ? 'selected=selected' : ''} >${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group"  id="half1"  hidden="hidden">
                    <label class="col-sm-3 control-label">*选择半场:</label>
                    <div class="col-sm-4">
                        <select class="form-control"  name="half" id="half" disabled>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <input type="hidden" id="selDate" value="${date}">
                    <label class="col-sm-3 control-label">预约时间:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="time" name="time" type="text"  value="${date}" disabled>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*预约时间段:</label>
                    <div class="col-sm-5" id="ttt1" disabled="">
                        <div class="layui-btn-group" id="ttt2">
                        </div>
                        <div class="layui-btn-group" id="ttt3">
                            @for(obj in timeRanges){
                            <button  disabled name="has" type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : obj.state == 1 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>
                            <!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : "class = 'layui-btn layui-btn-primary' "} onclick="toggleColor(this)">${obj.time}</button>-->
                            <!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>-->
                            @}
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">现金价格:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="cash" name="cash" type="text" value="${money[0]!}" disabled >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">玩派币价格:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="play" name="play" type="text" value="${money[1]!}" disabled >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">预约人:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="booker" name="booker" type="text" value="${item.booker}" disabled >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">联系电话:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="phone" name="phone" type="text" value="${item.phone}" disabled >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">操作人:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="cancelUserId" name="cancelUserId" type="text" value="${cancelUser!}" disabled >
                    </div>
                </div>
                <div class="form-group" disabled>
                    <label class="col-sm-3 control-label head-scu-label">*上传凭证:</label>
                    <div class="col-sm-2">
                        <div id="introduceDrawingPreId">
                            <div><img width="100px" height="100px" src="${item.voucher}"></div>
                        </div>
                    </div>
                    <div class="col-sm-2">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">备注:</label>
                    <div class="col-sm-4">
                        <textarea class="form-control" id="remark" name="remark" disabled>${item.remark}</textarea >
                    </div>
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
<!--                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.addSubmit1()"/>-->
                    <#button btnCss="danger" name="关闭" id="cancel" icon="fa-eraser" clickFun="CoursePackageInfo.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/ball/yuyue_info.js"></script>
<script type="text/javascript">
    function updateType(o) {
        if(o==1){
            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
            var count = elements.length;
            console.log("Number of elements: " + count);
            $("#half1").hide()
            var radios = document.getElementsByName("type");
            var selectedValue;
            for (var i = 0; i < radios.length; i++) {
                if (radios[i].checked) {
                    selectedValue = radios[i].value;
                    break;
                }
            }
            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
                console.log("===========3333====="+data)
                if(data!=null){
                    $("#cash").val(data[0] * count);
                    $("#play").val(data[1] * count);
                }
            })
            ajax3.start()
        }else {
            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
            var count = elements.length;
            console.log("Number of elements: " + count);
            $("#half1").show()
            var radios = document.getElementsByName("type");
            var selectedValue;
            for (var i = 0; i < radios.length; i++) {
                if (radios[i].checked) {
                    selectedValue = radios[i].value;
                    break;
                }
            }
            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
                console.log("===========3333====="+data)
                if(data!=null){
                    $("#cash").val(data[0] * count);
                    $("#play").val(data[1] * count);
                }
            })
            ajax3.start()
        }
    }
    function toggleColor(button) {
        button.classList.toggle("green-button");
        var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
        var count = elements.length;
        console.log("Number of elements: " + count);
        var radios = document.getElementsByName("type");
        var selectedValue;
        for (var i = 0; i < radios.length; i++) {
            if (radios[i].checked) {
                selectedValue = radios[i].value;
                break;
            }
        }
        var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
            console.log("===========3333====="+data)
            if(data!=null){
                $("#cash").val(data[0] * count);
                $("#play").val(data[1] * count);
            }
        })
        ajax3.start()
    }
    laydate.render({
        elem: '#time'
        ,lang:"CN",
        min:0,
        max:10,
        format:'yyyy-MM-dd',
        done:function (a) {
            console.log("==============="+$('#time').val())
            console.log("==============="+$('#selDate').val())
            console.log("==============="+$('#siteId').val())
            console.log("==============="+$('#selSiteId').val())
            if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()){
                $("#ttt3").hide()
                $("#ttt2").show()
            }else {
                $("#ttt3").show()
                $("#ttt2").hide()
            }
            console.log("==========="+a)
            var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
                console.log("================"+data)
                if(data!=null){
                    var content='';
                    $.each(data, function(k, v) {
                        var buttonClass = "layui-btn layui-btn-primary";
                        var style = "";
                        if (v.state === 0) {
                            style = "background-color: red;";
                        }
                        var disabledAttribute = v.state === 0 ? "disabled" : "";
                        content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
                    });
                    $("#ttt2").empty().append(content);
                }
            })
            ajax.start()
            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
                console.log("================"+data)
                if(data!=null){
                    let htmlStr = '';
                    for (let i = 0; i < data.length; i++) {
                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
                    }
                    $("#half").empty().append(htmlStr);
                }
            })
            ajax1.start()
        }
    });
    laydate.render({
        elem: '#holitime'
        ,range: true //或 range: '~' 来自定义分割字符
    });
    var avatarUp = new $WebUpload("coverDrawing");
    avatarUp.setUploadBarId("progressBar");
    avatarUp.init();
    var avatarUp1 = new $WebUpload("detailDrawing");
    avatarUp1.setUploadBarId("progressBar");
    avatarUp1.init();
    var avatarUp1 = new $WebUpload("introduceDrawing");
    avatarUp1.setUploadBarId("progressBar");
    avatarUp1.init();
    function addTime(){
        var i =  $('#dayTime > div').length
        let htmlStr ='           <div style="display:flex">\n' +
            '                                <input class="form-control" id="classStartTime'+i+'" name="classStartTime" placeholder="请选择" style="width: 200px;">\n' +
            '                                <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)"></i>\n' +
            '                            </div>'
        $('#dayTime').append(htmlStr);
        console.log("========="+i)
        laydate.render({
            elem: '#classStartTime'+i,
            type: 'time',
            range: true
        });
    }
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html
@@ -205,7 +205,7 @@
                            <span class="classNumber_span"  ${type == 2||type == 3 ? 'hidden=hidden' : ''}><input class="classNumber" type="number" min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">&nbsp;&nbsp;&nbsp;&nbsp;</span>
                            <span class="cash_span" ></span>
                            <span class="paiCoin_span"></span>
                            <#button btnCss="info" name="优惠卷" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
                            <#button btnCss="info" name="优惠券" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
                            <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice(${type})"></i>
                            <input type="text" id = "counpons1" class="counpons" hidden="hidden" >
                        </div>
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
@@ -221,7 +221,7 @@
                                @}
                            </span>
                            <input type="hidden" id="counpons1" value="${couponIds}" class="counpons">
                            <#button btnCss="info" name="优惠卷" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
                            <#button btnCss="info" name="优惠券" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
                            <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice(${type})"></i>
                        </div>
                    </div>
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
@@ -70,7 +70,7 @@
            <div class="form-group" id="shop">
                <label class="col-sm-3 control-label">举办门店:</label>
                <div class="col-sm-9">
                    <select class="form-control" id="shopId" name="shopId">
                    <select class="form-control" id="shopId" name="shopId" multiple>
                        <option value="">选择门店</option>
                    </select>
                </div>
@@ -193,10 +193,31 @@
    </div>
</div>
<script src="${ctxPath}/modular/system/tCompetition/tCompetition_info.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css">
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>
<script src="${ctxPath}/js/vue/vue.js"></script>
<script src="${ctxPath}/js/elementui/index.js"></script>
<link rel="stylesheet" href="${ctxPath}/js/elementui/index.css">
<script>
    $(document).ready(function() {
        $('#shopId').select2({
            multiple: true,
            closeOnSelect: false
        });
    });
    laydate.render({
        elem: '#startTime'
        ,type:"datetime"
    });
    laydate.render({
        elem: '#endTime'
        ,type:"datetime"
    });
    var vue2 = new Vue({
        el: '#app1',
        props: {
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
@@ -127,23 +127,88 @@
 */
TStudent.openTStudentDetail = function () {
    if (this.check()) {
        if (TStudent.seItem.status!=1){
            Feng.error("请选择待核销的数据")
            return
        }
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['100%', '100%'],  //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/ball/pre_edit/' + TStudent.seItem.id
            content: Feng.ctxPath + '/ball/yueyue_edit/' + TStudent.seItem.id
        });
        this.layerIndex = index;
    }
};
TStudent.openTStudentDetail5 = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['100%', '100%'],  //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/ball/yueyue_info/' + TStudent.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开详情
 * 确认到店
 */
TStudent.openTStudentDetail1 = function () {
    if (this.check()) {
        if (TStudent.seItem.status!=1){
            Feng.error("请选择待核销的数据")
            return
        }
        var index = layer.open({
            type: 2,
            title: '',
            area: ['20%', '25%'],  //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/ball/joinmethod/' + TStudent.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 确认到店
 */
TStudent.openTStudentDetail4 = function () {
    if (this.check()) {
        if (TStudent.seItem.status!=1){
            Feng.error("请选择待核销的数据")
            return
        }
        var index = layer.open({
            type: 2,
            title: '',
            area: ['30%', '40%'],  //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/ball/tocancel/' + TStudent.seItem.id
        });
        this.layerIndex = index;
    }
};
TStudent.openTStudentDetail2 = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
@@ -185,7 +250,9 @@
    queryData['store'] = $("#store").val();
    queryData['peopleName'] = $("#peopleName").val();
    queryData['phone'] = $("#phone").val();
    queryData['date'] = $("#peopleName").val();
    queryData['date'] = $("#date").val();
    queryData['payMethod'] = $("#payMethod").val();
    queryData['state'] = $("#state").val();
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
@@ -62,6 +62,59 @@
            $("#ttt2").empty().append(content);
        }
    })
    ajax.set("date",$('#time').val());
    ajax.start()
    var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
        console.log("================"+data)
        if(data!=null){
            let htmlStr = '';
            for (let i = 0; i < data.length; i++) {
                htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
            }
            $("#half").empty().append(htmlStr);
        }
    })
    ajax1.start()
};
CoursePackageInfo.addTime1 = function (a) {
    if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()){
        $("#ttt3").hide()
        $("#ttt2").show()
    }else {
        $("#ttt3").show()
        $("#ttt2").hide()
    }
    console.log("==========="+a)
    var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
        console.log("================"+data)
        if(data!=null){
            var content='';
            $.each(data, function(k, v) {
                var buttonClass = "layui-btn layui-btn-primary";
                var style = "";
                if (v.state === 0) {
                    style = "background-color: red;";
                }
                var disabledAttribute = v.state === 0 ? "disabled" : "";
                content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
            });
            $("#ttt2").empty().append(content);
        }
    })
    ajax.start()
    var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
@@ -114,7 +167,7 @@
    var values = "";
    for (var i = 0; i < elements.length; i++) {
        values += date +" "+ elements[i].innerText + ",";
         values += date +" "+ elements[i].innerText + ";";
    }
// 去除最后一个逗号
@@ -204,6 +257,144 @@
    ajax.start();
};
/**
 * 新修改
 */
CoursePackageInfo.addSubmit1 = function () {
    let province = $('#provinceCode option:checked').text();
    let provinceCode = $('#provinceCode').val();
    let city = $('#cityCode option:checked').text();
    let cityCode = $('#cityCode').val();
    let storeId = $('#storeId').val();
    let siteId = $('#siteId').val();
    let site = $('#siteId option:checked').text();
    var radios = document.getElementsByName("type");
    var selectedValue;
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].checked) {
            selectedValue = radios[i].value;
            break;
        }
    }
    let type = selectedValue;
    let half = $('#half').val();
    let date = $('#time').val();
    var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
    var values = "";
    console.log("==============="+elements[0])
    if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()) {
        for (var i = 0; i < elements.length; i++) {
            if (elements[i].name != 'has') {
                values += date + " " + elements[i].innerText + ";";
            }
        }
    }else {
        for (var i = 0; i < elements.length; i++) {
            if (elements[i].name = 'has') {
                values += date + " " + elements[i].innerText + ";";
            }
        }
    }
// 去除最后一个逗号
    values = values.slice(0, -1);
    console.log(values);
    var times = values;
    let cash = $('#cash').val();
    let play = $('#play').val();
    let booker = $('#booker').val();
    let phone = $('#phone').val();
    let id = $('#id').val();
    // if(null == provinceCode || '' == provinceCode){
    //     Feng.error("所在省不能为空");
    //     return
    // }
    // if(null == cityCode || '' == cityCode){
    //     Feng.error("所在市不能为空");
    //     return
    // }
    // if(null == storeId || '' == storeId){
    //     Feng.error("所属门店不能为空");
    //     return
    // }
    // if(null == coursePackageTypeId || '' == coursePackageTypeId){
    //     Feng.error("课程类型不能为空");
    //     return
    // }
    // if(null == name || '' == name){
    //     Feng.error("课包名称不能为空");
    //     return
    // }
    // if(null == siteId || '' == siteId){
    //     Feng.error("上课场地不能为空");
    //     return
    // }
    // if(null == coachId || '' == coachId){
    //     Feng.error("授课教师不能为空");
    //     return
    // }
    //
    // classWeeks = classWeeks.substring(0, classWeeks.length - 1);
    //
    // if(null == coverDrawing || '' == coverDrawing){
    //     Feng.error("课包封面不能为空");
    //     return
    // }
    // if(null == detailDrawing || '' == detailDrawing){
    //     Feng.error("详情页不能为空");
    //     return
    // }
    // if(null == introduceDrawing || '' == introduceDrawing){
    //     Feng.error("课包介绍不能为空");
    //     return
    // }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/ball/orderedit", function (data) {
        if(data.code == 200){
            Feng.success("添加成功!");
            CoursePackageInfo.close();
            window.parent.TStudent.table.refresh();
        }else{
            Feng.error(data.msg);
        }
    }, function (data) {
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set("province",province)
    ajax.set("provinceCode",provinceCode);
    ajax.set("city",city);
    ajax.set("cityCode",cityCode);
    ajax.set("storeId",storeId);
    ajax.set("isHalf",type);
    ajax.set("siteId",siteId);
    ajax.set("nextName",site);
    ajax.set("halfName",half);
    ajax.set("date",date);
    ajax.set("times",times);
    ajax.set("money",cash+","+play);
    ajax.set("booker",booker);
    ajax.set("phone",phone);
    ajax.set("id",id);
    ajax.start();
};
/**
 * 提交修改
 */
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
@@ -167,10 +167,14 @@
 */
CoursePackage.editCoursePackageState = function (state) {
    if (this.check()) {
        if(CoursePackage.seItem.state == state){
            Feng.error("不能重复操作");
            return
        }
        parent.layer.confirm(state == 1 ? '是否上架' : "是否下架" , {
            btn: ['确定', '取消']
        }, function (index) {
        let ajax = new $ax(Feng.ctxPath + "/coursePackage/editCoursePackageState", function (data) {
            Feng.success(state == 1 ? '上架' : "下架" + "成功!");
            CoursePackage.table.refresh();
@@ -180,6 +184,15 @@
        ajax.set("id", CoursePackage.seItem.id);
        ajax.set("state", state);
        ajax.start();
                parent.layer.close(index);
            }, function (index) {
                parent.layer.close(index);
            }
        )
    }
};
cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
@@ -83,6 +83,7 @@
    @ResponseBody
    @PostMapping("/listorder")
    public List<Map<String, Object>>  listorder(@RequestBody BookingQuery bookingQuery){
        System.out.println("===bookingQuery===="+bookingQuery);
        return gameService.orderlist(bookingQuery);
//        return  game.getId();
    }
cloud-server-other/src/main/resources/mapper/GameMapper.xml
@@ -36,7 +36,39 @@
        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
        <where>
        <if test="provinceCode!=null and provinceCode!= ''">
          and  bk.provinceCode=#{provinceCode}
        </if>
            <if test="cityCode!=null and cityCode!= ''">
                and  bk.cityCode=#{cityCode}
            </if>
            <if test="store!=null and store!= ''">
                and  st.name=#{store}
            </if>
            <if test="peopleName!=null and peopleName!= ''">
                and  bk.booker=#{peopleName}
            </if>
            <if test="phone!=null and phone!= ''">
                and  bk.phone=#{phone}
            </if>
            <if test="date!=null and date!= ''">
                and bk.times like concat('%',#{date},'%')            </if>
            <if test="payMethod!=null ">
                and  bk.payType=#{payMethod}
            </if>
            <if test="state!=null ">
                and  bk.status=#{state}
            </if>
        </where>