From 44311853fa68f04db11d341bd374a4ac9b5ea567 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期六, 07 十月 2023 17:37:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java | 9
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java | 19
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java | 14
cloud-server-management/src/main/resources/TOperatorUserMapper.xml | 37
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/HttpRequestUtil.java | 42
cloud-server-course/src/main/java/com/dsh/course/service/CourseCounsumService.java | 4
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GameDataController.java | 237 +
.idea/workspace.xml | 108
cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java | 11
cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java | 5
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/RefundCoursePackageClient.java | 26
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java | 11
cloud-server-management/src/main/webapp/static/modular/system/ball/ball.js | 133
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GateDataResponse.java | 29
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTU.java | 23
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 100
cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TStoreInfo.js | 21
cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket.html | 78
cloud-server-other/src/main/java/com/dsh/other/mapper/GameMapper.java | 21
cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_add.html | 127
cloud-server-management/src/main/webapp/static/modular/system/gameData/gameData.js | 99
cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageRefundVO.java | 18
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java | 1
cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html | 357 ++
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java | 1
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 5
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TStoreList.html | 20
cloud-server-management/src/main/webapp/static/modular/system/tCoachType/tCoachType.js | 1
cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java | 5
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java | 3
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java | 4
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java | 1
cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorUserMapper.java | 28
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java | 52
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html | 351 ++
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorUser.java | 23
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java | 302 ++
cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java | 5
cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java | 9
cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java | 3
cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html | 114
cloud-server-management/src/main/webapp/static/modular/system/ball/ball_info.js | 534 +++
cloud-server-management/src/main/webapp/static/modular/system/dataStatistics/tSite.js | 4
cloud-server-other/src/main/java/com/dsh/other/entity/BallQueryDto.java | 16
cloud-server-activity/src/main/java/com/dsh/activity/model/CoachChangeStateVO.java | 11
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java | 9
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java | 5
cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js | 240 +
cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml | 3
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PointMerchandiseIncomeVo.java | 21
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Battlefield.java | 12
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Game.java | 29
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html | 2
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorCityVO.java | 18
cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java | 30
cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java | 11
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml | 2
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java | 2
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TicketController.java | 415 ++
cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_edit.html | 155 +
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteBookingServiceImpl.java | 1
cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js | 2
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorRestPwd.java | 15
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTUData.java | 16
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java | 24
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java | 2
cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator.html | 59
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java | 443 +++
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Batter.java | 24
cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java | 50
cloud-server-other/src/main/java/com/dsh/other/entity/Game.java | 50
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java | 112
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/BatterData.java | 17
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Bank.java | 34
cloud-server-other/src/main/resources/mapper/GameMapper.xml | 34
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java | 43
cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser_auth.html | 308 ++
cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java | 2
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java | 188 +
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_add.html | 214 +
cloud-server-management/src/main/webapp/WEB-INF/view/system/gateData/GateData.html | 31
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java | 11
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java | 14
cloud-server-management/src/main/webapp/WEB-INF/view/system/gameData/GameData.html | 603 ++++
cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java | 5
cloud-server-management/src/main/webapp/static/modular/system/operator/operator_add.js | 226 +
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/OperatorDTO.java | 24
cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java | 9
cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js | 2
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java | 21
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java | 24
cloud-server-activity/src/main/java/com/dsh/activity/model/PointMerchandiseIncomeVo.java | 23
cloud-server-management/src/main/resources/mapper/TStoreMapper.xml | 6
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GateDataController.java | 119
cloud-server-management/src/main/webapp/static/modular/system/ticket/ticket.js | 270 +
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball.html | 81
cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml | 46
cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java | 12
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/BallQueryDto.java | 12
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome1.html | 440 +++
cloud-server-other/src/main/java/com/dsh/other/service/GameService.java | 16
cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml | 5
cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java | 1
cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml | 30
cloud-server-management/src/main/webapp/static/modular/system/gateData/gateData.js | 52
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PlatFormDataVO.java | 32
cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js | 228 +
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java | 36
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html | 489 ++-
109 files changed, 8,175 insertions(+), 307 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1396dec..7f92887 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -25,11 +25,11 @@
<select />
</component>
<component name="ChangeListManager">
- <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="9.26。14">
+ <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="9.26。15">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage_info.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage_info.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage.js" 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/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-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" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -77,42 +77,43 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
- <component name="PropertiesComponent">{
- "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:/JavaTool/PlayPai1/cloud-server-management/src/main/webapp/static/modular/system/coursePackage",
- "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",
- "settings.editor.selected.configurable": "MavenSettings",
- "spring.configuration.checksum": "b0c8222ba40624e179f539b98c2e8cad",
- "vue.rearranger.settings.migration": "true"
+ <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:/ttt/java/PlayPai/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": "MavenSettings",
+ "spring.configuration.checksum": "7fb6c6ffe49cf7315145a28a96be3d8f",
+ "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:\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" />
+ <recent name="D:\ttt\java\PlayPai\cloud-server-other\src\main\resources\mapper" />
<recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\coursePackage" />
<recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\coursePackage" />
- <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
- <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tCoupon" />
- <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
@@ -120,11 +121,11 @@
<recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
- <recent name="com.dsh.course.mapper" />
- <recent name="com.dsh.course.service.impl" />
- <recent name="com.dsh.course.service" />
- <recent name="com.dsh.course.entity" />
- <recent name="com.dsh.course.entity.dto" />
+ <recent name="com.dsh.other.mapper" />
+ <recent name="com.dsh.other.service.impl" />
+ <recent name="com.dsh.other.service" />
+ <recent name="com.dsh.other.entity" />
+ <recent name="com.dsh.other.controller" />
</key>
</component>
<component name="RunDashboard">
@@ -300,6 +301,10 @@
<workItem from="1695799021203" duration="5869000" />
<workItem from="1695820563853" duration="56000" />
<workItem from="1695863479059" duration="12419000" />
+ <workItem from="1696427897814" duration="1362000" />
+ <workItem from="1696433675086" duration="2211000" />
+ <workItem from="1696462020097" duration="481000" />
+ <workItem from="1696465598653" duration="19850000" />
</task>
<task id="LOCAL-00001" summary="后台代码删除">
<created>1690249807612</created>
@@ -568,7 +573,31 @@
<option name="project" value="LOCAL" />
<updated>1695886217811</updated>
</task>
- <option name="localTasksCounter" value="36" />
+ <task id="LOCAL-00036" summary="9.26。15">
+ <option name="closed" value="true" />
+ <created>1696485767075</created>
+ <option name="number" value="00036" />
+ <option name="presentableId" value="LOCAL-00036" />
+ <option name="project" value="LOCAL" />
+ <updated>1696485767076</updated>
+ </task>
+ <task id="LOCAL-00037" summary="9.26。15">
+ <option name="closed" value="true" />
+ <created>1696488897294</created>
+ <option name="number" value="00037" />
+ <option name="presentableId" value="LOCAL-00037" />
+ <option name="project" value="LOCAL" />
+ <updated>1696488897295</updated>
+ </task>
+ <task id="LOCAL-00038" summary="9.26。15">
+ <option name="closed" value="true" />
+ <created>1696489413711</created>
+ <option name="number" value="00038" />
+ <option name="presentableId" value="LOCAL-00038" />
+ <option name="project" value="LOCAL" />
+ <updated>1696489413712</updated>
+ </task>
+ <option name="localTasksCounter" value="39" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
@@ -608,7 +637,8 @@
<MESSAGE value="9.26。12" />
<MESSAGE value="9.26。13" />
<MESSAGE value="9.26。14" />
- <option name="LAST_COMMIT_MESSAGE" value="9.26。14" />
+ <MESSAGE value="9.26。15" />
+ <option name="LAST_COMMIT_MESSAGE" value="9.26。15" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
index b983c07..37447d1 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -51,7 +51,14 @@
@Autowired
private TCourseInfoRecordService courseInfoRecordService;
-
+ /**
+ * 获取所有用户
+ */
+ @ResponseBody
+ @PostMapping("/base/appUser/queryAppUserList")
+ public List<TAppUser> queryAppUserList(@RequestBody AppUserByNameAndPhoneDTO dto){
+ return appUserService.queryAPPUserByNameAndPhone(dto);
+ }
/**
* 根据用户姓名和电话模糊查询
*/
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
index 34f5430..62b571b 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
@@ -161,5 +161,14 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date insertTime;
-
+ /**
+ * 添加类型 type = 1 平台 type=2 运营商 type=3门店
+ */
+ @TableField("insertType")
+ private Integer insertType;
+ /**
+ * 添加人id平台管理员id 运营商id
+ */
+ @TableField("type")
+ private Integer addUserId;
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java
index 4c6ee5e..5f78bf1 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java
@@ -38,5 +38,6 @@
private Integer state;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date insertTime;
+ private Integer payStatus;
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index ebb83f8..830286d 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -12,6 +12,8 @@
import com.dsh.activity.feignclient.other.StoreClient;
import com.dsh.activity.feignclient.other.model.Store;
import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse;
+import com.dsh.activity.model.CoachChangeStateVO;
+import com.dsh.activity.model.PointMerchandiseIncomeVo;
import com.dsh.activity.model.PointMerchandiseVo;
import com.dsh.activity.model.request.*;
import com.dsh.activity.model.response.GoodsInfoOneVo;
@@ -73,7 +75,78 @@
@Resource
private CouponCityService ccityService;
+ @Autowired
+ private UserPointsMerchandiseService userPointsMerchandiseService;
+ /**
+ * 门票上下架 state=1 上架 state=2 下架
+ */
+ @RequestMapping("/base/pointMerchars/changeState")
+ public Object changeState(@RequestBody CoachChangeStateVO dto){
+ return pmdsService.changeState(dto);
+ }
+ @ResponseBody
+ @PostMapping("/base/pointMerchars/ticketList")
+ public List<Map<String,Object>> ticketList(@RequestBody IntegralGoodsOfSearch ofSearch){
+ List<Map<String, Object>> result = pmdsService.ticketList(ofSearch);
+ if (result.size() > 0){
+ for (Map<String, Object> stringObjectMap : result) {
+ Integer o = (Integer) stringObjectMap.get("id");
+ String startTime = (String) stringObjectMap.get("startTime");
+ String endTime = (String) stringObjectMap.get("endTime");
+ stringObjectMap.put("timeValue",startTime + "至"+endTime);
+ int count1 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
+ .eq(UserPointsMerchandise::getPointsMerchandiseId, o));
+ int count2 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
+ .eq(UserPointsMerchandise::getPointsMerchandiseId, o)
+ .eq(UserPointsMerchandise::getStatus,2));
+ stringObjectMap.put("hasExchangeQty",count1);
+ stringObjectMap.put("hasPickQty",count2);
+
+ stringObjectMap.put("activeStatus",dealTimeStatus(startTime,endTime));
+ }
+ if (ToolUtil.isNotEmpty(ofSearch.getActiveStatus())){
+ result = dealTimeData(result,ofSearch.getActiveStatus());
+ }
+ }
+ return result;
+ }
+ @ResponseBody
+ @PostMapping("/base/pointMerchars/queryGoodsListSearch")
+ public List<Map<String,Object>> getIntegralGoodsListOfSearch(@RequestBody IntegralGoodsOfSearch ofSearch){
+ System.out.println(ofSearch);
+ List<Map<String, Object>> mapList = pmdsService.queryGoodsListOfSearch(ofSearch);
+ if (mapList.size() > 0){
+ for (Map<String, Object> stringObjectMap : mapList) {
+ Integer o = (Integer) stringObjectMap.get("id");
+ String startTime = (String) stringObjectMap.get("startTime");
+ String endTime = (String) stringObjectMap.get("endTime");
+ stringObjectMap.put("timeValue",startTime + "至"+endTime);
+ int count1 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
+ .eq(UserPointsMerchandise::getPointsMerchandiseId, o));
+ int count2 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
+ .eq(UserPointsMerchandise::getPointsMerchandiseId, o)
+ .eq(UserPointsMerchandise::getStatus,2));
+ stringObjectMap.put("hasExchangeQty",count1);
+ stringObjectMap.put("hasPickQty",count2);
+
+ stringObjectMap.put("activeStatus",dealTimeStatus(startTime,endTime));
+ }
+ if (ToolUtil.isNotEmpty(ofSearch.getActiveStatus())){
+ mapList = dealTimeData(mapList,ofSearch.getActiveStatus());
+ }
+ }
+ System.out.println("mapList->"+mapList);
+ return mapList;
+ }
+ /**
+ * 获取积分商票消费金额
+ */
+ @ResponseBody
+ @RequestMapping("/base/pointMerchars/getAmount")
+ public List<PointMerchandiseIncomeVo> getAmount(){
+ return userPointsMerchandiseService.getAmount();
+ }
@Resource
private PointsMerchandiseCityService pmdsCityService;
@@ -549,34 +622,7 @@
}
- @ResponseBody
- @PostMapping("/base/pointMerchars/queryGoodsListSearch")
- public List<Map<String,Object>> getIntegralGoodsListOfSearch(@RequestBody IntegralGoodsOfSearch ofSearch){
- System.out.println(ofSearch);
- List<Map<String, Object>> mapList = pmdsService.queryGoodsListOfSearch(ofSearch);
- if (mapList.size() > 0){
- for (Map<String, Object> stringObjectMap : mapList) {
- Integer o = (Integer) stringObjectMap.get("id");
- String startTime = (String) stringObjectMap.get("startTime");
- String endTime = (String) stringObjectMap.get("endTime");
- stringObjectMap.put("timeValue",startTime + "至"+endTime);
- int count1 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
- .eq(UserPointsMerchandise::getPointsMerchandiseId, o));
- int count2 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
- .eq(UserPointsMerchandise::getPointsMerchandiseId, o)
- .eq(UserPointsMerchandise::getStatus,2));
- stringObjectMap.put("hasExchangeQty",count1);
- stringObjectMap.put("hasPickQty",count2);
- stringObjectMap.put("activeStatus",dealTimeStatus(startTime,endTime));
- }
- if (ToolUtil.isNotEmpty(ofSearch.getActiveStatus())){
- mapList = dealTimeData(mapList,ofSearch.getActiveStatus());
- }
- }
- System.out.println("mapList->"+mapList);
- return mapList;
- }
public int dealTimeStatus(String startTime, String endTime){
LocalDate now = LocalDate.now();
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java
index cfb3782..49248dd 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.activity.entity.PointsMerchandise;
+import com.dsh.activity.model.CoachChangeStateVO;
+import com.dsh.activity.model.request.IntegralGoodsOfSearch;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -33,6 +35,9 @@
@Param("state") Integer state,
@Param("page") Page<Map<String, Object>> page);
+ List<Map<String, Object>> ticketList(@Param("query") IntegralGoodsOfSearch ofSearch);
+
+ int changeState(@Param("query") CoachChangeStateVO dto);
void saveCity(@Param("id") Integer id, @Param("province") String province, @Param("provinceCode") String provinceCode, @Param("city") String city, @Param("cityCode") String cityCode);
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
index ab12b53..9353ec6 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.activity.entity.UserPointsMerchandise;
+import com.dsh.activity.model.PointMerchandiseIncomeVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,4 +19,8 @@
*/
public interface UserPointsMerchandiseMapper extends BaseMapper<UserPointsMerchandise> {
+
+ List<PointMerchandiseIncomeVo> getAmount();
+
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/CoachChangeStateVO.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/CoachChangeStateVO.java
new file mode 100644
index 0000000..ce771fb
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/CoachChangeStateVO.java
@@ -0,0 +1,11 @@
+package com.dsh.activity.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CoachChangeStateVO {
+ private List<Integer> ids;
+ private Integer state;
+}
\ No newline at end of file
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/PointMerchandiseIncomeVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/PointMerchandiseIncomeVo.java
new file mode 100644
index 0000000..6f958ae
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/PointMerchandiseIncomeVo.java
@@ -0,0 +1,23 @@
+package com.dsh.activity.model;
+
+import com.dsh.activity.entity.PointsMerchandise;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 营收数据-平台
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PointMerchandiseIncomeVo {
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date insertTime;
+ private BigDecimal cash;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java
index 2169a65..4c7adc5 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.PointsMerchandise;
+import com.dsh.activity.model.CoachChangeStateVO;
import com.dsh.activity.model.request.IntegralGoodsOfSearch;
import java.util.List;
@@ -23,4 +24,8 @@
List<Map<String, Object>> queryGoodsListOfSearchAudit(IntegralGoodsOfSearch ofSearch);
+ List<Map<String, Object>> ticketList(IntegralGoodsOfSearch ofSearch);
+
+ Object changeState(CoachChangeStateVO dto);
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
index 81e58a7..011c310 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.UserPointsMerchandise;
+import com.dsh.activity.model.PointMerchandiseIncomeVo;
import com.dsh.activity.model.request.PointMercharsPayedVo;
import java.util.List;
@@ -17,4 +18,6 @@
*/
public interface UserPointsMerchandiseService extends IService<UserPointsMerchandise> {
+ List<PointMerchandiseIncomeVo> getAmount();
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java
index 6680cea..e0c9309 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.PointsMerchandise;
import com.dsh.activity.mapper.PointsMerchandiseMapper;
+import com.dsh.activity.model.CoachChangeStateVO;
import com.dsh.activity.model.request.IntegralGoodsOfSearch;
import com.dsh.activity.service.PointsMerchandiseService;
import org.springframework.stereotype.Service;
@@ -37,4 +38,14 @@
public void saveCity(Integer id, String province, String provinceCode, String city, String cityCode) {
this.baseMapper.saveCity(id,province,provinceCode,city,cityCode);
}
+
+ @Override
+ public List<Map<String, Object>> ticketList(IntegralGoodsOfSearch ofSearch) {
+ return this.baseMapper.ticketList(ofSearch);
+ }
+
+ @Override
+ public Object changeState(CoachChangeStateVO dto) {
+ return this.baseMapper.changeState(dto);
+ }
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
index 0ba9902..ea80b05 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.UserPointsMerchandise;
import com.dsh.activity.mapper.UserPointsMerchandiseMapper;
+import com.dsh.activity.model.PointMerchandiseIncomeVo;
import com.dsh.activity.model.request.PointMercharsPayedVo;
import com.dsh.activity.service.UserPointsMerchandiseService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -20,5 +22,10 @@
*/
@Service
public class UserPointsMerchandiseServiceImpl extends ServiceImpl<UserPointsMerchandiseMapper, UserPointsMerchandise> implements UserPointsMerchandiseService {
-
+ @Autowired
+ private UserPointsMerchandiseMapper userPointsMerchandiseMapper;
+ @Override
+ public List<PointMerchandiseIncomeVo> getAmount() {
+ return userPointsMerchandiseMapper.getAmount();
+ }
}
diff --git a/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml b/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml
index c39989d..d1bb6d3 100644
--- a/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml
@@ -69,6 +69,52 @@
</if>
order by insertTime desc
</select>
+ <select id="ticketList" resultType="java.util.Map">
+ SELECT id,
+ `name`,
+ cardType,
+ `cover`,
+ date_format(startTime ,'%Y-%m-%d') as startTime,
+ date_format(endTime ,'%Y-%m-%d') as endTime,
+ `type`,
+ useScope,
+ userPopulation,
+ quantityIssued,
+ pickUpQuantity,
+ `sort`,
+ shelves
+ from t_points_merchandise
+ where 1 = 1
+ <if test="query.name != null">
+ and `name` like concat('%', #{query.name}, '%')
+ </if>
+ <if test="query.type != null">
+ and cardType = #{query.type}
+ </if>
+ <if test="query.redemptionMethod != null">
+ and redemptionMethod = #{query.redemptionMethod}
+ </if>
+ <if test="query.userPopulation != null">
+ and userPopulation = #{query.userPopulation}
+ </if>
+ <if test="query.state != null">
+ and `state` = #{query.state}
+ </if>
+ and `type` = 3
+ order by sort desc
+ </select>
+ <select id="changeState" resultType="java.lang.Integer">
+ update t_points_merchandise set
+ shelves = #{query.state}
+ <where>
+ <if test="query.ids != null and query.ids.size()>0">
+ AND t_points_merchandise.id IN
+ <foreach collection="query.ids" separator="," item="id" open="(" close=")">
+ #{id}
+ </foreach>
+ </if>
+ </where>
+ </select>
<insert id="saveCity">
diff --git a/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
index 4601dee..fff3a7b 100644
--- a/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
@@ -3,4 +3,9 @@
<mapper namespace="com.dsh.activity.mapper.UserPointsMerchandiseMapper">
+ <select id="getAmount" resultType="com.dsh.activity.model.PointMerchandiseIncomeVo">
+ select t1.*,t2.cash from t_user_points_merchandise t1
+ left join t_points_merchandise t2 on t1.pointsMerchandiseId = t2.id
+ where t1.payStatus =2
+ </select>
</mapper>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
index 0cb6701..b3bc1a8 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -149,7 +149,10 @@
Integer absencesNumber = one.getAbsencesNumber();
// 没有过期
if (one.getUseTime().after(new Date())){
- packagePayment.setTotalClassHours(packagePayment.getClassHours()+one.getTotalClassHours());
+ if (one.getLaveClassHours()-packagePayment.getClassHours()<0){
+ return 5002;
+ }
+ packagePayment.setTotalClassHours(one.getTotalClassHours());
packagePayment.setLaveClassHours(one.getLaveClassHours()-packagePayment.getClassHours());
packagePayment.setAbsencesNumber(one.getAbsencesNumber());
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
index a8517b4..aba1585 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -39,6 +39,17 @@
CoursePackageStudentService studentService ;
@Autowired
TCoursePackagePaymentService paymentService;
+ @Autowired
+ private CourseCounsumService counsumService;
+
+ //获取退费记录
+ @RequestMapping("/getRefund")
+ @ResponseBody
+ public List<MoneyBack> getRefund() {
+ // 查询已通过申请的退费记录
+ return counsumService.getRefund();
+ }
+
@Resource
private CoursePackageSchedulingMapper coursePackageSchedulingService;
@@ -179,8 +190,7 @@
return selectDtos;
}
- @Autowired
- private CourseCounsumService counsumService;
+
@RequestMapping("/queryCounsum")
@ResponseBody
public List<CourseCounsum> queryCounsum(@RequestBody ConsumeQuery consumeQuery){
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java
index 6b28efe..cf5446a 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.course.entity.CancelledClasses;
+import com.dsh.course.entity.MoneyBack;
import com.dsh.course.model.CancelClassesQuery;
import com.dsh.course.model.CancelClassesVO;
import org.apache.ibatis.annotations.Param;
@@ -20,4 +21,8 @@
public interface CancelledClassesMapper extends BaseMapper<CancelledClasses> {
List<CancelClassesVO> listAll(@Param("query") CancelClassesQuery query,@Param("sTime")String sTime,@Param("eTime")String eTime);
+
+ List<MoneyBack> getRefund();
+
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageRefundVO.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageRefundVO.java
new file mode 100644
index 0000000..07d2b5a
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageRefundVO.java
@@ -0,0 +1,18 @@
+package com.dsh.course.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 退费记录列表VO
+ */
+@Data
+public class CoursePackageRefundVO {
+
+ private BigDecimal cashPayment;
+ private Date insertTime;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/CourseCounsumService.java b/cloud-server-course/src/main/java/com/dsh/course/service/CourseCounsumService.java
index 99f8528..63da887 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/CourseCounsumService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/CourseCounsumService.java
@@ -3,7 +3,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.course.entity.CancelledClasses;
import com.dsh.course.entity.CourseCounsum;
+import com.dsh.course.entity.MoneyBack;
+
+import java.util.List;
public interface CourseCounsumService extends IService<CourseCounsum> {
+ List<MoneyBack> getRefund();
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java
index 5f4467c..2381648 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java
@@ -3,12 +3,23 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.CancelledClasses;
import com.dsh.course.entity.CourseCounsum;
+import com.dsh.course.entity.MoneyBack;
import com.dsh.course.mapper.CancelledClassesMapper;
import com.dsh.course.mapper.CourseCounsumMapper;
+import com.dsh.course.mapper.MoneyBackMapper;
import com.dsh.course.service.CancelledClassesService;
import com.dsh.course.service.CourseCounsumService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+
+import java.util.List;
@Service
public class CourseCounsumServiceImpl extends ServiceImpl<CourseCounsumMapper, CourseCounsum> implements CourseCounsumService {
+ @Autowired
+ private CancelledClassesMapper mapper;
+ @Override
+ public List<MoneyBack> getRefund() {
+ return mapper.getRefund();
+ }
}
diff --git a/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
index eaee487..d6f6339 100644
--- a/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
@@ -34,5 +34,8 @@
</if>
</where>
</select>
+ <select id="getRefund" resultType="com.dsh.course.entity.MoneyBack">
+ select * from t_back_money where status = 1
+ </select>
</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index 78a72a0..cbbc616 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -34,7 +34,6 @@
update t_course_package_payment set totalClassHours =totalClassHours +#{i},classHours =classHours+#{i},laveClassHours =laveClassHours+#{i} where id =#{id}
</update>
-
<select id="queryCountNumber" resultType="int">
SELECT
count( 1 ) AS num
@@ -42,7 +41,6 @@
SELECT appUserId FROM t_course_package_payment WHERE payStatus = 2 AND state = 1 and coursePackageId = #{coursePackageId} GROUP BY appUserId
) AS aa
</select>
-
<select id="getCoursePackagePaymentByCode" resultType="com.dsh.course.entity.TCoursePackagePayment">
select * from t_course_package_payment where 1=1
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java
index 6589158..16d1ccf 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java
@@ -5,18 +5,39 @@
import com.dsh.course.feignClient.activity.model.IntegralGoodsOfSearch;
import com.dsh.course.feignClient.activity.model.PointMercharsPayedVo;
import com.dsh.course.feignClient.activity.model.PointMercharsVo;
+import com.dsh.guns.modular.system.model.CoachChangeStateVO;
+import com.dsh.guns.modular.system.model.PointMerchandiseIncomeVo;
import com.dsh.course.feignClient.activity.model.PointsMerchandise;
import com.dsh.guns.modular.system.model.GoodsInfoOneVo;
import com.dsh.guns.modular.system.model.StoreVos;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
@FeignClient(value = "mb-cloud-activity")
public interface PointMercharsClient {
+ /**
+ * 门票上下架 state=1 上架 state=2 下架
+ */
+ @RequestMapping("/base/pointMerchars/changeState")
+ Object changeState(@RequestBody CoachChangeStateVO dto);
+ /**
+ * 门票管理查询
+ * @param ofSearch
+ * @return
+ */
+ @PostMapping("/base/pointMerchars/ticketList")
+ List<Map<String,Object>> ticketList(@RequestBody IntegralGoodsOfSearch ofSearch);
+ /**
+ * 获取积分商票消费金额
+ */
+ @RequestMapping("/base/pointMerchars/getAmount")
+ List<PointMerchandiseIncomeVo> getAmount();
@PostMapping("/base/pointMerchars/queryGoodsListSearch")
List<Map<String,Object>> getIntegralGoodsListOfSearch(@RequestBody IntegralGoodsOfSearch ofSearch);
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/RefundCoursePackageClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/RefundCoursePackageClient.java
new file mode 100644
index 0000000..f312f47
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/RefundCoursePackageClient.java
@@ -0,0 +1,26 @@
+package com.dsh.course.feignClient.course;
+
+import com.dsh.course.feignClient.course.model.CancelledClasses;
+import com.dsh.course.model.MoneyBack;
+import com.dsh.guns.modular.system.model.CancelClassesQuery;
+import com.dsh.guns.modular.system.model.CancelClassesVO;
+import com.dsh.guns.modular.system.model.CourseCounsum;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/8/12 3:45
+ */
+@FeignClient("mb-cloud-course")
+public interface RefundCoursePackageClient {
+
+ //获取退费记录
+ @RequestMapping("/getRefund")
+ List<MoneyBack> getRefund();
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java
new file mode 100644
index 0000000..c012371
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java
@@ -0,0 +1,24 @@
+package com.dsh.course.feignClient.other;
+
+import com.dsh.course.dto.StudentSearch;
+import com.dsh.course.dto.TStudentDto;
+import com.dsh.course.feignClient.other.model.Banner;
+import com.dsh.guns.modular.system.model.AdvertisementChangeStateDTO;
+import com.dsh.guns.modular.system.model.AdvertisementQuery;
+import com.dsh.guns.modular.system.model.Game;
+import com.dsh.guns.modular.system.model.dto.BallQueryDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-other")
+public interface BallClient {
+
+ @PostMapping("/student/webStudentList")
+ List<Game> list(@RequestBody BallQueryDto ballQueryDto);
+ @PostMapping("/save")
+ void save(@RequestBody Game game);
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java
index c72d2d3..e0e7b84 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java
@@ -18,6 +18,11 @@
public interface SiteClient {
/**
+ * 获取所有场地
+ */
+ @RequestMapping("/base/site/getList")
+ List<Site> getList();
+ /**
* 获取场地预约记录
*/
@RequestMapping("/base/site/listAll")
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
index 1bb364e..b98b214 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
@@ -35,7 +35,7 @@
List<Map<String, Object>> queryListOfpage(@Param("provinceCode") String provinceCode,
@Param("cityCode") String cityCode,
- @Param("cityManagerId") Integer cityManagerId,
+ @Param("operatorId") Integer operatorId,
@Param("storeName") String storeName,
@Param("page") Page<Map<String, Object>> page);
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java
index 74c9bf9..946f755 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java
@@ -2,7 +2,13 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.guns.modular.system.model.Bank;
import com.dsh.guns.modular.system.model.TOperator;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -14,4 +20,10 @@
*/
public interface TOperatorMapper extends BaseMapper<TOperator> {
+ List<Map<String, Object>> listAll(@Param("page")Page<Map<String, Object>> page,@Param("userName")String name,@Param("phone")String phone,@Param("type")Integer type);
+
+ int changeState(@Param("ids") List<Integer> ids, @Param("state") Integer state);
+
+ List<Bank> getBankList();
+
}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorUserMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorUserMapper.java
new file mode 100644
index 0000000..acf94b3
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorUserMapper.java
@@ -0,0 +1,28 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.guns.modular.system.model.OperatorUser;
+import com.dsh.guns.modular.system.model.TOperator;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 运营商商户 Mapper 接口
+ * </p>
+ */
+public interface TOperatorUserMapper extends BaseMapper<OperatorUser> {
+
+ List<Map<String, Object>> listAll(@Param("page")Page<Map<String, Object>> page,
+ @Param("province") String province,
+ @Param("city")String city,
+ @Param("userName")String userName,
+ @Param("phone") String phone,
+ @Param("platform")Integer platform,
+ @Param("type")Integer type,
+ @Param("state")Integer state);
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java
index 260c9bb..aecb6e1 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java
@@ -240,7 +240,7 @@
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String birthday = format.format(data.get(0).getBirthday());
model.addAttribute("birthday",birthday);
- return PREFIX + "TCoach_edit.html";
+ return PREFIX + "Operator_edit.html";
}
/**
* 获取教练列表
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
index 20603a8..deeb3ec 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -1,26 +1,42 @@
package com.dsh.guns.modular.system.controller.code;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.dsh.course.feignClient.account.AppUserClient;
-import com.dsh.course.feignClient.account.CityClient;
-import com.dsh.course.feignClient.account.CityManagerClient;
-import com.dsh.course.feignClient.account.FinanceClient;
+import com.dsh.course.feignClient.account.*;
import com.dsh.course.feignClient.account.model.CityManager;
-import com.dsh.course.feignClient.course.CancelledClassesClient;
+import com.dsh.course.feignClient.account.model.TAppUser;
+import com.dsh.course.feignClient.account.model.VipPayment;
+import com.dsh.course.feignClient.activity.PointMercharsClient;
+import com.dsh.course.feignClient.competition.CompetitionClient;
+import com.dsh.course.feignClient.competition.model.Competition;
+import com.dsh.course.feignClient.competition.model.CompetitionQuery;
+import com.dsh.course.feignClient.competition.model.PaymentCompetition;
+import com.dsh.course.feignClient.course.*;
+import com.dsh.course.feignClient.course.model.TCoursePackage;
+import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
+import com.dsh.course.feignClient.other.SiteClient;
+import com.dsh.course.feignClient.other.StoreClient;
+import com.dsh.course.model.MoneyBack;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.service.ICityService;
+import groovyjarjarpicocli.CommandLine;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
+import javax.annotation.Resource;
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 数据统计控制器
@@ -34,6 +50,28 @@
private ICityService cityService;
@Autowired
private CityManagerClient cityManagerClient;
+ @Autowired
+ private AppUserClient appUserClient;
+ @Autowired
+ private VipPaymentClient vipPaymentClient;
+ @Autowired
+ private FinanceClient financeClient;
+ @Autowired
+ private CoursePackagePaymentClient coursePackagePaymentClient;
+ @Autowired
+ private CompetitionClient competitionClient;
+ @Autowired
+ private StoreClient storeClient;
+ @Autowired
+ private SiteClient siteClient;
+ @Autowired
+ private PointMercharsClient pointMercharsClient;
+ @Autowired
+ private RefundCoursePackageClient refundCoursePackageClient;
+ @Resource
+ private CourseStuddentClient courseStuddentClient;
+ @Autowired
+ private CoursePackageClient coursePackageClient;
/**
* 跳转到平台统计数据页面
*/
@@ -41,6 +79,395 @@
public String index(Model model) {
return PREFIX + "platformIncome.html";
}
+
+ /**
+ * 营收数据-平台
+ *
+ */
+ @RequestMapping(value = "/getIncomeData")
+ @ResponseBody
+ public Object getIncomeData(Integer type) {
+ // 充值记录查询query
+ RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery();
+ // 报名课程查询query
+ RegisterOrderQuery query = new RegisterOrderQuery();
+ // 赛事活动查询query
+ CompetitionQuery competitionQuery = new CompetitionQuery();
+ // 会员支付查询query
+ IncomeQuery incomeQuery = new IncomeQuery();
+ // 场地预约记录查询query
+ SiteBookingQuery siteBookingQuery = new SiteBookingQuery();
+ Integer roleType = UserExt.getUser().getObjectType();
+ IncomeVO incomeVO = new IncomeVO();
+ List<IncomeVO> incomeVOS = new ArrayList<>();
+ // 会员支付记录
+ List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery);
+ for (VipPayment vipPayment : vipPayments) {
+ IncomeVO temp = new IncomeVO();
+ if (vipPayment.getPayStatus()==1){
+ temp.setInsertTime(vipPayment.getInsertTime());
+ incomeVOS.add(temp);
+ }
+ if (vipPayment.getAmount() != null) {
+ temp.setAmount(new BigDecimal(vipPayment.getAmount().toString()));
+ }
+ }
+ // 充值记录
+ List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery);
+ for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) {
+ IncomeVO temp = new IncomeVO();
+ temp.setInsertTime(rechargeRecordsVO.getInsertTime());
+ if (rechargeRecordsVO.getAmount() != null) {
+ temp.setAmount(rechargeRecordsVO.getAmount());
+ }
+ if (rechargeRecordsVO.getPayStatus() ==1){
+ incomeVOS.add(temp);
+ }
+
+ }
+ // 报名课程记录
+ List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query);
+ for (RegisterOrderVO registerOrderVO : registerOrderVOS) {
+ if (registerOrderVO.getMoney() == null) {
+ continue;
+ }
+ IncomeVO temp = new IncomeVO();
+ temp.setInsertTime(registerOrderVO.getInsertTime());
+ if (registerOrderVO.getMoney() != null) {
+ temp.setAmount(registerOrderVO.getMoney());
+ }
+ if (registerOrderVO.getPayStatus()==2){
+ incomeVOS.add(temp);
+ }
+ }
+ // 报名活动
+ List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery);
+ for (PaymentCompetition competition : competitions) {
+ if (competition.getPayStatus() != 2) {
+ continue;
+ }
+ if (competition.getPayType()==3 || competition.getPayType()==4){
+ continue;
+ }
+ IncomeVO temp = new IncomeVO();
+ temp.setInsertTime(competition.getInsertTime());
+ if (competition.getAmount() != null) {
+ temp.setAmount(new BigDecimal(competition.getAmount().toString()));
+ }
+ incomeVOS.add(temp);
+ }
+ // 预约场地
+ List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery);
+ for (SiteBooking siteBooking : siteBookings) {
+ IncomeVO temp = new IncomeVO();
+ if(siteBooking.getStatus()!=3){
+ continue;
+ }
+ temp.setInsertTime(siteBooking.getPayTime());
+ if (siteBooking.getPayMoney() != null) {
+ temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString()));
+ }
+ incomeVOS.add(temp);
+ }
+ // 积分商品
+ List<PointMerchandiseIncomeVo> amount = pointMercharsClient.getAmount();
+ for (PointMerchandiseIncomeVo pointMerchandiseIncomeVo : amount) {
+ IncomeVO temp = new IncomeVO();
+ temp.setInsertTime(pointMerchandiseIncomeVo.getInsertTime());
+ if (pointMerchandiseIncomeVo.getCash()!=null){
+ temp.setAmount(pointMerchandiseIncomeVo.getCash());
+ incomeVOS.add(temp);
+ }
+ }
+
+ // 最终返回的数据
+ Map<String, List<Object>> monthlyData = new HashMap<>();
+ // 创建一个 Map 用于存储每年的累计 amount
+ Map<Integer, BigDecimal> yearToTotalAmountMap = new HashMap<>();
+ // 初始化一个 BigDecimal 用于累加
+ BigDecimal totalAmount1 = BigDecimal.ZERO;
+ // 用于返回图表上的总营收 年度营收 月度 周度 日度
+ List<Object> objects = new ArrayList<>();
+ // 遍历 incomeVOS
+ for (IncomeVO incomeVO1 : incomeVOS) {
+ // 总营收
+ BigDecimal total = incomeVO1.getAmount();
+ // 累加到总金额
+ totalAmount1 = totalAmount1.add(total);
+
+ Date insertTime = incomeVO1.getInsertTime(); // 假设有一个方法用于获取 insertTime
+ BigDecimal amount1 = incomeVO1.getAmount(); // 假设有一个方法用于获取 amount
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(insertTime);
+ int year = calendar.get(Calendar.YEAR); // 获取年份
+ // 更新年份对应的累计 amount
+ if (yearToTotalAmountMap.containsKey(year)) {
+ BigDecimal totalAmount = yearToTotalAmountMap.get(year);
+ yearToTotalAmountMap.put(year, totalAmount.add(amount1));
+ } else {
+ yearToTotalAmountMap.put(year, amount1);
+ }
+ }
+ objects.add(totalAmount1);
+ // 创建一个新的列表,按年份升序排列
+ List<Integer> sortedYears = new ArrayList<>(yearToTotalAmountMap.keySet());
+ Collections.sort(sortedYears);
+ // 创建一个新的 IncomeVO 列表,包含按年份累计的 amount
+ List<Object> resultIncomeVOS = new ArrayList<>();
+ // 循环遍历2023年到2028年的年份
+ for (int year = 2023; year <= 2028; year++) {
+ BigDecimal totalAmount = yearToTotalAmountMap.getOrDefault(year, BigDecimal.ZERO);
+ // 创建一个新的 IncomeVO 对象,并设置年份和累计金额
+ IncomeVO resultIncomeVO = new IncomeVO();
+ resultIncomeVO.setAmount(totalAmount);
+ resultIncomeVOS.add(resultIncomeVO);
+ }
+ monthlyData.put("yearIncome",resultIncomeVOS);
+
+ // 创建一个 Map 用于存储今年每个月的累计 amount
+ Map<Integer, BigDecimal> monthToTotalAmountMap = new HashMap<>();
+ Calendar calendar = Calendar.getInstance();
+ int currentYear = calendar.get(Calendar.YEAR);
+ List<BigDecimal> monthlyAmountList = new ArrayList<>(Collections.nCopies(12, BigDecimal.ZERO));
+
+ for (IncomeVO incomeVO1 : incomeVOS) {
+ Calendar calendar1 = Calendar.getInstance();
+ calendar1.setTime(incomeVO1.getInsertTime());
+ int year = calendar1.get(Calendar.YEAR);
+ int month = calendar1.get(Calendar.MONTH) + 1; // 月份从0开始,所以需要加1
+ if (year == currentYear) {
+ BigDecimal totalAmount = monthlyAmountList.get(month - 1);
+ totalAmount = totalAmount.add(incomeVO1.getAmount());
+ monthlyAmountList.set(month - 1, totalAmount);
+ }
+ }
+ monthlyData.put("monthIncome", Collections.singletonList(monthlyAmountList));
+
+ // 获取当前月份
+ LocalDate currentDate = LocalDate.now();
+ int currentMonth = currentDate.getMonthValue();
+ // 初始化一个长度为当前月份的天数的列表,并将每一天的金额初始化为零
+ int daysInCurrentMonth = currentDate.lengthOfMonth();
+ List<BigDecimal> weekAmount = new ArrayList<>(daysInCurrentMonth);
+ for (int i = 0; i < daysInCurrentMonth; i++) {
+ weekAmount.add(BigDecimal.ZERO);
+ }
+ for (IncomeVO incomeVO1 : incomeVOS) {
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String string = dateFormat.format(incomeVO1.getInsertTime());
+ LocalDate insertDate = LocalDate.parse(string, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ if (insertDate.getMonthValue() == currentMonth) {
+ int dayOfMonth = insertDate.getDayOfMonth();
+ BigDecimal currentAmount = weekAmount.get(dayOfMonth - 1); // 列表索引从0开始
+ weekAmount.set(dayOfMonth - 1, currentAmount.add(incomeVO1.getAmount()));
+ }
+ }
+ monthlyData.put("weekIncome", Collections.singletonList(weekAmount));
+
+ LocalDateTime currentDateTime = LocalDateTime.now();
+ List<BigDecimal> amountByDay = new ArrayList<>(Collections.nCopies(7, BigDecimal.ZERO));
+ for (IncomeVO incomeVO3 : incomeVOS) {
+ Date insertTime = incomeVO3.getInsertTime();
+ // 将 Date 转换为 LocalDateTime
+ LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault());
+ // 计算日期与当前日期的差距
+ long daysDifference = ChronoUnit.DAYS.between(insertDateTime.toLocalDate(), currentDateTime.toLocalDate());
+ // 如果日期在七天内,累加金额
+ if (daysDifference >= 0 && daysDifference < 7) {
+ int index = (int) (6 - daysDifference); // 计算对应的索引位置
+ BigDecimal amount3 = incomeVO3.getAmount();
+ BigDecimal updatedAmount = amountByDay.get(index).add(amount3);
+ amountByDay.set(index, updatedAmount);
+
+ }
+ }
+
+ monthlyData.put("dayIncome", Collections.singletonList(amountByDay));
+ // 创建一个 Map 用于存储今年本周的累计 amount
+ Map<Integer, BigDecimal> dayToTotalAmountMap = new HashMap<>();
+ BigDecimal yearAmount = BigDecimal.ZERO; // 初始化累加变量为0
+ BigDecimal monthAmount = BigDecimal.ZERO; // 初始化累加变量为0
+ BigDecimal todayAmount = BigDecimal.ZERO; // 初始化累加变量为0
+ // 获取当前日期和时间
+ LocalDateTime now = LocalDateTime.now();
+ // 今年的起始日期和结束日期
+ LocalDateTime startOfYear = now.with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN);
+ LocalDateTime endOfYear = now.with(TemporalAdjusters.lastDayOfYear()).with(LocalTime.MAX);
+ // 本月的起始日期和结束日期
+ LocalDateTime startOfMonth = now.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
+ LocalDateTime endOfMonth = now.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX);
+ // 本周的起始日期和结束日期
+ LocalDateTime startOfWeek = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).with(LocalTime.MIN);
+ LocalDateTime endOfWeek = now.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)).with(LocalTime.MAX);
+ // 今天的起始日期和结束日期
+ LocalDateTime startOfDay = now.with(LocalTime.MIN);
+ LocalDateTime endOfDay = now.with(LocalTime.MAX);
+ // 创建日期格式化器
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ // 筛选符合条件的IncomeVO对象
+ List<IncomeVO> thisYearIncome = incomeVOS.stream()
+ .filter(income -> {
+ Date insertTime = income.getInsertTime();
+ try {
+ LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault());
+ return insertDateTime.isAfter(startOfYear) && insertDateTime.isBefore(endOfYear);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .collect(Collectors.toList());
+ // 使用 map 方法将 IncomeVO 转换为 BigDecimal,提取出 amount 字段
+ List<BigDecimal> amounts = thisYearIncome.stream()
+ .map(IncomeVO::getAmount)
+ .collect(Collectors.toList());
+ //本年总收入
+ BigDecimal totalAmount = amounts.stream()
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 用于展示总营收 本年度营收 本月营收 本周营收 本日营收
+ objects.add(totalAmount);
+ List<IncomeVO> thisMonthIncome = incomeVOS.stream()
+ .filter(income -> {
+ Date insertTime = income.getInsertTime();
+ try {
+ LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault());
+ return insertDateTime.isAfter(startOfMonth) && insertDateTime.isBefore(endOfMonth);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .collect(Collectors.toList());
+ List<BigDecimal> amountMonth = thisMonthIncome.stream()
+ .map(IncomeVO::getAmount)
+ .collect(Collectors.toList());
+ // 使用 本月总收入
+ BigDecimal totalMonth = amountMonth.stream()
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ objects.add(totalMonth);
+ List<IncomeVO> thisWeekIncome = incomeVOS.stream()
+ .filter(income -> {
+ Date insertTime = income.getInsertTime();
+ try {
+ LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault());
+ return insertDateTime.isAfter(startOfWeek) && insertDateTime.isBefore(endOfWeek);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .collect(Collectors.toList());
+ List<BigDecimal> amountWeek = thisWeekIncome.stream()
+ .map(IncomeVO::getAmount)
+ .collect(Collectors.toList());
+ // 使用 本月总收入
+ BigDecimal totalWeek = amountWeek.stream()
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ objects.add(totalWeek);
+ List<IncomeVO> todayIncome = incomeVOS.stream()
+ .filter(income -> {
+ Date insertTime = income.getInsertTime();
+ try {
+ LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault());
+ return insertDateTime.isAfter(startOfDay) && insertDateTime.isBefore(endOfDay);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .collect(Collectors.toList());
+ List<BigDecimal> amountToday = todayIncome.stream()
+ .map(IncomeVO::getAmount)
+ .collect(Collectors.toList());
+ // 使用 本月总收入
+ BigDecimal totalToday = amountToday.stream()
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ objects.add(totalToday);
+ // 最后put
+ monthlyData.put("yearMount",objects);
+
+ return monthlyData;
+ }
+
+ /**
+ * 运营统计-平台-用户数据
+ *
+ */
+ @RequestMapping(value = "/getUserData")
+ @ResponseBody
+ public Object getUserData() {
+
+
+ return null;
+ }
+ /**
+ * 退费-平台
+ *
+ */
+ @RequestMapping(value = "/getRefundData")
+ @ResponseBody
+ public Object getRefundData(Integer type) {
+ // 赛事活动查询query
+ CompetitionQuery competitionQuery = new CompetitionQuery();
+ List<IncomeVO> incomeVOS = new ArrayList<>();
+ // 获取学员课包退费
+ List<MoneyBack> refund = refundCoursePackageClient.getRefund();
+
+ for (MoneyBack moneyBack : refund) {
+ List<TCoursePackagePayment> coursePackagePayments = courseStuddentClient.queryByIds(moneyBack.getIds());
+ BigDecimal totalAmount = BigDecimal.ZERO;
+ for (TCoursePackagePayment payment : coursePackagePayments){
+ //课包名称
+ TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId());
+ payment.setName(tCoursePackage.getName());
+ payment.setId(Long.valueOf(tCoursePackage.getId()));
+ BigDecimal cashPayment = payment.getCashPayment();
+ if (cashPayment==null){
+ cashPayment = BigDecimal.ZERO;
+ }
+ Integer totalClassHours = payment.getTotalClassHours();
+ BigDecimal result = new BigDecimal(0);
+ if (totalClassHours!=0) {
+ result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP);
+ }
+ //单价
+ payment.setOnePrice(result);
+ int has = payment.getTotalClassHours() - payment.getLaveClassHours();
+ //剩余课时
+ payment.setHasHours(has);
+ BigDecimal onePrice = payment.getOnePrice();
+ Integer laveClassHours = payment.getLaveClassHours();
+ BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours));
+ //总价
+ payment.setRestPrice(result1);
+ System.out.println("======="+result1);
+ totalAmount = totalAmount.add(result1);
+ IncomeVO temp = new IncomeVO();
+ temp.setInsertTime(payment.getInsertTime());
+ temp.setAmount(result1);
+ incomeVOS.add(temp);
+ }
+ }
+ // 获取赛事退费记录
+ List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery);
+ for (PaymentCompetition competition : competitions) {
+ if (competition.getPayStatus() != 3) {
+ continue;
+ }
+ if (competition.getPayType()==3 || competition.getPayType()==4){
+ continue;
+ }
+ IncomeVO temp = new IncomeVO();
+ temp.setInsertTime(competition.getInsertTime());
+ if (competition.getAmount() != null) {
+ temp.setAmount(new BigDecimal(competition.getAmount().toString()));
+ }
+ incomeVOS.add(temp);
+ }
+
+ return null;
+ }
/**
* 跳转到运营商统计数据页面
*/
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GameDataController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GameDataController.java
new file mode 100644
index 0000000..c01991c
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GameDataController.java
@@ -0,0 +1,237 @@
+package com.dsh.guns.modular.system.controller.code;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.course.feignClient.other.model.Site;
+import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.ISiteBookingService;
+import com.dsh.guns.modular.system.service.IStoreService;
+import com.dsh.guns.modular.system.service.ITSiteService;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 智慧球场统计控制器
+ *
+ */
+@Controller
+@RequestMapping("/gameData")
+public class GameDataController extends BaseController {
+ private String PREFIX = "/system/gameData/";
+ @Autowired
+ private ITSiteService siteService;
+ @Autowired
+ private IStoreService storeService;
+ @Autowired
+ private ISiteBookingService siteBookingService;
+ /**
+ * 跳转到充值记录页面
+ */
+ @RequestMapping("")
+ public String index(Model model) {
+ List<String> strings = new ArrayList<>();
+ List<TSite> list = siteService.list(new QueryWrapper<TSite>());
+ List<TSite> result = new ArrayList<>();
+ for (TSite tSite : list) {
+ if (!strings.contains(tSite.getCity())){
+ strings.add(tSite.getCity());
+ result.add(tSite);
+ }
+ }
+ List<TStore> stores = storeService.list(new QueryWrapper<TStore>());
+ model.addAttribute("list",result);
+ model.addAttribute("stores",stores);
+ model.addAttribute("sites",list);
+ return PREFIX + "GameData.html";
+ }
+ /**
+ * 获取激战球场统计
+ */
+ @RequestMapping("/list")
+ @ResponseBody
+ public Object list(Integer storeId) {
+ Map<String, Object> result = new HashMap<>();
+ try {
+ // 年度数据
+ // 创建 HttpClient 实例
+ HttpClient httpClient = HttpClients.createDefault();
+ // 创建 POST 请求
+ HttpPost httpPost = new HttpPost("https://try.daowepark.com/v7/user_api/general/getBatterData");
+ // 设置请求体数据
+ String postData = "sign=0DB011836143EEE2C2E072967C9F4E4B&space_id=1001&date_type=y";
+
+ StringEntity entity = new StringEntity(postData, ContentType.APPLICATION_FORM_URLENCODED);
+ httpPost.setEntity(entity);
+ // 执行请求
+ HttpResponse response = httpClient.execute(httpPost);
+ // 处理响应
+ HttpEntity responseEntity = response.getEntity();
+ if (responseEntity != null) {
+ String responseData = EntityUtils.toString(responseEntity);
+ ObjectMapper objectMapper = new ObjectMapper();
+ Batter batter = objectMapper.readValue(responseData, Batter.class);
+ result.put("totalNumber",batter.getData().getAll_batter_num());
+ result.put("totalTime",batter.getData().getAll_batter_time());
+ List<BatterData> dataList = batter.getData().getList();
+ // 年份
+ List<String> yearList = new ArrayList<>();
+ for (BatterData data : dataList) {
+ yearList.add(data.getDate());
+ }
+ result.put("yearList",yearList);
+ // 年度数据
+ result.put("yDataList",dataList);
+ }
+ // 获取月度数据 (今年的十二个月数据)
+ Calendar calendar = Calendar.getInstance();
+ // 当前年份
+ int year = calendar.get(Calendar.YEAR);
+ // 月度数据
+ // 创建 HttpClient 实例
+ HttpClient httpClient1 = HttpClients.createDefault();
+ // 创建 POST 请求
+ HttpPost httpPost1 = new HttpPost("https://try.daowepark.com/v7/user_api/general/getBatterData");
+ // 设置请求体数据
+ String postData1 = "sign=0DB011836143EEE2C2E072967C9F4E4B&space_id=1001&date_type=m&year=2022";
+ StringEntity entity1 = new StringEntity(postData1, ContentType.APPLICATION_FORM_URLENCODED);
+ httpPost1.setEntity(entity1);
+ // 执行请求
+ HttpResponse response1 = httpClient1.execute(httpPost1);
+ // 处理响应
+ HttpEntity responseEntity1 = response1.getEntity();
+ if (responseEntity1 != null) {
+ String responseData = EntityUtils.toString(responseEntity1);
+ ObjectMapper objectMapper = new ObjectMapper();
+ Batter batter = objectMapper.readValue(responseData, Batter.class);
+ result.put("totalNumber",batter.getData().getAll_batter_num());
+ result.put("totalTime",batter.getData().getAll_batter_time());
+ List<BatterData> dataList = batter.getData().getList();
+
+ // 月度数据
+ result.put("mDataList",dataList);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+ /**
+ * 获取SUTU智慧球门统计
+ */
+ @RequestMapping("/listSUTU")
+ @ResponseBody
+ public Object listSUTU() {
+ Map<String, Object> result = new HashMap<>();
+ try {
+ String apiUrl = "https://try.daowepark.com/v7/user_api/general/gameDataRate";
+ URL url = new URL(apiUrl);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("GET");
+ // 发送请求并获取响应
+ int responseCode = connection.getResponseCode();
+ if (responseCode == HttpURLConnection.HTTP_OK) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String line;
+ StringBuilder response = new StringBuilder();
+ while ((line = reader.readLine()) != null) {
+ response.append(line);
+ }
+ reader.close();
+ // 处理响应数据
+ String data = response.toString();
+ // 使用Jackson库将JSON字符串转换为Java对象
+ ObjectMapper objectMapper = new ObjectMapper();
+ SUTU res = objectMapper.readValue(data, SUTU.class);
+ // 场地总入场人数
+ String totalNum = res.getData().getTotal_num();
+ List<SUTUData> list = res.getData().getList();
+ List<String> games = new ArrayList<>();
+ for (SUTUData sutuData : list) {
+ games.add(sutuData.getGame_name());
+ }
+ result.put("data1",list);
+ result.put("games",games);
+ return result;
+ } else {
+ System.out.println("请求失败: " + responseCode);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+ /**
+ * 获取SUTU智慧球门统计
+ */
+ @RequestMapping("/listSUTU1")
+ @ResponseBody
+ public Object listSUTU1() {
+ Map<String, Object> result = new HashMap<>();
+ try {
+ String apiUrl = "https://try.daowepark.com/v7/user_api/general/getSingleGameData?game_id=1&date_type=d&date=2021-02";
+ URL url = new URL(apiUrl);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("GET");
+ // 发送请求并获取响应
+ int responseCode = connection.getResponseCode();
+ if (responseCode == HttpURLConnection.HTTP_OK) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String line;
+ StringBuilder response = new StringBuilder();
+ while ((line = reader.readLine()) != null) {
+ response.append(line);
+ }
+ reader.close();
+ // 处理响应数据
+ String data = response.toString();
+ // 使用Jackson库将JSON字符串转换为Java对象
+ ObjectMapper objectMapper = new ObjectMapper();
+ SUTU res = objectMapper.readValue(data, SUTU.class);
+ // 场地总入场人数
+ String totalNum = res.getData().getTotal_num();
+ List<SUTUData> list = res.getData().getList();
+ List<String> games = new ArrayList<>();
+ for (SUTUData sutuData : list) {
+ games.add(sutuData.getGame_name());
+ }
+ result.put("data1",list);
+ result.put("games",games);
+ return result;
+ } else {
+ System.out.println("请求失败: " + responseCode);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+
+
+
+}
+
+
+
+
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GateDataController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GateDataController.java
new file mode 100644
index 0000000..bb2b034
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/GateDataController.java
@@ -0,0 +1,119 @@
+package com.dsh.guns.modular.system.controller.code;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.course.feignClient.account.AppUserClient;
+import com.dsh.course.feignClient.account.FinanceClient;
+import com.dsh.course.feignClient.account.VipPaymentClient;
+import com.dsh.course.feignClient.account.model.CoachType;
+import com.dsh.course.feignClient.account.model.TAppUser;
+import com.dsh.course.feignClient.account.model.VipPayment;
+import com.dsh.course.feignClient.competition.CompetitionClient;
+import com.dsh.course.feignClient.competition.model.Competition;
+import com.dsh.course.feignClient.competition.model.CompetitionQuery;
+import com.dsh.course.feignClient.competition.model.PaymentCompetition;
+import com.dsh.course.feignClient.course.CancelledClassesClient;
+import com.dsh.course.feignClient.course.CoursePackagePaymentClient;
+import com.dsh.course.feignClient.other.SiteClient;
+import com.dsh.course.feignClient.other.StoreClient;
+import com.dsh.course.feignClient.other.model.Site;
+import com.dsh.guns.config.UserExt;
+import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.ICityService;
+import com.dsh.guns.modular.system.service.IRegionService;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
+import com.google.maps.internal.ApiResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.math.BigDecimal;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 闸机数据统计控制器
+ *
+ */
+@Controller
+@RequestMapping("/gateData")
+public class GateDataController extends BaseController {
+
+ @Autowired
+ private SiteClient siteClient;
+ private String PREFIX = "/system/gateData/";
+
+
+
+ /**
+ * 跳转到充值记录页面
+ */
+ @RequestMapping("")
+ public String index(Model model) {
+ return PREFIX + "GateData.html";
+ }
+ /**
+ * 获取教练类型列表
+ */
+ @RequestMapping("/list")
+ @ResponseBody
+ public Object list() {
+ List<Site> list = siteClient.getList();
+ try {
+ for (Site site : list) {
+ String apiUrl = "https://try.daowepark.com/v7/user_api/general/spaceDoorData?space_id=" + site.getId();
+ URL url = new URL(apiUrl);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("GET");
+ // 发送请求并获取响应
+ int responseCode = connection.getResponseCode();
+ if (responseCode == HttpURLConnection.HTTP_OK) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String line;
+ StringBuilder response = new StringBuilder();
+ while ((line = reader.readLine()) != null) {
+ response.append(line);
+ }
+ reader.close();
+ // 处理响应数据
+ String data = response.toString();
+ // 使用Jackson库将JSON字符串转换为Java对象
+ ObjectMapper objectMapper = new ObjectMapper();
+ GateDataResponse res = objectMapper.readValue(data, GateDataResponse.class);
+ // 访问Java对象中的数据
+ int code = res.getCode();
+ String message = res.getMessage();
+ // 场地总入场人数
+ int totalNum = res.getData().getTotal_num();
+ List<GateDataResponse.Data.Region> regionNumList = res.getData().getRegion_num();
+ for (GateDataResponse.Data.Region regionNum : regionNumList) {
+ String name = regionNum.getName();
+ int enterNum = regionNum.getEnter_num();
+ System.out.println("Region: " + name + ", EnterNum: " + enterNum);
+ }
+ return regionNumList;
+
+ } else {
+ System.out.println("请求失败: " + responseCode);
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return new ArrayList<>();
+ }
+}
+
+
+
+
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
new file mode 100644
index 0000000..3a2fd41
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
@@ -0,0 +1,302 @@
+package com.dsh.guns.modular.system.controller.code;
+
+
+import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.feignClient.account.CityManagerClient;
+import com.dsh.course.feignClient.account.CoachClient;
+import com.dsh.course.feignClient.account.CoachTypeClient;
+import com.dsh.course.feignClient.account.model.CityManager;
+import com.dsh.course.feignClient.account.model.Coach;
+import com.dsh.course.feignClient.account.model.CoachSerchVO;
+import com.dsh.course.feignClient.account.model.CoachType;
+import com.dsh.guns.config.UserExt;
+import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.core.common.constant.factory.PageFactory;
+import com.dsh.guns.core.util.SinataUtil;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.ICityService;
+import com.dsh.guns.modular.system.service.IUserService;
+import com.dsh.guns.modular.system.service.TOperatorCityService;
+import com.dsh.guns.modular.system.service.TOperatorService;
+import com.dsh.guns.modular.system.util.ResultUtil;
+import io.swagger.models.auth.In;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+/**
+ * 运营商管理
+ */
+@Controller
+@RequestMapping("/operator")
+public class OperatorController extends BaseController {
+
+ private String PREFIX = "/system/operator/";
+ @Autowired
+ private TOperatorService operatorService;
+ @Autowired
+ private TOperatorCityService operatorCityService;
+ @Autowired
+ private IUserService userService;
+ @Autowired
+ private ICityService cityService;
+ /**
+ * 跳转运营商管理首页
+ */
+ @RequestMapping("")
+ public String index(Model model) {
+ return PREFIX + "Operator.html";
+ }
+
+ /**
+ * 跳转运营商重置密码页面
+ */
+ @RequestMapping("/resetPassword")
+ public String resetPassword(Model model) {
+ return PREFIX + "Operator_resetPassword.html";
+ }
+ /**
+ * 跳转运营商添加页面
+ */
+ @RequestMapping("/add")
+ public String add(Model model) {
+ List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("provinceList",list);
+ return PREFIX + "Operator_add.html";
+ }
+ /**
+ * 跳转运营商编辑页面
+ */
+ @RequestMapping("/update/{id}")
+ public String update(Model model,@PathVariable("id") Integer id) {
+ List<TCity> provinceList = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("provinceList",provinceList);
+ model.addAttribute("id",id);
+ TOperator byId = operatorService.getById(id);
+ // 运营商名称
+ model.addAttribute(byId.getName());
+ User byId1 = userService.getById(byId.getUserId());
+ model.addAttribute("userName",byId1.getName());
+ model.addAttribute("phone",byId1.getPhone());
+ model.addAttribute("data",byId);
+ // 获取全部的省
+ List<TOperatorCity> list = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", id).eq("pid",0));
+ List<OperatorCityVO> result = new ArrayList<>();
+
+ for (TOperatorCity tOperatorCity : list) {
+ // 拿到省下面的所有市
+ List<TOperatorCity> cities= operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("pid", tOperatorCity.getId()));
+ if (cities.size()==0){
+ OperatorCityVO operatorCityVO = new OperatorCityVO();
+ operatorCityVO.setProvince(tOperatorCity.getName());
+ operatorCityVO.setProvinceCode(tOperatorCity.getCode());
+ result.add(operatorCityVO);
+ }
+ for (TOperatorCity city : cities) {
+ OperatorCityVO operatorCityVO = new OperatorCityVO();
+ operatorCityVO.setProvince(tOperatorCity.getName());
+ operatorCityVO.setProvinceCode(tOperatorCity.getCode());
+ operatorCityVO.setCity(city.getName());
+ operatorCityVO.setCityCode(city.getCode());
+ result.add(operatorCityVO);
+ }
+ }
+ model.addAttribute("list",result);
+ return PREFIX + "Operator_edit.html";
+ }
+ /**
+ * 获取运营商列表
+ */
+ @RequestMapping(value = "/listAll")
+ @ResponseBody
+ public Object listAll(String userName, String phone,Integer type) {
+ Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
+ List<Map<String,Object>> list = operatorService.listAll(page,userName,phone,type);
+ page.setRecords(list);
+ return super.packForBT(page);
+ }
+
+ /**
+ * 批量重置密码
+ * @return
+ */
+ @RequestMapping(value = "/pwd")
+ @ResponseBody
+ public Object pwd(@RequestBody OperatorRestPwd pwd ) {
+ try {
+ List<TOperator> list = operatorService.list(new QueryWrapper<TOperator>().in("id",pwd.getIds()));
+ List<Integer> userIds = list.stream()
+ .map(TOperator::getUserId)
+ .collect(Collectors.toList());
+ String a123456 = SecureUtil.md5("123456");
+ List<User> users = userService.list(new QueryWrapper<User>().in("id", userIds));
+ for (User user : users) {
+ user.setPassword(a123456);
+ }
+ userService.updateBatchById(users);
+ return SUCCESS_TIP;
+ }catch (Exception e){
+ e.printStackTrace();
+ return ERROR;
+ }
+ }
+ /**
+ * 1为解冻 2为冻结
+ *
+ * @return
+ */
+ @RequestMapping("/changeState")
+ @ResponseBody
+ public Object changeState(@RequestBody CoachChangeStateVO vo){
+ operatorService.changeState(vo);
+ return ResultUtil.success();
+ }
+ /**
+ * 添加运营商
+ */
+ @ResponseBody
+ @RequestMapping(value = "/addOperator")
+ public ResultUtil addOperator(String name,String userName,String phone,Integer type ,@RequestParam String comArr) {
+ User one = userService.getOne(new QueryWrapper<User>().eq("name", name).eq("phone", phone));
+ if (one!=null){
+ return ResultUtil.error("当前管理员名称和电话已存在!");
+ }
+ User user = new User();
+ user.setName(userName);
+ user.setPhone(phone);
+ user.setObjectType(2);
+ userService.save(user);
+ TOperator data = new TOperator();
+ data.setUserId(user.getId());
+ data.setName(name);
+ data.setType(type);
+ data.setStatus(1);
+ data.setState(1);
+ operatorService.save(data);
+ if (SinataUtil.isNotEmpty(comArr)){
+ JSONArray jsonArray = JSON.parseArray(comArr);
+ int size = jsonArray.size();
+ for (int i = 0; i < size; i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ TOperatorCity province = new TOperatorCity();
+ TOperatorCity city = new TOperatorCity();
+ TOperatorCity one1 = operatorCityService.getOne(new QueryWrapper<TOperatorCity>()
+ .eq("name", jsonObject.getString("province"))
+ .eq("operatorId", data.getId()));
+ // 省
+ if (one1==null){
+ province.setName(jsonObject.getString("province"));
+ province.setCode(jsonObject.getInteger("provinceCode"));
+ province.setPid(0);
+ province.setType(jsonObject.getInteger("areaType"));
+ province.setOperatorId(data.getId());
+ city.setPid(province.getId());
+ operatorCityService.save(province);
+ // 市
+ if (!jsonObject.getString("city").equals("")){
+ city.setName(jsonObject.getString("city"));
+ city.setCode(jsonObject.getInteger("cityCode"));
+ city.setPid(province.getId());
+ city.setType(jsonObject.getInteger("areaType"));
+ city.setOperatorId(data.getId());
+ operatorCityService.save(city);
+ }
+ }else{
+ // 市
+ if (!jsonObject.getString("city").equals("")){
+ city.setName(jsonObject.getString("city"));
+ city.setCode(jsonObject.getInteger("cityCode"));
+ city.setPid(one1.getId());
+ city.setType(jsonObject.getInteger("areaType"));
+ city.setOperatorId(data.getId());
+ operatorCityService.save(city);
+ }
+ }
+ }
+ }
+ return ResultUtil.success("添加成功");
+ }
+ /**
+ * 添加运营商
+ */
+ @ResponseBody
+ @RequestMapping(value = "/updateOperator")
+ public ResultUtil updateOperator(Integer id,String name,String userName,String phone,Integer type ,@RequestParam String comArr) {
+ User one = userService.getOne(new QueryWrapper<User>().eq("name", name).eq("phone", phone));
+ if (one!=null){
+ return ResultUtil.error("当前管理员名称和电话已存在!");
+ }
+ operatorCityService.remove(new QueryWrapper<TOperatorCity>().eq("operatorId",id));
+ User user = new User();
+ user.setName(userName);
+ user.setPhone(phone);
+ user.setObjectType(2);
+ String a123456 = SecureUtil.md5("a123456");
+ user.setPassword(a123456);
+ userService.save(user);
+ TOperator data = new TOperator();
+ data.setId(id);
+ data.setUserId(user.getId());
+ data.setName(name);
+ data.setType(type);
+ data.setStatus(1);
+ data.setState(1);
+ operatorService.updateById(data);
+ if (type != 1){
+ if (SinataUtil.isNotEmpty(comArr)){
+ JSONArray jsonArray = JSON.parseArray(comArr);
+ int size = jsonArray.size();
+ for (int i = 0; i < size; i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ TOperatorCity province = new TOperatorCity();
+ TOperatorCity city = new TOperatorCity();
+ TOperatorCity one1 = operatorCityService.getOne(new QueryWrapper<TOperatorCity>()
+ .eq("name", jsonObject.getString("province"))
+ .eq("operatorId", data.getId()));
+ // 省
+ if (one1==null){
+ province.setName(jsonObject.getString("province"));
+ province.setCode(jsonObject.getInteger("provinceCode"));
+ province.setPid(0);
+ province.setType(jsonObject.getInteger("areaType"));
+ province.setOperatorId(data.getId());
+ city.setPid(province.getId());
+ operatorCityService.save(province);
+ // 市
+ if (!jsonObject.getString("city").equals("")){
+ city.setName(jsonObject.getString("city"));
+ city.setCode(jsonObject.getInteger("cityCode"));
+ city.setPid(province.getId());
+ city.setType(jsonObject.getInteger("areaType"));
+ city.setOperatorId(data.getId());
+ operatorCityService.save(city);
+ }
+ }else{
+ // 市
+ if (!jsonObject.getString("city").equals("")){
+ city.setName(jsonObject.getString("city"));
+ city.setCode(jsonObject.getInteger("cityCode"));
+ city.setPid(one1.getId());
+ city.setType(jsonObject.getInteger("areaType"));
+ city.setOperatorId(data.getId());
+ operatorCityService.save(city);
+ }
+ }
+ }
+ }
+ }
+ return ResultUtil.success("添加成功");
+ }
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java
new file mode 100644
index 0000000..8190a57
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java
@@ -0,0 +1,112 @@
+package com.dsh.guns.modular.system.controller.code;
+
+
+import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.feignClient.account.StoreStaffClient;
+import com.dsh.course.feignClient.account.model.TStoreStaff;
+import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.core.common.constant.factory.PageFactory;
+import com.dsh.guns.core.util.SinataUtil;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.*;
+import com.dsh.guns.modular.system.service.impl.TOperatorUserServiceImpl;
+import com.dsh.guns.modular.system.util.ResultUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * 运营商管理
+ */
+@Controller
+@RequestMapping("/operatorUser")
+public class OperatorUserController extends BaseController {
+
+ private String PREFIX = "/system/operatorUser/";
+ @Autowired
+ private TOperatorService operatorService;
+ @Autowired
+ private TOperatorCityService operatorCityService;
+ @Autowired
+ private IUserService userService;
+ @Autowired
+ private ICityService cityService;
+ @Autowired
+ private IOperatorUserService operatorUserService;
+ @Autowired
+ private IStoreService storeService;
+ @Autowired
+ private StoreStaffClient storeStaffClient;
+ /**
+ * 跳转运营商管理首页
+ */
+ @RequestMapping("")
+ public String index(Model model) {
+ List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("provinceList",list);
+ return PREFIX + "OperatorUser.html";
+ }
+
+
+ /**
+ * 跳转运营商商户去认证页面
+ */
+ @RequestMapping("/proportion/{id}")
+ public String update(Model model,@PathVariable("id") Integer id) {
+ List<TCity> provinceList = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("provinceList",provinceList);
+ List<Bank> bankList = operatorService.getBankList();
+ TStore store = storeService.getOne(new QueryWrapper<TStore>().eq("operatorId", id));
+ model.addAttribute("storeName",store.getName());
+// TStoreStaff storeByStoreStaffId = storeStaffClient.getStoreByStoreStaffId(store.getStoreStaffId());
+// model.addAttribute("storeStaff",storeByStoreStaffId.getName());
+// model.addAttribute("storePhone",storeByStoreStaffId.getPhone());
+ model.addAttribute("bankList",bankList);
+ return PREFIX + "OperatorUser_auth.html";
+ }
+ /**
+ * 获取运营商列表
+ */
+ @RequestMapping(value = "/listAll")
+ @ResponseBody
+ public Object listAll(String province,String city,String userName, String phone,Integer platform,Integer type,Integer state) {
+ Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
+ List<Map<String,Object>> list = operatorUserService.listAll(page,province,city,userName,phone,platform,type,state);
+ page.setRecords(list);
+ return super.packForBT(page);
+ }
+
+ /**
+ * 批量重置密码
+ * @return
+ */
+ @RequestMapping(value = "/addProportion")
+ @ResponseBody
+ public Object pwd(Integer id, BigDecimal alipay,BigDecimal wechat) {
+ List<OperatorUser> list = operatorUserService.list(new QueryWrapper<OperatorUser>().eq("operatorId", id));
+ for (OperatorUser operatorUser : list) {
+ if (operatorUser.getPlatform()==1){
+ operatorUser.setProportion(wechat);
+ operatorUserService.updateById(operatorUser);
+ }else {
+ operatorUser.setProportion(alipay);
+ operatorUserService.updateById(operatorUser);
+ }
+ }
+ return SUCCESS_TIP;
+ }
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
index 77b294d..8f53790 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.account.AppUserClient;
import com.dsh.course.feignClient.account.CityManagerClient;
@@ -18,11 +19,8 @@
import com.dsh.guns.core.base.tips.SuccessTip;
import com.dsh.guns.core.common.constant.factory.PageFactory;
import com.dsh.guns.core.util.ToolUtil;
-import com.dsh.guns.modular.system.model.CouponDataVo;
-import com.dsh.guns.modular.system.model.Region;
-import com.dsh.guns.modular.system.model.TStore;
-import com.dsh.guns.modular.system.service.IRegionService;
-import com.dsh.guns.modular.system.service.IStoreService;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.*;
import com.dsh.guns.modular.system.util.OBSUploadUtil;
import com.dsh.guns.modular.system.util.OssUploadUtil;
import com.dsh.guns.modular.system.util.ResultUtil;
@@ -48,10 +46,7 @@
@RequestMapping("/tCouponManage")
public class TCouponController {
-
-
private String PREFIX = "/system/tCoupon/";
-
@Resource
private IRegionService regiService;
@@ -67,8 +62,12 @@
@Autowired
private AppUserClient appUserClient;
-
-
+ @Autowired
+ private IUserService userService;
+ @Autowired
+ private TOperatorService operatorService;
+ @Autowired
+ private TOperatorCityService operatorCityService;
/**
* 跳转到优惠券管理首页
@@ -88,7 +87,6 @@
model.addAttribute("userType",objectType);
return PREFIX + "TQuestionAdd.html";
}
-
@RequestMapping("/coupon_record/{id}")
public String memberCouponAdd(@PathVariable Integer id,Model model) {
@@ -164,7 +162,7 @@
*/
@RequestMapping("/storeList")
public String storePage(Model model) {
- return PREFIX + "TQuestionEdit.html";
+ return PREFIX + "TStoreList.html";
}
@RequestMapping("/updateType")
@ResponseBody
@@ -175,11 +173,7 @@
@RequestMapping("/storeDetailsOfSearch")
@ResponseBody
- public Object listOfStore(Integer provinceId,Integer cityId,Integer cityManagerId,String storeName){
- System.out.println("provinceId"+provinceId);
- System.out.println("cityId"+cityId);
- System.out.println("cityManagerId"+cityManagerId);
- System.out.println("storeName"+storeName);
+ public Object listOfStore(Integer provinceId,Integer cityId,Integer operatorId,String storeName){
String provinceCode = null;
String cityCode = null;
if (ToolUtil.isNotEmpty(provinceId)){
@@ -191,17 +185,22 @@
cityCode = cityRegion.getCode();
}
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
- List<Map<String,Object>> storeList = storeService.queryListOfpage(provinceCode,cityCode,cityManagerId,storeName,page);
+ List<Map<String,Object>> storeList = storeService.queryListOfpage(provinceCode,cityCode,operatorId,storeName,page);
if (storeList.size() > 0 ){
for (Map<String, Object> stringObjectMap : storeList) {
String provinceName = (String) stringObjectMap.get("province");
String cityName = (String) stringObjectMap.get("city");
stringObjectMap.put("provinceCity",provinceName+cityName);
- Integer managerId = (Integer) stringObjectMap.get("cityManagerId");
- CityManager cityManager = cmgrClient.queryCityManagerById(managerId);
- if (ToolUtil.isNotEmpty(cityManager)){
- stringObjectMap.put("accountName",cityManager.getName()+"+"+cityManager.getPhone());
+ Integer managerId = (Integer) stringObjectMap.get("operatorId");
+ if (managerId==null){
+ stringObjectMap.put("accountName","平台");
+ }else{
+ TOperator operator = operatorService.getOne(new QueryWrapper<TOperator>().eq("id", managerId));
+ if (ToolUtil.isNotEmpty(operator)){
+ stringObjectMap.put("accountName",operator.getName());
+ }
}
+
}
}
return storeList;
@@ -294,6 +293,15 @@
return regiService.list(new LambdaQueryWrapper<Region>()
.eq(Region::getParentId,province));
}
+ // 通过市 获取运营商
+ @RequestMapping(value = "/getOperator")
+ @ResponseBody
+ public Object getOperator(Integer city){
+ List<TOperatorCity> name = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("name", city));
+ List<Integer> collect = name.stream().map(TOperatorCity::getOperatorId)
+ .collect(Collectors.toList());
+ return operatorService.list(new QueryWrapper<TOperator>().in("id",collect));
+ }
@RequestMapping(value = "/uploadPic")
@ResponseBody
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
index bb8cc3f..58cef35 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -16,6 +16,7 @@
import com.dsh.guns.core.util.ToolUtil;
import com.dsh.guns.modular.system.model.TSite;
import com.dsh.guns.modular.system.model.TStore;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
import com.dsh.guns.modular.system.service.ICoursePackageService;
import com.dsh.guns.modular.system.service.IStoreService;
import com.dsh.guns.modular.system.service.ITSiteService;
@@ -613,6 +614,7 @@
@ResponseBody
@PostMapping("/queryCity")
public List<Map<String, Object>> queryCity(String code){
+
Integer objectType = UserExt.getUser().getObjectType();
Integer objectId = UserExt.getUser().getObjectId();
String cityCode = null;
@@ -620,7 +622,24 @@
CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
cityCode = cityManager.getCityCode();
}
+ System.out.println("======="+storeService.queryCity(code, cityCode));
return storeService.queryCity(code, cityCode);
+ }
+
+
+ @ResponseBody
+ @PostMapping("/queryCity1/{code}")
+ public ResultUtil queryCity1(@PathVariable("code") String code){
+ Integer objectType = UserExt.getUser().getObjectType();
+ Integer objectId = UserExt.getUser().getObjectId();
+ String cityCode = null;
+ if(objectType == 2){//城市管理员
+ CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
+ cityCode = cityManager.getCityCode();
+ }
+ System.out.println("======="+storeService.queryCity(code, cityCode));
+// return storeService.queryCity(code, cityCode);
+ return new ResultUtil(0,null,null,storeService.queryCity(code, cityCode),null);
}
@@ -633,7 +652,28 @@
@PostMapping("/queryStore")
public List<TStore> queryStore(String cityCode){
List<TStore> list = storeService.list(new QueryWrapper<TStore>().eq("cityCode", cityCode).eq("state", 1));
+ System.out.println("====list="+list);
return list;
+ }
+
+
+ @ResponseBody
+ @PostMapping("/queryStore1/{cityCode}")
+ public ResultUtil queryStore1(@PathVariable("cityCode") String cityCode){
+ List<TStore> list = storeService.list(new QueryWrapper<TStore>().select("id","name").eq("cityCode", cityCode).eq("state", 1));
+// Map<String,Integer> map = new LinkedHashMap<>();
+ List<SelectDto> selectDtos = new ArrayList<>();
+ Map<String,Integer> map = new HashMap<>();
+// for (TStore store : list) {
+// SelectDto selectDto = new SelectDto();
+// selectDto.setId(Long.valueOf(store.getId()));
+// selectDto.setValue(store.getName());
+// selectDtos.add(selectDto);
+//
+// }
+// map.put("options",selectDtos);
+
+ return new ResultUtil(0,0,null,list,null);
}
/**
@@ -644,7 +684,8 @@
@ResponseBody
@PostMapping("/querySite")
public List<TSite> querySite(Integer storeId){
- List<TSite> list = siteService.list(new QueryWrapper<TSite>().eq("storeId", storeId).eq("state", 1));
+ System.out.println("==storeId==="+storeId);
+ List<TSite> list = siteService.list(new QueryWrapper<TSite>().select("id","name").eq("storeId", storeId).eq("state", 1));
return list;
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
index 09efcda..764286a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
@@ -318,7 +318,7 @@
temp.setAmount(rechargeRecordsVO.getAmount());
}
temp.setIncomeType(2);
- temp.setState(rechargeRecordsVO.getState());
+ temp.setState(rechargeRecordsVO.getPayStatus());
incomeVOS.add(temp);
}
}
@@ -405,6 +405,7 @@
}
return incomeVOS;
}
+
/**
* 获取收入管理列表
*/
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
index c182871..cfad2a4 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -29,6 +29,8 @@
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.sun.org.apache.regexp.internal.RE;
+import groovyjarjarpicocli.CommandLine;
import net.bytebuddy.asm.Advice;
import org.aspectj.weaver.ast.Var;
import org.springframework.beans.factory.annotation.Autowired;
@@ -89,6 +91,17 @@
private SiteLockClient siteLockClient;
+ /**
+ * 选择市 返回场地列表
+ */
+ @ResponseBody
+ @RequestMapping(value = "/getSiteByCity")
+ public List<TSite> getSiteByCity(String oneId) {
+ if (oneId.equals("")){
+ return siteService.list(new QueryWrapper<TSite>());
+ }
+ return siteService.list(new QueryWrapper<TSite>().eq("cityCode",oneId));
+ }
/**
* 跳转到场地管理首页
*/
@@ -373,6 +386,7 @@
Region name = regionService.getOne(new QueryWrapper<Region>().eq("name", province));
return regionService.list(new QueryWrapper<Region>().eq("parent_id", name.getId()));
}
+
/**
* 添加场地管理
*/
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TicketController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TicketController.java
new file mode 100644
index 0000000..1b3ab19
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TicketController.java
@@ -0,0 +1,415 @@
+package com.dsh.guns.modular.system.controller.code;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.feignClient.account.AppUserClient;
+import com.dsh.course.feignClient.account.CityManagerClient;
+import com.dsh.course.feignClient.account.model.CityManager;
+import com.dsh.course.feignClient.account.model.QueryByNamePhone;
+import com.dsh.course.feignClient.account.model.TAppUser;
+import com.dsh.course.feignClient.activity.CouponClient;
+import com.dsh.course.feignClient.activity.PointMercharsClient;
+import com.dsh.course.feignClient.activity.model.*;
+import com.dsh.guns.config.UserExt;
+import com.dsh.guns.core.base.tips.SuccessTip;
+import com.dsh.guns.core.common.constant.factory.PageFactory;
+import com.dsh.guns.core.util.ToolUtil;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.ICityService;
+import com.dsh.guns.modular.system.service.IRegionService;
+import com.dsh.guns.modular.system.service.IStoreService;
+import com.dsh.guns.modular.system.util.OBSUploadUtil;
+import com.dsh.guns.modular.system.util.ResultUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * 优惠券管理 控制器
+ */
+
+@Controller
+@RequestMapping("/ticket")
+public class TicketController {
+ private String PREFIX = "/system/ticket/";
+ @Resource
+ private IRegionService regiService;
+ @Resource
+ private IStoreService storeService;
+
+ @Resource
+ private CouponClient client;
+
+ @Resource
+ private CityManagerClient cmgrClient;
+
+ @Autowired
+ private AppUserClient appUserClient;
+ @Autowired
+ private ICityService cityService;
+
+ @Resource
+ private PointMercharsClient pointMercharsClient;
+
+ /**
+ * 跳转到优惠券管理首页
+ */
+ @RequestMapping("")
+ public String index(Model model) {
+ return PREFIX + "ticket.html";
+ }
+ /**
+ * 跳转到添加
+ */
+ @RequestMapping("/add")
+ public String add(Model model) {
+ Integer objectType = UserExt.getUser().getObjectType();
+ System.out.println(objectType);
+ model.addAttribute("userType",objectType);
+ List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("list",list);
+ return PREFIX + "ticket_add.html";
+ }
+
+ @RequestMapping("/info/{id}")
+ public String info(@PathVariable Integer id,Model model) {
+ Coupon coupon = client.queryCouponById(id);
+ model.addAttribute("id",id);
+ model.addAttribute("type",coupon.getType());
+ return PREFIX + "ticket_info.html";
+ }
+
+ /**
+ *
+ * @param id
+ * @param model
+ * @param type = 1 编辑 type=2 查看详情
+ * @return
+ */
+ @RequestMapping("/update/{id}/{type}")
+ public String update(@PathVariable("id") Integer id,Model model,@PathVariable("type")Integer type) {
+ model.addAttribute("id",id);
+ model.addAttribute("type",type);
+ return PREFIX + "ticket_edit.html";
+ }
+
+ /**
+ * 1为上架 2为下架
+ *
+ * @return
+ */
+ @RequestMapping("/changeState")
+ @ResponseBody
+ public Object changeState(@RequestBody CoachChangeStateVO vo){
+ pointMercharsClient.changeState(vo);
+ return ResultUtil.success();
+ }
+ /**
+ * 获取门票列表
+ */
+ @RequestMapping(value = "/listAll")
+ @ResponseBody
+ public Object listAll(String name,Integer type,Integer redemptionMethod,
+ Integer userPopulation,Integer activeStatus,Integer state) {
+ Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
+ IntegralGoodsOfSearch integralGoodsOfSearch = new IntegralGoodsOfSearch();
+ integralGoodsOfSearch.setName(name);
+ integralGoodsOfSearch.setType(type);
+ integralGoodsOfSearch.setRedemptionMethod(redemptionMethod);
+ integralGoodsOfSearch.setUserPopulation(userPopulation);
+ integralGoodsOfSearch.setActiveStatus(activeStatus);
+ integralGoodsOfSearch.setState(state);
+ integralGoodsOfSearch.setPage(page);
+ return pointMercharsClient.ticketList(integralGoodsOfSearch);
+ }
+
+
+
+
+ /**
+ * 跳转到门店管理列表页
+ */
+ @RequestMapping("/storeList")
+ public String storePage(Model model) {
+ return PREFIX + "TStoreList.html";
+ }
+ @RequestMapping("/updateType")
+ @ResponseBody
+ public Object updateType(Long id) {
+ client.updateType(id);
+ return new SuccessTip<>();
+ }
+
+ @RequestMapping("/storeDetailsOfSearch")
+ @ResponseBody
+ public Object listOfStore(Integer provinceId,Integer cityId,Integer cityManagerId,String storeName){
+ System.out.println("provinceId"+provinceId);
+ System.out.println("cityId"+cityId);
+ System.out.println("cityManagerId"+cityManagerId);
+ System.out.println("storeName"+storeName);
+ String provinceCode = null;
+ String cityCode = null;
+ if (ToolUtil.isNotEmpty(provinceId)){
+ Region provinceRegion = regiService.getById(provinceId);
+ provinceCode = provinceRegion.getCode();
+ }
+ if (ToolUtil.isNotEmpty(cityId)){
+ Region cityRegion = regiService.getById(cityId);
+ cityCode = cityRegion.getCode();
+ }
+ Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+ List<Map<String,Object>> storeList = storeService.queryListOfpage(provinceCode,cityCode,cityManagerId,storeName,page);
+ if (storeList.size() > 0 ){
+ for (Map<String, Object> stringObjectMap : storeList) {
+ String provinceName = (String) stringObjectMap.get("province");
+ String cityName = (String) stringObjectMap.get("city");
+ stringObjectMap.put("provinceCity",provinceName+cityName);
+ Integer managerId = (Integer) stringObjectMap.get("cityManagerId");
+ CityManager cityManager = cmgrClient.queryCityManagerById(managerId);
+ if (ToolUtil.isNotEmpty(cityManager)){
+ stringObjectMap.put("accountName",cityManager.getName()+"+"+cityManager.getPhone());
+ }
+ }
+ }
+ return storeList;
+ }
+
+ @RequestMapping(value = "/listRecord")
+ @ResponseBody
+ public Object listRecord(Integer id,String name, Integer type, String phone) {
+ Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+ List<TAppUser> tAppUsers = appUserClient.queryByNamePhone(new QueryByNamePhone(name, phone));
+ if(tAppUsers.size()==0){
+ return new ArrayList<>();
+ }
+ CouponRecordQuery ofSearch = new CouponRecordQuery();
+ ofSearch.setId(id);
+ ofSearch.setLimit(page.getSize());
+ ofSearch.setOffset(page.getCurrent());
+ ofSearch.setIds(tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()));
+ ofSearch.setType(type);
+ List<Map<String, Object>> maps = client.listRecord(ofSearch);
+ for (Map<String, Object> map : maps) {
+ map.put("id",map.get("id").toString());
+ for (TAppUser tAppUser : tAppUsers) {
+ if(map.get("userId").equals(tAppUser.getId())){
+ map.put("name",tAppUser.getName());
+ map.put("phone",tAppUser.getPhone());
+ }
+ }
+ }
+ return maps;
+ }
+
+ @RequestMapping(value = "/getProvince")
+ @ResponseBody
+ public Object getProvince(){
+ return regiService.list(new LambdaQueryWrapper<Region>()
+ .eq(Region::getParentId,0));
+ }
+
+ @RequestMapping(value = "/onShelf")
+ @ResponseBody
+ public Object onShelf(Integer id,Integer type){
+ Coupon coupon = client.queryCouponById(id);
+ coupon.setState(type);
+ client.updateCouponData(coupon);
+ return new SuccessTip<>();
+ }
+
+
+ @RequestMapping(value = "/getCity")
+ @ResponseBody
+ public Object getCity(Integer province){
+ return regiService.list(new LambdaQueryWrapper<Region>()
+ .eq(Region::getParentId,province));
+ }
+
+ @RequestMapping(value = "/uploadPic")
+ @ResponseBody
+ public Object add(@RequestParam("file") MultipartFile imgFile) throws IOException {
+ String originalFilename = imgFile.getOriginalFilename();
+ String newName = originalFilename.substring(imgFile.getOriginalFilename().lastIndexOf("."));
+ String url = OBSUploadUtil.inputStreamUpload(imgFile);
+ Map<String, String> map = new HashMap<String, String>();
+ //是否上传成功
+ map.put("state", "SUCCESS");
+ //现在文件名称
+ map.put("title", newName);
+ //文件原名称
+ map.put("original", originalFilename);
+ //文件类型 .+后缀名
+ map.put("type", originalFilename.substring(imgFile.getOriginalFilename().lastIndexOf(".")));
+ //文件路径
+ map.put("url", url);
+ //文件大小(字节数)
+ map.put("size", imgFile.getSize() + "");
+ System.out.println(map);
+ return url;
+ }
+
+ /**
+ * 提交添加
+ */
+ @PostMapping(value = "/commitData")
+ @ResponseBody
+ public Object commitData( CouponDataVo dataVo){
+ System.out.println(dataVo);
+ Integer objectType = UserExt.getUser().getObjectType();
+ dataVo.setUserType(objectType);
+ client.insertIntoData(dataVo);
+ return new SuccessTip<>();
+ }
+ @PostMapping(value = "/update")
+ @ResponseBody
+ public Object update( Integer id,Integer num,Integer num1,String text){
+ Coupon coupon = client.queryCouponById(id);
+ coupon.setQuantityIssued(num);
+ coupon.setPickUpQuantity(num1);
+ coupon.setIllustrate(text);
+ client.updateCouponData(coupon);
+ return new SuccessTip<>();
+ }
+
+
+ /**
+ * 获取 积分商品列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object listOfIntegralGoods(String name, Integer type, Integer redemptionMethod , Integer userPopulation, Integer activeStatus, Integer state) {
+ Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+
+ IntegralGoodsOfSearch ofSearch = new IntegralGoodsOfSearch();
+ ofSearch.setPage(page);
+ ofSearch.setName(name);
+ ofSearch.setType(type);
+ ofSearch.setRedemptionMethod(redemptionMethod);
+ ofSearch.setUserPopulation(userPopulation);
+ ofSearch.setActiveStatus(activeStatus);
+ ofSearch.setState(state);
+ System.out.println(ofSearch);
+ return pointMercharsClient.getIntegralGoodsListOfSearch(ofSearch);
+ }
+
+
+
+ /**
+ * 跳转到修改车辆管理
+ */
+ @RequestMapping("/tGoods_update/{id}")
+ public String tCityUpdate(@PathVariable Integer id, Model model) {
+ System.out.println("id:"+id);
+ PointMercharsVo pointMercharsVo = pointMercharsClient.queryPointMerchaseDetailOfId(id);
+ System.out.println("pointMercharsVo:"+pointMercharsVo);
+ String[] split = pointMercharsVo.getPics().split(",");
+ model.addAttribute("item",pointMercharsVo);
+ model.addAttribute("pictures",split);
+ return PREFIX + "TGoods_edit.html";
+ }
+
+ /**
+ * 上下架处理操作
+ * @param id 商品id
+ * @param type 1=上架操作 2=下架操作
+ * @return
+ */
+ @RequestMapping("/grounding")
+ @ResponseBody
+ public Object updateGrounding(Integer id,Integer type) {
+ System.out.println(id);
+ System.out.println(type);
+ Map<String,Integer> map = new HashMap<>();
+ map.put("id",id);
+ map.put("type",type);
+ boolean b = pointMercharsClient.updateGoodsGroudingStatus(map);
+ System.out.println(b);
+ return new SuccessTip<>();
+ }
+
+
+
+ /**
+ * 购买详情
+ * @param id 商品id
+ * @return
+ */
+ @RequestMapping("/tPay_detail/{id}")
+ public String payOfDetails(@PathVariable(value = "id") Integer id,Model model) {
+ System.out.println(id);
+ model.addAttribute("id",id);
+ return PREFIX + "TGoods_pay.html";
+ }
+
+
+ /**
+ * 获取 购买记录列表
+ */
+ @ResponseBody
+ @RequestMapping(value = "/payList/{id}")
+ public Object payList(@PathVariable(value = "id") Integer id, String name, String phone, Integer status) {
+ PointMercharsPayedVo payedVo = new PointMercharsPayedVo();
+ payedVo.setId(id);
+ payedVo.setName(name);
+ payedVo.setPhone(phone);
+ payedVo.setStatus(status);
+ List<Map<String,Object>> points = pointMercharsClient.queryUserPayedGoodsList(payedVo);
+ System.out.println(points);
+ if (points.size() > 0 ){
+ for (Map<String, Object> point : points) {
+ Integer userId = (Integer) point.get("userId");
+ TAppUser tAppUser = appUserClient.queryById(userId);
+ if (ToolUtil.isNotEmpty(tAppUser)){
+ point.put("name",tAppUser.getName());
+ point.put("phone",tAppUser.getPhone());
+ }
+ }
+ if (ToolUtil.isNotEmpty(name)){
+ points = points.stream()
+ .filter(data -> {
+ String obtName = (String) data.get("name");
+ return obtName != null && obtName.contains(name);
+ })
+ .collect(Collectors.toList());
+ }
+ if (ToolUtil.isNotEmpty(phone)){
+ points = points.stream()
+ .filter(data -> {
+ String obtPhone = (String) data.get("phone");
+ return obtPhone != null && obtPhone.contains(phone);
+ })
+ .collect(Collectors.toList());
+ }
+ }
+ return points;
+ }
+
+ /**
+ * 核销操作
+ * @param id 商品id
+ * @return
+ */
+ @RequestMapping("/write_off")
+ @ResponseBody
+ public Object GoodsWriteOff(Integer id){
+ System.out.println(id);
+ // TODO: 2023/8/15 核销操作
+ return new SuccessTip<>();
+ }
+
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
new file mode 100644
index 0000000..8179ac2
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -0,0 +1,188 @@
+package com.dsh.guns.modular.system.controller.system;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.course.feignClient.account.CityManagerClient;
+import com.dsh.course.feignClient.account.CoachClient;
+import com.dsh.course.feignClient.account.model.CityManager;
+import com.dsh.course.feignClient.account.model.Coach;
+import com.dsh.course.feignClient.course.CoursePackageClient;
+import com.dsh.course.feignClient.course.CoursePackageDiscountClient;
+import com.dsh.course.feignClient.course.CoursePackagePaymentConfigClient;
+import com.dsh.course.feignClient.course.CoursePackageTypeClient;
+import com.dsh.course.feignClient.course.model.TCoursePackageType;
+import com.dsh.course.feignClient.other.BallClient;
+import com.dsh.guns.config.UserExt;
+import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.model.dto.BallQueryDto;
+import com.dsh.guns.modular.system.model.dto.ConsumeQuery;
+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.util.HttpRequestUtil;
+import com.dsh.guns.modular.system.util.ResultUtil;
+import com.google.common.base.Ascii;
+import com.google.gson.JsonObject;
+import com.netflix.ribbon.proxy.annotation.Http;
+import com.sun.org.apache.xerces.internal.impl.io.ASCIIReader;
+import io.netty.util.AsciiString;
+import io.rong.util.HttpUtil;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.logging.log4j.util.Base64Util;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpRequest;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.Base64Utils;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+@Controller
+@RequestMapping("/ball")
+public class BallController extends BaseController {
+ private String PREFIX = "/system/ball/";
+@Resource
+private BallClient ballClient;
+ @Autowired
+ private ICityService cityService;
+
+ @Autowired
+ private ICoursePackageService coursePackageService;
+
+ @Resource
+ private CoursePackageTypeClient coursePackageTypeClient;
+
+ @Autowired
+ private IStoreService storeService;
+
+ @Resource
+ private CityManagerClient cityManagerClient;
+
+ @Autowired
+ private ITSiteService siteService;
+
+ @Resource
+ private CoachClient coachClient;
+
+ @Resource
+ private CoursePackagePaymentConfigClient coursePackagePaymentConfigClient;
+
+ @Resource
+ private CoursePackageDiscountClient coursePackageDiscountClient;
+
+ @Resource
+ private CoursePackageClient coursePackageClient;
+
+ @RequestMapping("/tolist")
+ public String tolist(Model model) {
+
+ List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("list",list);
+ String roleid = UserExt.getUser().getRoleid();
+ model.addAttribute("role",roleid);
+
+ return PREFIX+"ball.html";
+ }
+
+
+ /**
+ * 获取变更列表
+ */
+ /**
+ * 获取有效期
+ */
+ @RequestMapping("/list")
+ @ResponseBody
+ public List<Game> changelist(BallQueryDto ballQueryDto) {
+System.out.println("=======ballQueryDto=========="+ballQueryDto);
+
+ return ballClient.list(ballQueryDto);
+ }
+
+ @RequestMapping("/save")
+ @ResponseBody
+ public ResultUtil save(String red,String blue,String province,String city, Integer site,Integer store) {
+// JSONObject jsonObject = JSONObject.parseObject("111");
+ Game game = new Game();
+ game.setRed(red);
+ game.setBlue(blue);
+ game.setProvince(province);
+ game.setCity(city);
+ game.setSiteId(site);
+ game.setStoreId(store);
+ System.out.println("============"+game);
+ ballClient.save(game);
+ return null;
+ }
+
+ @RequestMapping("/pre_add")
+ public String add(Model model) {
+// Map<String,String> map = new HashMap<>();
+// map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
+// map.put("space_id","1001");
+// map.put("sutu_id","1001");
+//
+// String request = HttpRequestUtil.getRequest("https://try.daowepark.com/v7/user_api/general/gameList", map);
+// System.out.println("=======request=========="+request);
+////
+//// return ballClient.list(ballQueryDto);
+// }
+
+Map<String,String> map =new HashMap<>();
+map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
+ map.put("space_id","1001");
+ map.put("sutu_id","1001");
+
+ String req = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/gameList", map);
+ System.out.println("================"+req);
+// AsciiString cached = AsciiString.cached(req);
+ String convertedString = StringEscapeUtils.unescapeJava(req);
+
+System.out.println("-------------"+convertedString);
+ JSONObject parse = JSONObject.parseObject(convertedString);
+ JSONArray data = JSONObject.parseArray(parse.getString("data"));
+ JSONObject jsonObject =data.getJSONObject(0);
+
+
+
+ //
+
+ Integer objectType = UserExt.getUser().getObjectType();
+ Integer objectId = UserExt.getUser().getObjectId();
+ List<TCoursePackageType> tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType();
+ model.addAttribute("coursePackageType", tCoursePackageTypes);
+ 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+"ball_pre_add.html";
+ }}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
index 8bf7816..7b0eccb 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -173,7 +173,6 @@
model.addAttribute("id", id);
model.addAttribute("ids", ids);
-
TAppUser tAppUser = appUserClient.queryById(tStudentDto.getAppUserId());
model.addAttribute("userName",tAppUser.getName());
model.addAttribute("tStudentDto",tStudentDto);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Bank.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Bank.java
new file mode 100644
index 0000000..b3f4af8
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Bank.java
@@ -0,0 +1,34 @@
+package com.dsh.guns.modular.system.model;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 银行
+ */
+@TableName("t_bank")
+@Data
+public class Bank {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ @TableField("id")
+ private Integer id;
+ /**
+ * 银行名称
+ */
+ @TableField("bankName")
+ private String bankName;
+ /**
+ * 银行代码
+ */
+ @TableField("insurCom")
+ private String bankCode;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Batter.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Batter.java
new file mode 100644
index 0000000..42804bf
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Batter.java
@@ -0,0 +1,24 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 获取激战球场接口数据
+ */
+@Data
+public class Batter {
+ private int code;
+ private String message;
+ private Batter.Data data;
+ private String nextUrl;
+ @lombok.Data
+ public static class Data {
+ private String all_batter_num;
+ private String all_batter_time;
+ private List<BatterData> list;
+ }
+}
+
+
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/BatterData.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/BatterData.java
new file mode 100644
index 0000000..8583564
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/BatterData.java
@@ -0,0 +1,17 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 获取激战球场接口数据
+ */
+@Data
+public class BatterData {
+ private String date;
+ private String total_num;
+ private String batter_time;
+}
+
+
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Battlefield.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Battlefield.java
new file mode 100644
index 0000000..c0c9e99
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Battlefield.java
@@ -0,0 +1,12 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+@Data
+public class Battlefield {
+ private Integer id;
+ private String name;
+ private Integer space_id;
+ private Integer red_region_id;
+ private Integer blue_region_id;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Game.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Game.java
new file mode 100644
index 0000000..890a043
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Game.java
@@ -0,0 +1,29 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+import java.util.Date;
+@Data
+public class Game {
+ private Integer id;
+ private Integer operationId;
+ private String operation;
+ private String province;
+
+ private String provinceCode;
+ private String city;
+ private String cityCode;
+ private Integer storeId;
+ private String store;
+
+ private Integer siteId;
+
+ private String site;
+
+ private String blue;
+ private String red;
+
+ private Date insertTime;
+
+ // 获取和设置方法
+}
\ No newline at end of file
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GateDataResponse.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GateDataResponse.java
new file mode 100644
index 0000000..9776e72
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GateDataResponse.java
@@ -0,0 +1,29 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 闸机数据
+ */
+@Data
+public class GateDataResponse {
+ private int code;
+ private String message;
+ private Data data;
+ private String nextUrl;
+ @lombok.Data
+ public static class Data {
+ private int total_num;
+ private List<Region> region_num;
+
+ @lombok.Data
+ public static class Region {
+ private String name;
+ private int enter_num;
+
+
+ }
+ }
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorCityVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorCityVO.java
new file mode 100644
index 0000000..b1e8e5b
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorCityVO.java
@@ -0,0 +1,18 @@
+package com.dsh.guns.modular.system.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 运营商指定地区回显VO
+ */
+@Data
+public class OperatorCityVO {
+ private Integer id;
+ private String province;
+ private Integer provinceCode;
+ private String city;
+ private Integer cityCode;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorRestPwd.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorRestPwd.java
new file mode 100644
index 0000000..de9b640
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorRestPwd.java
@@ -0,0 +1,15 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 运营商重置密码
+ */
+@Data
+public class OperatorRestPwd {
+ private List<Integer> ids;
+
+ private String password;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorUser.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorUser.java
new file mode 100644
index 0000000..6ccfbc2
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorUser.java
@@ -0,0 +1,23 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@TableName("t_operator_user")
+@Data
+public class OperatorUser {
+ private Integer id;
+ private String province;
+ private Integer provinceCode;
+ private String city;
+ private Integer cityCode;
+ private Integer userId;
+ private Integer platform;
+ private Integer type;
+ private BigDecimal proportion;
+ private Integer state;
+ private Integer status;
+ private Integer operatorId;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PlatFormDataVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PlatFormDataVO.java
new file mode 100644
index 0000000..e3cb8d0
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PlatFormDataVO.java
@@ -0,0 +1,32 @@
+package com.dsh.guns.modular.system.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 平台数据VO
+ */
+@Data
+public class PlatFormDataVO {
+
+ private Integer id;
+ private String provinceAndCity;
+ private String storeName;
+ private Integer storeId;
+ private String studentName;
+ private Integer studentId;
+ private String coachName;
+ // 教练id
+ private Integer coachId;
+ // 消课时间
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
+ private Date insertTime;
+ private String courseName;
+ private String startAndEnd;
+ private String voucher;
+ private Integer cancelledClassesNumber;
+ private Long coursePackagePaymentId;
+ private Long coursePackageSchedulingId;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PointMerchandiseIncomeVo.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PointMerchandiseIncomeVo.java
new file mode 100644
index 0000000..a8de8ec
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/PointMerchandiseIncomeVo.java
@@ -0,0 +1,21 @@
+package com.dsh.guns.modular.system.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 营收数据-平台
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PointMerchandiseIncomeVo {
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date insertTime;
+ private BigDecimal cash;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java
index f3c051d..3dcad0d 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java
@@ -38,4 +38,5 @@
private Integer state;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date insertTime;
+ private Integer payStatus;
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTU.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTU.java
new file mode 100644
index 0000000..70f4bc5
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTU.java
@@ -0,0 +1,23 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 获取激战球场接口数据
+ */
+@Data
+public class SUTU {
+ private int code;
+ private String message;
+ private SUTU.Data data;
+ private String nextUrl;
+ @lombok.Data
+ public static class Data {
+ private String total_num;
+ private List<SUTUData> list;
+ }
+}
+
+
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTUData.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTUData.java
new file mode 100644
index 0000000..ea1a1ae
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SUTUData.java
@@ -0,0 +1,16 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+
+/**
+ * 获取激战球场接口数据
+ */
+@Data
+public class SUTUData {
+ private String game_id;
+ private String game_name;
+ private String count;
+ private String rate;
+}
+
+
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java
index cb188da..9e1d4e5 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java
@@ -38,7 +38,14 @@
* 1 全国 2指定
*/
private Integer type;
-
+ /**
+ * 商户绑定状态1否2是
+ */
+ private Integer status;
+ /**
+ * 运营商状态1正常 2冻结 3删除
+ */
+ private Integer state;
@Override
protected Serializable pkVal() {
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/BallQueryDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/BallQueryDto.java
new file mode 100644
index 0000000..7b5c7b9
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/BallQueryDto.java
@@ -0,0 +1,12 @@
+package com.dsh.guns.modular.system.model.dto;
+
+import lombok.Data;
+
+@Data
+public class BallQueryDto {
+ String provinceCode;
+ String cityCode;
+ String store;
+ String site;
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/OperatorDTO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/OperatorDTO.java
new file mode 100644
index 0000000..db0fb55
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/OperatorDTO.java
@@ -0,0 +1,24 @@
+package com.dsh.guns.modular.system.model.dto;
+
+import lombok.Data;
+
+/**
+ * 运营商添加DTO
+ */
+@Data
+public class OperatorDTO {
+ private Integer id;
+ // 运营商名称
+ private String name;
+ // 管理员名称
+ private String userName;
+ // 管理员电话
+ private String phone;
+ // 1 全国 2 指定
+ private Integer type;
+ // 商户绑定状态
+ private Integer status;
+ // 运营商状态
+ private Integer state;
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java
new file mode 100644
index 0000000..586d672
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java
@@ -0,0 +1,19 @@
+package com.dsh.guns.modular.system.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.core.dataScope.DataScope;
+import com.dsh.guns.modular.system.model.OperatorUser;
+import com.dsh.guns.modular.system.model.User;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 运营商商户 服务类
+ */
+public interface IOperatorUserService extends IService<OperatorUser> {
+
+ List<Map<String, Object>> listAll(Page<Map<String, Object>> page, String province, String city, String userName, String phone, Integer platform, Integer type, Integer state);
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
index bd5206a..4cc9227 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
@@ -35,7 +35,7 @@
*/
List<Map<String, Object>> queryCity(String provinceCode, String cityCode);
- List<Map<String, Object>> queryListOfpage(String provinceCode, String cityCode, Integer cityManagerId, String storeName, Page<Map<String, Object>> page);
+ List<Map<String, Object>> queryListOfpage(String provinceCode, String cityCode, Integer operatorId, String storeName, Page<Map<String, Object>> page);
List<Map<String, Object>> listOne(Page<Map<String, Object>> page, Integer id);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java
index 7d1e45f..20c7e2b 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java
@@ -58,4 +58,5 @@
@Param("endTime") String endTime,
@Param("deptid") Integer deptid);
+
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java
index 70009f6..6a4fce6 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java
@@ -1,8 +1,14 @@
package com.dsh.guns.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.Bank;
+import com.dsh.guns.modular.system.model.CoachChangeStateVO;
import com.dsh.guns.modular.system.model.TOperator;
+
+import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -14,4 +20,9 @@
*/
public interface TOperatorService extends IService<TOperator> {
+ List<Map<String, Object>> listAll(Page<Map<String, Object>> page,String userName, String phone,Integer type);
+
+ int changeState(CoachChangeStateVO vo);
+
+ List<Bank> getBankList();
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteBookingServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteBookingServiceImpl.java
index 0439644..0967749 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteBookingServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteBookingServiceImpl.java
@@ -13,4 +13,5 @@
*/
@Service
public class SiteBookingServiceImpl extends ServiceImpl<SiteBookingMapper, SiteBooking> implements ISiteBookingService {
+
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
index ca5b4a3..41b066f 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
@@ -43,8 +43,8 @@
}
@Override
- public List<Map<String, Object>> queryListOfpage(String provinceCode, String cityCode, Integer cityManagerId, String storeName, Page<Map<String, Object>> page) {
- return this.baseMapper.queryListOfpage(provinceCode,cityCode,cityManagerId,storeName,page);
+ public List<Map<String, Object>> queryListOfpage(String provinceCode, String cityCode, Integer operatorId, String storeName, Page<Map<String, Object>> page) {
+ return this.baseMapper.queryListOfpage(provinceCode,cityCode,operatorId,storeName,page);
}
@Override
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java
index 6d6dfa1..c5e4878 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java
@@ -1,11 +1,18 @@
package com.dsh.guns.modular.system.service.impl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.mapper.TOperatorMapper;
+import com.dsh.guns.modular.system.model.Bank;
+import com.dsh.guns.modular.system.model.CoachChangeStateVO;
import com.dsh.guns.modular.system.model.TOperator;
import com.dsh.guns.modular.system.service.TOperatorService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -18,4 +25,21 @@
@Service
public class TOperatorServiceImpl extends ServiceImpl<TOperatorMapper, TOperator> implements TOperatorService {
+ @Autowired
+ private TOperatorMapper tOperatorMapper;
+ @Override
+ public List<Map<String, Object>> listAll(Page<Map<String, Object>> page,String userName, String phone,Integer type) {
+ return this.baseMapper.listAll(page,userName,phone,type);
+ }
+
+ @Override
+ public int changeState(CoachChangeStateVO vo) {
+ return this.baseMapper.changeState(vo.getIds(),vo.getState());
+ }
+
+ @Override
+ public List<Bank> getBankList() {
+
+ return tOperatorMapper.getBankList();
+ }
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java
new file mode 100644
index 0000000..50405ea
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java
@@ -0,0 +1,36 @@
+package com.dsh.guns.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.dto.StudentSearch;
+import com.dsh.course.dto.TStudentDto;
+import com.dsh.course.feignClient.account.AppUserClient;
+import com.dsh.course.mapper.TOperatorUserMapper;
+import com.dsh.course.mapper.TSiteMapper;
+import com.dsh.guns.modular.system.model.OperatorUser;
+import com.dsh.guns.modular.system.model.TSite;
+import com.dsh.guns.modular.system.model.TStudent;
+import com.dsh.guns.modular.system.service.IOperatorUserService;
+import com.dsh.guns.modular.system.service.ITStudentService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 学员信息 服务实现类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-09-12
+ */
+@Service
+public class TOperatorUserServiceImpl extends ServiceImpl<TOperatorUserMapper, OperatorUser> implements IOperatorUserService {
+
+ @Override
+ public List<Map<String, Object>> listAll(Page<Map<String, Object>> page, String province, String city, String userName, String phone, Integer platform, Integer type, Integer state) {
+ return this.baseMapper.listAll(page,province,city,userName,phone,platform,type,state);
+ }
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/HttpRequestUtil.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/HttpRequestUtil.java
index 79d78e4..f63c573 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/HttpRequestUtil.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/HttpRequestUtil.java
@@ -2,6 +2,8 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.net.URISyntaxException;
+import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -14,8 +16,46 @@
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+
public class HttpRequestUtil {
-
+
+ /***
+ * get请求(带参数)
+ * @param url
+ * @return String
+ */
+ public static String getReq(String url, Map<String, String> params) {
+ String result = null;
+ try {
+ URIBuilder uriBuilder = new URIBuilder(url);
+ Iterator maplist = params.entrySet().iterator();
+ while (maplist.hasNext()) {
+ Map.Entry<String, String> map = (Map.Entry<String, String>) maplist.next();
+ uriBuilder.addParameter(map.getKey(), map.getValue());
+ }
+ CloseableHttpClient client = HttpClientBuilder.create().build();
+ HttpPost get = new HttpPost(uriBuilder.build());
+ get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
+ HttpResponse response = client.execute(get);
+ result = EntityUtils.toString(response.getEntity(), "UTF-8");
+
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ } catch (ClientProtocolException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
public static String postRequest(String url, Map<String, String> params) {
// 构造HttpClient的实例
HttpClient httpClient = new HttpClient();
diff --git a/cloud-server-management/src/main/resources/TOperatorUserMapper.xml b/cloud-server-management/src/main/resources/TOperatorUserMapper.xml
new file mode 100644
index 0000000..340f060
--- /dev/null
+++ b/cloud-server-management/src/main/resources/TOperatorUserMapper.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.TOperatorUserMapper">
+ <select id="listAll" resultType="java.util.Map">
+ select t1.id as id, t1.platform,t1.type,t1.proportion,CONCAT(t1.province,t1.city) as provinceAndCity
+ t1.state as state,t1.status as status,t2.name as userName,t2.phone as phone from t_operatorUser t1
+ left join sys_user t2 on t1.userId = t2.id
+ where 1=1
+ <if test="province != null and province != ''">
+ and t1.provinceCode = #{province}
+ </if>
+ <if test="city != null and city != ''">
+ and t1.cityCode = #{city}
+ </if>
+ <if test="userName != null and userName != ''">
+ and t2.name like CONCAT('%',#{userName},'%')
+ </if>
+ <if test="phone != null and phone != ''">
+ and t2.phone like CONCAT('%',#{phone},'%')
+ </if>
+ <if test="platform != null and platform != ''">
+ and t1.platform = #{platform}
+ </if>
+ <if test="type != null and type != ''">
+ and t1.type = #{type}
+ </if>
+ <if test="proportion != null and proportion != ''">
+ and t1.proportion = #{proportion}
+ </if>
+ <if test="state != null and state != ''">
+ and t1.state = #{state}
+ </if>
+ <if test="status != null and status != ''">
+ and t1.status = #{status}
+ </if>
+ </select>
+</mapper>
diff --git a/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml b/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml
index 9250045..780ffae 100644
--- a/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml
@@ -1,6 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.course.mapper.TOperatorMapper">
+ <update id="changeState">
+ update t_operator set
+ state = #{state}
+ <where>
+ <if test="ids != null and ids.size()>0">
+ AND t_operator.id IN
+ <foreach collection="ids" separator="," item="id" open="(" close=")">
+ #{id}
+ </foreach>
+ </if>
+ </where>
+ </update>
-
+ <select id="listAll" resultType="java.util.Map">
+ select t1.id as id, t1.name as name,t1.type as `type`,t1.state as state,t1.status as status,t2.name as userName,t2.phone as phone from t_operator t1
+ left join sys_user t2 on t1.userId = t2.id
+ where 1=1
+ <if test="userName != null and userName != ''">
+ and t2.name like CONCAT('%',#{userName},'%')
+ </if>
+ <if test="phone != null and phone != ''">
+ and t2.phone like CONCAT('%',#{phone},'%')
+ </if>
+ <if test="type != null and type != ''">
+ and t1.type = #{type}
+ </if>
+ </select>
+ <select id="getBankList" resultType="com.dsh.guns.modular.system.model.Bank">
+ select * from t_bank
+ </select>
</mapper>
diff --git a/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml b/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
index 3b40dc0..2120241 100644
--- a/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
@@ -56,7 +56,7 @@
) as aa order by aa.code
</select>
<select id="queryListOfpage" resultType="java.util.Map">
- SELECT `id`, `cityManagerId`, `province`, `city`, `name`
+ SELECT `id`, `operatorId`, `province`, `city`, `name`,ids
from t_store
where 1=1
<if test="provinceCode != null">
@@ -65,8 +65,8 @@
<if test="cityCode != null">
and cityCode = #{cityCode}
</if>
- <if test="cityManagerId != null">
- and cityManagerId = #{cityManagerId}
+ <if test="operatorId != null">
+ and operatorId = #{operatorId}
</if>
<if test="storeName != null and storeName != ''">
and `name` like CONCAT('%',#{storeName},'%')
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball.html
new file mode 100644
index 0000000..90cd023
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball.html
@@ -0,0 +1,81 @@
+@layout("/common/_container.html"){
+<div class="row" id = "ttt">
+ <div class="col-sm-12">
+ <div class="ibox float-e-margins">
+ <div class="ibox-title">
+ <h5>管理</h5>
+ </div>
+ <div class="ibox-content">
+ <div class="row row-lg">
+ <div class="col-sm-12">
+ <div class="row">
+ @if(role=='1'){
+ <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="pCode" onchange="TCompetition.oneChange(this)">
+ <option value="">全部</option>
+ @for(obj in list){
+ <option value="${obj.code}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ </div>
+ @}
+ @if(role=='1'){
+ <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="cCode">
+ </select>
+ </div>
+ </div>
+ @}
+
+ <div class="col-sm-3">
+ <#NameCon id="store" name="门店名称" />
+ </div>
+ <div class="col-sm-3">
+ <#NameCon id="site" name="场地名称" />
+ </div>
+ <div class="col-sm-3">
+ <#NameCon id="userName" name="所属用户" />
+ </div>
+ <div class="col-sm-3">
+ <#button name="搜索" icon="fa-search" clickFun="TStudent.search()"/>
+ </div>
+ </div>
+ <div class="hidden-xs" id="TStudentTableToolbar" role="group">
+ <#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"/>
+
+ @if(shiro.hasPermission("/tStudent/delete")){
+ <#button name="删除" icon="fa-remove" clickFun="TStudent.delete()" space="true"/>
+ @}
+<!-- <button id="exportButton">TTTTTTTTTT</button>-->
+ </div>
+ <#table id="TStudentTable"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script src="${ctxPath}/modular/system/ball/ball.js"></script>
+<script src="${ctxPath}/modular/system/tShop/tShop.js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js">
+</script>
+<script>
+
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_add.html
new file mode 100644
index 0000000..a66a03b
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_add.html
@@ -0,0 +1,214 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+ <div class="ibox-content">
+ <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.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.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.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="siteId" name="siteId">
+ @for(obj in site){
+ <option value="${obj.id}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ </div>
+
+
+ <div class="hr-line-dashed"></div>
+
+ <div id="config">
+
+ <div>
+ <div class="col-sm-4">
+ <div>游戏1*</div>
+ <div id="pic">
+ <div id="headPic" class="headPic">
+ <label class="col-sm-3 control-label">所在省:</label>
+ <img src="${ctxPath}/img/NoPIC.png" id="img" style="width: 200px; height: 150px; border: 1px solid black;">
+ </div>
+ <input type="file" id="fil" class="fil" hidden="hidden">
+ </div>
+
+ <input type="text" class="form-control">
+ <input type="text" class="form-control">
+ <input type="text" class="form-control">
+ </div>
+
+ <div class="col-sm-4">
+ <div>游戏1*</div>
+
+ <div id="pic">
+ 图片:<div id="headPic" class="headPic">
+ <img src="${ctxPath}/img/NoPIC.png" id="img" style="width: 200px; height: 150px; border: 1px solid black;">
+ </div>
+ <input type="file" id="fil" class="fil" hidden="hidden">
+ </div>
+
+ <input type="text" class="form-control">
+ <input type="text" class="form-control">
+ <input type="text" class="form-control">
+ </div>
+
+
+
+
+
+ </div>
+ </div>
+
+ <h3>课时设置</h3>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*支付方式:</label>
+ <div class="col-sm-4" style="margin-top: 6px;">
+ <input type="checkbox" name="payType" value="1"> 现金
+ <input type="checkbox" name="payType" value="2"> 玩湃币
+ </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.addSubmit()"/>
+ <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="CoursePackageInfo.close()"/>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script src="${ctxPath}/modular/system/ball/ball_info.js"></script>
+<script type="text/javascript">
+ laydate.render({
+ elem: '#classStartTime'
+ ,type: 'time'
+ ,range: true
+ });
+
+ 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
+ });
+ }
+
+
+
+ let fil = document.querySelector('#fil') // 文件框,只不过隐藏了起来
+ let headPic = document.querySelector('#headPic') //图片上传框
+
+ headPic.addEventListener('click', function () {
+ fil.click() //点击上传图片,文件上传框打开
+ })
+
+ //头像上传
+ fil.addEventListener('change', function (e) {//注意,头像上传时用的时change事件
+ // console.log(this.files[0]); //文件的信息都放在files里
+ let fd = new FormData()
+ fd.append('file', this.files[0])
+ //原生ajax实现实现图片上传
+ let xhr = new XMLHttpRequest() //创建ajax对象
+ xhr.open('post', Feng.ctxPath + '/mgr/uploadImg')
+ xhr.send(fd) //将格式处理好的数据,作为参数发送
+ xhr.onreadystatechange = function () {
+ // if (xhr.code != 1) {
+ let data = xhr.responseText;
+ console.log(data);
+ $('#img').src = data;
+ img.src = data
+ // }
+ }
+ })
+
+ // document.addEventListener('DOMContentLoaded', function() {
+ //
+ // let filList = document.querySelectorAll('.fil'); // 获取所有具有类名为 'fil' 的元素列表
+ // let headPicList = document.querySelectorAll('.headPic'); // 获取所有具有类名为 'headPic' 的元素列表
+ //
+ // // 为每个元素添加事件监听器
+ // filList.forEach(function(fil) {
+ // fil.addEventListener('change', function(e) {
+ // let fd = new FormData();
+ // fd.append('file', this.files[0]);
+ // let xhr = new XMLHttpRequest();
+ // xhr.open('post', Feng.ctxPath + '/mgr/uploadImg');
+ // xhr.send(fd);
+ // xhr.onreadystatechange = function() {
+ // // if (xhr.readyState === 4 && xhr.status === 200) {
+ // let data = xhr.responseText;
+ // console.log(data);
+ // headPicList.forEach(function(headPic) {
+ // headPic.querySelector('img').src = data;
+ // });
+ // // }
+ // };
+ // });
+ // });
+ //
+ // // 为每个元素添加点击事件监听器
+ // headPicList.forEach(function(headPic) {
+ // headPic.addEventListener('click', function() {
+ // let fil = this.querySelector('.fil');
+ // fil.click();
+ // });
+ // });
+ // });
+
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
new file mode 100644
index 0000000..6c4a8d0
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
@@ -0,0 +1,351 @@
+<!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",
+ "id": "u:8c028a595aa6",
+ "body": [
+ {
+ "type": "form",
+ "id": "u:24af29be25d2",
+ "title": "表单",
+ "body": [
+ {
+ "label": "所属运营商:",
+ "type": "select",
+ "name": "operator",
+ "id": "u:970f68a2c4ee",
+ "mode": "horizontal",
+ "size": "lg",
+ "multiple": false,
+ "source": {
+ "url": "/api/v1/rep/cus/",
+ "method": "get",
+ "messages": {
+ }
+ },
+ "labelField": "customerName",
+ "valueField": "id",
+ "showInvalidMatch": false,
+ "searchable": true,
+ "clearable": true,
+ "horizontal": {
+ "leftFixed": "lg"
+ }
+ },
+ {
+ "type": "input-city",
+ "label": "所在省:",
+ "name": "province",
+ "id": "u:091b190331f6",
+ "mode": "horizontal",
+ "allowCity": false,
+ "allowDistrict": false,
+ "onEvent": {
+ "change": {
+ "weight": 0,
+ "actions": [
+ {
+ "componentId": "u:63c85c19f3aa",
+ "actionType": "reload",
+ "dataMergeMode": "merge"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "type": "select",
+ "label": "所在市:",
+ "name": "city",
+ "id": "u:63c85c19f3aa",
+ "multiple": false,
+ "mode": "horizontal",
+ "size": "md",
+ "horizontal": {
+ "leftFixed": "lg"
+ },
+ "source": {
+ "url": "/coursePackage/queryCity1/$province",
+ "method": "post",
+ "messages": {
+ },
+ "sendOn": "this.province != null &&this.province != ' '"
+ },
+ "onEvent": {
+ "change": {
+ "weight": 0,
+ "actions": [
+ {
+ "componentId": "u:576899b1b531",
+ "actionType": "reload",
+ "dataMergeMode": "merge"
+ }
+ ]
+ }
+ },
+ "labelField": "name",
+ "valueField": "code"
+ },
+ {
+ "type": "select",
+ "label": "所属门店:",
+ "name": "store",
+ "id": "u:576899b1b531",
+ "multiple": false,
+ "mode": "horizontal",
+ "size": "md",
+ "horizontal": {
+ "leftFixed": "lg"
+ },
+ "source": {
+ "method": "post",
+ "url": "/coursePackage/queryStore1/$city",
+ "messages": {
+ },
+ "sendOn": "this.city != null &&this.city != ' '"
+ },
+ "labelField": "name",
+ "valueField": "id",
+ "onEvent": {
+ "change": {
+ "weight": 0,
+ "actions": [
+ {
+ "componentId": "u:0d288f4bdd8e",
+ "actionType": "reload",
+ "dataMergeMode": "merge"
+ },
+ {
+ "componentId": "u:0d288f4bdd8e",
+ "args": {
+ "value": " "
+ },
+ "actionType": "setValue"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "type": "select",
+ "label": "所属场地:",
+ "name": "site",
+ "id": "u:0d288f4bdd8e",
+ "multiple": false,
+ "mode": "horizontal",
+ "size": "md",
+ "horizontal": {
+ "leftFixed": "lg"
+ },
+ "source": {
+ "url": "/coursePackage/querySite",
+ "method": "post",
+ "messages": {
+ },
+ "data": {
+ "storeId": "$store"
+ },
+ "dataType": "form"
+ },
+ "labelField": "name",
+ "valueField": "id"
+ },
+ {
+ "type": "tpl",
+ "tpl": "设备ID:",
+ "inline": true,
+ "wrapperComponent": "",
+ "id": "u:587781d5d181",
+ "style": {
+ "marginLeft": "0"
+ }
+ },
+ {
+ "type": "input-text",
+ "label": "蓝色方",
+ "name": "blue",
+ "id": "u:a4dbdeb9165e",
+ "mode": "inline",
+ "size": "xs",
+ "horizontal": {
+ "leftFixed": "sm"
+ },
+ "value": ""
+ },
+ {
+ "type": "input-text",
+ "label": "红色方",
+ "name": "red",
+ "id": "u:b0544634a698",
+ "mode": "inline"
+ },
+ {
+ "type": "tpl",
+ "tpl": "请编辑内容",
+ "inline": true,
+ "wrapperComponent": "",
+ "id": "u:89c3a95a6721"
+ },
+ {
+ "type": "button",
+ "label": "按钮",
+ "onEvent": {
+ "click": {
+ "actions": [
+ {
+ "componentId": "u:24af29be25d2",
+ "actionType": "submit"
+ }
+ ]
+ }
+ },
+ "id": "u:b96a47957f17"
+ },
+ {
+ "type": "divider",
+ "id": "u:cc7161244b32"
+ },
+ {
+ "type": "tpl",
+ "id": "u:89c3a95a6721",
+ "tpl": "游戏配置:",
+ "inline": true,
+ "wrapperComponent": "h2"
+ },
+ {
+ "type": "container",
+ "body": [
+ {
+ "type": "card",
+ "header": {
+ "title": "激战球场",
+ "subTitle": "副标题"
+ },
+ "body": [
+ {
+ "type": "input-image",
+ "label": "背景图:",
+ "name": "image",
+ "autoUpload": true,
+ "proxy": true,
+ "uploadType": "fileReceptor",
+ "imageClassName": "r w-full",
+ "receiver": {
+ "url": "object-upload://default",
+ "method": "post"
+ },
+ "id": "u:824383a8e878",
+ "labelClassName": "text-dark"
+ },
+ {
+ "type": "input-text",
+ "label": "游戏名称",
+ "name": "ciji",
+ "id": "u:a4dbdeb9115e",
+ "mode": "inline",
+ "labelClassName": "text-dark m-b",
+ "value": "激战球场"
+ },
+ {
+ "type": "input-text",
+ "label": "玩派币",
+ "name": "cijiCoin",
+ "id": "u:99015dfd4264",
+ "mode": "inline",
+ "labelClassName": "text-dark m-b text-lg"
+ },
+ {
+ "type": "input-text",
+ "label": "现金",
+ "name": "cijiCash",
+ "id": "u:31888fb92add",
+ "mode": "inline",
+ "labelClassName": "text-dark m-b text-lg"
+ },
+ {
+ "type": "input-text",
+ "label": "积分",
+ "name": "cijiInt",
+ "id": "u:c42ab4593d20",
+ "mode": "inline",
+ "labelClassName": "text-dark m-b text-lg"
+ }
+ ],
+ "actions": [
+ ],
+ "id": "u:8445330f451b"
+ }
+ ],
+ "style": {
+ "position": "static",
+ "display": "block",
+ "flexWrap": "nowrap",
+ "maxWidth": "300px",
+ "overflowX": "auto",
+ "margin": "0"
+ },
+ "id": "u:08adb1dcf6b9",
+ "isFixedHeight": false,
+ "isFixedWidth": false
+ }
+ ],
+ "api": {
+ "url": "/ball/save",
+ "method": "post",
+ "messages": {
+ },
+ "dataType": "json"
+ }
+ }
+ ]
+ };
+ let amisScoped = amis.embed('#root', amisJSON);
+
+
+ })();
+
+ function test(){
+ console.log("测试成功")
+ }
+
+ var myButton = document.getElementById("ttt");
+ myButton.addEventListener("click",test);
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
index 748749d..69f573c 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
@@ -55,15 +55,15 @@
<h2>营收数据</h2>
</br>
<div id = "money1" style="width: 1500px" >
- <span>总营收:</span>
- <span>本年度营收:</span>
- <span>本月度营收:</span>
- <span>本周营收:</span>
- <span>本日营收:</span>
+ <span id="totalIncome">总营收:</span>
+ <span id="yearIncome">本年度营收:</span>
+ <span id="monthIncome">本月度营收:</span>
+ <span id="weekIncome">本周营收:</span>
+ <span id="todayIncome">本日营收:</span>
</br>
</br>
</div>
- <div id="income" style="width: 1280px;height:500px;"></div>
+ <div id="main" style="width: 1280px;height:500px;"></div>
</div>
<div class="col-sm-10">
<h2>收入类型统计</h2>
@@ -102,10 +102,10 @@
<div class="col-sm-10" style="width: 1500px" >
</br>
</br>
- <span>本年退费额度:</span>
- <span>本月退费额度:</span>
- <span>本周退费额度:</span>
- <span>本日退费额度:</span>
+ <span id="yearRefund">本年退费额度:</span>
+ <span id="monthRefund">本月退费额度:</span>
+ <span id="weekRefund">本周退费额度:</span>
+ <span id="todayRefund">本日退费额度:</span>
</br>
</br>
<div id="refund" style="width: 1280px;height:500px;"></div>
@@ -243,6 +243,35 @@
<script src="${ctxPath}/modular/system/dataStatistics/echarts.min.js"></script>
<script src="${ctxPath}/static/js/plugins/switchery/switchery.js"></script>
<script>
+ var ans = [];
+ var weekX = [];
+ var monthX = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];
+ var yearX = ["2023年","2024年","2025年","2026年","2027年","2028年"];
+ var timeX = [];
+ var dataX = [];
+ // 创建一个日期对象
+ var currentDate = new Date();
+ // 获取当前日期的号数
+ let currentDay = currentDate.getDate();
+ // 循环添加号数到数组
+ for (let i = 0; i < 7; i++) {
+ dataX.push(currentDay - 6+i);
+ }
+ // 获取当前月份
+ var currentMonth = currentDate.getMonth();
+ // 获取当前年份
+ var currentYear = currentDate.getFullYear();
+ // 计算指定年份和月份的天数
+ function getDaysInMonth(year, month) {
+ // month 参数范围是 0-11,所以需要加 1
+ return new Date(year, month + 1, 0).getDate();
+ }
+ // 获取当前月份的天数
+ var daysInMonth = getDaysInMonth(currentYear, currentMonth);
+ // 将天数按字符串格式添加到 timeX 数组中
+ for (var i = 1; i <= daysInMonth; i++) {
+ timeX.push(String(i));
+ }
laydate.render({
elem: '#beginTime'
, trigger: 'click'
@@ -252,8 +281,240 @@
getContent(1);
getContent1(1);
getContent2(1);
+ var ajax = new $ax(Feng.ctxPath + "/data/getIncomeData", function(resp){
+ var list = resp.yearMount;
+ console.log(list);
+ var t1 = document.getElementById("totalIncome");
+ var t2 = document.getElementById("yearIncome");
+ var t3 = document.getElementById("monthIncome");
+ var t4 = document.getElementById("weekIncome");
+ var t5 = document.getElementById("todayIncome");
+ t1.innerText = "总营收:"+list[0]+" ";
+ t2.innerText = "年度营收:"+list[1]+" ";
+ t3.innerText = "月度营收:"+list[2]+" ";
+ t4.innerText = "周度营收:"+list[3]+" ";
+ t5.innerText = "日度营收:"+list[4]+" ";
+ var year = resp.yearIncome;
+ var month = resp.monthIncome;
+ var week = resp.weekIncome;
+ var days = week[0].length;
+ for (let i = 1; i <= days; i++) {
+ weekX.push(i);
+ }
+ var day = resp.dayIncome;
+ option = {
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+
+ data: ['年度营收', '月度营收','周度营收','日度营收'],
+ icon: 'stack',
+ selectedMode: 'single', // 单选
+ selected: {
+ 年度营收: true,
+ 月度营收: false,
+ 周度营收: false,
+ 日度营收: false
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ toolbox: {
+ feature: {
+ saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: yearX
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ name: '年度营收',
+ type: 'line',
+ stack: 'Total',
+ data: [year[0].amount,year[1].amount,year[2].amount,year[3].amount,year[4].amount,year[5].amount]
+ },
+ {
+ name: '月度营收',
+ type: 'line',
+ stack: 'Total',
+ data: [month[0][0],month[0][1], month[0][2], month[0][3], month[0][4],
+ month[0][5], month[0][6], month[0][7], month[0][8], month[0][9], month[0][10], month[0][11]]
+ },
+ {
+ name: '周度营收',
+ type: 'line',
+ stack: 'Total',
+ data: [
+ week[0][0], week[0][1], week[0][2], week[0][3], week[0][4]
+ , week[0][5], week[0][6], week[0][7], week[0][8], week[0][9]
+ , week[0][10], week[0][11], week[0][12], week[0][13], week[0][14]
+ , week[0][15], week[0][16], week[0][17], week[0][18], week[0][19], week[0][20]
+ , week[0][21], week[0][22], week[0][23], week[0][24], week[0][25], week[0][26]
+ , week[0][27], week[0][28], week[0][29], week[0][30], week[0][31]
+ ]
+ },
+ {
+ name: '日度营收',
+ type: 'line',
+ stack: 'Total',
+ data: [
+ day[0][0], day[0][1],day[0][2], day[0][3], day[0][4], day[0][5], day[0][6]
+ ]
+ }
+ ]
+ };
+ });
+ ajax.set("type",1);
+ ajax.start();
+ option2 = {
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+
+ data: ['年度用户数', '月度用户数','周度用户数','日度用户数'],
+ icon: 'stack',
+ selectedMode: 'single', // 单选
+ selected: {
+ 年度用户数: true,
+ 月度用户数: false,
+ 周度用户数: false,
+ 日度用户数: false
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ toolbox: {
+ feature: {
+ saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: yearX
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ name: '年度用户数',
+ type: 'line',
+ stack: 'Total',
+ data: [100,50,60,10,12,13,54,156]
+ },
+ {
+ name: '月度用户数',
+ type: 'line',
+ stack: 'Total',
+ data: [26,44,55,12,6,7,98,541,223]
+ },
+ {
+ name: '周度用户数',
+ type: 'line',
+ stack: 'Total',
+ data: [
+ 33,22,11,12,61,17,23,33,41
+ ]
+ },
+ {
+ name: '日度用户数',
+ type: 'line',
+ stack: 'Total',
+ data: [
+ 12,11,17,26,23,111,23,45,41
+ ]
+ }
+ ]
+ };
+ var ajax2 = new $ax(Feng.ctxPath + "/data/getIncomeData", function(resp){
+ option3 = {
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+
+ data: ['年度会员数', '月度会员数','周度会员数','日度会员数'],
+ icon: 'stack',
+ selectedMode: 'single', // 单选
+ selected: {
+ 年度会员数: true,
+ 月度会员数: false,
+ 周度会员数: false,
+ 日度会员数: false
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ toolbox: {
+ feature: {
+ saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: yearX
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ name: '年度会员数',
+ type: 'line',
+ stack: 'Total',
+ data: [100,50,60,10,12,13,54,156]
+ },
+ {
+ name: '月度会员数',
+ type: 'line',
+ stack: 'Total',
+ data: [26,44,55,12,6,7,98,541,223]
+ },
+ {
+ name: '周度会员数',
+ type: 'line',
+ stack: 'Total',
+ data: [
+ 33,22,11,12,61,17,23,33,41
+ ]
+ },
+ {
+ name: '日度会员数',
+ type: 'line',
+ stack: 'Total',
+ data: [
+ 12,11,17,26,23,111,23,45,41
+ ]
+ }
+ ]
+ };
+ });
+ ajax2.set("type",1);
+ ajax2.start();
// 基于准备好的dom,初始化echarts实例
- var myChart = echarts.init(document.getElementById('income'));
+ var myChart = echarts.init(document.getElementById('main'));
var myChart1 = echarts.init(document.getElementById('refund'));
var myChart2 = echarts.init(document.getElementById('user'));
var myChart3 = echarts.init(document.getElementById('vip'));
@@ -261,59 +522,7 @@
var myChart5 = echarts.init(document.getElementById('prepare'));
var myChart6 = echarts.init(document.getElementById('teach'));
var myChart7 = echarts.init(document.getElementById('courseData'));
- option = {
- tooltip: {
- trigger: 'axis'
- },
- legend: {
- data: ['年度营收', '月度营收', '周度营收', '日度营收']
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true
- },
- toolbox: {
- feature: {
- saveAsImage: {}
- }
- },
- xAxis: {
- type: 'category',
- boundaryGap: false,
- data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
- },
- yAxis: {
- type: 'value'
- },
- series: [
- {
- name: '年度营收',
- type: 'line',
- stack: 'Total',
- data: [120, 132, 101, 134, 90, 230, 160, 190, 410, 330, 210, 330]
- },
- {
- name: '月度营收',
- type: 'line',
- stack: 'Total',
- data: [220, 182, 191, 234, 290, 330, 310, 190, 210, 330, 410, 160]
- },
- {
- name: '周度营收',
- type: 'line',
- stack: 'Total',
- data: [150, 232, 201, 154, 190, 330, 410, 160, 210, 195, 210, 188]
- },
- {
- name: '日度营收',
- type: 'line',
- stack: 'Total',
- data: [320, 332, 301, 334, 390, 330, 320, 10, 195, 145, 188, 160]
- }
- ]
- };
+
option1 = {
tooltip: {
trigger: 'axis'
@@ -367,112 +576,8 @@
}
]
};
- option2 = {
- tooltip: {
- trigger: 'axis'
- },
- legend: {
- data: ['年度用户数', '月度用户数', '周度用户数', '日度用户数']
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true
- },
- toolbox: {
- feature: {
- saveAsImage: {}
- }
- },
- xAxis: {
- type: 'category',
- boundaryGap: false,
- data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
- },
- yAxis: {
- type: 'value'
- },
- series: [
- {
- name: '年度用户数',
- type: 'line',
- stack: 'Total',
- data: [120, 132, 101, 134, 90, 230, 160, 190, 410, 330, 210, 330]
- },
- {
- name: '月度用户数',
- type: 'line',
- stack: 'Total',
- data: [220, 182, 191, 234, 290, 330, 310, 190, 210, 330, 410, 160]
- },
- {
- name: '周度用户数',
- type: 'line',
- stack: 'Total',
- data: [150, 232, 201, 154, 190, 330, 410, 160, 210, 195, 210, 188]
- },
- {
- name: '日度用户数',
- type: 'line',
- stack: 'Total',
- data: [320, 332, 301, 334, 390, 330, 320, 10, 195, 145, 188, 160]
- }
- ]
- };
- option3 = {
- tooltip: {
- trigger: 'axis'
- },
- legend: {
- data: ['年度会员数', '月度会员数', '周度会员数', '日度会员数']
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true
- },
- toolbox: {
- feature: {
- saveAsImage: {}
- }
- },
- xAxis: {
- type: 'category',
- boundaryGap: false,
- data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
- },
- yAxis: {
- type: 'value'
- },
- series: [
- {
- name: '年度会员数',
- type: 'line',
- stack: 'Total',
- data: [1220, 1532, 101, 1394, 980, 2380, 1680, 1190, 1410, 1330, 2110, 1330]
- },
- {
- name: '月度会员数',
- type: 'line',
- stack: 'Total',
- data: [1220, 1182, 2191, 3234, 1290, 1330, 2310, 2190, 2210, 1330, 2410, 1650]
- },
- {
- name: '周度会员数',
- type: 'line',
- stack: 'Total',
- data: [2150, 3232, 2201, 5154, 5190, 1330, 1410, 1660, 2610, 1695, 2410, 1848]
- },
- {
- name: '日度会员数',
- type: 'line',
- stack: 'Total',
- data: [2320, 3332, 1301, 3234, 3290, 1330, 1320, 1220, 1295, 1645, 1888, 1660]
- }
- ]
- };
+
+
option4 = {
tooltip: {
trigger: 'axis'
@@ -662,6 +767,49 @@
}
]
};
+ myChart.on('legendselectchanged', obj => {
+ var options = myChart.getOption()
+ //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+ if (obj.name == '年度营收') {
+ options.xAxis[0].data = yearX
+ } else if (obj.name == '月度营收') {
+ options.xAxis[0].data = monthX
+ } else if (obj.name == '周度营收') {
+ options.xAxis[0].data = weekX
+ } else if (obj.name == '日度营收') {
+ options.xAxis[0].data = dataX
+ }
+ myChart.setOption(options, true)
+ })
+ myChart2.on('legendselectchanged', obj => {
+ var options = myChart2.getOption()
+ //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+ if (obj.name == '年度用户数') {
+ options.xAxis[0].data = yearX
+ } else if (obj.name == '月度用户数') {
+ options.xAxis[0].data = monthX
+ } else if (obj.name == '周度用户数') {
+ options.xAxis[0].data = weekX
+ } else if (obj.name == '日度用户数') {
+ options.xAxis[0].data = dataX
+ }
+ myChart2.setOption(options, true)
+ });
+
+ myChart3.on('legendselectchanged', obj => {
+ var options = myChart3.getOption()
+ //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+ if (obj.name == '年度会员数') {
+ options.xAxis[0].data = yearX
+ } else if (obj.name == '月度会员数') {
+ options.xAxis[0].data = monthX
+ } else if (obj.name == '周度会员数') {
+ options.xAxis[0].data = weekX
+ } else if (obj.name == '日度会员数') {
+ options.xAxis[0].data = dataX
+ }
+ myChart3.setOption(options, true)
+ });
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
myChart1.setOption(option1);
@@ -724,6 +872,7 @@
$("#nextB").hide();
}
}
+
</script>
<script>
$(function(){
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome1.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome1.html
new file mode 100644
index 0000000..0b00766
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome1.html
@@ -0,0 +1,440 @@
+@layout("/common/_container.html"){
+<style type="text/css">
+
+ ztree li span. {
+ margin-left: 4px;
+ margin-right: -1px;
+ background-position: -144px 0;
+ vertical-align: top;
+ *vertical-align: middle
+ }
+
+ .titleDiv {
+ overflow: hidden;
+ }
+
+ .titleItem {
+ float: left;
+ text-align: center;
+ width: 180px;
+ line-height: 40px;
+ border-top: 1px solid #E7EBEE;
+ border-bottom: 1px solid #E7EBEE;
+ border-left: 1px solid #E7EBEE;
+ font-size: 16px;
+ }
+
+ .titleItem1 {
+ float: left;
+ text-align: center;
+ width: 180px;
+ line-height: 40px;
+ border-bottom: 1px solid #E7EBEE;
+ border-left: 1px solid #E7EBEE;
+ font-size: 16px;
+ }
+
+ .titleItemCk {
+ color: #fff !important;
+ background: #1AB395 !important;
+ }
+
+ .titleItem:last-child {
+ border-right: 1px solid #E7EBEE;
+ }
+
+ /* 订单分析 */
+ ul {
+ list-style-type: none;
+ }
+
+ .orderFenxiBox {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ background-color: white;
+ }
+
+ .orderFenxiItem {
+ flex: 1;
+ padding: 20px 0;
+ }
+
+ .orderFenxiItem:last-child .orderFenxiItem_number {
+ border-right: 0 none;
+ }
+
+ .orderFenxiItem_number {
+ width: 80%;
+ height: 80%;
+ line-height: 90px;
+ padding: 20px 0;
+ font-size: 32px;
+ color: #1AB394;
+ text-align: center;
+ border-right: 1px solid #eaeaea;
+ }
+
+ .orderFenxiItem_title, .orderFenxiItem_last {
+ line-height: 40px;
+ font-size: 14px;
+ }
+</style>
+<div style="height: 50px;line-height:50px;width: 100%;background-color: #eeeeee;font-size: 25px;font-weight: bold;padding-left: 8px">
+ 汇总数据
+</div>
+<div class="row">
+ <div class="col-sm-3">
+ <#NameCon id="time" name="选择时间"/>
+ </div>
+ <div class="col-sm-3">
+ <#button name="搜索" icon="fa-search" clickFun="HomePage.search()"/>
+ <#button name="重置" icon="fa-search" clickFun="HomePage.reset()"/>
+ </div>
+</div>
+
+
+<div class="row col-space15">
+ <div class="col-md-3">
+ <div class="panel">
+ <div style="padding: 30px; font-size: 20px">注册用户数:<br><span id="userNum"></span></div>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <div class="panel">
+ <div style="padding: 30px; font-size: 20px">群聊个数:<br><span id="groupNum"></span></div>
+ </div>
+ </div>
+
+ <div class="col-md-3">
+ <div class="panel">
+ <div style="padding: 30px; font-size: 20px">充值金额:<br><span id="topUp"></span></div>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <div class="panel">
+ <div style="padding: 30px; font-size: 20px">提现金额:<br><span id="withdraw"> </span> <br>
+ </div>
+ </div>
+ </div>
+</div>
+<div class="row col-space15">
+ <div class="col-md-3">
+ <div class="panel">
+ <div style="padding: 30px; font-size: 20px">平台结余:<br><span id="balance"> </span> <br>
+ </div>
+ </div>
+ </div>
+</div>
+
+
+<div style="height: 50px;line-height:50px;width: 100%;background-color: #eeeeee;font-size: 25px;font-weight: bold;padding-left: 8px">
+ 近30天走势
+</div>
+<div class="search_box" style="margin-left: 2%;">
+ <div class="titleDiv">
+ <div id="titleDiv1" class="titleItem titleItemCk" onclick="regisUser(this)" style="font-size: 20px">登录/注册</div>
+ <div id="titleDiv2" class="titleItem" onclick="chongzhi(this)" style="font-size: 20px">充值/提现金额</div>
+ <div id="titleDiv3" class="titleItem" onclick="groupNum(this)" style="font-size: 20px">群聊个数</div>
+ </div>
+ <div id="main" style="min-width: 400px; height: 400px"></div>
+</div>
+<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
+<script>
+ $(function () {
+ regisUser();
+ });
+
+ function chongzhi() {
+ document.getElementById("titleDiv1").setAttribute("class", "titleItem");
+ document.getElementById("titleDiv2").setAttribute("class", "titleItem titleItemCk");
+ document.getElementById("titleDiv3").setAttribute("class", "titleItem");
+ var chartDom = document.getElementById('main');
+ var myChart = echarts.init(chartDom);
+ var option;
+ $.post(Feng.ctxPath + "/homePage/chongzhi", {type: 2}, function (data) {
+ let topUp = data.topUp
+ let withdraw = data.withdraw
+ // option = {
+ // title: {
+ // text: '充值/提现'
+ // },
+ // tooltip: {
+ // trigger: 'axis'
+ // },
+ // legend: {
+ // data: ['充值', '提现']
+ // },
+ // grid: {
+ // left: '3%',
+ // right: '4%',
+ // bottom: '3%',
+ // containLabel: true
+ // },
+ // toolbox: {
+ // feature: {
+ // }
+ // },
+ // xAxis: {
+ // type: 'category',
+ // boundaryGap: false,
+ // data: [topUp[29].time,topUp[28].time, topUp[27].time, topUp[26].time, topUp[25].time, topUp[24].time, topUp[23].time, topUp[22].time, topUp[21].time, topUp[20].time, topUp[19].time, topUp[18].time, topUp[17].time, topUp[16].time, topUp[15].time, topUp[14].time,topUp[13].time, topUp[12].time, topUp[11].time, topUp[10].time, topUp[9].time, topUp[8].time, topUp[7].time, topUp[6].time, topUp[5].time, topUp[4].time, topUp[3].time, topUp[2].time, topUp[1].time, topUp[0].time]
+ // },
+ // yAxis: {
+ // type: 'value'
+ // },
+ // series: [
+ // {
+ // name: '充值',
+ // type: 'line',
+ // stack: 'Total',
+ // data: [topUp[29].topUp,topUp[28].topUp, topUp[27].topUp, topUp[26].topUp, topUp[25].topUp, topUp[24].topUp, topUp[23].topUp, topUp[22].topUp, topUp[21].topUp, topUp[20].topUp, topUp[19].topUp, topUp[18].topUp, topUp[17].topUp, topUp[16].topUp, topUp[15].topUp, topUp[14].topUp,topUp[13].topUp, topUp[12].topUp, topUp[11].topUp, topUp[10].topUp, topUp[9].topUp, topUp[8].topUp, topUp[7].topUp, topUp[6].topUp, topUp[5].topUp, topUp[4].topUp, topUp[3].topUp, topUp[2].topUp, topUp[1].topUp, topUp[0].topUp]
+ // },
+ // {
+ // name: '提现',
+ // type: 'line',
+ // stack: 'Total',
+ // data: [withdraw[29].withdraw,withdraw[28].withdraw, withdraw[27].withdraw, withdraw[26].withdraw, withdraw[25].withdraw, withdraw[24].withdraw, withdraw[23].withdraw, withdraw[22].withdraw, withdraw[21].withdraw, withdraw[20].withdraw, withdraw[19].withdraw, withdraw[18].withdraw, withdraw[17].withdraw, withdraw[16].withdraw, withdraw[15].withdraw, withdraw[14].withdraw,withdraw[13].withdraw, withdraw[12].withdraw, withdraw[11].withdraw, withdraw[10].withdraw, withdraw[9].withdraw, withdraw[8].withdraw, withdraw[7].withdraw, withdraw[6].withdraw, withdraw[5].withdraw, withdraw[4].withdraw, withdraw[3].withdraw, withdraw[2].withdraw, withdraw[1].withdraw, withdraw[0].withdraw]
+ // }
+ //
+ // ]
+ // };
+ option = {
+ title: {
+ text: '充值/提现'
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {},
+ toolbox: {
+ show: false,
+ feature: {
+ restore: {},
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: [topUp[29].time,topUp[28].time, topUp[27].time, topUp[26].time, topUp[25].time, topUp[24].time, topUp[23].time, topUp[22].time, topUp[21].time, topUp[20].time, topUp[19].time, topUp[18].time, topUp[17].time, topUp[16].time, topUp[15].time, topUp[14].time,topUp[13].time, topUp[12].time, topUp[11].time, topUp[10].time, topUp[9].time, topUp[8].time, topUp[7].time, topUp[6].time, topUp[5].time, topUp[4].time, topUp[3].time, topUp[2].time, topUp[1].time, topUp[0].time]
+ },
+ yAxis: {
+ type: 'value',
+ axisLabel: {
+ formatter: '{value} '
+ }
+ },
+ series: [
+ {
+ name: '充值',
+ type: 'line',
+ data: [topUp[29].topUp,topUp[28].topUp, topUp[27].topUp, topUp[26].topUp, topUp[25].topUp, topUp[24].topUp, topUp[23].topUp, topUp[22].topUp, topUp[21].topUp, topUp[20].topUp, topUp[19].topUp, topUp[18].topUp, topUp[17].topUp, topUp[16].topUp, topUp[15].topUp, topUp[14].topUp,topUp[13].topUp, topUp[12].topUp, topUp[11].topUp, topUp[10].topUp, topUp[9].topUp, topUp[8].topUp, topUp[7].topUp, topUp[6].topUp, topUp[5].topUp, topUp[4].topUp, topUp[3].topUp, topUp[2].topUp, topUp[1].topUp, topUp[0].topUp]
+ },
+ {
+ name: '提现',
+ type: 'line',
+ data: [withdraw[29].withdraw,withdraw[28].withdraw, withdraw[27].withdraw, withdraw[26].withdraw, withdraw[25].withdraw, withdraw[24].withdraw, withdraw[23].withdraw, withdraw[22].withdraw, withdraw[21].withdraw, withdraw[20].withdraw, withdraw[19].withdraw, withdraw[18].withdraw, withdraw[17].withdraw, withdraw[16].withdraw, withdraw[15].withdraw, withdraw[14].withdraw,withdraw[13].withdraw, withdraw[12].withdraw, withdraw[11].withdraw, withdraw[10].withdraw, withdraw[9].withdraw, withdraw[8].withdraw, withdraw[7].withdraw, withdraw[6].withdraw, withdraw[5].withdraw, withdraw[4].withdraw, withdraw[3].withdraw, withdraw[2].withdraw, withdraw[1].withdraw, withdraw[0].withdraw]
+ }
+ ]
+ };
+ option && myChart.setOption(option);
+ });
+ }
+
+
+ function regisUser() {
+ document.getElementById("titleDiv1").setAttribute("class", "titleItem titleItemCk");
+ document.getElementById("titleDiv2").setAttribute("class", "titleItem");
+ document.getElementById("titleDiv3").setAttribute("class", "titleItem");
+ var chartDom = document.getElementById('main');
+ var myChart = echarts.init(chartDom);
+ var option;
+ $.post(Feng.ctxPath + "/homePage/regisUser", {type: 1}, function (data) {
+ let login = data.login
+ let register = data.register
+ // option = {
+ // title: {
+ // text: '登录/注册'
+ // },
+ // tooltip: {
+ // trigger: 'axis'
+ // },
+ // legend: {
+ // data: ['登录', '注册']
+ // },
+ // grid: {
+ // left: '3%',
+ // right: '4%',
+ // bottom: '3%',
+ // containLabel: true
+ // },
+ // toolbox: {
+ // feature: {
+ // }
+ // },
+ // xAxis: {
+ // type: 'category',
+ // boundaryGap: false,
+ // data: [login[29].time,login[28].time, login[27].time, login[26].time, login[25].time, login[24].time, login[23].time, login[22].time, login[21].time, login[20].time, login[19].time, login[18].time, login[17].time, login[16].time, login[15].time, login[14].time,login[13].time, login[12].time, login[11].time, login[10].time, login[9].time, login[8].time, login[7].time, login[6].time, login[5].time, login[4].time, login[3].time, login[2].time, login[1].time, login[0].time]
+ // },
+ // yAxis: {
+ // type: 'value'
+ // },
+ // series: [
+ // {
+ // name: '登录',
+ // type: 'line',
+ // stack: 'Total',
+ // data: [login[29].loginNum,login[28].loginNum, login[27].loginNum, login[26].loginNum, login[25].loginNum, login[24].loginNum, login[23].loginNum, login[22].loginNum, login[21].loginNum, login[20].loginNum, login[19].loginNum, login[18].loginNum, login[17].loginNum, login[16].loginNum, login[15].loginNum, login[14].loginNum,login[13].loginNum, login[12].loginNum, login[11].loginNum, login[10].loginNum, login[9].loginNum, login[8].loginNum, login[7].loginNum, login[6].loginNum, login[5].loginNum, login[4].loginNum, login[3].loginNum, login[2].loginNum, login[1].loginNum, login[0].loginNum]
+ // },
+ // {
+ // name: '注册',
+ // type: 'line',
+ // stack: 'Total',
+ // data: [register[29].registerNum,register[28].registerNum, register[27].registerNum, register[26].registerNum, register[25].registerNum, register[24].registerNum, register[23].registerNum, register[22].registerNum, register[21].registerNum, register[20].registerNum, register[19].registerNum, register[18].registerNum, register[17].registerNum, register[16].registerNum, register[15].registerNum, register[14].registerNum,register[13].registerNum, register[12].registerNum, register[11].registerNum, register[10].registerNum, register[9].registerNum, register[8].registerNum, register[7].registerNum, register[6].registerNum, register[5].registerNum, register[4].registerNum, register[3].registerNum, register[2].registerNum, register[1].registerNum, register[0].registerNum]
+ // }
+ //
+ // ]
+ // };
+ option = {
+ title: {
+ text: '登录/注册'
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {},
+ toolbox: {
+ show: false,
+ feature: {
+ restore: {},
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: [login[29].time,login[28].time, login[27].time, login[26].time, login[25].time, login[24].time, login[23].time, login[22].time, login[21].time, login[20].time, login[19].time, login[18].time, login[17].time, login[16].time, login[15].time, login[14].time,login[13].time, login[12].time, login[11].time, login[10].time, login[9].time, login[8].time, login[7].time, login[6].time, login[5].time, login[4].time, login[3].time, login[2].time, login[1].time, login[0].time]
+ },
+ yAxis: {
+ type: 'value',
+ axisLabel: {
+ formatter: '{value} '
+ }
+ },
+ series: [
+ {
+ name: '登录',
+ type: 'line',
+ data: [login[29].loginNum,login[28].loginNum, login[27].loginNum, login[26].loginNum, login[25].loginNum, login[24].loginNum, login[23].loginNum, login[22].loginNum, login[21].loginNum, login[20].loginNum, login[19].loginNum, login[18].loginNum, login[17].loginNum, login[16].loginNum, login[15].loginNum, login[14].loginNum,login[13].loginNum, login[12].loginNum, login[11].loginNum, login[10].loginNum, login[9].loginNum, login[8].loginNum, login[7].loginNum, login[6].loginNum, login[5].loginNum, login[4].loginNum, login[3].loginNum, login[2].loginNum, login[1].loginNum, login[0].loginNum]
+ },
+ {
+ name: '注册',
+ type: 'line',
+ data: [register[29].registerNum,register[28].registerNum, register[27].registerNum, register[26].registerNum, register[25].registerNum, register[24].registerNum, register[23].registerNum, register[22].registerNum, register[21].registerNum, register[20].registerNum, register[19].registerNum, register[18].registerNum, register[17].registerNum, register[16].registerNum, register[15].registerNum, register[14].registerNum,register[13].registerNum, register[12].registerNum, register[11].registerNum, register[10].registerNum, register[9].registerNum, register[8].registerNum, register[7].registerNum, register[6].registerNum, register[5].registerNum, register[4].registerNum, register[3].registerNum, register[2].registerNum, register[1].registerNum, register[0].registerNum]
+ }
+ ]
+ };
+ option && myChart.setOption(option);
+
+ });
+
+ }
+ function groupNum() {
+ document.getElementById("titleDiv1").setAttribute("class", "titleItem");
+ document.getElementById("titleDiv2").setAttribute("class", "titleItem");
+ document.getElementById("titleDiv3").setAttribute("class", "titleItem titleItemCk");
+ var chartDom = document.getElementById('main');
+ var myChart = echarts.init(chartDom);
+ var option;
+ $.post(Feng.ctxPath + "/homePage/groupNum", {type: 3}, function (data) {
+ console.log(data)
+ // option = {
+ // title: {
+ // text: '群聊个数'
+ // },
+ // tooltip: {
+ // trigger: 'axis'
+ // },
+ // legend: {
+ // data: ['群聊个数', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
+ // },
+ // grid: {
+ // left: '3%',
+ // right: '4%',
+ // bottom: '3%',
+ // containLabel: true
+ // },
+ // toolbox: {
+ // feature: {
+ // saveAsImage: {}
+ // }
+ // },
+ // xAxis: {
+ // type: 'category',
+ // boundaryGap: false,
+ // data: [data[29].time,data[28].time, data[27].time, data[26].time, data[25].time, data[24].time, data[23].time, data[22].time, data[21].time, data[20].time, data[19].time, data[18].time, data[17].time, data[16].time, data[15].time, data[14].time,data[13].time, data[12].time, data[11].time, data[10].time, data[9].time, data[8].time, data[7].time, data[6].time, data[5].time, data[4].time, data[3].time, data[2].time, data[1].time, data[0].time]
+ // },
+ // yAxis: {
+ // type: 'value'
+ // },
+ // series: [
+ //
+ // {
+ // name: '群聊个数',
+ // type: 'line',
+ // stack: 'Total',
+ // data: [data[29].groupNum,data[28].groupNum, data[27].groupNum, data[26].groupNum, data[25].groupNum, data[24].groupNum, data[23].groupNum, data[22].groupNum, data[21].groupNum, data[20].groupNum, data[19].groupNum, data[18].groupNum, data[17].groupNum, data[16].groupNum, data[15].groupNum, data[14].groupNum,data[13].groupNum, data[12].groupNum, data[11].groupNum, data[10].groupNum, data[9].groupNum, data[8].groupNum, data[7].groupNum, data[6].groupNum, data[5].groupNum, data[4].groupNum, data[3].groupNum, data[2].groupNum, data[1].groupNum, data[0].groupNum]
+ // }
+ // ]
+ // };
+ option = {
+ title: {
+ text: '群聊个数'
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {},
+ toolbox: {
+ show: false,
+ feature: {
+ restore: {},
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: [data[29].time,data[28].time, data[27].time, data[26].time, data[25].time, data[24].time, data[23].time, data[22].time, data[21].time, data[20].time, data[19].time, data[18].time, data[17].time, data[16].time, data[15].time, data[14].time,data[13].time, data[12].time, data[11].time, data[10].time, data[9].time, data[8].time, data[7].time, data[6].time, data[5].time, data[4].time, data[3].time, data[2].time, data[1].time, data[0].time]
+ },
+ yAxis: {
+ type: 'value',
+ axisLabel: {
+ formatter: '{value} '
+ }
+ },
+ series: [
+ {
+ name: '群聊个数',
+ type: 'line',
+ data: [data[29].groupNum,data[28].groupNum, data[27].groupNum, data[26].groupNum, data[25].groupNum, data[24].groupNum, data[23].groupNum, data[22].groupNum, data[21].groupNum, data[20].groupNum, data[19].groupNum, data[18].groupNum, data[17].groupNum, data[16].groupNum, data[15].groupNum, data[14].groupNum,data[13].groupNum, data[12].groupNum, data[11].groupNum, data[10].groupNum, data[9].groupNum, data[8].groupNum, data[7].groupNum, data[6].groupNum, data[5].groupNum, data[4].groupNum, data[3].groupNum, data[2].groupNum, data[1].groupNum, data[0].groupNum]
+ },
+ {
+ name: '',
+ data: []}
+ ]
+ };
+ option && myChart.setOption(option);
+
+ });
+ }
+
+</script>
+<script src="${ctxPath}/static/modular/system/homePage/homePage.js"></script>
+<script>
+ laydate.render({
+ elem: '#time'
+ , trigger: 'click'
+ , range: true
+ });
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/gameData/GameData.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/gameData/GameData.html
new file mode 100644
index 0000000..16b72db
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/gameData/GameData.html
@@ -0,0 +1,603 @@
+
+@layout("/common/_container.html"){
+<link href="${ctxPath}/static/css/plugins/switchery/switchery.css" rel="stylesheet">
+<style>
+ .table1{
+ display: inline;
+ width: 25%;
+ float:left;
+ text-align:center;
+ border-collapse:collapse;
+ font-size: 18px;
+ }
+ .table2{
+ display: inline;
+ width: 50%;
+ float:left;
+ text-align:center;
+ border-collapse:collapse;
+ font-size: 18px;
+ }
+ .table3{
+ display: inline;
+ width: 50%;
+ float:left;
+ text-align:center;
+ border-collapse:collapse;
+ font-size: 18px;
+ }
+ .table1:hover{
+ background-color: rgba(255,0,0,.3);
+ }
+ .newWidth, .single-line{
+ max-width:150px !important;display: initial !important;
+ }
+ .companyValueClass td:first-child {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+</style>
+<div class="ibox float-e-margins">
+ <div class="ibox-content">
+ <div class="form-horizontal">
+ <div class="row">
+ <div style="height: 50px;box-sizing: border-box;background:#f3f3f4;line-height: 50px;border:1px solid;margin-bottom: 20px;width: auto">
+ <div id="div1" class='table1' onclick="getContent(1)" style="border-right: 1px solid #333;background-color: rgb(26, 179, 148);color: white;">激战球场</div>
+ <div id="div2" class='table1' onclick="getContent(2)" style="border-right: 1px solid #333;">SUTU智慧球门</div>
+ <div id="div3" class='table1' onclick="getContent(3)" style="border-right: 1px solid #333;">社区世界杯跨城赛</div>
+ <div id="div4" class='table1' onclick="getContent(4)" style="border-right: 1px solid #333;">社区世界杯90°准度赛</div>
+ </div>
+ <div class="row" id="content1" style="margin-left: 100px;">
+ <div class="col-sm-11">
+ <div class="form-group" style="display: flex;margin-left: 150px" >
+ <span id="totalNumber">全球场次总数:</span>
+ <span id="totalTime">全球比赛时长:</span>
+ </div>
+ </div>
+ </br>
+ <div class="col-sm-11">
+ <div class="form-group" style="display: flex;margin-left: -150px">
+ <label class="col-sm-3 control-label">*所属门店:</label>
+ <select style="width: 300px" class="form-control" id="stores" name="stores">
+ <option value="">全球</option>
+ @for(obj in stores){
+ <option style="width: 300px" value="${obj.id}">${obj.name}</option>
+ @}
+ </select>
+
+ <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
+ </div>
+ <div class="col-sm-10">
+ <div class="row" id="t1" style="margin-left: 100px;">
+
+ <div id="number" style="width: 1280px;height:500px;"></div>
+ <div id="time" style="width: 1280px;height:500px;"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row" id="content2" style="margin-left: 100px;">
+ <div class="col-sm-11">
+ <div class="form-group">
+ <div class="col-sm-10">
+ </br>
+ </br>
+ </br>
+ <h2>总场次统计</h2>
+ <div id="gameTotal" style="width: 1500px;height:500px;"></div>
+ </div>
+ </div>
+ </div>
+ <div class="col-sm-11" style="display: flex">
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*筛选内容:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="con1" placeholder="请输入年份或者月份" type="text">
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*筛选城市:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="cCode" name="cCode" onchange="getStoreByCity(this)">
+ <option value="">全球</option>
+ @for(obj in list){
+ <option style="width: 300px" value="${obj.cityCode}">${obj.city}</option>
+ @}
+ </select>
+ </div>
+ </div>
+
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*筛选场地:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="site" name="site">
+ <option value="">全球</option>
+ @for(obj in sites){
+ <option style="width: 300px" value="${obj.id}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-sm-11" style="display: flex">
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*游戏类型:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="games" name="site">
+ <option value="">全部</option>
+ <option style="width: 300px" value="1">方块球王</option>
+ <option style="width: 300px" value="2">社区小球王</option>
+ <option style="width: 300px" value="3">玩湃熊之力</option>
+ <option style="width: 300px" value="4">绿茵密码</option>
+ <option style="width: 300px" value="5">镜像阵容</option>
+ <option style="width: 300px" value="6">涨姿势</option>
+ </select>
+ </div>
+ </div>
+ <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
+ </div>
+ <div class="col-sm-10">
+ <div class="row" id="t2" style="margin-left: 100px;">
+ <div id="number1" style="width: 1280px;height:500px;"></div>
+ </div>
+ </div>
+ </div>
+ <div class="row" id="content3" style="margin-left: 100px;">
+ <div class="col-sm-11" style="display: flex">
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*筛选内容:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="con3" placeholder="请输入年份或者月份" type="text">
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*筛选城市:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="cCode3" name="cCode" onchange="getStoreByCity1(this)">
+ <option value="">全球</option>
+ @for(obj in list){
+ <option style="width: 300px" value="${obj.cityCode}">${obj.city}</option>
+ @}
+ </select>
+ </div>
+ </div>
+
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*筛选场地:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="site3" name="site">
+ <option value="">全球</option>
+ @for(obj in sites){
+ <option style="width: 300px" value="${obj.id}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ </div>
+ <#button name="搜索" icon="fa-search" clickFun="TCompetition.search3()"/>
+ </div>
+ <#table id="TSiteTable"/>
+ </div>
+ <div class="row" id="content4" style="margin-left: 100px;">
+ <div class="col-sm-11" style="display: flex">
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*筛选内容:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="con4" placeholder="请输入年份或者月份" type="text">
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*筛选城市:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="cCode4" name="cCode" onchange="getStoreByCity1(this)">
+ <option value="">全球</option>
+ @for(obj in list){
+ <option style="width: 300px" value="${obj.cityCode}">${obj.city}</option>
+ @}
+ </select>
+ </div>
+ </div>
+
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*筛选场地:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="site4" name="site">
+ <option value="">全球</option>
+ @for(obj in sites){
+ <option style="width: 300px" value="${obj.id}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ </div>
+ <#button name="搜索" icon="fa-search" clickFun="TCompetition.search4()"/>
+ </div>
+ <#table id="TSiteTable1"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script src="${ctxPath}/modular/system/dataStatistics/echarts.min.js"></script>
+<script src="${ctxPath}/modular/system/gameData/gameData.js"></script>
+<script src="${ctxPath}/static/js/plugins/switchery/switchery.js"></script>
+<script>
+ var ans = [];
+ var weekX = [];
+ var monthX = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];
+ var yearX = [];
+ var timeX = [];
+ var dataX = [];
+ // 创建一个日期对象
+ var currentDate = new Date();
+ // 获取当前日期的号数
+ let currentDay = currentDate.getDate();
+ // 循环添加号数到数组
+ for (let i = 0; i < 7; i++) {
+ dataX.push(currentDay - 6+i);
+ }
+ // 获取当前月份
+ var currentMonth = currentDate.getMonth();
+ // 获取当前年份
+ var currentYear = currentDate.getFullYear();
+ // 计算指定年份和月份的天数
+ function getDaysInMonth(year, month) {
+ // month 参数范围是 0-11,所以需要加 1
+ return new Date(year, month + 1, 0).getDate();
+ }
+ // 获取当前月份的天数
+ var daysInMonth = getDaysInMonth(currentYear, currentMonth);
+ // 将天数按字符串格式添加到 timeX 数组中
+ for (var i = 1; i <= daysInMonth; i++) {
+ timeX.push(String(i));
+ }
+ laydate.render({
+ elem: '#beginTime'
+ , trigger: 'click'
+ , range: true
+ });
+ // 激战球场
+ var yD=[];
+ var mD=[];
+ var yT=[];
+ var mT=[];
+ // SUTU智慧球场X轴数据
+ var SUTU=[];
+ // SUTU智慧球场数据
+ var SUTUData1=[];
+ function BatterData() {
+ var ajax = new $ax(Feng.ctxPath + "/gameData/list", function(resp){
+ var mDataList= resp.mDataList;
+ var yDataList= resp.yDataList;
+ // 场次
+ yD=[];
+ mD=[];
+ // 时长
+ yT = [];
+ mT = [];
+ for (let i = 0; i <yDataList.length ; i++) {
+
+ yD.push(yDataList[i].total_num);
+ yT.push(yDataList[i].batter_time);
+ }
+ for (let i = 0; i <mDataList.length ; i++) {
+ mD.push(mDataList[i].total_num);
+ mT.push(mDataList[i].batter_time);
+ }
+ for (let i = 0; i <resp.yearList.length ; i++) {
+ yearX.push(resp.yearList[i])
+ }
+ var totalNumber= resp.totalNumber;
+ var totalTime= resp.totalTime;
+ var tN = document.getElementById("totalNumber");
+ var tT = document.getElementById("totalTime");
+ tN.innerText = "全球场次总数:"+totalNumber+"场"
+ tT.innerText = "全球比赛时长:"+totalTime+"小时"
+ option = {
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data: ['年度', '月度'],
+ icon: 'stack',
+ selectedMode: 'single', // 单选
+ selected: {
+ 年度: true,
+ 月度: false,
+
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ toolbox: {
+ feature: {
+ saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: yearX
+ },
+ yAxis: {
+ minInterval: 1,
+ axisLabel : {
+ formatter : '{value}'
+ },
+ name: "场次",
+ type: 'value'
+ },
+ series: [
+ {
+ name: '年度',
+ type: 'line',
+ stack: 'Total',
+ data: yD
+ },
+ {
+ name: '月度',
+ type: 'line',
+ stack: 'Total',
+ data: mD
+ }
+ ]
+ };
+ option2 = {
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data: ['年度', '月度'],
+ icon: 'stack',
+ selectedMode: 'single', // 单选
+ selected: {
+ 年度: true,
+ 月度: false,
+
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ toolbox: {
+ feature: {
+ saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: yearX
+ },
+ yAxis: {
+ name: "时长(小时)",
+ type: 'value'
+ },
+ series: [
+ {
+ name: '年度',
+ type: 'line',
+ stack: 'Total',
+ data: yT
+ },
+ {
+ name: '月度',
+ type: 'line',
+ stack: 'Total',
+ data:mT
+ }
+ ]
+ };
+ });
+ if ($("#stores").val() == ""){
+ ajax.set("storeId",0)
+ }else{
+ ajax.set("storeId",$("#stores").val());
+ }
+ ajax.start();
+ }
+ function SUTUData() {
+ var ajax = new $ax(Feng.ctxPath + "/gameData/listSUTU", function(resp){
+ for (let i = 0; i <resp.games.length ; i++) {
+ SUTU.push(resp.games[i])
+ }
+ for (let i = 0; i <resp.data1.length ; i++) {
+ SUTUData1.push(resp.data1[i].count);
+ }
+ console.log("看看")
+ console.log(SUTUData)
+ option3 = {
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow'
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ data: SUTU
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ data: SUTUData1,
+ type: 'bar'
+ }
+ ]
+ };
+
+ });
+ ajax.start();
+ }
+ $(function(){
+ getContent(1);
+ BatterData();
+ SUTUData();
+ option4 = {
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data: ['年度', '月度'],
+ icon: 'stack',
+ selectedMode: 'single', // 单选
+ selected: {
+ 年度: true,
+ 月度: false,
+
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ toolbox: {
+ feature: {
+ saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: yearX
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ name: '年度',
+ type: 'line',
+ stack: 'Total',
+ data: [1,3,6,8,9,5]
+ },
+ {
+ name: '月度',
+ type: 'line',
+ stack: 'Total',
+ data:[1,2,3,4,5,6,6,5,4,3,2,1]
+ // data: [month[0][0],month[0][1], month[0][2], month[0][3], month[0][4],
+ // month[0][5], month[0][6], month[0][7], month[0][8], month[0][9], month[0][10], month[0][11]]
+ }
+ ]
+ };
+ // 基于准备好的dom,初始化echarts实例
+ var myChart = echarts.init(document.getElementById('number'));
+
+ myChart.on('legendselectchanged', obj => {
+ var options = myChart.getOption()
+ options.series[0].data = yD;
+ options.series[1].data = mD;
+ //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+ if (obj.name == '年度') {
+ options.xAxis[0].data = yearX
+ } else if (obj.name == '月度') {
+ options.xAxis[0].data = monthX
+ }
+ myChart.setOption(options, true)
+ });
+ var myChart2 = echarts.init(document.getElementById('time'));
+ myChart2.on('legendselectchanged', obj => {
+ var options = myChart2.getOption();
+ options.series[0].data = yT;
+ options.series[1].data = mT;
+ //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+ if (obj.name == '年度') {
+ options.xAxis[0].data = yearX
+ } else if (obj.name == '月度') {
+ options.xAxis[0].data = monthX
+ }
+ myChart2.setOption(options, true)
+ });
+ var myChart4 = echarts.init(document.getElementById('number1'));
+ myChart4.on('legendselectchanged', obj => {
+ var options = myChart4.getOption()
+ //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+ if (obj.name == '年度') {
+ options.xAxis[0].data = yearX
+ } else if (obj.name == '月度') {
+ options.xAxis[0].data = monthX
+ }
+ myChart4.setOption(options, true)
+ });
+ // 使用刚指定的配置项和数据显示图表。
+ myChart.setOption(option);
+ myChart2.setOption(option2);
+ myChart4.setOption(option4);
+
+ var myChart3 = echarts.init(document.getElementById('gameTotal'));
+ myChart3.setOption(option3);
+ });
+ function getContent(type){
+ //设置点击字体颜色效果
+ for(var i=1;i<5;i++){
+ document.getElementById("div"+i).style.color="#888888";//
+ document.getElementById("div"+i).style.backgroundColor ="";
+ $("#content"+i).hide();
+ }
+ //设置点击背景颜色效果
+ document.getElementById("div"+type).style.color="white";//
+ document.getElementById("div"+type).style.backgroundColor ="rgb(26, 179, 148)";
+ $("#type").val(type);
+ $("#content"+type).show();
+ if(type!=3){
+ $("#ensure").hide();
+ $("#nextB").show();
+ }else{
+ $("#ensure").show();
+ $("#nextB").hide();
+ }
+ }
+
+ function getStoreByCity(e) {
+ var cityCode=$(e).val();
+ var ajax = new $ax(Feng.ctxPath + "/tSite/getSiteByCity", function(data){
+ if(data!=null){
+ var content='<option value="">全球</option>';
+ $.each(data, function(k,v) {
+ content += "<option value='"+v.id+"'>"+v.name+"</option>";
+ });
+ $("#site").empty().append(content);
+ }
+ });
+ ajax.set("oneId",cityCode);
+ ajax.start();
+ }
+ function getStoreByCity1(e) {
+ var cityCode=$(e).val();
+ var ajax = new $ax(Feng.ctxPath + "/tSite/getSiteByCity", function(data){
+ if(data!=null){
+ var content='<option value="">全球</option>';
+ $.each(data, function(k,v) {
+ content += "<option value='"+v.id+"'>"+v.name+"</option>";
+ });
+ $("#site1").empty().append(content);
+ }
+ });
+ ajax.set("oneId",cityCode);
+ ajax.start();
+ }
+</script>
+
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/gateData/GateData.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/gateData/GateData.html
new file mode 100644
index 0000000..45bdb55
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/gateData/GateData.html
@@ -0,0 +1,31 @@
+@layout("/common/_container.html"){
+<div class="row">
+ <div class="col-sm-12">
+ <div class="ibox float-e-margins">
+ <div class="ibox-title">
+ <h5>闸机数据统计</h5>
+ </div>
+ <div class="ibox-content">
+ <div class="row row-lg">
+ <div class="col-sm-12">
+ <div class="row">
+ </div>
+ <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
+ <h3>场地总人次:</h3>
+ </div>
+ <#table id="TSiteTable"/>
+ </div>
+ </div>
+ </div>
+</div>
+</div>
+</div>
+<script src="${ctxPath}/modular/system/gateData/gateData.js"></script>
+<script>
+ laydate.render({
+ elem: '#createTime'
+ ,range: true
+ ,lang:"en"
+ });
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator.html
new file mode 100644
index 0000000..b132165
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator.html
@@ -0,0 +1,59 @@
+@layout("/common/_container.html"){
+<div class="row">
+ <div class="col-sm-12">
+ <div class="ibox float-e-margins">
+ <div class="ibox-title">
+ <h5>运营商管理</h5>
+ </div>
+ <div class="ibox-content">
+ <div class="row row-lg">
+ <div class="col-sm-12">
+ <div class="row">
+ <div class="col-sm-3">
+ <#NameCon id="name" name="管理员姓名:" />
+ </div>
+ <div class="col-sm-3">
+ <#NameCon id="phone" name="管理员手机号:" />
+ </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="type" >
+ <option value="">全部</option>
+ <option value="1">全国</option>
+ <option value="2">指定地区</option>
+ </select>
+ </div>
+ </div>
+ <div class="col-sm-3">
+ <#button name="搜索" icon="fa-search" clickFun="TSite.search()"/>
+ <#button name="重置" icon="fa-trash" clickFun="TSite.resetSearch()" space="true"/>
+ </div>
+ </div>
+ <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
+ <#button name="添加" icon="fa-plus" clickFun="TSite.openAddTSite()"/>
+ <#button name="编辑" icon="fa-edit" clickFun="TSite.openInfo()" space="true"/>
+ <#button name="冻结" icon="fa-remove" clickFun="TSite.offShelf()" space="true"/>
+ <#button name="解冻" icon="fa-check" clickFun="TSite.onShelf()" space="true"/>
+ <#button name="重置密码" icon="fa-search" clickFun="TSite.reload()" space="true"/>
+ </div>
+ <#table id="TSiteTable"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script src="${ctxPath}/modular/system/operator/operator.js"></script>
+<script>
+ laydate.render({
+ elem: '#createTime'
+ ,range: true
+ ,lang:"en"
+ });
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_add.html
new file mode 100644
index 0000000..549860e
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_add.html
@@ -0,0 +1,127 @@
+@layout("/common/_container.html"){
+<style>
+ .avatar-uploader .el-upload {
+ border: 1px dashed #d9d9d9;
+ border-radius: 6px;
+ cursor: pointer;
+ position: relative;
+ height: 100px;
+ width: 100px;
+ overflow: hidden;
+ }
+
+ .avatar-uploader .el-upload:hover {
+ border-color: #409EFF;
+ }
+ .avatar-uploader-icon {
+ font-size: 28px;
+ color: #8c939d;
+ width: 100px;
+ height: 100px;
+ line-height: 100px;
+ margin-top: 32px;
+ text-align: center;
+ }
+ .avatar {
+ width: 100px;
+ height: 100px;
+ display: block;
+ }
+
+ .col-sm-12 {
+ margin-top: 20px;
+ }
+
+ .col-sm-12 select {
+ height: 33px;
+ }
+</style>
+<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script>
+<div class="ibox float-e-margins">
+ <div class="ibox-content">
+ <div class="form-horizontal" id="carInfoForm">
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*运营商名称:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="name" placeholder="请输入运营商名称" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*管理员姓名:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="userName" placeholder="请输入管理员姓名" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*管理员手机号:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="phone" placeholder="请输入管理员手机号" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*管理区域:</label>
+ <div class="col-sm-2" style="display: flex;align-items: center;">
+ <div class="radio radio-info radio-inline">
+ <input type="radio" id="areaType1" value="1" name="areaType" onclick="TSite.areaTypeClick(1)">
+ <label for="areaType1"> 全国 </label>
+ </div>
+ <div class="radio radio-success radio-inline">
+ <input type="radio" id="areaType2" value="2" name="areaType" checked="" onclick="TSite.areaTypeClick(2)">
+ <label for="areaType2"> 指定地区 </label>
+ </div>
+ </div>
+ <div class="col-sm-2">
+ <#button btnCss="info" name="添加" id="ensure" icon="fa-check" clickFun="TSite.addArea()"/>
+ </div>
+ </div>
+ <div class="form-group" id="areaType1Div">
+ <label class="col-sm-3 control-label">*管理地区:</label>
+ <div class="col-sm-3">
+ <select class="form-control" id="pCode" onchange="TSite.oneChange(this)">
+ <option value="">选择省</option>
+ @for(obj in provinceList){
+ <option value="${obj.code}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ <div class="col-sm-3">
+ <select class="form-control" id="cCode" >
+ <option value="">选择市</option>
+ </select>
+ </div>
+ </div>
+ <div class="form-group" id = "data">
+ <label class="col-sm-3 control-label">已添加管理地区</label>
+ <div class="col-sm-6">
+ <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;">
+ <table class="table table-striped table-bordered table-hover table-condensed">
+ <thead>
+ <tr>
+ <th style="width: 300px;text-align: center;">所在省</th>
+ <th style="width: 300px;text-align: center;">所在市</th>
+ <th style="width: 100px;text-align: center;">操作</th>
+ </tr>
+ </thead>
+ <tbody id="areaValue">
+
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+<div class="row btn-group-m-t">
+ <div class="col-sm-10 col-sm-offset-5" >
+ <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSite.addSubmit()"/>
+ <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TSite.close()"/>
+ </div>
+</div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script src="${ctxPath}/modular/system/operator/operator_add.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">
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_edit.html
new file mode 100644
index 0000000..fb66c44
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/Operator_edit.html
@@ -0,0 +1,155 @@
+@layout("/common/_container.html"){
+<style>
+ .avatar-uploader .el-upload {
+ border: 1px dashed #d9d9d9;
+ border-radius: 6px;
+ cursor: pointer;
+ position: relative;
+ height: 100px;
+ width: 100px;
+ overflow: hidden;
+ }
+
+ .avatar-uploader .el-upload:hover {
+ border-color: #409EFF;
+ }
+ .avatar-uploader-icon {
+ font-size: 28px;
+ color: #8c939d;
+ width: 100px;
+ height: 100px;
+ line-height: 100px;
+ margin-top: 32px;
+ text-align: center;
+ }
+ .avatar {
+ width: 100px;
+ height: 100px;
+ display: block;
+ }
+
+ .col-sm-12 {
+ margin-top: 20px;
+ }
+
+ .col-sm-12 select {
+ height: 33px;
+ }
+</style>
+<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script>
+<div class="ibox float-e-margins">
+ <div class="ibox-content">
+ <div class="form-horizontal" id="carInfoForm">
+ <div class="form-group" >
+ <input hidden id="id" value="${id}">
+ <input hidden id="type" value="${data.type}">
+ <label class="col-sm-3 control-label">*运营商名称:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="name" value="${data.name}" placeholder="请输入运营商名称" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*管理员姓名:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="userName" value="${userName}" placeholder="请输入管理员姓名" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*管理员手机号:</label>
+ <div class="col-sm-9" style="display: flex;">
+ <input style="width: 300px" class="form-control" id="phone" value="${phone}" placeholder="请输入管理员手机号" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*管理区域:</label>
+ <div class="col-sm-2" style="display: flex;align-items: center;">
+ <div class="radio radio-info radio-inline">
+ <input type="radio" id="areaType1" value="1" name="areaType" onclick="TSite.areaTypeClick(1)">
+ <label for="areaType1"> 全国 </label>
+ </div>
+ <div class="radio radio-success radio-inline">
+ <input type="radio" id="areaType2" value="2" name="areaType" checked="" onclick="TSite.areaTypeClick(2)">
+ <label for="areaType2"> 指定地区 </label>
+ </div>
+ </div>
+ <div class="col-sm-2">
+ <#button btnCss="info" name="添加" id="ensure" icon="fa-check" clickFun="TSite.addArea()"/>
+ </div>
+ </div>
+ <div class="form-group" id="areaType1Div">
+ <label class="col-sm-3 control-label">*管理地区:</label>
+ <div class="col-sm-3">
+ <select class="form-control" id="pCode" onchange="TSite.oneChange(this)">
+ <option value="">选择省</option>
+ @for(obj in provinceList){
+ <option value="${obj.code}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ <div class="col-sm-3">
+ <select class="form-control" id="cCode" >
+ <option value="">选择市</option>
+ </select>
+ </div>
+ </div>
+ <div class="form-group" id = "data">
+ <label class="col-sm-3 control-label">已添加管理地区</label>
+ <div class="col-sm-6">
+ <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;">
+ <table class="table table-striped table-bordered table-hover table-condensed">
+ <thead>
+ <tr>
+ <th style="width: 300px;text-align: center;">所在省</th>
+ <th style="width: 300px;text-align: center;">所在市</th>
+ <th style="width: 100px;text-align: center;">操作</th>
+ </tr>
+ </thead>
+ <tbody id="areaValue">
+ @for(obj in list){
+ <tr class="areaValueClass">
+ <td style="text-align: center;"><input type="hidden" id="provinceCode" name="provinceName" value="${obj.provinceCode}">
+ <input type="hidden" id="provinceName" name="provinceCode" value="${obj.province}">${obj.province}</td>
+ <td style="text-align: center;"><input type="hidden" id="cityCode" name="cityName" value="${obj.cityCode}">
+ <input type="hidden" id="cityName" name="cityCode" value="${obj.city}">${obj.city}</td>
+ <td style="text-align: center;"><button onclick="deleteSub(this)">移除</button></td>
+ </tr>
+ @}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="row btn-group-m-t">
+ <div class="col-sm-10 col-sm-offset-5" >
+ <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSite.updateSubmit()"/>
+ <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TSite.close()"/>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+</div>
+
+<script src="${ctxPath}/modular/system/operator/operator_add.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>
+ window.onload = function(){
+ var OBJradio = document.querySelectorAll('input[type="radio"]');
+ console.log("看看集合")
+ console.log(OBJradio)
+ for(i=0;i<OBJradio.length;i++){//循环查找这个radio
+ if($("#type").val()==OBJradio[i].value){//判断是否与radio的值相同
+ OBJradio[i].checked=true//修改选中状态
+ }
+ }
+ if ($("#type").val()==1){
+ $("#areaType1Div").hide();
+ $("#areaType2Div").hide();
+ $("#data").hide();
+ $("#ensure").hide();
+ }
+ }
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html
new file mode 100644
index 0000000..a639b53
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html
@@ -0,0 +1,114 @@
+@layout("/common/_container.html"){
+<div class="row">
+ <div class="col-sm-12">
+ <div class="ibox float-e-margins">
+ <div class="ibox-title">
+ <h5>运营商商户管理</h5>
+ </div>
+ <div class="ibox-content">
+ <div class="row row-lg">
+ <div class="col-sm-12">
+ <div class="row">
+ <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="pCode" onchange="TSite.oneChange(this)">
+ <option value="">选择省</option>
+ @for(obj in provinceList){
+ <option value="${obj.code}">${obj.name}</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="cCode">
+ <option value="">请先选择省</option>
+ </select>
+ </div>
+ </div>
+ <div class="col-sm-3">
+ <#NameCon id="name" name="管理员姓名:" />
+ </div>
+ <div class="col-sm-3">
+ <#NameCon id="phone" name="管理员手机号:" />
+ </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 style="width: 300px" class="form-control" id="platform" name = "platform">
+ <option value="">全部</option>
+ <option value="1">微信</option>
+ <option value="2">支付宝</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 style="width: 300px" class="form-control" id="type" name = "platform">
+ <option value="">全部</option>
+ <option value="1">法人</option>
+ <option value="2">个人</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="1">待审核</option>
+ <option value="2">审核中</option>
+ <option value="2">已审核</option>
+ <option value="2">已拒绝</option>
+ </select>
+ </div>
+ </div>
+ <div class="col-sm-3">
+ <#button name="搜索" icon="fa-search" clickFun="TSite.search()"/>
+ <#button name="重置" icon="fa-trash" clickFun="TSite.resetSearch()" space="true"/>
+ </div>
+ </div>
+ <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
+ <#button name="分账比例" icon="fa-plus" clickFun="TSite.openAddTSite()"/>
+ <#button name="认证" icon="fa-plus" clickFun="TSite.openInfo()"/>
+ </div>
+ <#table id="TSiteTable"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script src="${ctxPath}/modular/system/operatorUser/operatorUser.js"></script>
+<script>
+ laydate.render({
+ elem: '#createTime'
+ ,range: true
+ ,lang:"en"
+ });
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser_auth.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser_auth.html
new file mode 100644
index 0000000..cebe82c
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser_auth.html
@@ -0,0 +1,308 @@
+@layout("/common/_container.html"){
+<style>
+ .avatar-uploader .el-upload {
+ border: 1px dashed #d9d9d9;
+ border-radius: 6px;
+ cursor: pointer;
+ position: relative;
+ height: 100px;
+ width: 100px;
+ overflow: hidden;
+ }
+
+ .avatar-uploader .el-upload:hover {
+ border-color: #409EFF;
+ }
+ .avatar-uploader-icon {
+ font-size: 28px;
+ color: #8c939d;
+ width: 100px;
+ height: 100px;
+ line-height: 100px;
+ margin-top: 32px;
+ text-align: center;
+ }
+ .avatar {
+ width: 100px;
+ height: 100px;
+ display: block;
+ }
+
+ .col-sm-12 {
+ margin-top: 20px;
+ }
+
+ .col-sm-12 select {
+ height: 33px;
+ }
+ #app1{
+ margin-left: 255px;
+ }
+
+
+</style>
+<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script>
+<div class="ibox float-e-margins">
+ <div class="ibox-content">
+ <div class="form-horizontal" id="carInfoForm">
+ <h2>商户信息</h2>
+ <div style="display: flex">
+ <span id="storeName"></span>
+ <span id="storeStaff"></span>
+ <span id="storePhone"></span>
+ </div>
+ <h2>商户号信息</h2>
+ </br>
+ </br>
+
+ <div class="row">
+ <div class="col-lg-6" style="">
+ <div class="form-group">
+ <label class="col-sm-4 control-label" >
+ 主题类型:<input type="radio" name="type" value="1" checked onclick="updateHalf(1)">个人
+ <input type="radio" name="type" value="2" onclick="updateHalf(2)">企业
+ </label>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*营业执照商户名称:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="merchantName" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*法定代表人姓名:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="lrName" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*营业期限:</label>
+ <div class="col-sm-9" style="display: flex">
+ <input style="width: 300px" class="form-control" id="tradeTime" name="tradeTime" type="date">
+ <input type="checkbox" style="margin-left: 10px" id="tradeT" value="0" onchange="TSite.tradeYse(this)">长期</input>
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-6" style="">
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*营业执照注册号:</label>
+ <div class="col-sm-9" >
+ <input style="width: 300px" class="form-control" id="licenseRegistration" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*注册地址:</label>
+ <div class="col-sm-9" >
+ <input style="width: 300px" class="form-control" id="registerAddress" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <#avatar id="license" name="营业执照" />
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-lg-6" style="">
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*法人姓名:</label>
+ <div class="col-sm-9" >
+ <input style="width: 300px" class="form-control" id="legalPerson" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*法人手机号:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="legalPhone" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*法人身份证有效期:</label>
+ <div class="col-sm-9" style="display: flex">
+ <input style="width: 300px" class="form-control" id="IDCardTime" name="IDCardTime" type="date">
+ <input type="checkbox" style="margin-left: 10px" id="IDCardT" value="0" onchange="TSite.tradeYse(this)">长期</input>
+ </div>
+ </div>
+ <div class="form-group">
+ <#avatar id="IDCardImg" name="法人身份证正面照" />
+ </div>
+ </div>
+ <div class="col-lg-6" style="">
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*法人身份证号:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="lIDNumber" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*法人邮箱:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="lEmail" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*法人身份证地址:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="lIDAddress" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <#avatar id="IDCardImg1" name="法人身份证背面照" />
+ </div>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="col-lg-6" style="">
+ <div class="form-group" >
+ <label class="col-sm-4 control-label" >
+ 结算账户类型:<input type="radio" name="type" value="1">对公 <input type="radio" name="type" value="2">对私
+ </label>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">开户银行:</label>
+ <div class="col-sm-9">
+ <select style="width: 300px" class="form-control" id="bank" name="bank">
+ <option value="">选择开户银行</option>
+ @for(obj in bankList){
+ <option value="${obj.bankCode}">${obj.bankName}</option>
+ @}
+ </select>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">开户所在地:</label>
+ <div class="col-sm-9" style="display: flex">
+ <select style="width: 150px" class="form-control" id="pCode" onchange="TSite.oneChange(this)" name="bank">
+ <option value="">选择省</option>
+ @for(obj in provinceList){
+ <option value="${obj.code}">${obj.name}</option>
+ @}
+ </select>
+ <select style="width: 150px" class="form-control" id="cCode" name="bank">
+ <option value="">选择市区</option>
+ </select>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*银行卡号:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="backNumber" name="backNumber" type="text">
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-6" style="">
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*开户名称:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="backUserName" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group" >
+ <label class="col-sm-3 control-label">*开户行全称:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="backName" placeholder="请输入" type="text">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row" id="benefit">
+ <div class="col-lg-6" style="">
+ <div class="form-group">
+ <label class="col-sm-4 control-label" >
+ 法人是否为受益人:<input type="radio" name="type" value="1">是 <input type="radio" name="type" value="2">否
+ </label>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*受益人姓名:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="bName" name="bName" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*受益人身份证地址:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="bAddress" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*受益人身份证有效期:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="bTime" name="bTime" type="date">
+ </div>
+ </div>
+ <div class="form-group">
+ <#avatar id="bImg1" name="受益人身份证正面照" />
+ </div>
+ </div>
+ <div class="col-lg-6" style="">
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*受益人身份证号:</label>
+ <div class="col-sm-9" >
+ <input style="width: 300px" class="form-control" id="bIDNumber" placeholder="请输入" type="text">
+ </div>
+ </div>
+ <div class="form-group">
+ <#avatar id="bImg2" name="受益人身份证背面照" />
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-lg-6" style="">
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*拒绝理由:</label>
+ </div>
+ <div class="form-group">
+ <#avatar id="Img" name="上传图片" />
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*备注:</label>
+ <div class="col-sm-9">
+ <input style="width: 300px" class="form-control" id="remark" name="remark" type="text">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="row btn-group-m-t">
+ <div class="col-sm-10 col-sm-offset-5" >
+ <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSite.addSubmit()"/>
+ <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TSite.close()"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script src="${ctxPath}/modular/system/operatorUser/operatorUser.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>
+ laydate.render({
+ elem: '#tradeTime'
+ ,range: true
+ ,lang:"CN"
+ });
+ laydate.render({
+ elem: '#IDCardTime'
+ ,range: true
+ ,lang:"CN"
+ });
+ laydate.render({
+ elem: '#bTime'
+ ,range: true
+ ,lang:"CN"
+ });
+ function updateHalf(e) {
+ if(e==1){
+ $("#benefit").hide()
+ }else {
+ $("#benefit").show()
+ }
+
+ }
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TStoreList.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TStoreList.html
index a7f46c1..0d079ce 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TStoreList.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TStoreList.html
@@ -10,17 +10,17 @@
<div class="col-sm-12">
<div class="row">
<div class="col-sm-3">
- <select class="form-control" id="province">
- <option value="">全部</option>
- </select>
- </div>
- <div class="col-sm-3">
- <select class="form-control" id="city">
- <option value="">全部</option>
- </select>
- </div>
+ <#SelectCon id="province" name="所在省" >
+ <option value="">全部</option>
+ </#SelectCon>
+ </div>
+ <div class="col-sm-3">
+ <#SelectCon id="city" name="所在市" >
+ <option value="">全部</option>
+ </#SelectCon>
+ </div>
<div class="col-sm-3">
- <#SelectCon id="userPopulation" name="所属账号" >
+ <#SelectCon id="operator" name="所属运营商" >
<option value="">全部</option>
</#SelectCon>
</div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html
index 7c6e1a5..0b08976 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html
@@ -20,7 +20,7 @@
</select>
</div>
<div class="col-sm-3">
- <#SelectCon id="userPopulation" name="所属账号" >
+ <#SelectCon id="userPopulation" name="所属运营商" >
<option value="">全部</option>
</#SelectCon>
</div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket.html
new file mode 100644
index 0000000..d30a913
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket.html
@@ -0,0 +1,78 @@
+@layout("/common/_container.html"){
+<div class="row">
+ <div class="col-sm-12">
+ <div class="ibox float-e-margins">
+
+ <div class="ibox-title">
+ <h5>门票管理</h5>
+ </div>
+ <div class="ibox-content">
+ <div class="row row-lg">
+ <div class="col-sm-12">
+ <div class="row">
+
+ <div class="col-sm-3">
+ <#NameCon id="name" name="门票名称" />
+ </div>
+ <div class="col-sm-3">
+ <#SelectCon id="type" name="门票类型">
+ <option value="">全部</option>
+ <option value="1">日卡</option>
+ <option value="2">月卡</option>
+ <option value="3">季卡</option>
+ <option value="4">年卡</option>
+ </#SelectCon>
+ </div>
+ <div class="col-sm-3">
+ <#SelectCon id="redemptionMethod" name="兑换方式">
+ <option value="">全部</option>
+ <option value="1">积分</option>
+ <option value="2">现金+积分</option>
+ <option value="3">现金</option>
+ </#SelectCon>
+ </div>
+ <div class="col-sm-3">
+ <#SelectCon id="userPopulation" name="用户人群">
+ <option value="">全部</option>
+ <option value="1">全部用户</option>
+ <option value="2">年度会员</option>
+ <option value="3">已有学员用户</option>
+ </#SelectCon>
+ </div>
+ <div class="col-sm-3">
+ <#SelectCon id="activeStatus" name="活动状态">
+ <option value="">全部</option>
+ <option value="1">未开始</option>
+ <option value="2">已开始</option>
+ <option value="3">已结束</option>
+ </#SelectCon>
+ </div>
+ <div class="col-sm-3">
+ <#SelectCon id="state" name="可售状态">
+ <option value="">全部</option>
+ <option value="1">上架</option>
+ <option value="2">下架</option>
+ </#SelectCon>
+ </div>
+ <div class="col-sm-3">
+ <#button name="搜索" icon="fa-search" clickFun="TPointProducts.search()"/>
+ <#button name="重置" icon="fa-trash" clickFun="TPointProducts.resetSearch()" space="true"/>
+ </div>
+ </div>
+ <div class="hidden-xs" id="TPointProductsTableToolbar" role="group">
+ <#button name="添加" icon="fa-plus" clickFun="TPointProducts.openAddTPointProducts()"/>
+ <#button name="编辑" icon="fa-edit" clickFun="TPointProducts.openEditPage()" space="true"/>
+ <#button name="上架" icon="fa-remove" clickFun="TPointProducts.onShelf()" space="true"/>
+ <#button name="下架" icon="fa-remove" clickFun="TPointProducts.offShelf()" space="true"/>
+ <#button name="查看详情" icon="fa-remove" clickFun="TPointProducts.detail()" space="true"/>
+ <#button name="购买详情" icon="fa-remove" clickFun="TPointProducts.payDetail()" space="true"/>
+ </div>
+ <#table id="TPointProductsTable"/>
+ </div>
+ </div>
+ </div>
+</div>
+</div>
+</div>
+<script src="${ctxPath}/modular/system/ticket/ticket.js"></script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html
new file mode 100644
index 0000000..3de0427
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html
@@ -0,0 +1,357 @@
+@layout("/common/_container.html"){
+<style>
+ .avatar-uploader .el-upload {
+ border: 1px dashed #d9d9d9;
+ border-radius: 6px;
+ cursor: pointer;
+ position: relative;
+ height: 100px;
+ width: 100px;
+ overflow: hidden;
+ }
+
+ .avatar-uploader .el-upload:hover {
+ border-color: #409eff;
+ }
+ .avatar-uploader-icon {
+ font-size: 28px;
+ color: #8c939d;
+ width: 100px;
+ height: 100px;
+ line-height: 100px;
+ margin-top: 34px;
+ text-align: center;
+ }
+ .avatar {
+ width: 100px;
+ height: 100px;
+ display: block;
+ }
+
+ .col-sm-12 {
+ margin-top: 20px;
+ }
+
+ .col-sm-12 select {
+ height: 33px;
+ }
+</style>
+<div class="ibox float-e-margins">
+ <div class="ibox-content">
+ <div class="form-horizontal" id="carInfoForm">
+ <#input id="name" name="门票名称" type="text"/>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">商品类型:</label>
+ <div class="col-sm-9">
+ <input type="radio" name="type" value="1" checked onclick="updateType(1)"> 日卡
+ <input type="radio" name="type" value="2" > 月卡
+ <input type="radio" name="type" value="3" > 季卡
+ <input type="radio" name="type" value="3" > 年卡
+ </div>
+ </div>
+ <#input id="price" name="原价" type="text"/>
+ <div class="form-group">
+ <label class="col-sm-3 control-label">兑换方式:</label>
+ <div class="col-sm-9">
+ <input type="radio" name="redemptionMethod" value="1" checked> 积分
+ <input type="radio" name="redemptionMethod" value="2" > 现金+积分
+ <input type="radio" name="redemptionMethod" value="3" > 现金
+ </div>
+ </div>
+ <div class="form-group" id="y1" hidden>
+ <label class="col-sm-3 control-label">所需现金:</label>
+ <div class="col-sm-9">
+ <input class="form-control" id="cash" name="cash" type="text">
+
+ </div>
+ </div>
+ <div class="form-group" id="y2">
+ <label class="col-sm-3 control-label">所需积分:</label>
+ <div class="col-sm-9">
+ <input class="form-control" id="integral" name="integral" type="text">
+
+ </div>
+ </div>
+ <#avatar id="cover" name="门票封面" />
+ <div class="row" id="app" style="margin-left: 225px;" >
+ <div class="col-sm-6">
+ <div class="form-group">
+ <label class="col-sm-3 control-label">门票图片: </label>
+ <div class="col-sm-2" style="margin-top: 2%">
+ <el-upload
+ class="avatar-uploader"
+ action="/tCouponManage/uploadPic"
+ :on-success="handleAvatarSuccess"
+ accept=".jpg,.jpeg,.png,.JPG,.JPEG"
+ :on-remove="handleRemove"
+ :before-upload="beforeAvatarUpload">
+ <img v-if="imageUrl" :src="imageUrl" class="avatar">
+ <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+ </el-upload>
+ </div>
+ </div>
+
+ </div>
+ </div>
+
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">用户人群:</label>
+ <div class="col-sm-9">
+ <input type="radio" name="userPopulation" value="1" checked> 全部用户
+ <input type="radio" name="userPopulation" value="2" > 年度会员
+ <input type="radio" name="userPopulation" value="3" > 已有学员用户
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">发放数量:</label>
+ <div class="col-sm-9">
+ <input class="form-control" id="quantityIssued" name="quantityIssued" type="text">
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">限领数量:</label>
+ <div class="col-sm-9">
+ <input class="form-control" id="pickUpQuantity" name="pickUpQuantity" type="text">
+ </div>
+ </div>
+ <#input id="startTime" name="有效期" type="text"/>
+ <div class="row" id="belongsCon" >
+ <div class="form-group">
+ <div class="form-group">
+ <div class="initialLevel col-sm-12 control-label form-group">
+ <label class="col-sm-3">*适用范围: </label>
+ <div class="col-sm-2" id="belongsNationwide" >
+ <input class="col-sm-1" onclick="scopeOfApplication1()" name="company" type="radio"
+ value="0" checked style="margin-top: 10px"/>
+ <label class="col-sm-1" style="width: 38%;margin-top: 7px">全国通用</label>
+ </div>
+ <div class="col-sm-2" id="belongsCity" >
+ <input class="col-sm-1" name="company" onclick="scopeOfApplication2()" type="radio"
+ value="1" style="margin-top: 10px"/>
+ <label class="col-sm-1" style="width: 38%;margin-top: 7px">指定城市</label>
+ </div>
+ <div class="col-sm-2" id="belongsStore" >
+ <input class="col-sm-1" name="company" onclick="scopeOfApplication3()" type="radio"
+ value="1" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px"/>
+ <label class="col-sm-1" style="width: 38%;margin-top: 6px;">指定门店</label>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+
+ <div class="row" id="citySelect" hidden="hidden">
+ <div class="form-group">
+ <div class="form-group">
+ <label class="col-sm-3 control-label">*指定城市: </label>
+ <div class="col-sm-9 control-label">
+ <select class="col-sm-1" id="provinceData" style="margin-top: 1%;width: 25%" onchange="changeCity(null)">
+ <option value="">请选择</option>
+ </select>
+ <label class="col-sm-1" style="width: 9%;margin-top: 7px">省</label>
+ <select class="col-sm-1" style="margin-top: 1%;width: 25%" id="cityData">
+ <option value="">请选择</option>
+ </select>
+ <label class="col-sm-1" style="width: 7%;margin-top: 7px">市</label>
+ <label name="addBranch" class="col-sm-1" onclick="TCarInfoDlg.addBranch()" style="border: 0px;cursor: pointer;margin-top: 1%"><i class="fa fa-plus-circle"></i></label>
+ </div>
+ <div id="cityDemo"></div>
+ </div>
+
+ </div>
+ </div>
+
+ <div class="row" id="storeSelect" hidden="hidden">
+ <div class="form-group">
+ <div class="form-group">
+ <div class="col-sm-12">
+ <label class="col-sm-3 control-label">*指定门店: </label>
+ <button onclick="storeList()"
+ style="height: 22px;width: 82px;background-color: #4a8ff1;color: white;z-index: 15;position:relative;border: none;margin-top: 1%">
+ 选择门店
+ </button>
+ </div>
+ <div class="col-sm-12" style="margin-left: -57px;margin-top: 20px">
+ <table class="table table-bordered" style="width: 70%;margin-left: 228px;" id="storeTable">
+ <thead>
+ <tr>
+ <td>所在省市</td>
+ <td>所属账号</td>
+ <td>门店名称</td>
+ <td>操作</td>
+ </tr>
+ </thead>
+ <tbody id="coun"></tbody>
+ </table>
+ </div>
+ </div>
+
+ </div>
+ </div>
+ <div class="form-group" style="margin-left:262px">
+ <label class="col-sm-1 control-label">兑换说明:</label>
+ <div class="col-sm-5">
+ <textarea type="text/plain" id="editor" style="height: 300px;width: 800px;"></textarea>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-3 control-label">排序:</label>
+ <div class="col-sm-9">
+ <input class="form-control" id="sort" name="sort" type="text">
+
+ </div>
+ </div>
+ </div>
+
+ <div id="b2" hidden>
+
+ <div class="form-group" id="provinceCode">
+ <label class="col-sm-3 control-label">所在省:</label>
+ <div class="col-sm-9">
+ <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange(this)">
+ <option value="">选择省</option>
+ @for(obj in list){
+ <option value="${obj.code}">${obj.name}</option>
+ @}
+ </select>
+ </div>
+ </div>
+ <div class="form-group" id="cityCode">
+ <label class="col-sm-3 control-label">所在市:</label>
+ <div class="col-sm-9">
+ <select class="form-control" id="cCode" name="cCode">
+ <option value="">选择市</option>
+ </select>
+ </div>
+ </div>
+
+ </div>
+
+
+ </div>
+</div>
+
+<div class="row btn-group-m-t">
+ <div class="col-sm-10 col-sm-offset-5">
+ <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.addSubmit()"/>
+ <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/>
+ </div>
+</div>
+ </div>
+ </div>
+</div>
+<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 src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script>
+<script src="${ctxPath}/modular/system/tGoods/TStoreInfo.js"></script>
+<script>
+
+ function updateType(e) {
+ if(e==2){
+ $("#b1").hide()
+ $("#b2").show()
+ }else {
+ $("#b2 ").hide()
+ $("#b1").show()
+ }
+ }
+
+
+
+ function changeCity(n){
+
+ var provinceSelect = null;
+ if (n === undefined || n === null || n === ''){
+ provinceSelect = document.getElementById("provinceData");
+ }else {
+ provinceSelect = document.getElementById("provinceData"+n);
+ }
+
+ var citySelect = null;
+ if (n === undefined || n === null || n === ''){
+ citySelect = document.getElementById("cityData");
+ }else {
+ citySelect = document.getElementById("cityData"+n);
+ }
+
+ var selectedProvince = provinceSelect.value;
+ // 清空城市下拉框
+ citySelect.innerHTML = '<option value="">请选择</option>';
+ if (selectedProvince === "") {
+ return;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getCity", function(data){
+ data.forEach(province => {
+ var option = document.createElement("option");
+ option.value = province.id; // 根据你的数据结构确定省份的id字段
+ option.text = province.name; // 根据你的数据结构确定省份的name字段
+ citySelect.appendChild(option);
+ });
+ },function(data){
+ console.log('data:',data)
+ Feng.error("获取失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set('province',selectedProvince);
+ ajax.start();
+ }
+
+ /**
+ * 全国通用
+ */
+ function scopeOfApplication1() {
+ $("#storeSelect").hide();
+ $("#citySelect").hide();
+ }
+ /**
+ * 指定城市
+ */
+ function scopeOfApplication2() {
+ $("#storeSelect").hide();
+ $("#citySelect").show();
+ }
+ /**
+ * 指定门店
+ */
+ function scopeOfApplication3() {
+ $("#storeSelect").show();
+ $("#citySelect").hide();
+ }
+
+
+
+
+ var vue2 = new Vue({
+ el: '#app',
+ data: {
+ autoUpload: true,//自动上传
+ imageUrl1: '',//模型数据,用于上传图片完成后图片预览
+ dialogVisible: false
+ },
+ methods: {
+ handleAvatarSuccess(res, file) {
+ TCarInfoDlg.goodsPicArray.push(file);
+ },
+ beforeAvatarUpload(file) {
+ const isLt2M = file.size / 1024 / 1024 < 10;
+ if (!isLt2M) {
+ this.$message.error('上传图片大小不能超过 10MB!');
+ }
+ return isLt2M;
+ },
+ handleRemove(file, fileList) {
+ couponInfoDlg.goodsPicArray = couponInfoDlg.goodsPicArray.filter(item => {
+ return item.uid != file.uid;
+ });
+ },
+ },
+ created() {
+ },
+ });
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/ball.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/ball.js
new file mode 100644
index 0000000..b9aa25e
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/ball.js
@@ -0,0 +1,133 @@
+/**
+ * 管理初始化
+ */
+var TStudent = {
+ id: "TStudentTable", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TStudent.initColumn = function () {
+ return [
+ {field: 'selectItem', radio: true},
+ {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
+ {title: '所属运营商', field: 'operation', visible: true, align: 'center', valign: 'middle'},
+ {title: '省', field: 'province', visible: true, align: 'center', valign: 'middle'},
+ {title: '市', field: 'city', visible: true, align: 'center', valign: 'middle'},
+ { title: '门店名称', field: 'store', visible: true, align: 'center', valign: 'middle'},
+ { title: '所属场地', field: 'site', visible: true, align: 'center', valign: 'middle'},
+ { title: '设备ID', field: 'blue', visible: true, align: 'center', valign: 'middle'},
+ { title: '设备类型', field: 'red', visible: true, align: 'center', valign: 'middle'},
+ { title: '设备类型', field: 'red', visible: true, align: 'center', valign: 'middle'},
+ { title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle'}
+
+
+ ];
+};
+
+/**
+ * 检查是否选中
+ */
+TStudent.check = function () {
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ if(selected.length == 0){
+ Feng.info("请先选中表格中的某一记录!");
+ return false;
+ }else{
+ TStudent.seItem = selected[0];
+ return true;
+ }
+};
+
+/**
+ * 点击添加
+ */
+TStudent.openAddTStudent = function () {
+ var index = layer.open({
+ type: 2,
+ title: '添加',
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/ball/pre_add'
+ });
+ this.layerIndex = index;
+};
+
+/**
+ * 打开修改
+ */
+TStudent.openTStudentDetail = function () {
+ if (this.check()) {
+ var index = layer.open({
+ type: 2,
+ title: '详情',
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/tStudent/tStudent_update/' + TStudent.seItem.id
+ });
+ this.layerIndex = index;
+ }
+};
+
+
+/**
+ * 打开详情
+ */
+TStudent.openTStudentDetail1 = function () {
+ if (this.check()) {
+ var index = layer.open({
+ type: 2,
+ title: '详情',
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/tStudent/tStudent_info/' + TStudent.seItem.id
+ });
+ this.layerIndex = index;
+ }
+};
+
+
+
+/**
+ * 删除
+ */
+TStudent.delete = function () {
+ if (this.check()) {
+ var ajax = new $ax(Feng.ctxPath + "/tStudent/delete", function (data) {
+ Feng.success("删除成功!");
+ TStudent.table.refresh();
+ }, function (data) {
+ Feng.error("删除失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set("tStudentId",this.seItem.id);
+ ajax.start();
+ }
+};
+
+/**
+ * 查询列表
+ */
+TStudent.search = function () {
+ var queryData = {};
+ queryData['provinceCode'] = $("#pCode").val();
+ queryData['cityCode'] = $("#cCode").val();
+ queryData['store'] = $("#store").val();
+ queryData['site'] = $("#site").val();
+
+
+ TStudent.table.refresh({query: queryData});
+};
+
+$(function () {
+ var defaultColunms = TStudent.initColumn();
+ var table = new BSTable(TStudent.id, "/ball/list", defaultColunms);
+ table.setPaginationType("client");
+ TStudent.table = table.init();
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/ball_info.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/ball_info.js
new file mode 100644
index 0000000..abd40bf
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/ball_info.js
@@ -0,0 +1,534 @@
+/**
+ * 用户详情对话框(可用于添加和修改对话框)
+ */
+var CoursePackageInfo = {
+ userInfoData: {},
+};
+
+
+
+/**
+ * 关闭此对话框
+ */
+CoursePackageInfo.close = function () {
+ parent.layer.close(window.parent.CoursePackage.layerIndex);
+};
+
+
+CoursePackageInfo.openDia = function (i) {
+
+ let index = layer.open({
+ type: 2,
+ title: '编辑',
+ area: ['80%', '80%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/coursePackage/conpun/'+i
+ });
+ this.layerIndex = index;
+};
+
+CoursePackageInfo.openDia1 = function (i) {
+ var ids = $("#counpons"+i).val()
+
+ console.log($("#counpons"+i).val())
+ let index = layer.open({
+ type: 2,
+ title: '编辑',
+ area: ['80%', '80%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/coursePackage/conpun1'+'/'+i+'?conpunids='+ids
+ });
+ this.layerIndex = index;
+};
+/**
+ * 提交添加用户
+ */
+CoursePackageInfo.addSubmit = 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 coursePackageTypeId = $('#coursePackageTypeId').val();
+ let name = $('#name').val();
+ let siteId = $('#siteId').val();
+ let coachId = $('#coachId').val();
+ let maxSubscribeNumber = $('#maxSubscribeNumber').val();
+ let codeTime = $('#codeTime').val();
+ let type = $('#type').val();
+ let holitime = $('#holitime').val();
+
+
+ // let classStartTime = JSON.stringify($('#classStartTime').val());
+
+
+ var inputElements = document.querySelectorAll('input[name="classStartTime"]');
+ let classStartTime = JSON.stringify(Array.from(inputElements).map(function(element) {
+ return element.value;
+ }))
+
+ let classWeeks = '';
+ $('input[name="classWeeks"]:checked').each(function (index, e) {
+ classWeeks += $(e).val() + ";";
+ })
+ let coverDrawing = $('#coverDrawing').val();
+ let detailDrawing = $('#detailDrawing').val();
+ let introduceDrawing = $('#introduceDrawing').val();
+ let sort = $('#sort').val();
+ let validDays = $('#validDays').val();
+ let price = [];
+ $('#price > .form-group').each(function (i, e) {
+ let classHours = $($(e).find(".classNumber_span input[class='classNumber']")[0]).val();
+ let cash = $($(e).find(".cash_span input[class='cash']")[0]).val();
+ let paiCoin = $($(e).find(".paiCoin_span input[class='paiCoin']")[0]).val();
+ let counpons = $($(e).find(".counpons")).val();
+ price.push({
+ classHours: classHours,
+ cashPayment: typeof cash == "undefined" ? 0 : cash,
+ playPaiCoin: typeof paiCoin == "undefined" ? 0 : paiCoin,
+ couponIds: typeof counpons == "undefined" ? 0 : counpons
+ });
+ });
+ 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
+ }
+ // if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
+ // Feng.error("最多预约人数不能为空");
+ // return
+ // }
+ // if(null == codeTime || '' == codeTime){
+ // Feng.error("扣除课时数不能为空不能为空");
+ // return
+ // }
+ // if(null == classStartTime || '' == classStartTime){
+ // Feng.error("上课时间不能为空");
+ // return
+ // }
+ // if(null == classWeeks || '' == classWeeks){
+ // 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
+ }
+ // if(null == validDays || '' == validDays){
+ // Feng.error("课时有效期不能为空");
+ // return
+ // }
+
+ let obj = {
+ province: province,
+ provinceCode: provinceCode,
+ city: city,
+ cityCode: cityCode,
+ storeId: storeId,
+ coursePackageTypeId: coursePackageTypeId,
+ name: name,
+ siteId: siteId,
+ coachId: coachId,
+ maxSubscribeNumber: maxSubscribeNumber,
+ classStartTime: classStartTime,
+ codeTime:codeTime,
+ // classStartTime: classStartTime.split(" - ")[0],
+ // classEndTime: classStartTime.split(" - ")[1],
+ classWeeks: classWeeks,
+ coverDrawing: coverDrawing,
+ detailDrawing: detailDrawing,
+ introduceDrawing: introduceDrawing,
+ sort: sort,
+ validDays: validDays,
+ coursePackagePaymentConfig: JSON.stringify(price),
+ type:type,
+ holitime:holitime
+ }
+
+ //提交信息
+ var ajax = new $ax(Feng.ctxPath + "/coursePackage/addCoursePackage", function (data) {
+ if(data.code == 200){
+ Feng.success("添加成功!");
+ CoursePackageInfo.close();
+ window.parent.CoursePackage.table.refresh();
+ }else{
+ Feng.error(data.msg);
+ }
+ }, function (data) {
+ Feng.error("添加失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set(obj);
+ ajax.start();
+};
+
+/**
+ * 提交修改
+ */
+CoursePackageInfo.editSubmit = function () {
+ let id = $('#id').val();
+ 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 coursePackageTypeId = $('#coursePackageTypeId').val();
+ let name = $('#name').val();
+ let siteId = $('#siteId').val();
+ let coachId = $('#coachId').val();
+ let maxSubscribeNumber = $('#maxSubscribeNumber').val();
+ let codeTime = $('#codeTime').val();
+ let type = $('#type').val();
+
+ let holitime = $('#holitime').val();
+
+ var inputElements = document.querySelectorAll('input[name="classStartTime"]');
+ let classStartTime = JSON.stringify(Array.from(inputElements).map(function(element) {
+ return element.value;
+ }))
+
+ // let classStartTime = $('#classStartTime').val();
+ let classWeeks = '';
+ $('input[name="classWeeks"]:checked').each(function (index, e) {
+ classWeeks += $(e).val() + ";";
+ })
+ let coverDrawing = $('#coverDrawing').val();
+ let detailDrawing = $('#detailDrawing').val();
+ let introduceDrawing = $('#introduceDrawing').val();
+ let sort = $('#sort').val();
+ let validDays = $('#validDays').val();
+ // let counpons = $($(e).find(".counpons")).val();
+
+ let price = [];
+ $('#price>.form-group').each(function (i, e) {
+ let classHours = $($(e).find(".classNumber_span input[class='classNumber']")[0]).val();
+ let cash = $($(e).find(".cash_span input[class='cash']")[0]).val();
+ let paiCoin = $($(e).find(".paiCoin_span input[class='paiCoin']")[0]).val();
+ let counpons = $($(e).find(".counpons")).val();
+
+ price.push({
+ classHours: classHours,
+ cashPayment: typeof cash == "undefined" ? 0 : cash,
+ playPaiCoin: typeof paiCoin == "undefined" ? 0 : paiCoin,
+ couponIds: typeof counpons == "undefined" ? 0 : counpons
+
+ })
+ });
+ 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
+ }
+ // if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
+ // Feng.error("最多预约人数不能为空");
+ // return
+ // }
+ // if(null == codeTime || '' == codeTime){
+ // Feng.error("扣除课时不能为空");
+ // return
+ // }
+ // if(null == classStartTime || '' == classStartTime){
+ // Feng.error("上课时间不能为空");
+ // return
+ // }
+ // if(null == classWeeks || '' == classWeeks){
+ // 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
+ }
+ // if(null == validDays || '' == validDays){
+ // Feng.error("课时有效期不能为空");
+ // return
+ // }
+
+ let obj = {
+ id: id,
+ province: province,
+ provinceCode: provinceCode,
+ city: city,
+ cityCode: cityCode,
+ storeId: storeId,
+ coursePackageTypeId: coursePackageTypeId,
+ name: name,
+ siteId: siteId,
+ coachId: coachId,
+ maxSubscribeNumber: maxSubscribeNumber,
+ codeTime: codeTime,
+ type:type,
+ classStartTime: classStartTime,
+ // classEndTime: classStartTime.split(" - ")[1],
+ classWeeks: classWeeks,
+ coverDrawing: coverDrawing,
+ detailDrawing: detailDrawing,
+ introduceDrawing: introduceDrawing,
+ sort: sort,
+ validDays: validDays,
+ coursePackagePaymentConfig: JSON.stringify(price),
+ holitime:holitime
+ }
+
+ console.log("======="+obj)
+
+ //提交信息
+ var ajax = new $ax(Feng.ctxPath + "/coursePackage/updateCoursePackage", function (data) {
+ if(data.code == 200){
+ Feng.success("编辑成功!");
+ CoursePackageInfo.close();
+ window.parent.CoursePackage.table.refresh();
+ }else{
+ Feng.error(data.msg);
+ }
+ }, function (data) {
+ Feng.error("编辑失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set(obj);
+ ajax.start();
+};
+
+
+
+
+function queryStore() {
+ let ajax = new $ax(Feng.ctxPath + "/coursePackage/queryStore", function (data) {
+ let htmlStr = '';
+ for (let i = 0; i < data.length; i++) {
+ htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>'
+ }
+ $('#storeId').html(htmlStr);
+
+ querySite();
+ }, function (data) {
+ Feng.error("获取失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set("cityCode", $('#cityCode').val());
+ ajax.start();
+}
+
+
+
+function querySite(){
+ let ajax = new $ax(Feng.ctxPath + "/coursePackage/querySite", function (data) {
+ let htmlStr = '';
+ for (let i = 0; i < data.length; i++) {
+ htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>'
+ }
+ $('#siteId').html(htmlStr);
+ }, function (data) {
+ Feng.error("获取失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set("storeId", $('#storeId').val());
+ ajax.start();
+}
+
+
+function queryCoach(){
+ let ajax = new $ax(Feng.ctxPath + "/coursePackage/queryCoach", function (data) {
+ let htmlStr = '';
+ for (let i = 0; i < data.length; i++) {
+ htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>'
+ }
+ $('#coachId').html(htmlStr);
+ }, function (data) {
+ Feng.error("获取失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set("cityCode", $('#cityCode').val());
+ ajax.start();
+}
+
+
+function addPrice(y){
+ console.log("===="+y)
+ let cash = false;
+ let paiCoin = false;
+ $('input[name="payType"]:checked').each(function (index, e) {
+ let v = $(e).val();
+ if(v == 1){
+ cash = true;
+ }
+ if(v == 2){
+ paiCoin = true;
+ }
+ })
+ var i = $('#price > div').length+1
+ let htmlStr = ''
+
+
+ if (y===1){
+
+ htmlStr += '<div class="form-group">\n' +
+ ' <label class="col-sm-3 control-label">*课时数:</label>\n' +
+ ' <div class="col-sm-8">\n' +
+ ' <span class="classNumber_span"><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;"> </span> <span class="cash_span">\n';
+
+ }
+ if (y===2){
+
+ htmlStr += '<div class="form-group">\n' +
+ ' <label class="col-sm-3 control-label"></label>\n' +
+ ' <div class="col-sm-8">\n' +
+ ' <span class="classNumber_span" 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;"> </span> <span class="cash_span">\n';
+
+ }
+ '<div class="form-group">\n' +
+ ' <label class="col-sm-3 control-label">*课时数:</label>\n' +
+ ' <div class="col-sm-8">\n' +
+ ' <span class="classNumber_span"><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;"> </span> <span class="cash_span">\n';
+ if(cash){
+ htmlStr += '现金支付:<input class="cash" 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;"> ¥ \n';
+ }
+ htmlStr += '</span> <span class="paiCoin_span">';
+ if(paiCoin){
+ htmlStr += '玩湃币支付:<input class="paiCoin" 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;"> 币 \n';
+ }
+ htmlStr += '<button type="button" class="btn btn-info " onclick="CoursePackageInfo.openDia('+i+')" id="ensure">\n' +
+ ' <i class="fa fa-check"></i> 优惠卷\n' +
+ '</button>';
+
+ htmlStr += '</span> <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice(this)"></i>\n' +
+ '</div>\n' +'<input type="text" hidden="hidden" class = "counpons" id = "counpons'+i+'" >'+i+
+ '</div>';
+ $('#price').append(htmlStr);
+}
+
+
+
+
+function removePrice(e){
+ $(e).parent('div').parent('div').remove();
+}
+
+function removePrice1(e){
+ $(e).parent('div').remove();
+}
+
+
+
+$(function () {
+ $('#provinceCode').change(function () {
+ let ajax = new $ax(Feng.ctxPath + "/coursePackage/queryCity", function (data) {
+ let htmlStr = '';
+ for (let i = 0; i < data.length; i++) {
+ htmlStr += '<option value="' + data[i].code + '">' + data[i].name + '</option>'
+ }
+ $('#cityCode').html(htmlStr);
+
+ queryStore();
+ queryCoach();
+ }, function (data) {
+ Feng.error("获取失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set("code", $(this).val());
+ ajax.start();
+ })
+
+
+ $('#cityCode').change(function () {
+ queryStore();
+ })
+
+
+ $('#storeId').change(function () {
+ querySite();
+ })
+
+ $('input[name="payType"]').click(function () {
+ $('input[name="payType"]').each(function (index, e) {
+ let v = $(e).val();
+ if(v == 1) {
+ if (e.checked) {
+ $('span[class="cash_span"]').each(function (index, e) {
+ $(e).html('现金支付:<input class="cash" 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;"> ¥ ');
+ })
+ } else {
+ $('span[class="cash_span"]').each(function (index, e) {
+ $(e).html('');
+ })
+ }
+ }
+
+ if(v == 2){
+ if (e.checked) {
+ $('span[class="paiCoin_span"]').each(function (index, e) {
+ $(e).html('玩湃币支付:<input class="paiCoin" 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;"> 币 ')
+ })
+ } else {
+ $('span[class="paiCoin_span"]').each(function (index, e) {
+ $(e).html('');
+ })
+ }
+ }
+ })
+ })
+
+
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
index 7a49ada..76a6b78 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
@@ -317,6 +317,8 @@
success: function(response) {
if (response == "5001"){
Feng.error("当前课包预约人数已满!")
+ }else if(response == "5002"){
+ Feng.error("剩余课时不足,无法购买!")
}else{
Feng.success("上架成功!");
TCompetition.close();
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/dataStatistics/tSite.js b/cloud-server-management/src/main/webapp/static/modular/system/dataStatistics/tSite.js
index f07e023..468e185 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/dataStatistics/tSite.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/dataStatistics/tSite.js
@@ -92,7 +92,3 @@
TSite.search();
};
-
-$(function () {
-
-});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/gameData/gameData.js b/cloud-server-management/src/main/webapp/static/modular/system/gameData/gameData.js
new file mode 100644
index 0000000..cba4875
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/gameData/gameData.js
@@ -0,0 +1,99 @@
+/**
+ * 跨城站点管理管理初始化
+ */
+var TSite = {
+ id: "TSiteTable", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1,
+ picture:"",
+ fileUrl:"",
+ img:"",
+ plan:"",
+ goodsPicArray:[],
+ validateFields: {
+ }
+};
+var TSite1 = {
+ id: "TSiteTable1", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1,
+ picture:"",
+ fileUrl:"",
+ img:"",
+ plan:"",
+ goodsPicArray:[],
+ validateFields: {
+ }
+};
+/**
+ * 初始化表格的列
+ */
+TSite.initColumn = function () {
+ return [
+ {field: 'selectItem', checkbox: true},
+ {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
+ {title: '序号', field: 'number', visible:true, align: 'center', valign: 'middle'},
+ {title: '昵称', field: 'name', visible: true, align: 'center', valign: 'middle',},
+ {title: '成绩', field: 'score', visible: true, align: 'center', valign: 'middle'},
+ ];
+};
+/**
+ * 初始化表格的列
+ */
+TSite1.initColumn = function () {
+ return [
+ {field: 'selectItem', checkbox: true},
+ {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
+ {title: '序号', field: 'number', visible:true, align: 'center', valign: 'middle'},
+ {title: '昵称', field: 'name', visible: true, align: 'center', valign: 'middle',},
+ {title: '成绩', field: 'score', visible: true, align: 'center', valign: 'middle'},
+ ];
+};
+
+/**
+ * 关闭此对话框
+ */
+TSite.close = function() {
+ parent.layer.close(window.parent.TSite.layerIndex);
+}
+
+TSite.search3 = function () {
+ var queryData = {};
+ queryData['province'] = $("#con3").val();
+ queryData['city'] = $("#cCode3").val();
+ queryData['siteTypeId'] = $("#site3").val();
+ TSite.table.refresh({query: queryData});
+};
+TSite1.search4 = function () {
+ var queryData = {};
+ queryData['province'] = $("#con4").val();
+ queryData['city'] = $("#cCode4").val();
+ queryData['siteTypeId'] = $("#site4").val();
+ TSite.table.refresh({query: queryData});
+};
+
+TSite.resetSearch = function () {
+ $("#pCode").val("");
+ $("#cCode").val("");
+ $("#store").val("");
+ $("#sCode").val("");
+ $("#storeName").val("");
+ $("#siteTypeId").val("");
+ $("#name").val("");
+ $("#insuranceEndTime").val("");
+ TSite.search();
+};
+
+$(function () {
+ var defaultColunms = TSite.initColumn();
+ var table = new BSTable(TSite.id, "/tSite/listAll", defaultColunms);
+ table.setPaginationType("client");
+ TSite.table = table.init();
+
+ var defaultColunms1 = TSite1.initColumn();
+ var table1 = new BSTable(TSite1.id, "/tSite/listAll", defaultColunms1);
+ table1.setPaginationType("client");
+ TSite1.table = table1.init();
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/gateData/gateData.js b/cloud-server-management/src/main/webapp/static/modular/system/gateData/gateData.js
new file mode 100644
index 0000000..03934ba
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/gateData/gateData.js
@@ -0,0 +1,52 @@
+/**
+ * 跨城站点管理管理初始化
+ */
+var TSite = {
+ id: "TSiteTable", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TSite.initColumn = function () {
+ return [
+ {field: 'selectItem', radio: true},
+ {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
+ {title: '场地区域名称', field: 'name', visible: true, align: 'center', valign: 'middle'},
+ {title: '入场人次', field: 'number', visible: true, align: 'center', valign: 'middle'}
+ ];
+};
+
+
+
+/**
+ * 查询跨城站点管理列表
+ */
+TSite.search = function () {
+ var queryData = {};
+ queryData['insertTime'] = $("#insertTime").val();
+ queryData['name'] = $("#name").val();
+ queryData['insertUser'] = $("#insertUser").val();
+ queryData['city'] = $("#city").val();
+ queryData['state'] = $("#state").val();
+ TSite.table.refresh({query: queryData});
+};
+
+TSite.resetSearch = function () {
+ $("#insertTime").val("");
+ $("#name").val("");
+ $("#insertUser").val("");
+ $("#city").val("");
+ $("#state").val("");
+ TSite.search();
+};
+
+$(function () {
+ var defaultColunms = TSite.initColumn();
+ var table = new BSTable(TSite.id, "/gateData/list", defaultColunms);
+ table.setPaginationType("client");
+ TSite.table = table.init();
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js b/cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js
new file mode 100644
index 0000000..57eb903
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js
@@ -0,0 +1,240 @@
+/**
+ * 跨城站点管理管理初始化
+ */
+var TSite = {
+ id: "TSiteTable", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1,
+ picture:"",
+ fileUrl:"",
+ img:"",
+ plan:"",
+ goodsPicArray:[],
+ validateFields: {
+ }
+};
+/**
+ * 初始化表格的列
+ */
+TSite.initColumn = function () {
+ return [
+ {field: 'selectItem', checkbox: true},
+ {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
+ {title: '运营商名称', field: 'name', visible: true, align: 'center', valign: 'middle',width:'20%',
+
+ },
+ {title: '管理员姓名', field: 'userName', visible: true, align: 'center', valign: 'middle',
+ },
+ {title: '管理员手机号', field: 'phone', visible: true, align: 'center', valign: 'middle'},
+ {title: '管理区域', field: 'type', visible: true, align: 'center', valign: 'middle',
+ formatter:function (data) {
+ return {1:"全国",2:"指定区域"}[data]
+ }
+ },
+ {title: '商户绑定状态', field: 'status', visible: true, align: 'center', valign: 'middle',
+ formatter: function (data,row) {
+ var btn = "";
+ if(data==1) {
+ var str = '<button class="btn btn-outline btn-primary" onclick="TSite.bindOperator('+row.id+')" >去绑定</button>'
+ btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="" onfocus="TUser.tooltip()">' + str + '</p>']
+ }else{
+ var str = '<h3>已绑定</h3>'
+ btn = [str]
+ }
+ return btn;
+ }
+ },
+ {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle',
+ formatter:function (data) {
+ return {1:"正常",2:"冻结",3:"删除"}[data]
+ }
+ },
+ ];
+};
+
+/**
+ * 检查是否选中
+ */
+TSite.check = function () {
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ if(selected.length == 0){
+ Feng.info("请先选中表格中的某一记录!");
+ return false;
+ }else{
+ TSite.seItem = selected[0];
+ return true;
+ }
+};
+TSite.bindOperator = function (e) {
+ var index = layer.open({
+ type: 2,
+ title: "认证",
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/operatorUser/proportion/' + e
+ });
+ this.layerIndex = index;
+
+};
+/**
+ * 上架
+ */
+TSite.onShelf = function () {
+ if (this.check()){
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ const data1 = {
+ ids:[],
+ state:null
+ };
+ selected.forEach(function(obj) {
+ console.log("查看选中")
+ console.log(obj)
+ var id = obj.id;
+ data1.ids.push(id);
+ });
+ data1.state = 1;
+
+ $.ajax({
+ url: Feng.ctxPath + "/operator/changeState",
+ type: "POST",
+ contentType: "application/json", // 设置请求头的 Content-Type
+ data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
+ success: function(response) {
+ Feng.success("解冻成功!");
+ TSite.search();
+ },
+ error: function(xhr, status, error) {
+ var errorMessage = xhr.responseText ? xhr.responseText : "解冻失败!";
+ }
+ });
+ }
+};
+
+/**
+ * 下架
+ */
+TSite.offShelf = function () {
+ if (this.check()){
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ const data1 = {
+ ids:[],
+ state:null
+ };
+ selected.forEach(function(obj) {
+ var id = obj.id;
+ data1.ids.push(id);
+ });
+ data1.state = 2;
+ $.ajax({
+ url: Feng.ctxPath + "/operator/changeState",
+ type: "POST",
+ contentType: "application/json", // 设置请求头的 Content-Type
+ data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
+ success: function(response) {
+ Feng.success("冻结成功!");
+ TSite.search();
+ },
+ error: function(xhr, status, error) {
+ var errorMessage = xhr.responseText ? xhr.responseText : "冻结失败!";
+ }
+ });
+ }
+};
+
+
+/**
+ * 跳转添加运营商页面
+ */
+TSite.openAddTSite = function () {
+
+ var index = layer.open({
+ type: 2,
+ title: "添加运营商",
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/operator/add'
+ });
+ this.layerIndex = index;
+};
+/**
+ * 打开场地管理查看详情
+ */
+TSite.openInfo = function () {
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ if(selected.length >1 ){
+ Feng.info("只能选择一个问题进行编辑!");
+ }else {
+ if (this.check()) {
+ var index = layer.open({
+ type: 2,
+ title: "编辑运营商",
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/operator/update/' + TSite.seItem.id
+ });
+ this.layerIndex = index;
+ }
+ }
+};
+TSite.reload = function () {
+ if (this.check()) {
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ const data1 = {
+ ids:[],
+ password:null
+ };
+ selected.forEach(function(obj) {
+ var id = obj.id;
+ data1.ids.push(id);
+ });
+ data1.state = 2;
+ var operation = function() {
+ $.ajax({
+ url: Feng.ctxPath + "/operator/pwd",
+ type: "POST",
+ contentType: "application/json", // 设置请求头的 Content-Type
+ data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
+ success: function (response) {
+ TSite.search();
+ },
+ error: function (xhr, status, error) {
+ var errorMessage = xhr.responseText ? xhr.responseText : "冻结失败!";
+ }
+ });
+ }
+
+ Feng.confirm("确认重置密码?重置后密码为:a123456", operation);
+ }
+};
+/**
+ * 关闭此对话框
+ */
+TSite.close = function() {
+ parent.layer.close(window.parent.TSite.layerIndex);
+};
+
+TSite.search = function () {
+ var queryData = {};
+ queryData['userName'] = $("#name").val();
+ queryData['phone'] =$("#phone").val();
+ queryData['type'] =$("#type").val();
+ TSite.table.refresh({query: queryData});
+};
+
+TSite.resetSearch = function () {
+ $("#name").val("");
+ $("#phone").val("");
+ $("#type").val("");
+ TSite.search();
+};
+
+$(function () {
+ var defaultColunms = TSite.initColumn();
+ var table = new BSTable(TSite.id, "/operator/listAll", defaultColunms);
+ table.setPaginationType("server");
+ TSite.table = table.init();
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/operator/operator_add.js b/cloud-server-management/src/main/webapp/static/modular/system/operator/operator_add.js
new file mode 100644
index 0000000..79c70b1
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/operator/operator_add.js
@@ -0,0 +1,226 @@
+/**
+ * 跨城站点管理管理初始化
+ */
+var TSite = {
+ id: "TSiteTable", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1,
+ picture:"",
+ fileUrl:"",
+ img:"",
+ plan:"",
+ goodsPicArray:[],
+ validateFields: {
+ }
+};
+//删除数据
+function deleteSub(e) {
+ $(e).parent().parent().remove();
+}
+TSite.addArea = function () {
+ var province = $('#pCode option:selected').text();
+ var provinceCode = $("#pCode").val();
+ var city = $('#cCode option:selected').text();
+ var cityCode = $("#cCode").val();
+ var areaType = $("input[name='areaType']:checked").val();
+ if (2 == areaType){
+ if ("" == $("#pCode").val() || null == $("#pCode").val()){
+ Feng.error("请选择省");
+ return;
+ }
+ }
+ var subArr=[];
+ $(".areaValueClass").each(function () {
+ subArr.push({
+ province:$(this).find("input[name*='provinceName']").val(),
+ city:$(this).find("input[name*='cityName']").val(),
+ areaType:areaType,
+ })
+ });
+ //判断所选省市是否存在
+ if (city=="选择市"){
+ console.log("没有选择市")
+ city = "";
+ }
+ for(var i=0;i<subArr.length;i++){
+ var p = subArr[i].province;
+ var c = subArr[i].city;
+ console.log(c)
+ console.log(city)
+ console.log(province)
+ console.log(p)
+ console.log(provinceCode)
+ if (city==""){
+ if (c==""){
+ if (provinceCode == p) {
+ Feng.info("当前省已添加");
+ return;
+ }
+ }
+ }else {
+ if (cityCode == c){
+ Feng.info("当前所选省市已添加");
+ return;
+ }
+ }
+ if (provinceCode == p){
+ if (c == ""){
+ Feng.info("当前省已添加");
+ return;
+ }
+ if (city == ""){
+ Feng.info("当前省已添加");
+ return;
+ }
+ }
+ }
+ var str = '<tr class="areaValueClass">' +
+ '<td style="text-align: center;"><input type="hidden" id="provinceValue" name="provinceName" value="'+provinceCode+'"><input type="hidden" id="provinceValue" name="provinceCode" value="'+province+'">'+province+'</td>' +
+ '<td style="text-align: center;"><input type="hidden" id="cityValue" name="cityName" value="'+cityCode+'"><input type="hidden" id="provinceValue" name="cityCode" value="'+city+'">'+city+'</td>' +
+ '<td style="text-align: center;"><button onclick="deleteSub(this)">移除</button></td></tr>';
+ $("#areaValue").append(str);
+};
+
+/**
+ * 类型改变执行
+ * @param e
+ */
+TSite.areaTypeClick = function (e) {
+ if (1 == e){//全国
+ $("#areaType1Div").hide();
+ $("#areaType2Div").hide();
+ $("#data").hide();
+ $("#ensure").hide();
+ } else if (2 == e){
+ $("#areaType2Div").show();
+ $("#data").show();
+ $("#areaType1Div").show();
+ $("#ensure").show();
+
+ }
+};
+
+TSite.oneChange = function (e) {
+ console.log("进入!")
+ var oneId=$(e).val();
+ console.log(oneId)
+ var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
+ var content='<option value="">选择市</option>';
+ $.each(data, function(k,v) {
+ content += "<option value='"+v.code+"'>"+v.name+"</option>";
+ });
+ $("#cCode").empty().append(content);
+ });
+ if (oneId==""){
+ var temp = '<option value="">请先选择省</option>';
+ $("#cCode").empty().append(temp);
+ }
+ ajax.set("oneId",oneId);
+ ajax.start();
+}
+
+/**
+ * 关闭此对话框
+ */
+TSite.close = function() {
+ parent.layer.close(window.parent.TSite.layerIndex);
+}
+
+
+
+TSite.addSubmit = function(){
+ var areaType = $("input[name='areaType']:checked").val();
+ if ("" == $("#name").val() || null == $("#name").val()){
+ Feng.error("请输入运营商名称");
+ return;
+ }
+ if ("" == $("#userName").val() || null == $("#userName").val()){
+ Feng.error("请输入管理员姓名");
+ return;
+ }
+ if ("" == $("#phone").val() || null == $("#phone").val()){
+ Feng.error("请输入管理员电话");
+ return;
+ }
+ if (areaType == 2){
+ var comArr=[];
+ $(".areaValueClass").each(function () {
+ comArr.push({
+ provinceCode:$(this).find("input[name*='provinceName']").val(),
+ province:$(this).find("input[name*='provinceCode']").val(),
+ cityCode:$(this).find("input[name*='cityName']").val(),
+ city:$(this).find("input[name*='cityCode']").val(),
+ areaType:areaType,
+ })
+ console.log("循环看看")
+ console.log($(this).find("input[name*='provinceName']").text())
+ console.log($(this).find("input[name*='cityName']").text())
+ });
+ if(comArr.length <= 0){
+ Feng.error("请至少添加一个管理地区");
+ return;
+ }
+ }
+ //提交信息
+ var ajax = new $ax(Feng.ctxPath + "/operator/addOperator", function(data){
+ Feng.success("操作成功!");
+ window.parent.TSite.table.refresh();
+ TSite.close();
+ },function(data){
+ Feng.error("操作失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set("name",$("#name").val());
+ ajax.set("userName",$("#userName").val());
+ ajax.set("phone",$("#phone").val());
+ ajax.set("type",areaType);
+ ajax.set("comArr",JSON.stringify(comArr));
+ ajax.start();
+};
+
+TSite.updateSubmit = function(){
+ var areaType = $("input[name='areaType']:checked").val();
+ if ("" == $("#name").val() || null == $("#name").val()){
+ Feng.error("请输入运营商名称");
+ return;
+ }
+ if ("" == $("#userName").val() || null == $("#userName").val()){
+ Feng.error("请输入管理员姓名");
+ return;
+ }
+ if ("" == $("#phone").val() || null == $("#phone").val()){
+ Feng.error("请输入管理员电话");
+ return;
+ }
+ var comArr=[];
+ if (areaType == 2){
+ $(".areaValueClass").each(function () {
+ comArr.push({
+ provinceCode:$(this).find("input[name*='provinceName']").val(),
+ province:$(this).find("input[name*='provinceCode']").val(),
+ cityCode:$(this).find("input[name*='cityName']").val(),
+ city:$(this).find("input[name*='cityCode']").val(),
+ areaType:areaType,
+ })
+ });
+ if(comArr.length <= 0){
+ Feng.error("请至少添加一个管理地区");
+ return;
+ }
+ }
+ //提交信息
+ var ajax = new $ax(Feng.ctxPath + "/operator/updateOperator", function(data){
+ Feng.success("操作成功!");
+ window.parent.TSite.table.refresh();
+ TSite.close();
+ },function(data){
+ Feng.error("操作失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set("id",$("#id").val());
+ ajax.set("name",$("#name").val());
+ ajax.set("userName",$("#userName").val());
+ ajax.set("phone",$("#phone").val());
+ ajax.set("type",areaType);
+ ajax.set("comArr",JSON.stringify(comArr));
+ ajax.start();
+};
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js b/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js
new file mode 100644
index 0000000..fab95cf
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js
@@ -0,0 +1,228 @@
+/**
+ * 跨城站点管理管理初始化
+ */
+var TSite = {
+ id: "TSiteTable", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1,
+ picture:"",
+ fileUrl:"",
+ img:"",
+ plan:"",
+ goodsPicArray:[],
+ validateFields: {
+ }
+};
+/**
+ * 初始化表格的列
+ */
+TSite.initColumn = function () {
+ return [
+ {field: 'selectItem', checkbox: true},
+ {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
+ {title: '所在城市', field: 'provinceAndCity', visible: true, align: 'center', valign: 'middle',width:'20%',},
+ {title: '管理员姓名', field: 'userName', visible: true, align: 'center', valign: 'middle',},
+ {title: '管理员手机号', field: 'phone', visible: true, align: 'center', valign: 'middle'},
+ {title: '认证平台', field: 'platform', visible: true, align: 'center', valign: 'middle'},
+ {title: '认证类型', field: 'type', visible: true, align: 'center', valign: 'middle'},
+ {title: '分账比例', field: 'proportion', visible: true, align: 'center', valign: 'middle'},
+ {title: '审核状态', field: 'state', visible: true, align: 'center', valign: 'middle',
+ formatter:function (data) {
+ return {1:"待审核",2:"审核中",3:"已通过",4:"已拒绝"}[data]
+ }
+ },
+ ];
+};
+
+/**
+ * 检查是否选中
+ */
+TSite.check = function () {
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ if(selected.length == 0){
+ Feng.info("请先选中表格中的某一记录!");
+ return false;
+ }else{
+ TSite.seItem = selected[0];
+ return true;
+ }
+};
+/**
+ * 分账比例
+ */
+TSite.openAddTSite = function () {
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ if(selected.length >1 ){
+ Feng.info("只能选择一个运营商商户设置分账比例!");
+ }else {
+ if (this.check()) {
+ var index = layer.load(1,{
+ type: 1
+ , title: '添加分账比例'
+ , area: ['50%', '50%']
+ , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
+ , id: 'layerDemo' //防止重复弹出cge
+ , content: '<div class="form-horizontal">' +
+ ' <div class="col-sm-11" >' +
+ ' <div class="col-sm-11">' +
+ ' <div class="form-group">\n' +
+ ' <label class="col-sm-3 control-label">支付宝分账比例:</label>\n' +
+ ' <div class="col-sm-9">\n' +
+ ' <input class="form-control" placeholder="请输入分账比例" type="text" id="alipay"> '+
+ ' </div>\n' +
+ ' </div>\n' +
+ ' <div class="form-group">\n' +
+ ' <label class="col-sm-3 control-label">微信分账比例:</label>\n' +
+ ' <div class="col-sm-9">\n' +
+ ' <input class="form-control" placeholder="请输入分账比例" type="text" id="wechat"> '+
+ ' </div>\n' +
+ ' </div>\n' +
+ ' </div>' +
+ ' </div>' +
+ '</div>'
+ , btn: ['关闭', '保存']
+ , btnAlign: 'c' //按钮居中
+ , shade: 0.5 //不显示遮罩
+ ,load:1
+ , yes: function () {
+ layer.closeAll();
+ },
+ btn2:function () {
+ let wechat = $("#wechat").val()
+ let alipay = $("#alipay").val()
+ if(alipay==''){
+ Feng.info("请输入支付宝分账比例")
+ return false;
+ }
+ if(wechat==''){
+ Feng.info("请输入微信分账比例")
+ return false;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/operatorUser/addProportion", function (data) {
+ Feng.success("设置成功!");
+ window.location.reload();
+ window.parent.layer.closeAll();
+ }, function (data) {
+ Feng.error("操作失败!")
+ });
+ ajax.set("id", TSite.seItem.id);
+ ajax.set("alipay", alipay);
+ ajax.set("wechat", wechat);
+ ajax.start();
+ layer.closeAll();
+ }
+ });
+ this.layerIndex = index;
+ }
+ }
+
+};
+function UploadFileFn(){
+ $('#upFile').click();
+}
+TSite.oneChange = function (e) {
+ console.log("进入!")
+ var oneId=$(e).val();
+ console.log(oneId)
+ var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
+ var content='<option value="">选择市</option>';
+ $.each(data, function(k,v) {
+ content += "<option value='"+v.code+"'>"+v.name+"</option>";
+ });
+ $("#cCode").empty().append(content);
+ });
+ if (oneId==""){
+ var temp = '<option value="">请先选择省</option>';
+ $("#cCode").empty().append(temp);
+ }
+ ajax.set("oneId",oneId);
+ ajax.start();
+}
+/**
+ * 打开场地管理查看详情
+ */
+TSite.openInfo = function () {
+ var index = layer.open({
+ type: 2,
+ title: "认证",
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/operatorUser/proportion/' + 5
+ });
+ this.layerIndex = index;
+
+};
+/**
+ * 关闭此对话框
+ */
+TSite.close = function() {
+ parent.layer.close(window.parent.TSite.layerIndex);
+};
+
+TSite.search = function () {
+ var queryData = {};
+ queryData['province'] = $("#pCode").val();
+ queryData['city'] =$("#cCode").val();
+ queryData['userName'] =$("#name").val();
+ queryData['phone'] =$("#phone").val();
+ queryData['platform'] =$("#platform").val();
+ queryData['type'] =$("#type").val();
+ queryData['state'] =$("#state").val();
+ TSite.table.refresh({query: queryData});
+};
+
+TSite.resetSearch = function () {
+ $("#pCode").val("");
+ $("#cCode").val("");
+ $("#name").val("");
+ $("#phone").val("");
+ $("#platform").val("");
+ $("#type").val("");
+ $("#state").val("");
+ TSite.search();
+};
+TSite.tradeYse = function () {
+ var tradeT = document.getElementById('tradeT');
+ var IDCardT = document.getElementById('IDCardT');
+ var tradeTime = document.getElementById('tradeTime');
+ var IDCardTime = document.getElementById('IDCardTime');
+// 判断是否被选中
+ if (tradeT.checked) {
+ tradeTime.disabled = true;
+ } else {
+ tradeTime.disabled = false;
+ }
+ if (IDCardT.checked) {
+ IDCardTime.disabled = true;
+ } else {
+ IDCardTime.disabled = false;
+ }
+};
+$(function () {
+ $("#benefit").hide()
+ var defaultColunms = TSite.initColumn();
+ var table = new BSTable(TSite.id, "/operatorUser/listAll", defaultColunms);
+ table.setPaginationType("server");
+ TSite.table = table.init();
+ var c1 = new $WebUpload("license");
+ var c2 = new $WebUpload("IDCardImg");
+ var c3 = new $WebUpload("IDCardImg1");
+ var c4 = new $WebUpload("bImg1");
+ var c5 = new $WebUpload("bImg2");
+ var c6 = new $WebUpload("Img");
+ c1.setUploadBarId("progressBar");
+ c1.init();
+ c2.setUploadBarId("progressBar");
+ c2.init();
+ c3.setUploadBarId("progressBar");
+ c3.init();
+ c4.setUploadBarId("progressBar");
+ c4.init();
+ c5.setUploadBarId("progressBar");
+ c5.init();
+ c6.setUploadBarId("progressBar");
+ c6.init();
+
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoachType/tCoachType.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoachType/tCoachType.js
index 8ad8019..47cbc02 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCoachType/tCoachType.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoachType/tCoachType.js
@@ -122,7 +122,6 @@
layer.closeAll();
}
});
-
this.layerIndex = index;
};
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TStoreInfo.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TStoreInfo.js
index 9757e79..8956c84 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TStoreInfo.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TStoreInfo.js
@@ -145,8 +145,27 @@
});
ajax.set('province',selectedProvinceId);
ajax.start();
+ citySelect.addEventListener("change", queryOperator);
}
-
+// 获取运营商数据
+function queryOperator() {
+ var city = $('#city option:selected').text();
+ var citySelect = document.getElementById("operator");
+ citySelect.innerHTML = "";
+ var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getOperator", function(data){
+ data.forEach(province => {
+ var option = document.createElement("option");
+ option.value = province.id;
+ option.text = province.name;
+ citySelect.appendChild(option);
+ });
+ },function(data){
+ console.log('data:',data)
+ Feng.error("获取失败!" + data.responseJSON.message + "!");
+ });
+ ajax.set('city',city);
+ ajax.start();
+}
$(function () {
var defaultColunms = TStoreProvince.initColumn();
var table = new BSTable(TStoreProvince.id, "/tCouponManage/storeDetailsOfSearch", defaultColunms);
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js
index 6bb63f6..73d4659 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js
@@ -115,7 +115,7 @@
});
this.layerIndex = index;
}
-TGoodsInfoDlg.selecUserOpt = function (arrays){
+TCarInfoDlg.selecUserOpt = function (arrays){
console.log(arrays)
//获取所有的值
var subArr= this.storeIds;
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ticket/ticket.js b/cloud-server-management/src/main/webapp/static/modular/system/ticket/ticket.js
new file mode 100644
index 0000000..4d66d36
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ticket/ticket.js
@@ -0,0 +1,270 @@
+/**
+ * 车辆管理管理初始化
+ */
+var TPointProducts = {
+ id: "TPointProductsTable", //表格id
+ seItem: null, //选中的条目
+ table: null,
+ layerIndex: -1
+};
+var language =1
+/**
+ * 初始化表格的列
+ */
+TPointProducts.initColumn = function () {
+ return [
+ {field: 'selectItem', checkbox: true},
+ {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
+ {title: '商品名称', field: 'name', visible: true, align: 'center', valign: 'middle',
+ // formatter: function (value, row, index) {
+ // return {1: "日卡票", 2: "月卡票", 3: "季卡票", 4: "年卡票"}[value]
+ // }
+ },
+ {title: '商品封面', field: 'cover', visible: true, align: 'center', valign: 'middle',
+ formatter: function (value, row, index) {
+ value = typeof value == "undefined" || value == '' ? '/static/img/NoPIC.png' : value;
+ return '<img src="' + value + '" style="height: 100px;"/>'
+ }
+ },
+ {title: '有效期', field: 'timeValue', visible: true, align: 'center', valign: 'middle'
+ },
+ {title: '兑换地点', field: 'useScope', visible: true, align: 'center', valign: 'middle',
+ formatter: function (value, row, index) {
+ return {1: "全国", 2: "指定城市", 3: "指定门店"}[value]
+ }
+ },
+ {title: '用户人群', field: 'userPopulation', visible: true, align: 'center', valign: 'middle',
+ formatter: function (value, row, index) {
+ return {1: "全部用户", 2: "年度会员", 3: "已有学员用户"}[value]
+ }
+ },
+ {title: '发放数量', field: 'quantityIssued', visible: true, align: 'center', valign: 'middle'
+ },
+ {title: '限领数量', field: 'pickUpQuantity', visible: true, align: 'center', valign: 'middle'
+ },
+ {title: '已领数量', field: 'hasPickQty', visible: true, align: 'center', valign: 'middle'
+ },
+ {title: '已兑换数量', field: 'hasExchangeQty', visible: true, align: 'center', valign: 'middle'
+ },
+ {title: '排序', field: 'sort', visible: true, align: 'center', valign: 'middle'},
+ {title: '活动状态', field: 'activeStatus', visible: true, align: 'center', valign: 'middle',
+ formatter: function (value, row, index) {
+ return {1: "未开始", 2: "已开始", 3: "已结束"}[value]
+ }
+ },
+ {title: '可售状态', field: 'shelves', visible: true, align: 'center', valign: 'middle',
+ formatter: function (value, row, index) {
+ return {1: "上架", 2: "下架"}[value]
+ }
+ },
+ ];
+};
+function currentTime(timestamp){
+ var time = timestamp + '';
+ if(time.length != 13){
+ timestamp = timestamp * 1000;
+ }
+ var date = new Date(timestamp);;
+ var Y = date.getFullYear() + '-';
+ var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+ var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
+
+ var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
+ var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
+ var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
+ var strDate = Y + M + D + h + m + s;
+ return strDate
+}
+
+function currentTime1(timestamp){
+ var time = timestamp + '';
+ if(time.length != 13){
+ timestamp = timestamp * 1000;
+ }
+ var date = new Date(timestamp);;
+ var Y = date.getFullYear() + '-';
+ var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+ var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
+
+ var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
+ var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
+ var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
+ var strDate = Y + M + D ;
+ return strDate
+}
+/**
+ * 检查是否选中
+ */
+TPointProducts.check = function () {
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ if(selected.length == 0){
+ Feng.info("请先选中表格中的某一记录!");
+ return false;
+ }else{
+ TPointProducts.seItem = selected[0];
+ return true;
+ }
+};
+
+/**
+ * 添加
+ */
+TPointProducts.openAddTPointProducts = function () {
+ var index = layer.open({
+ type: 2,
+ title: '添加',
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/ticket/add'
+ });
+ this.layerIndex = index;
+};
+
+/**
+ * 查看详情
+ */
+TPointProducts.detail = function () {
+ if (this.check()) {
+ var index = layer.open({
+ type: 2,
+ title:'编辑',
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/tGoods/tCity_update/' + TPointProducts.seItem.id
+ });
+ this.layerIndex = index;
+ }
+};
+
+/**
+ * 购买详情
+ */
+TPointProducts.payDetail = function () {
+ if (this.check()) {
+ var index = layer.open({
+ type: 2,
+ title:'购买详情',
+ area: ['70%', '70%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/tGoods/tPay_detail/' + TPointProducts.seItem.id
+ });
+ this.layerIndex = index;
+ }
+};
+
+/**
+ * 编辑页面
+ */
+TPointProducts.openEditPage = function () {
+ if (this.check()) {
+ var index = layer.open({
+ type: 2,
+ title:'编辑',
+ area: ['100%', '100%'], //宽高
+ fix: false, //不固定
+ maxmin: true,
+ content: Feng.ctxPath + '/tGoods/tGoods_update/' + TPointProducts.seItem.id
+ });
+ this.layerIndex = index;
+ }
+}
+
+/**
+ * 上架处理
+ * @param m
+ */
+TPointProducts.onShelf = function () {
+ if (this.check()){
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ const data1 = {
+ ids:[],
+ state:null
+ };
+ selected.forEach(function(obj) {
+ var id = obj.id;
+ data1.ids.push(id);
+ });
+ data1.state = 1;
+ $.ajax({
+ url: Feng.ctxPath + "/ticket/changeState",
+ type: "POST",
+ contentType: "application/json", // 设置请求头的 Content-Type
+ data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
+ success: function(response) {
+ Feng.success("上架成功!");
+ TPointProducts.search();
+ },
+ error: function(xhr, status, error) {
+ var errorMessage = xhr.responseText ? xhr.responseText : "修改失败!";
+ Feng.error("您的网络异常!");
+ }
+ });
+
+ }
+};
+/**
+ * 下架处理
+ * @param m
+ */
+TPointProducts.offShelf = function () {
+ if (this.check()){
+ var selected = $('#' + this.id).bootstrapTable('getSelections');
+ const data1 = {
+ ids:[],
+ state:null
+ };
+ selected.forEach(function(obj) {
+ var id = obj.id;
+ data1.ids.push(id);
+ });
+ data1.state = 2;
+ $.ajax({
+ url: Feng.ctxPath + "/ticket/changeState",
+ type: "POST",
+ contentType: "application/json", // 设置请求头的 Content-Type
+ data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
+ success: function(response) {
+ Feng.success("下架成功!");
+ TPointProducts.search();
+ },
+ error: function(xhr, status, error) {
+ }
+ });
+
+ }
+};
+
+
+/**
+ * 查询车辆管理列表
+ */
+TPointProducts.search = function () {
+ var queryData = {};
+ queryData['name'] = $("#name").val();
+ queryData['type'] = $("#type").val();
+ queryData['redemptionMethod'] = $("#redemptionMethod").val();
+ queryData['userPopulation'] = $("#userPopulation").val();
+ queryData['activeStatus'] = $("#activeStatus").val();
+ queryData['state'] = $("#state").val();
+ TPointProducts.table.refresh({query: queryData});
+};
+
+TPointProducts.resetSearch = function () {
+ $("#name").val("");
+ $("#type").val("");
+ $("#redemptionMethod").val("");
+ $("#userPopulation").val("");
+ $("#activeStatus").val("");
+ $("#state").val("");
+ TPointProducts.search();
+};
+
+$(function () {
+ var defaultColunms = TPointProducts.initColumn();
+ var table = new BSTable(TPointProducts.id, "/ticket/listAll", defaultColunms);
+ table.setPaginationType("client");
+ TPointProducts.table = table.init();
+});
\ No newline at end of file
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
new file mode 100644
index 0000000..4012ed7
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
@@ -0,0 +1,50 @@
+package com.dsh.other.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.other.entity.*;
+import com.dsh.other.feignclient.model.AdvertisementChangeStateDTO;
+import com.dsh.other.feignclient.model.AdvertisementQuery;
+import com.dsh.other.model.BannerVo;
+import com.dsh.other.service.GameService;
+import com.dsh.other.service.IBannerService;
+import com.dsh.other.util.ResultUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:48
+ */
+@RestController
+@RequestMapping("")
+public class BallController {
+ @Autowired
+ private GameService gameService;
+
+ @ResponseBody
+ @PostMapping("/student/webStudentList")
+ public List<Game> list(@RequestBody BallQueryDto ballQueryDto){
+ List<Game> games = gameService.queryAll(ballQueryDto);
+ return games;
+ }
+
+
+ @ResponseBody
+ @PostMapping("/save")
+ public void save(@RequestBody Game game){
+
+ gameService.save(game);
+ }
+
+
+
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
index 8b391ea..1892f83 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
@@ -66,7 +66,14 @@
@Autowired
private CityManagerClient cityManagerClient;
-
+ /**
+ * 获取所有场地
+ */
+ @RequestMapping("/base/site/getList")
+ @ResponseBody
+ public List<Site> getList(){
+ return siteService.list(new QueryWrapper<Site>().ne("state",3));
+ }
/**
* 获取场地预约记录
*/
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/BallQueryDto.java b/cloud-server-other/src/main/java/com/dsh/other/entity/BallQueryDto.java
new file mode 100644
index 0000000..733af90
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/BallQueryDto.java
@@ -0,0 +1,16 @@
+package com.dsh.other.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class BallQueryDto {
+ String provinceCode;
+ String cityCode;
+ String store;
+ String site;
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/Game.java b/cloud-server-other/src/main/java/com/dsh/other/entity/Game.java
new file mode 100644
index 0000000..0f64bb9
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/Game.java
@@ -0,0 +1,50 @@
+package com.dsh.other.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_game")
+public class Game {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ @TableField("operationId")
+ private Integer operationId;
+ private String operation;
+ @TableField("province")
+ private String province;
+ @TableField("provinceCode")
+ private String provinceCode;
+ @TableField("city")
+ private String city;
+ @TableField("cityCode")
+ private String cityCode;
+ @TableField("storeId")
+ private Integer storeId;
+ private String store;
+ @TableField("siteId")
+ private Integer siteId;
+
+ private String site;
+ @TableField("blue")
+
+ private String blue;
+ @TableField("red")
+
+ private String red;
+ @TableField("insertTime")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date insertTime;
+
+ // 获取和设置方法
+}
\ No newline at end of file
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/GameMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/GameMapper.java
new file mode 100644
index 0000000..d37627b
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/GameMapper.java
@@ -0,0 +1,21 @@
+package com.dsh.other.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.other.entity.BallQueryDto;
+import com.dsh.other.entity.Game;
+import com.dsh.other.entity.Notice;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 公告 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-03
+ */
+public interface GameMapper extends BaseMapper<Game> {
+
+ List<Game> queryAll(BallQueryDto ballQueryDto);
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/GameService.java b/cloud-server-other/src/main/java/com/dsh/other/service/GameService.java
new file mode 100644
index 0000000..0d275e4
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/GameService.java
@@ -0,0 +1,16 @@
+package com.dsh.other.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.other.entity.BallQueryDto;
+import com.dsh.other.entity.Game;
+import com.dsh.other.entity.Protocol;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/6/14 15:04
+ */
+public interface GameService extends IService<Game> {
+ List<Game> queryAll(BallQueryDto ballQueryDto);
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java
new file mode 100644
index 0000000..d95dd0d
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java
@@ -0,0 +1,30 @@
+package com.dsh.other.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.other.entity.BallQueryDto;
+import com.dsh.other.entity.Game;
+import com.dsh.other.entity.Notice;
+import com.dsh.other.mapper.GameMapper;
+import com.dsh.other.mapper.NoticeMapper;
+import com.dsh.other.service.GameService;
+import com.dsh.other.service.NoticeService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 公告 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-03
+ */
+@Service
+public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements GameService {
+
+ @Override
+ public List<Game> queryAll(BallQueryDto ballQueryDto) {
+ return this.baseMapper.queryAll(ballQueryDto);
+ }
+}
diff --git a/cloud-server-other/src/main/resources/mapper/GameMapper.xml b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
new file mode 100644
index 0000000..59b4d6c
--- /dev/null
+++ b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.other.mapper.GameMapper">
+
+ <select id="queryAll" resultType="com.dsh.other.entity.Game">
+ SELECT
+ ga.*,st.`name` as store,op.`name` as operation,si.`name` as site
+ FROM
+ t_game ga
+ LEFT JOIN t_store st ON ga.storeId = st.id
+ LEFT JOIN t_operator op ON ga.operationId = op.id
+ LEFT JOIN t_site si on ga.siteId = si.id
+ <where>
+ <if test="provinceCode!=null and provinceCode!=''">
+ ga.provinceCode = #{provinceCode}
+
+ </if>
+ <if test="cityCode!=null and cityCode!=''">
+ and ga.cityCode = #{cityCode}
+
+ </if>
+ <if test="store!=null and store!=''">
+ and st.`name` = #{store}
+
+ </if>
+ <if test="site!=null and site!=''">
+ and si.`name` = #{site}
+
+ </if>
+ </where>
+
+
+ </select>
+</mapper>
--
Gitblit v1.7.1