From 200acf9283ff06e75874df263b1e125a71e76215 Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期五, 27 十月 2023 14:57:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponInfo.html                            |   10 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                 |    1 
 .idea/encodings.xml                                                                                             |   20 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java |   45 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java                    |   88 ++
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TicketController.java         |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java       |  433 ++++++++----
 cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/IntegralGoodsOfSearch.java      |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java          |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java        |   16 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java       |  246 ++++++
 cloud-server-management/pom.xml                                                                                 |    6 
 .idea/workspace.xml                                                                                             |  396 ++++++-----
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java                                   |    4 
 cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java                            |    3 
 cloud-server-management/src/main/resources/mapper/TOperatorAuthMapper.xml                                       |    6 
 cloud-server-activity/src/main/java/com/dsh/activity/model/request/IntegralGoodsOfSearch.java                   |    2 
 cloud-server-activity/src/main/resources/mapper/CouponMapper.xml                                                |    8 
 cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java                            |   18 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java                           |    8 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java                        |   12 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java             |   12 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java      |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                    |   21 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java         |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html           |  223 +++++
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java                  |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java       |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java    |   24 
 cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js                            |   59 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuth.java                       |  112 +++
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java         |   31 
 cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js                      |  207 +++++
 33 files changed, 1,582 insertions(+), 451 deletions(-)

diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index f5917ff..69a6bd5 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -2,33 +2,13 @@
 <project version="4">
   <component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8">
     <file url="file://$PROJECT_DIR$/cloud-server-account" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-account/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-account/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-activity" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-activity/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-activity/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-auth" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-auth/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-auth/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-competition" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-competition/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-competition/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-course" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-course/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-course/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-gateway" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-gateway/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-gateway/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-management" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-management/lib" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-management/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-management/src/main/resources" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-management/src/main/webapp" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-other" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-other/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-other/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/cloud-server-parent" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-parent/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/cloud-server-parent/src/main/resources" charset="UTF-8" />
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index a744ade..6ed129d 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -25,19 +25,13 @@
     <select />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="10.20">
+    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="商户认证">
+      <change beforePath="$PROJECT_DIR$/.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/resources/redis.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/resources/redis.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/resources/sharding-jdbc.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/resources/sharding-jdbc.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/redis.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/redis.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/sharding-jdbc.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/sharding-jdbc.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-competition/src/main/resources/redis.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-competition/src/main/resources/redis.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-competition/src/main/resources/sharding-jdbc.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-competition/src/main/resources/sharding-jdbc.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/redis.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/redis.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/sharding-jdbc.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/sharding-jdbc.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-gateway/src/main/resources/redis.properties" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-gateway/src/main/resources/redis.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java" afterDir="false" />
     </list>
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -66,9 +60,8 @@
   <component name="MavenImportPreferences">
     <option name="generalSettings">
       <MavenGeneralSettings>
-        <option name="localRepository" value="C:\Users\45438\.m2\repository" />
-        <option name="mavenHome" value="$PROJECT_DIR$/../../apache-maven-3.9.3" />
-        <option name="userSettingsFile" value="C:\Users\45438\.m2\settings.xml" />
+        <option name="localRepository" value="C:\Users\44323\.m2\repository" />
+        <option name="userSettingsFile" value="C:\Users\44323\.m2\settings.xml" />
       </MavenGeneralSettings>
     </option>
     <option name="enabledProfiles">
@@ -91,9 +84,6 @@
   <component name="ProblemsViewState">
     <option name="selectedTabId" value="CurrentFile" />
   </component>
-  <component name="ProjectColorInfo">{
-  &quot;associatedIndex&quot;: 5
-}</component>
   <component name="ProjectId" id="2T0poWYlZShlnPso29uxjn4gQQo" />
   <component name="ProjectLevelVcsManager" settingsEditedManually="true">
     <ConfirmationsSetting value="2" id="Add" />
@@ -102,42 +92,28 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
-    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
-    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
-    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;D:/javaproject/play/cloud-server-other/src/main/java/com/dsh/other/util&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;project.structure.last.edited&quot;: &quot;模块&quot;,
-    &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
-    &quot;project.structure.side.proportion&quot;: &quot;0.54367816&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;MavenSettings&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
-  }
-}</component>
+  <component name="PropertiesComponent">
+    <property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
+    <property name="RequestMappingsPanelOrder0" value="0" />
+    <property name="RequestMappingsPanelOrder1" value="1" />
+    <property name="RequestMappingsPanelWidth0" value="75" />
+    <property name="RequestMappingsPanelWidth1" value="75" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="aspect.path.notification.shown" value="true" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper" />
+    <property name="nodejs_package_manager_path" value="npm" />
+    <property name="settings.editor.selected.configurable" value="MavenSettings" />
+  </component>
   <component name="ReactorSettings">
     <option name="notificationShown" value="true" />
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
-      <recent name="D:\javaproject\play\cloud-server-other\src\main\java\com\dsh\other\util" />
-      <recent name="D:\javaproject\play\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
-      <recent name="D:\javaproject\play\cloud-server-management\src\main\webapp\WEB-INF\view\system\ball" />
-      <recent name="E:\IdeaProjects\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\user" />
-      <recent name="E:\IdeaProjects\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
-    </key>
-    <key name="MoveFile.RECENT_KEYS">
-      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
-      <recent name="D:\JavaTool\PlayPai1\cloud-server-parent" />
-      <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
+      <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\course\mapper" />
+      <recent name="E:\PlayPai\cloud-server-management\src\main\resources\mapper" />
+      <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\service\impl" />
+      <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\service" />
+      <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\model" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
       <recent name="com.dsh.course.feignClient.account.model" />
@@ -149,12 +125,27 @@
       <recent name="com.dsh.guns.modular.system.service" />
       <recent name="com.dsh.other.mapper" />
     </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
+      <recent name="D:\JavaTool\PlayPai1\cloud-server-parent" />
+      <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
+    </key>
   </component>
   <component name="RunDashboard">
     <option name="configurationTypes">
       <set>
         <option value="SpringBootApplicationConfigurationType" />
       </set>
+    </option>
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
     </option>
   </component>
   <component name="RunManager" selected="Spring Boot.ManagementApplication">
@@ -184,12 +175,12 @@
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="AccountApplicationTests" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
-      <option name="MAIN_CLASS_NAME" value="com.dsh.AccountApplicationTests" />
-      <module name="mb-cloud-account" />
+    <configuration name="AntMerchantExpandIndirectImageUpload" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+      <option name="MAIN_CLASS_NAME" value="com.dsh.guns.modular.system.api.AntMerchantExpandIndirectImageUpload" />
+      <module name="mb-cloud-management" />
       <extension name="coverage">
         <pattern>
-          <option name="PATTERN" value="com.dsh.*" />
+          <option name="PATTERN" value="com.dsh.guns.modular.system.api.*" />
           <option name="ENABLED" value="true" />
         </pattern>
       </extension>
@@ -216,6 +207,32 @@
       <extension name="coverage">
         <pattern>
           <option name="PATTERN" value="com.dsh.guns.modular.system.util.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration name="OperatorController" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+      <option name="MAIN_CLASS_NAME" value="com.dsh.guns.modular.system.controller.code.OperatorController" />
+      <module name="mb-cloud-management" />
+      <extension name="coverage">
+        <pattern>
+          <option name="PATTERN" value="com.dsh.guns.modular.system.controller.code.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration name="SaticScheduleTask" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+      <option name="MAIN_CLASS_NAME" value="com.dsh.guns.modular.system.api.SaticScheduleTask" />
+      <module name="mb-cloud-management" />
+      <extension name="coverage">
+        <pattern>
+          <option name="PATTERN" value="com.dsh.guns.modular.system.api.*" />
           <option name="ENABLED" value="true" />
         </pattern>
       </extension>
@@ -266,8 +283,8 @@
     </configuration>
     <configuration name="AccountApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-account" />
-      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.AccountApplication" />
+      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -282,8 +299,8 @@
     </configuration>
     <configuration name="ActivityApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-activity" />
-      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ActivityApplication" />
+      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -312,8 +329,8 @@
     </configuration>
     <configuration name="CompetitionApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-competition" />
-      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CompetitionApplication" />
+      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -328,8 +345,8 @@
     </configuration>
     <configuration name="CourseApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-course" />
-      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CourseApplication" />
+      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -357,10 +374,10 @@
       </method>
     </configuration>
     <configuration name="ManagementApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
-      <option name="ENABLE_JMX_AGENT" value="false" />
       <module name="mb-cloud-management" />
-      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ManagementApplication" />
+      <option name="ENABLE_JMX_AGENT" value="false" />
+      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -395,6 +412,7 @@
       </method>
     </configuration>
     <list>
+      <item itemvalue="Application.BigDecimalToChineseWords" />
       <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
       <item itemvalue="Spring Boot.CourseApplication" />
       <item itemvalue="Spring Boot.AuthApplication" />
@@ -404,11 +422,15 @@
       <item itemvalue="Spring Boot.OtherApplication" />
       <item itemvalue="Spring Boot.ActivityApplication" />
       <item itemvalue="Spring Boot.CompetitionApplication" />
-      <item itemvalue="应用程序.AccountApplicationTests" />
-      <item itemvalue="应用程序.BigDecimalToChineseWords" />
+      <item itemvalue="Application.OperatorController" />
+      <item itemvalue="Application.AntMerchantExpandIndirectImageUpload" />
+      <item itemvalue="Application.SaticScheduleTask" />
     </list>
     <recent_temporary>
       <list>
+        <item itemvalue="Application.SaticScheduleTask" />
+        <item itemvalue="Application.AntMerchantExpandIndirectImageUpload" />
+        <item itemvalue="Application.OperatorController" />
         <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
       </list>
     </recent_temporary>
@@ -421,17 +443,17 @@
           <expand>
             <path>
               <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
-              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@afa9c549" type="7427dc5b:ServiceModel$ServiceGroupNode" />
+              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@f1b22ae" type="7427dc5b:ServiceModel$ServiceGroupNode" />
             </path>
             <path>
               <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
-              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@afa9c549" type="7427dc5b:ServiceModel$ServiceGroupNode" />
-              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@6283755e" type="7427dc5b:ServiceModel$ServiceGroupNode" />
+              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@f1b22ae" type="7427dc5b:ServiceModel$ServiceGroupNode" />
+              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@d892f522" type="7427dc5b:ServiceModel$ServiceGroupNode" />
             </path>
             <path>
               <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
-              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@afa9c549" type="7427dc5b:ServiceModel$ServiceGroupNode" />
-              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@6016f0bd" type="7427dc5b:ServiceModel$ServiceGroupNode" />
+              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@f1b22ae" type="7427dc5b:ServiceModel$ServiceGroupNode" />
+              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@4c3d359f" type="7427dc5b:ServiceModel$ServiceGroupNode" />
             </path>
           </expand>
           <select />
@@ -439,7 +461,7 @@
       </serviceView>
     </option>
   </component>
-  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="SpellCheckerSettings" BundledDictionaries="0" Folders="0" CustomDictionaries="0" Dictionaries="0" CorrectionsLimit="5" DefaultDictionary="应用程序级" UseSingleDictionary="true" />
   <component name="SvnConfiguration">
     <configuration>C:\Users\luo\AppData\Roaming\Subversion</configuration>
   </component>
@@ -524,105 +546,12 @@
       <workItem from="1697417273104" duration="16186000" />
       <workItem from="1697438899985" duration="44114000" />
       <workItem from="1697590715803" duration="66758000" />
-    </task>
-    <task id="LOCAL-00001" summary="后台代码删除">
-      <created>1690249807612</created>
-      <option name="number" value="00001" />
-      <option name="presentableId" value="LOCAL-00001" />
-      <option name="project" value="LOCAL" />
-      <updated>1690249807612</updated>
-    </task>
-    <task id="LOCAL-00002" summary="后台代码删除">
-      <created>1690254629455</created>
-      <option name="number" value="00002" />
-      <option name="presentableId" value="LOCAL-00002" />
-      <option name="project" value="LOCAL" />
-      <updated>1690254629455</updated>
-    </task>
-    <task id="LOCAL-00003" summary="后台代码删除">
-      <created>1690254749862</created>
-      <option name="number" value="00003" />
-      <option name="presentableId" value="LOCAL-00003" />
-      <option name="project" value="LOCAL" />
-      <updated>1690254749862</updated>
-    </task>
-    <task id="LOCAL-00004" summary="后台代码">
-      <created>1690334274202</created>
-      <option name="number" value="00004" />
-      <option name="presentableId" value="LOCAL-00004" />
-      <option name="project" value="LOCAL" />
-      <updated>1690334274203</updated>
-    </task>
-    <task id="LOCAL-00005" summary="后台代码">
-      <created>1690335913450</created>
-      <option name="number" value="00005" />
-      <option name="presentableId" value="LOCAL-00005" />
-      <option name="project" value="LOCAL" />
-      <updated>1690335913450</updated>
-    </task>
-    <task id="LOCAL-00006" summary="后台代码">
-      <created>1690338179876</created>
-      <option name="number" value="00006" />
-      <option name="presentableId" value="LOCAL-00006" />
-      <option name="project" value="LOCAL" />
-      <updated>1690338179876</updated>
-    </task>
-    <task id="LOCAL-00007" summary="后台代码">
-      <created>1690338325966</created>
-      <option name="number" value="00007" />
-      <option name="presentableId" value="LOCAL-00007" />
-      <option name="project" value="LOCAL" />
-      <updated>1690338325966</updated>
-    </task>
-    <task id="LOCAL-00008" summary="后台代码">
-      <created>1690341067099</created>
-      <option name="number" value="00008" />
-      <option name="presentableId" value="LOCAL-00008" />
-      <option name="project" value="LOCAL" />
-      <updated>1690341067099</updated>
-    </task>
-    <task id="LOCAL-00009" summary="后台代码">
-      <created>1690355617215</created>
-      <option name="number" value="00009" />
-      <option name="presentableId" value="LOCAL-00009" />
-      <option name="project" value="LOCAL" />
-      <updated>1690355617215</updated>
-    </task>
-    <task id="LOCAL-00010" summary="后台代码删除">
-      <created>1690362658673</created>
-      <option name="number" value="00010" />
-      <option name="presentableId" value="LOCAL-00010" />
-      <option name="project" value="LOCAL" />
-      <updated>1690362658673</updated>
-    </task>
-    <task id="LOCAL-00011" summary="后台代码删除">
-      <created>1690363462474</created>
-      <option name="number" value="00011" />
-      <option name="presentableId" value="LOCAL-00011" />
-      <option name="project" value="LOCAL" />
-      <updated>1690363462474</updated>
-    </task>
-    <task id="LOCAL-00012" summary="后台代码">
-      <created>1690364368448</created>
-      <option name="number" value="00012" />
-      <option name="presentableId" value="LOCAL-00012" />
-      <option name="project" value="LOCAL" />
-      <updated>1690364368448</updated>
-    </task>
-    <task id="LOCAL-00013" summary="后台代码">
-      <created>1690364506501</created>
-      <option name="number" value="00013" />
-      <option name="presentableId" value="LOCAL-00013" />
-      <option name="project" value="LOCAL" />
-      <updated>1690364506501</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>
+      <workItem from="1698142818373" duration="10099000" />
+      <workItem from="1698154539431" duration="913000" />
+      <workItem from="1698194264793" duration="36754000" />
+      <workItem from="1698280994018" duration="26917000" />
+      <workItem from="1698316299057" duration="8429000" />
+      <workItem from="1698325880893" duration="32759000" />
     </task>
     <task id="LOCAL-00039" summary="10.8">
       <option name="closed" value="true" />
@@ -904,28 +833,125 @@
       <option name="project" value="LOCAL" />
       <updated>1697765704122</updated>
     </task>
-    <option name="localTasksCounter" value="74" />
+    <task id="LOCAL-00074" summary="运营商添加bug修改">
+      <created>1698144558537</created>
+      <option name="number" value="00074" />
+      <option name="presentableId" value="LOCAL-00074" />
+      <option name="project" value="LOCAL" />
+      <updated>1698144558538</updated>
+    </task>
+    <task id="LOCAL-00075" summary="运营商权限">
+      <created>1698150152696</created>
+      <option name="number" value="00075" />
+      <option name="presentableId" value="LOCAL-00075" />
+      <option name="project" value="LOCAL" />
+      <updated>1698150152696</updated>
+    </task>
+    <task id="LOCAL-00076" summary="权限添加">
+      <created>1698150815040</created>
+      <option name="number" value="00076" />
+      <option name="presentableId" value="LOCAL-00076" />
+      <option name="project" value="LOCAL" />
+      <updated>1698150815040</updated>
+    </task>
+    <task id="LOCAL-00077" summary="运营商权限">
+      <created>1698154307813</created>
+      <option name="number" value="00077" />
+      <option name="presentableId" value="LOCAL-00077" />
+      <option name="project" value="LOCAL" />
+      <updated>1698154307813</updated>
+    </task>
+    <task id="LOCAL-00078" summary="运营商权限">
+      <created>1698194296076</created>
+      <option name="number" value="00078" />
+      <option name="presentableId" value="LOCAL-00078" />
+      <option name="project" value="LOCAL" />
+      <updated>1698194296076</updated>
+    </task>
+    <task id="LOCAL-00079" summary="运营商权限">
+      <created>1698199358403</created>
+      <option name="number" value="00079" />
+      <option name="presentableId" value="LOCAL-00079" />
+      <option name="project" value="LOCAL" />
+      <updated>1698199358403</updated>
+    </task>
+    <task id="LOCAL-00080" summary="运营商权限">
+      <created>1698204167784</created>
+      <option name="number" value="00080" />
+      <option name="presentableId" value="LOCAL-00080" />
+      <option name="project" value="LOCAL" />
+      <updated>1698204167784</updated>
+    </task>
+    <task id="LOCAL-00081" summary="10.20">
+      <created>1698225060306</created>
+      <option name="number" value="00081" />
+      <option name="presentableId" value="LOCAL-00081" />
+      <option name="project" value="LOCAL" />
+      <updated>1698225060307</updated>
+    </task>
+    <task id="LOCAL-00082" summary="运营商权限">
+      <created>1698281682907</created>
+      <option name="number" value="00082" />
+      <option name="presentableId" value="LOCAL-00082" />
+      <option name="project" value="LOCAL" />
+      <updated>1698281682907</updated>
+    </task>
+    <task id="LOCAL-00083" summary="10.20">
+      <created>1698304011843</created>
+      <option name="number" value="00083" />
+      <option name="presentableId" value="LOCAL-00083" />
+      <option name="project" value="LOCAL" />
+      <updated>1698304011843</updated>
+    </task>
+    <task id="LOCAL-00084" summary="10.20">
+      <created>1698379811872</created>
+      <option name="number" value="00084" />
+      <option name="presentableId" value="LOCAL-00084" />
+      <option name="project" value="LOCAL" />
+      <updated>1698379811872</updated>
+    </task>
+    <task id="LOCAL-00085" summary="10.20">
+      <created>1698379912528</created>
+      <option name="number" value="00085" />
+      <option name="presentableId" value="LOCAL-00085" />
+      <option name="project" value="LOCAL" />
+      <updated>1698379912528</updated>
+    </task>
+    <task id="LOCAL-00086" summary="商户认证">
+      <created>1698382105139</created>
+      <option name="number" value="00086" />
+      <option name="presentableId" value="LOCAL-00086" />
+      <option name="project" value="LOCAL" />
+      <updated>1698382105139</updated>
+    </task>
+    <task id="LOCAL-00087" summary="商户认证">
+      <created>1698383333283</created>
+      <option name="number" value="00087" />
+      <option name="presentableId" value="LOCAL-00087" />
+      <option name="project" value="LOCAL" />
+      <updated>1698383333283</updated>
+    </task>
+    <option name="localTasksCounter" value="88" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="3" />
+    <option name="version" value="1" />
   </component>
   <component name="Vcs.Log.Tabs.Properties">
     <option name="TAB_STATES">
       <map>
         <entry key="MAIN">
           <value>
-            <State />
+            <State>
+              <option name="COLUMN_ORDER" />
+            </State>
           </value>
         </entry>
       </map>
     </option>
   </component>
   <component name="VcsManagerConfiguration">
-    <MESSAGE value="9.26。6" />
-    <MESSAGE value="9.26。7" />
-    <MESSAGE value="9.26。8" />
-    <MESSAGE value="9.26。9" />
+    <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
     <MESSAGE value="9.26。10" />
     <MESSAGE value="9.26。11" />
     <MESSAGE value="9.26。12" />
@@ -946,8 +972,12 @@
     <MESSAGE value="10.18" />
     <MESSAGE value="10.18.1" />
     <MESSAGE value="10.18.2" />
+    <MESSAGE value="运营商添加bug修改" />
+    <MESSAGE value="权限添加" />
+    <MESSAGE value="运营商权限" />
     <MESSAGE value="10.20" />
-    <option name="LAST_COMMIT_MESSAGE" value="10.20" />
+    <MESSAGE value="商户认证" />
+    <option name="LAST_COMMIT_MESSAGE" value="商户认证" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
@@ -969,28 +999,18 @@
         </line-breakpoint>
         <line-breakpoint type="java-line">
           <url>file://$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java</url>
-          <line>1373</line>
+          <line>1382</line>
           <option name="timeStamp" value="14" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java</url>
-          <line>479</line>
-          <option name="timeStamp" value="26" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java</url>
-          <line>389</line>
-          <option name="timeStamp" value="27" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java</url>
-          <line>276</line>
+          <line>282</line>
           <option name="timeStamp" value="50" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java</url>
-          <line>244</line>
-          <option name="timeStamp" value="54" />
+          <url>file://$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java</url>
+          <line>172</line>
+          <option name="timeStamp" value="111" />
         </line-breakpoint>
       </breakpoints>
     </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 a76ef76..c0bbfe8 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
@@ -1,5 +1,6 @@
 package com.dsh.account.controller;
 
+import com.alibaba.nacos.common.utils.Md5Utils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dsh.account.dto.SelectDto;
@@ -102,9 +103,7 @@
                 return 5001;
             }
         }
-
         query.setIsVip(0);
-        query.setPassword("111111");
         query.setInsertTime(new Date());
         return appUserService.saveOrUpdate(query);
     }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
index e4d115e..4a16c13 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -526,6 +526,14 @@
             if(dataVo.getObjType()!=1){
                 coupon.setAuditStatus(1);
             }
+            if (dataVo.getUserType()==1){
+                coupon.setAuditStatus(2);
+            }else{
+                coupon.setAuditStatus(1);
+            }
+            if(dataVo.getObjType()!=1){
+                coupon.setAuditStatus(1);
+            }
 
             boolean save = couponService.save(coupon);
             if (save){
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 e49f7a3..2f7a131 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
@@ -126,7 +126,26 @@
                     result.add(map);
                 }
             }
-        }else {
+        }else if(ofSearch.getObjType()==2){
+            for (Map<String, Object> map : result1) {
+                // 拿到当前运营商下的门店的门票
+                List<PointsMerchandiseStore> id = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>().in("storeId",ofSearch.getStoreIds()));
+                // 拿到积分商品id集合
+                List<Integer> collect = id.stream().map(PointsMerchandiseStore::getPointsMerchandiseId).collect(Collectors.toList());
+                if(collect.size()==0){
+                    collect.add(-1);
+                }
+                Integer temp =(Integer)map.get("id");
+                if (collect.contains(temp)){
+                    if(id.size()>1){
+                        map.put("size",1);
+                    }else {
+                        map.put("size",0);
+                    }
+                    result.add(map);
+                }
+            }
+        } else {
             result=result1;
         }
         if (result.size() > 0){
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java
index 434ddf2..cf201b0 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java
@@ -24,6 +24,8 @@
     private Page<Map<String, Object>> page;
     private String cityCode;
     private Integer storeId;
+    private Integer operatorId;
+
 
     private Integer objType;
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java
index 1398eff..66d5665 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java
@@ -31,8 +31,8 @@
                                                       @Param("page")Page<Map<String, Object>> page,
                                                       @Param("cityCode") String cityCode,
                                                       @Param("storeId")Integer storeId,
-                                                      @Param("objType")Integer objType
-                                                      );
+                                                      @Param("operatorId")Integer operatorId,
+                                                      @Param("objType")Integer objType);
 
     List<Map<String, Object>> queryCouponListOfSearch1(@Param("name")String name,
                                                       @Param("type")Integer type,
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/IntegralGoodsOfSearch.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/IntegralGoodsOfSearch.java
index 3ccecaa..a9a52c1 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/IntegralGoodsOfSearch.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/IntegralGoodsOfSearch.java
@@ -6,6 +6,7 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.List;
 import java.util.Map;
 
 @Data
@@ -30,4 +31,5 @@
     private Integer objType;
 
     private Integer objId;
+    private List<Integer> storeIds;
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
index c32da70..ebf76cb 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
@@ -105,7 +105,17 @@
 
     @Override
     public List<Map<String, Object>> queryCouponListOfSearch(CouponListOfSearch ofSearch) {
-        return this.baseMapper.queryCouponListOfSearch(ofSearch.getName(),ofSearch.getType(),ofSearch.getDistributionMethod(),ofSearch.getUserPopulation(),ofSearch.getStatus(),ofSearch.getState(),ofSearch.getPage(),ofSearch.getCityCode(),ofSearch.getStoreId(),ofSearch.getObjType());
+        return this.baseMapper.queryCouponListOfSearch(ofSearch.getName(),
+                ofSearch.getType(),
+                ofSearch.getDistributionMethod(),
+                ofSearch.getUserPopulation(),
+                ofSearch.getStatus(),
+                ofSearch.getState(),
+                ofSearch.getPage(),
+                ofSearch.getCityCode(),
+                ofSearch.getStoreId(),
+                ofSearch.getOperatorId(),
+                ofSearch.getObjType());
     }
 
     @Override
diff --git a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
index 7a908fb..7ecd817 100644
--- a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
@@ -35,6 +35,13 @@
         <if test="objType == 1">
           and  auditStatus =2
         </if>
+        where 1=1
+        <if test="operatorId != null">
+            and cityManagerId = #{operatorId}
+        </if>
+        <if test="objType == 1">
+          and  auditStatus =2
+        </if>
         <if test="cityCode != null">
            and id in(
             SELECT DISTINCT couponId FROM
@@ -66,6 +73,7 @@
         <if test="state != null">
             and `state` = #{state}
         </if>
+
           order by insertTime desc
     </select>
     <select id="queryCouponListOfSearch1" resultType="java.util.Map">
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 d3b0fcf..cc5e377 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
@@ -379,7 +379,6 @@
                 }
             }
         }
-
         List<RegisterOrderVO> res = packagePaymentService.listAllRegister(query);
         // 该运营商下没有门店
         if (query.getStoresIds()!=null){
diff --git a/cloud-server-management/pom.xml b/cloud-server-management/pom.xml
index eecc3ec..ff89142 100644
--- a/cloud-server-management/pom.xml
+++ b/cloud-server-management/pom.xml
@@ -223,6 +223,12 @@
             <artifactId>font-asian</artifactId>
             <version>7.1.13</version>
         </dependency>
+        <dependency>
+            <groupId>com.alipay.sdk</groupId>
+            <artifactId>alipay-sdk-java</artifactId>
+            <version>4.38.10.ALL</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java
index f8e86a6..eb63ef4 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java
@@ -24,6 +24,8 @@
     private Page<Map<String, Object>> page;
     private String cityCode;
     private Integer storeId;
+    private Integer operatorId;
     private Integer objType;
 
+
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/IntegralGoodsOfSearch.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/IntegralGoodsOfSearch.java
index 7121ee2..14b3bfa 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/IntegralGoodsOfSearch.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/IntegralGoodsOfSearch.java
@@ -6,6 +6,7 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.List;
 import java.util.Map;
 
 @Data
@@ -30,4 +31,5 @@
     private Integer objType;
 
     private Integer objId;
+    private List<Integer> storeIds;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java
new file mode 100644
index 0000000..56043ed
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java
@@ -0,0 +1,18 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.guns.modular.system.model.OperatorAuth;
+import com.dsh.guns.modular.system.model.TTurn;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TOperatorAuthMapper extends BaseMapper<OperatorAuth> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java
new file mode 100644
index 0000000..6f5f2a3
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java
@@ -0,0 +1,45 @@
+package com.dsh.guns.modular.system.api;
+
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.CertAlipayRequest;
+import com.alipay.api.AlipayConfig;
+import com.alipay.api.request.AntMerchantExpandIndirectImageUploadRequest;
+import com.alipay.api.response.AntMerchantExpandIndirectImageUploadResponse;
+import com.alipay.api.FileItem;
+import java.util.Base64;
+import java.util.ArrayList;
+import java.util.List;
+
+public class AntMerchantExpandIndirectImageUpload {
+
+    public static void main(String[] args) throws AlipayApiException {
+        String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCSsmylIHe0j0pRQrB9p5ljryk9Qg2Z/JgIh+gtZES1TDo35YVw24aRRt7pkY7oHIZqpMRmSsWND1t63LVuNlpq532LG0iEJVJS53GzpRoHDD3iD01GmUoNjkCL36NCrbY0hTDDw7GZnYuJ8194Sss7OEoi7Mghg/XUreX4awwpWngTepCF7zs0S4YJQWyGY4JI6ooGraW23siBVY5MUI9XXLL6UKIExUfKe7zRihs8SrTHNnXtDT6EKYYo8P6M90Xuk173QsK2Xguk1FQ5Blh2ts7UvZVjP+WoQwDvrnqruve5kzDD9gwnAYUvhY66mtlxeub9nf5LLTtCliXeUZpNAgMBAAECggEAaPShSM9e9d9jM5p8PZqw4yJKZhqhMqAHgmsCUZ+gjPn52U4s198oez5ydDgBP85Q2XIDVpB+oPrw34mTgUQAEuaG6wTdMDannMscjYQ9h/dZOyjph+5ajjJNugWKgEVazF7S0e1sXtTaJhvrHVyd5UPTvwMb+Oa59q1okQC91cNa2vJzXiC7dfqWXZW/otmmOpcIcCN8dVDG3YhAuc5ZiT78Ca8x9GHWfw7cw1FRewRZlp/YnD2fJeWEesfvGCV36zCksrJrZz5MFMdf1Qh6+tHxK+E5sPNGdbooviTRnNWrsgyS9NcXFSQItOZQHsbLVID/Bs0kxkYPzbsfX1vRXQKBgQDsBDNZxpmSZJZ/4HfCOfHytWAkH/GHE3GOYH4TdHKLXfxRCinU23OtdrU2Sy8tBZvaajDKkWvMkjWT2w+56+z+xTprTf2PL/LS9zWCc8LPKbif6NfnwaOE8pIBrvkBskGKwbIE2fFVT0B4hNsR80TbPxvvAfCKjUj67qrTXSal+wKBgQCfHiuq/gLuSD2fuplzCwu0Rm/wr56bUpxhq9WNGaPOybR6EPq/wTKp0ow+f9uSuTm2NZhi/TWTXHOizy9vcZChRpj03a7NYwUOw36zvW7SHuF0Uhsp8TrZTyCj1XdhdLyJ9JMyL2DTRpGtLUR01ZSrdXPax7/Xu+OHubijqRD2VwKBgFqCveKm7AwdMS43OhYtPKE0d3tDGNARX9IXJSJ23Nqfn3zApgwwYKtcQ+BfcucUKJHZeX6lyC56v7tFHkHRvWBy6JVwIlZAMCJBla7CkCn8OQZyOCJzuy7oC6BDptDEuKfq4kdEAW4S54mQgabfoT9nc2H0X3fy+NLqpm5KYeDzAoGAYerlIILUNuKJ2aOxDpS7jSLTfB/20MqTpZ9i+UPQBE8oGv4b8Kjpjowc9dEkxDPsCe8Nac08jQSVvJkXLdOLF1QkiHtrOMU4tY8kh2OJsRCD2Vs1kCf8+QGyql+Q6Y43AAZcFsQFJ78Dorh6qhNNO/45X2cQ7aeYK0vlDgHaiF0CgYA4k9Q1tc8sU67TgT9cmMM6hG7/Rf3cU3PIdYuojs1EIG+1BJ7TlEiNAHoPtphlGFFeDP3SVnf59RfYH+BbLiz1JX9p/KFKRRkoXtfd6bySVWHvj4x2WiVpKFvHxhxc3LRubx0ryLGR/tpUJzxp+9luanU/WgSRFKiEZJZqFjjDzw==";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004123692417");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF8");
+        alipayConfig.setSignType("RSA2");
+        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
+        // 这是一个1x1像素的图片流
+        String imageBase64 = "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAEUlEQVR42mP4TyRgGFVIX4UAI/uOgGWVNeQAAAAASUVORK5CYII=";
+        // 下列FileItem中也可用直接读取本地文件的方式来获取文件
+        // FileItem imageContent = new FileItem("本地文件的绝对路径");
+        AntMerchantExpandIndirectImageUploadRequest request = new AntMerchantExpandIndirectImageUploadRequest();
+        FileItem imageContent = new FileItem("https://we-park-life.oss-cn-beijing.aliyuncs.com/img/73d85c4b522f4077bda8d20f51439a33.JPG", Base64.getDecoder().decode(imageBase64));
+        request.setImageContent(imageContent);
+        request.setImageType("jpg");
+        AntMerchantExpandIndirectImageUploadResponse response = alipayClient.execute(request);
+        System.out.println(response.getBody());
+        if (response.isSuccess()) {
+            System.out.println("调用成功");
+        } else {
+            System.out.println("调用失败");
+        }
+    }
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java
new file mode 100644
index 0000000..ff8319b
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java
@@ -0,0 +1,88 @@
+package com.dsh.guns.modular.system.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipayMerchantIndirectAuthorderQuerystatusRequest;
+import com.alipay.api.response.AlipayMerchantIndirectAuthorderQuerystatusResponse;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.guns.modular.system.model.OperatorAuth;
+import com.dsh.guns.modular.system.service.IOperatorAuthService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+public class SaticScheduleTask {
+    @Autowired
+    private IOperatorAuthService operatorAuthService;
+    // 一个小时执行一次
+    @Scheduled(fixedRate=3600000)
+    private void configureTasks() {
+        System.err.println("执行定时任务时间: " + LocalDateTime.now());
+        // 回查商户认证单审核状态 查询除了审核通过以外的认证单
+        List<OperatorAuth> list = operatorAuthService.list(new QueryWrapper<OperatorAuth>().ne("orderStatus", "AUDIT_PASS"));
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","2021004123692417",
+                "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDe188UHA8lR8CjG6KeKIYjYw6UfpJOl7nyklpiZKfbJ1q70D+LEdEZbWrzZ2eSwqeD+7B/ZV8Hyum9vrU6FPbgc6q/vy73ji0o1AhQP0GPPtcnNaAP9IppwchTSEjvODKMHSotB64LSBuFLgtAGSAJ6nHPXlEcyV5Y4Dev/E1JD3b9N2uTXilW5zZ2o1IxwXBIxuU0Tw7wHXUjcaXbpGuQUGIq54fzsbqP4TjSVoa8S41FhbtP9n61NulUtGFRfyHxpo/kj4cx3o6P4s+PBo/T2DlaMkpI6cRx0rfjL1ZkXrDJLYcCokUKxiJ/trrGjdYFUz6r2TGe1kAnjehkW+TTAgMBAAECggEAWMKtAN2MStUhrdY8F7Mcesvh6tPfgt58elpBFh/xnCE4ysZQCRy3pOEoUHtHjfVqs+90hcni6D+yipmDpfbjvtNTl7yXAJPo+PI7vXr0qhHlsQBzGOfWmflNyZ5pLp+7woN7YSRF9shp7cpBQO7BDDIN0wNGW6j5o3zrsXVVc1uu5ndD0kxV6XM3P43EY8mMdRXT9UmF0WTomLQ7JxhlY23fgYmS7USZUKkN9BkKAbwnxdskDnFT94infup4kbWoPr5DFeMESPdsE+tNbbUGCKzqYzgoTpf5jOKThyt1/HQWCuYLbui3GDJ704eEPypFDgl8Mh+y8UOBiuKfjB4xgQKBgQD+v0cO6rU7ce7R3y+4LgZoEGfEfjvWGH+BEowDk0UFIWxfPlwgTGl5/OZHO7Y55QQzNsxxl8jUIXxVicyhYoKI0+uOeJ7bKmi08hb6BAQ1eTRaukRtMBbCo/FvBbE14vt2dnpidvCPv/KC0sQG1J+vUxUzSt94URvxNVBcRbsXCQKBgQDf8F1QZ4pUYP9KSCmUWbzpotAr+m84Q7Oqf4zc70p8rU8nGQSnNrQQWddqwF/UEiNniDj+n0FVwiEMslRWSqPYixyqI3dHuVxhi/4wdoIewCHq3MkcqHksl9y67Bhl8HXMGmg79IxiCsqj7oEF8aGJjAyEZm3d2roz0QNPQCaX+wKBgQCazX+Px/7jpcN7k4W7BXTtLfLwy8juvCpXM/8TeR27FWl2oz12fxilgZIp/VYp7kpUGNu5t4PZrJOSo09PTr6GCUmeZRwbkLTaKDbgLSqlmAbBj2lfdJaQJvHjBnF+jnVCspKCXUaoA/uJlix6/iAfeXxrk/cidR9mv4Aa4mDjiQKBgG2+SKyfoT3KrzFC/gVymM7SeDwlJZ4oJ4M1sN2Q8yr4b+LUMuCTQVkF/jiVgCDYprsVGgFGIGmbkkC7n/MN7w+u1ORYLxtaLnird21ellPlinmjq3c85O1CmuyLyUUju0bD5jMDnExrx3Tg7B/yk1xp4rR70fm4OCoukvWilYdDAoGBAK3Y77tqbno+D6W95fb8xb4xUUd1tEWgSY6CgjaqTRzbJ38cGuo92gBjKhDGLwaztcCw4yKPhEOum7nBGKKyxFfs8Z4vsG+m19JSdBfHf3PLModZwnjrRpatAnjTUW0DbPz+sfAwMgLnTCpElcSRQwjmioVAucCyd2FlMmqP5xB4","json","GBK",
+                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB","RSA2");
+        for (OperatorAuth operatorAuth : list) {
+        // 第三步:查询申请单审核结果
+        AlipayMerchantIndirectAuthorderQuerystatusRequest request1 = new AlipayMerchantIndirectAuthorderQuerystatusRequest();
+        request1.setBizContent("{" +
+                "  \"order_no\":\""+operatorAuth.getOrderNo()+"\"," +
+                "  \"out_biz_no\":\""+operatorAuth.getOutBizNo()+"\"," +
+                "}");
+        AlipayMerchantIndirectAuthorderQuerystatusResponse response1 = null;
+        try {
+            response1 = alipayClient.execute(request1);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        if(response1.isSuccess()){
+            System.out.println("调用成功");
+        } else {
+            System.out.println("调用失败");
+        }
+            JSONObject json = JSONObject.parseObject(response1.getBody());
+            JSONObject sign = json.getJSONObject("alipay_merchant_indirect_authorder_querystatus_response");
+            String orderNo = sign.getString("order_no");
+            String order_status = sign.getString("order_status");
+            operatorAuth.setOrderStatus(order_status);
+            operatorAuth.setOrderNo(orderNo);
+            // 失败原因
+            JSONObject verify_list = sign.getJSONObject("verify_list");
+            // 失败原因
+            if (verify_list!=null){
+                String fail_reason = verify_list.getString("fail_reason");
+                operatorAuth.setRefuseReason(fail_reason);
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","2021004123692417",
+                "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDe188UHA8lR8CjG6KeKIYjYw6UfpJOl7nyklpiZKfbJ1q70D+LEdEZbWrzZ2eSwqeD+7B/ZV8Hyum9vrU6FPbgc6q/vy73ji0o1AhQP0GPPtcnNaAP9IppwchTSEjvODKMHSotB64LSBuFLgtAGSAJ6nHPXlEcyV5Y4Dev/E1JD3b9N2uTXilW5zZ2o1IxwXBIxuU0Tw7wHXUjcaXbpGuQUGIq54fzsbqP4TjSVoa8S41FhbtP9n61NulUtGFRfyHxpo/kj4cx3o6P4s+PBo/T2DlaMkpI6cRx0rfjL1ZkXrDJLYcCokUKxiJ/trrGjdYFUz6r2TGe1kAnjehkW+TTAgMBAAECggEAWMKtAN2MStUhrdY8F7Mcesvh6tPfgt58elpBFh/xnCE4ysZQCRy3pOEoUHtHjfVqs+90hcni6D+yipmDpfbjvtNTl7yXAJPo+PI7vXr0qhHlsQBzGOfWmflNyZ5pLp+7woN7YSRF9shp7cpBQO7BDDIN0wNGW6j5o3zrsXVVc1uu5ndD0kxV6XM3P43EY8mMdRXT9UmF0WTomLQ7JxhlY23fgYmS7USZUKkN9BkKAbwnxdskDnFT94infup4kbWoPr5DFeMESPdsE+tNbbUGCKzqYzgoTpf5jOKThyt1/HQWCuYLbui3GDJ704eEPypFDgl8Mh+y8UOBiuKfjB4xgQKBgQD+v0cO6rU7ce7R3y+4LgZoEGfEfjvWGH+BEowDk0UFIWxfPlwgTGl5/OZHO7Y55QQzNsxxl8jUIXxVicyhYoKI0+uOeJ7bKmi08hb6BAQ1eTRaukRtMBbCo/FvBbE14vt2dnpidvCPv/KC0sQG1J+vUxUzSt94URvxNVBcRbsXCQKBgQDf8F1QZ4pUYP9KSCmUWbzpotAr+m84Q7Oqf4zc70p8rU8nGQSnNrQQWddqwF/UEiNniDj+n0FVwiEMslRWSqPYixyqI3dHuVxhi/4wdoIewCHq3MkcqHksl9y67Bhl8HXMGmg79IxiCsqj7oEF8aGJjAyEZm3d2roz0QNPQCaX+wKBgQCazX+Px/7jpcN7k4W7BXTtLfLwy8juvCpXM/8TeR27FWl2oz12fxilgZIp/VYp7kpUGNu5t4PZrJOSo09PTr6GCUmeZRwbkLTaKDbgLSqlmAbBj2lfdJaQJvHjBnF+jnVCspKCXUaoA/uJlix6/iAfeXxrk/cidR9mv4Aa4mDjiQKBgG2+SKyfoT3KrzFC/gVymM7SeDwlJZ4oJ4M1sN2Q8yr4b+LUMuCTQVkF/jiVgCDYprsVGgFGIGmbkkC7n/MN7w+u1ORYLxtaLnird21ellPlinmjq3c85O1CmuyLyUUju0bD5jMDnExrx3Tg7B/yk1xp4rR70fm4OCoukvWilYdDAoGBAK3Y77tqbno+D6W95fb8xb4xUUd1tEWgSY6CgjaqTRzbJ38cGuo92gBjKhDGLwaztcCw4yKPhEOum7nBGKKyxFfs8Z4vsG+m19JSdBfHf3PLModZwnjrRpatAnjTUW0DbPz+sfAwMgLnTCpElcSRQwjmioVAucCyd2FlMmqP5xB4","json","GBK",
+                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB","RSA2");        AlipayMerchantIndirectAuthorderQuerystatusRequest request = new AlipayMerchantIndirectAuthorderQuerystatusRequest();
+        request.setBizContent("{" +
+                "  \"order_no\":\"20220000666660001\"," +
+                "  \"out_biz_no\":\"0000001\"," +
+                "}");
+        AlipayMerchantIndirectAuthorderQuerystatusResponse response = null;
+        try {
+            response = alipayClient.execute(request);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        if(response.isSuccess()){
+            System.out.println("调用成功");
+        } else {
+            System.out.println("调用失败");
+        }
+    }
+}
\ No newline at end of file
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
index bce667a..cfe4f46 100644
--- 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
@@ -5,33 +5,32 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.*;
+import com.alipay.api.request.AlipayMerchantIndirectAuthorderCreateRequest;
+import com.alipay.api.request.AlipayMerchantIndirectAuthorderQuerystatusRequest;
+import com.alipay.api.request.AntMerchantExpandIndirectImageUploadRequest;
+import com.alipay.api.response.AlipayMerchantIndirectAuthorderCreateResponse;
+import com.alipay.api.response.AlipayMerchantIndirectAuthorderQuerystatusResponse;
+import com.alipay.api.response.AntMerchantExpandIndirectImageUploadResponse;
 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.controller.util.MD5;
 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 io.swagger.models.auth.In;
-import org.apache.catalina.valves.RemoteIpValve;
+
 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;
 
@@ -54,6 +53,8 @@
     private IUserService userService;
     @Autowired
     private ICityService cityService;
+    @Autowired
+    private IOperatorAuthService operatorAuthService;
     /**
      * 跳转运营商管理首页
      */
@@ -134,31 +135,218 @@
      */
     @RequestMapping("/proportionAuth/{id}")
     public String proportionAuth(Model model,@PathVariable("id") Integer id) {
-        model.addAttribute("operatorId",id);
+        model.addAttribute("id",id);
+        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+        model.addAttribute("provinceList",list);
         return PREFIX + "OperatorUser_proportionAuth.html";
     }
+
     /**
      * 商户认证提交
      */
     @RequestMapping(value = "/auth")
     @ResponseBody
-    public Object auth(Integer alipayType,Integer wechatType,String alipayNum,String wechatNum,Integer operatorId ) {
-        TOperator id = operatorService.getOne(new QueryWrapper<TOperator>().eq("id", operatorId));
-        OperatorUser operatorUser = new OperatorUser();
-        operatorUser.setUserId(id.getUserId());
-        operatorUser.setAlipay("支付宝");
-        operatorUser.setWechat("微信");
-        operatorUser.setWechatType(wechatType);
-        operatorUser.setAlipayType(alipayType);
-        operatorUser.setAlipayNum(alipayNum);
-        operatorUser.setWechatNum(wechatNum);
-        operatorUser.setOperatorId(operatorId);
-        operatorUserService.save(operatorUser);
-        // 修改运营商状态为 已认证
-        id.setStatus(2);
-        operatorService.updateById(id);
+    public Object auth(String beneficiaryEnd,String businessEnd,String legalEnd, String name,String phone,String number,Integer operatorId,String bodyType,Integer type,String businessName,String businessNumber,
+                       String legalRepresentative,String registerAddress,String businessTerm,String businessPicture,
+                       String legalPerson,String legalNumber,String legalPhone,String legalEmail,String legalTerm,
+                       String legalAddress,String legalFront,String legalBack,Integer accountType,String bank,
+                       String accountName,String province,String provinceCode,String city,String cityCode,
+                       String bankName,String bankNumber,String isBeneficiary,String beneficiary,String beneficiaryPhone,
+                       String beneficiaryNumber,String beneficiaryAddress,String beneficiaryTerm,String beneficiaryFront,String beneficiaryBack,
+                       String remark) {
+        UUID uuid = UUID.randomUUID();
+        String numericUUID = uuid.toString().replaceAll("-", "");
+        OperatorAuth operatorAuth = new OperatorAuth();
+        operatorAuth.setName(name);
+        operatorAuth.setPhone(phone);
+        operatorAuth.setNumber(number);
+        operatorAuth.setBusinessEnd(businessEnd);
+        operatorAuth.setLegalEnd(legalEnd);
+        operatorAuth.setBeneficiaryEnd(beneficiaryEnd);
+        operatorAuth.setOperatorId(operatorId);
+        operatorAuth.setBodyType(bodyType);
+        operatorAuth.setType(type);
+        operatorAuth.setBusinessName(businessName);
+        operatorAuth.setBusinessNumber(businessNumber);
+        operatorAuth.setLegalRepresentative(legalRepresentative);
+        operatorAuth.setRegisterAddress(registerAddress);
+        operatorAuth.setBusinessTerm(businessTerm);
+        operatorAuth.setOutBizNo(numericUUID);
+        operatorAuth.setBusinessPicture(businessPicture);
+        operatorAuth.setLegalPerson(legalPerson);
+        operatorAuth.setLeagleNumber(legalNumber);
+        operatorAuth.setLegalPhone(legalPhone);
+        operatorAuth.setLegalEmail(legalEmail);
+        operatorAuth.setLegalTerm(legalTerm);
+        operatorAuth.setLegalAddress(legalAddress);
+        operatorAuth.setLegalFront(legalFront);
+        operatorAuth.setLegalBack(legalBack);
+        operatorAuth.setAccountType(accountType);
+        operatorAuth.setBank(bank);
+        operatorAuth.setAccountName(accountName);
+        operatorAuth.setProvince(province);
+        operatorAuth.setProvinceCode(provinceCode);
+        operatorAuth.setCity(city);
+        operatorAuth.setCityCode(cityCode);
+        operatorAuth.setBankName(bankName);
+        operatorAuth.setBankNumber(bankNumber);
+        operatorAuth.setAuditState(0);
+        operatorAuth.setIsBeneficiary(isBeneficiary);
+        operatorAuth.setBeneficiary(beneficiary);
+        operatorAuth.setBeneficiaryNumber(beneficiaryNumber);
+        operatorAuth.setBeneficiaryAddress(beneficiaryAddress);
+        operatorAuth.setBeneficiaryTerm(beneficiaryTerm);
+        operatorAuth.setBeneficiaryFront(beneficiaryFront);
+        operatorAuth.setBeneficiaryBack(beneficiaryBack);
+        operatorAuth.setRefuseReason("");
+        operatorAuth.setRemark(remark);
+
+
+        // 将图片上传至阿里存储
+        // 营业执照
+        String string = uploadImg(businessPicture).toString();
+        // 法人身份证正面照
+         legalFront = uploadImg(legalFront).toString();
+        // 法人身份证背面照
+         legalBack = uploadImg(legalBack).toString();
+
+        if (bodyType.equals("ENTERPRISE")){
+            // 受益人身份证正面照
+            beneficiaryFront=uploadImg(beneficiaryFront).toString();
+            // 受益人身份证背面照
+            beneficiaryBack=uploadImg(beneficiaryBack).toString();
+        }
+
+
+        //第二步:提交申请单
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","2021004123692417",
+                "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDe188UHA8lR8CjG6KeKIYjYw6UfpJOl7nyklpiZKfbJ1q70D+LEdEZbWrzZ2eSwqeD+7B/ZV8Hyum9vrU6FPbgc6q/vy73ji0o1AhQP0GPPtcnNaAP9IppwchTSEjvODKMHSotB64LSBuFLgtAGSAJ6nHPXlEcyV5Y4Dev/E1JD3b9N2uTXilW5zZ2o1IxwXBIxuU0Tw7wHXUjcaXbpGuQUGIq54fzsbqP4TjSVoa8S41FhbtP9n61NulUtGFRfyHxpo/kj4cx3o6P4s+PBo/T2DlaMkpI6cRx0rfjL1ZkXrDJLYcCokUKxiJ/trrGjdYFUz6r2TGe1kAnjehkW+TTAgMBAAECggEAWMKtAN2MStUhrdY8F7Mcesvh6tPfgt58elpBFh/xnCE4ysZQCRy3pOEoUHtHjfVqs+90hcni6D+yipmDpfbjvtNTl7yXAJPo+PI7vXr0qhHlsQBzGOfWmflNyZ5pLp+7woN7YSRF9shp7cpBQO7BDDIN0wNGW6j5o3zrsXVVc1uu5ndD0kxV6XM3P43EY8mMdRXT9UmF0WTomLQ7JxhlY23fgYmS7USZUKkN9BkKAbwnxdskDnFT94infup4kbWoPr5DFeMESPdsE+tNbbUGCKzqYzgoTpf5jOKThyt1/HQWCuYLbui3GDJ704eEPypFDgl8Mh+y8UOBiuKfjB4xgQKBgQD+v0cO6rU7ce7R3y+4LgZoEGfEfjvWGH+BEowDk0UFIWxfPlwgTGl5/OZHO7Y55QQzNsxxl8jUIXxVicyhYoKI0+uOeJ7bKmi08hb6BAQ1eTRaukRtMBbCo/FvBbE14vt2dnpidvCPv/KC0sQG1J+vUxUzSt94URvxNVBcRbsXCQKBgQDf8F1QZ4pUYP9KSCmUWbzpotAr+m84Q7Oqf4zc70p8rU8nGQSnNrQQWddqwF/UEiNniDj+n0FVwiEMslRWSqPYixyqI3dHuVxhi/4wdoIewCHq3MkcqHksl9y67Bhl8HXMGmg79IxiCsqj7oEF8aGJjAyEZm3d2roz0QNPQCaX+wKBgQCazX+Px/7jpcN7k4W7BXTtLfLwy8juvCpXM/8TeR27FWl2oz12fxilgZIp/VYp7kpUGNu5t4PZrJOSo09PTr6GCUmeZRwbkLTaKDbgLSqlmAbBj2lfdJaQJvHjBnF+jnVCspKCXUaoA/uJlix6/iAfeXxrk/cidR9mv4Aa4mDjiQKBgG2+SKyfoT3KrzFC/gVymM7SeDwlJZ4oJ4M1sN2Q8yr4b+LUMuCTQVkF/jiVgCDYprsVGgFGIGmbkkC7n/MN7w+u1ORYLxtaLnird21ellPlinmjq3c85O1CmuyLyUUju0bD5jMDnExrx3Tg7B/yk1xp4rR70fm4OCoukvWilYdDAoGBAK3Y77tqbno+D6W95fb8xb4xUUd1tEWgSY6CgjaqTRzbJ38cGuo92gBjKhDGLwaztcCw4yKPhEOum7nBGKKyxFfs8Z4vsG+m19JSdBfHf3PLModZwnjrRpatAnjTUW0DbPz+sfAwMgLnTCpElcSRQwjmioVAucCyd2FlMmqP5xB4","json","GBK",
+                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB","RSA2");
+        AlipayMerchantIndirectAuthorderCreateRequest request = new AlipayMerchantIndirectAuthorderCreateRequest();
+        String param = "{" +
+                "  \"out_biz_no\":\""+uuid+"\"," +
+                "  \"contact_person_info\":{" +
+                "    \"contact_name\":\""+name+"\"," +
+                "    \"contact_phone_no\":\""+phone+"\"," +
+                "    \"contact_card_no\":\""+number+"\"," +
+                "    \"contact_cert_type\":\"RESIDENT\"" +
+                "  }," +
+                "  \"auth_identity_info\":{" +
+                "    \"identity_type\":\""+bodyType+"\"," +
+                "    \"is_financial_org\":false," +
+                "    \"certificate_type\":\"BUSINESS_CERT\"," +
+                "    \"certificate_info\":{" +
+                "      \"cert_no\":\""+businessNumber+"\"," +
+                "      \"cert_image\":\""+string+"\"," +
+                "      \"merchant_name\":\""+businessName+"\"," +
+                "      \"legal_person_name\":\""+legalRepresentative+"\"," +
+                "      \"register_address\":\""+registerAddress+"\"," +
+                "      \"effect_time\":\""+businessTerm+"\"," +
+                "      \"expire_time\":\""+businessEnd+"\"" +
+                "    }," +
+                "    }," +
+                "  \"legal_person_info\":{" +
+                "    \"card_type\":\"RESIDENT\"," +
+                "    \"person_name\":\""+legalRepresentative+"\"," +
+                "    \"card_no\":\""+legalNumber+"\"," +
+                "    \"effect_time\":\""+legalTerm+"\"," +
+                "    \"expire_time\":\""+legalEnd+"\"," +
+                "    \"card_front_img\":\""+legalFront+"\"," +
+                "    \"card_back_img\":\""+legalBack+"\"," +
+                "    \"is_benefit_person\":"+isBeneficiary+"" +
+                "  },";
+        String bene = "  \"benefit_person_info\":{" +
+                "    \"person_name\":\""+beneficiary+"\"," +
+                "    \"card_no\":\""+beneficiaryNumber+"\"," +
+                "    \"card_type\":\"RESIDENT\"," +
+                "    \"effect_time\":\""+beneficiaryTerm+"\"," +
+                "    \"expire_time\":\""+beneficiaryEnd+"\"," +
+                "    \"card_front_img\":\""+beneficiaryFront+"\"," +
+                "    \"card_back_img\":\""+beneficiaryBack+"\"" +
+                "  },";
+        if (bodyType.equals("ENTERPRISE")){
+            request.setBizContent(param
+                    + bene+
+                    "}");
+        }else{
+            request.setBizContent(param
+                    +
+                    "}");
+        }
+
+        AlipayMerchantIndirectAuthorderCreateResponse response = null;
+        try {
+            response = alipayClient.execute(request);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        if(response.isSuccess()){
+            System.out.println("上传认证单");
+            JSONObject json = JSONObject.parseObject(response.getBody());
+            JSONObject json1 = json.getJSONObject("alipay_merchant_indirect_authorder_create_response");
+            String order_no = json1.getString("order_no");
+            String order_status = json1.getString("order_status");
+//            // 申请单号
+//            String orderNo = r.getString("order_no");
+            /**
+             * 状态 审核中(AUDITING)、待联系人确认(CONTACT_CONFIRM),
+             * 待法人确认(LEGAL_CONFIRM)、审核通过(AUDIT_PASS)、
+             * 审核失败(AUDIT_REJECT)、已冻结(AUDIT_FREEZE)、
+             * 已撤回(CANCELED)、联系人处理中(CONTACT_PROCESSING)
+             */
+//            String orderStatus = r.getString("order_status");
+            operatorAuth.setOrderNo(order_no);
+            operatorAuth.setOrderStatus(order_status);
+            operatorAuthService.save(operatorAuth);
+        } else {
+            System.out.println("调用失败");
+        }
         return SUCCESS_TIP;
     }
+    public static Object uploadImg(String img){
+        String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCSsmylIHe0j0pRQrB9p5ljryk9Qg2Z/JgIh+gtZES1TDo35YVw24aRRt7pkY7oHIZqpMRmSsWND1t63LVuNlpq532LG0iEJVJS53GzpRoHDD3iD01GmUoNjkCL36NCrbY0hTDDw7GZnYuJ8194Sss7OEoi7Mghg/XUreX4awwpWngTepCF7zs0S4YJQWyGY4JI6ooGraW23siBVY5MUI9XXLL6UKIExUfKe7zRihs8SrTHNnXtDT6EKYYo8P6M90Xuk173QsK2Xguk1FQ5Blh2ts7UvZVjP+WoQwDvrnqruve5kzDD9gwnAYUvhY66mtlxeub9nf5LLTtCliXeUZpNAgMBAAECggEAaPShSM9e9d9jM5p8PZqw4yJKZhqhMqAHgmsCUZ+gjPn52U4s198oez5ydDgBP85Q2XIDVpB+oPrw34mTgUQAEuaG6wTdMDannMscjYQ9h/dZOyjph+5ajjJNugWKgEVazF7S0e1sXtTaJhvrHVyd5UPTvwMb+Oa59q1okQC91cNa2vJzXiC7dfqWXZW/otmmOpcIcCN8dVDG3YhAuc5ZiT78Ca8x9GHWfw7cw1FRewRZlp/YnD2fJeWEesfvGCV36zCksrJrZz5MFMdf1Qh6+tHxK+E5sPNGdbooviTRnNWrsgyS9NcXFSQItOZQHsbLVID/Bs0kxkYPzbsfX1vRXQKBgQDsBDNZxpmSZJZ/4HfCOfHytWAkH/GHE3GOYH4TdHKLXfxRCinU23OtdrU2Sy8tBZvaajDKkWvMkjWT2w+56+z+xTprTf2PL/LS9zWCc8LPKbif6NfnwaOE8pIBrvkBskGKwbIE2fFVT0B4hNsR80TbPxvvAfCKjUj67qrTXSal+wKBgQCfHiuq/gLuSD2fuplzCwu0Rm/wr56bUpxhq9WNGaPOybR6EPq/wTKp0ow+f9uSuTm2NZhi/TWTXHOizy9vcZChRpj03a7NYwUOw36zvW7SHuF0Uhsp8TrZTyCj1XdhdLyJ9JMyL2DTRpGtLUR01ZSrdXPax7/Xu+OHubijqRD2VwKBgFqCveKm7AwdMS43OhYtPKE0d3tDGNARX9IXJSJ23Nqfn3zApgwwYKtcQ+BfcucUKJHZeX6lyC56v7tFHkHRvWBy6JVwIlZAMCJBla7CkCn8OQZyOCJzuy7oC6BDptDEuKfq4kdEAW4S54mQgabfoT9nc2H0X3fy+NLqpm5KYeDzAoGAYerlIILUNuKJ2aOxDpS7jSLTfB/20MqTpZ9i+UPQBE8oGv4b8Kjpjowc9dEkxDPsCe8Nac08jQSVvJkXLdOLF1QkiHtrOMU4tY8kh2OJsRCD2Vs1kCf8+QGyql+Q6Y43AAZcFsQFJ78Dorh6qhNNO/45X2cQ7aeYK0vlDgHaiF0CgYA4k9Q1tc8sU67TgT9cmMM6hG7/Rf3cU3PIdYuojs1EIG+1BJ7TlEiNAHoPtphlGFFeDP3SVnf59RfYH+BbLiz1JX9p/KFKRRkoXtfd6bySVWHvj4x2WiVpKFvHxhxc3LRubx0ryLGR/tpUJzxp+9luanU/WgSRFKiEZJZqFjjDzw==";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004123692417");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF8");
+        alipayConfig.setSignType("RSA2");
+        AlipayClient alipayClient = null;
+        try {
+            alipayClient = new DefaultAlipayClient(alipayConfig);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        // 这是一个1x1像素的图片流
+        String imageBase64 = "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAEUlEQVR42mP4TyRgGFVIX4UAI/uOgGWVNeQAAAAASUVORK5CYII=";
+        // 下列FileItem中也可用直接读取本地文件的方式来获取文件
+        // FileItem imageContent = new FileItem("本地文件的绝对路径");
+        AntMerchantExpandIndirectImageUploadRequest request = new AntMerchantExpandIndirectImageUploadRequest();
+        FileItem imageContent = new FileItem(img, Base64.getDecoder().decode(imageBase64));
+        request.setImageContent(imageContent);
+        request.setImageType("jpg");
+        AntMerchantExpandIndirectImageUploadResponse response = null;
+        try {
+            response = alipayClient.execute(request);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        System.out.println(response.getBody());
+        if (response.isSuccess()) {
+            System.out.println("调用成功");
+        } else {
+            System.out.println("调用失败");
+        }
+        JSONObject json = JSONObject.parseObject(response.getBody());
+        String sign = json.getString("ant_merchant_expand_indirect_image_upload_response");
+        JSONObject r = JSONObject.parseObject(sign);
+        String image_id = r.getString("image_id");
+        return image_id;
+    }
+
     /**
      * 分账比例提交
      */
@@ -236,6 +424,7 @@
         user.setAccount(phone);
         user.setRoleid("2");
         user.setObjectType(2);
+        user.setStatus(1);
         userService.save(user);
         TOperator data = new TOperator();
         data.setUserId(user.getId());
@@ -287,6 +476,7 @@
                 }
             }
         }
+
         return ResultUtil.success("添加成功");
     }
     /**
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java
index 31b9bf4..58c709a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java
@@ -15,6 +15,7 @@
 import com.dsh.course.feignClient.other.StoreClient;
 import com.dsh.course.feignClient.other.model.SiteChangeStateVO;
 import com.dsh.guns.config.UserExt;
+import com.dsh.guns.modular.system.controller.util.MD5;
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.service.ICityService;
 import com.dsh.guns.modular.system.service.IRoleService;
@@ -206,6 +207,7 @@
     @ResponseBody
     public Object addAppUser(@RequestBody TAppUser appUser){
         Integer objectType = UserExt.getUser().getObjectType();
+        appUser.setPassword(MD5.md5("111111"));
         appUser.setInsertType(objectType);
         appUser.setAddUserId(UserExt.getUser().getObjectId());
         Object o = appUserClient.addAppUser1(appUser);
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 f9920dd..b6fd68a 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
@@ -152,6 +152,7 @@
         Integer objectType = UserExt.getUser().getObjectType();
         System.out.println(objectType);
         model.addAttribute("item",coupon);
+        model.addAttribute("objectType",objectType);
         return PREFIX + "TCouponInfo.html";
     }
 
@@ -174,8 +175,10 @@
     @RequestMapping("/storeDetailsOfSearch")
     @ResponseBody
     public Object listOfStore(String provinceId,String cityId,Integer operatorId,String storeName){
-
-
+        if (UserExt.getUser().getObjectType()== 2){
+            // 筛选这个运营商下的门店
+            operatorId = UserExt.getUser().getObjectId();
+        }
         Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
         List<Map<String,Object>> storeList = storeService.queryListOfpage(provinceId,cityId,operatorId,storeName,page);
         if (storeList.size() > 0 ){
@@ -216,6 +219,9 @@
         ofSearch.setUserPopulation(userPopulation);
         ofSearch.setStatus(status);
         ofSearch.setState(state);
+        if (UserExt.getUser().getObjectType()==2) {
+            ofSearch.setOperatorId(UserExt.getUser().getObjectId());
+        }
         if (UserExt.getUser().getObjectType()==3) {
             ofSearch.setStoreId(UserExt.getUser().getObjectId());
             ofSearch.setObjType(UserExt.getUser().getObjectType());
@@ -345,6 +351,12 @@
         System.out.println(dataVo);
         Integer objectType = UserExt.getUser().getObjectType();
         dataVo.setUserType(objectType);
+        dataVo.setCityManagerId(UserExt.getUser().getObjectId());
+        if(UserExt.getUser().getObjectType()==3){
+            dataVo.setStoreIds(UserExt.getUser().getObjectId().toString());
+            dataVo.setCompany(3);
+        }
+        dataVo.setObjType(UserExt.getUser().getObjectType());
         if(UserExt.getUser().getObjectType()==3){
             dataVo.setStoreIds(UserExt.getUser().getObjectId().toString());
             dataVo.setCompany(3);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java
index 9832c4f..5c09f57 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java
@@ -221,6 +221,9 @@
         if(UserExt.getUser().getObjectType()==3){
             wrapper.eq(TStore::getId, UserExt.getUser().getObjectId());
         }
+        if(UserExt.getUser().getObjectType()==2){
+            wrapper.eq(TStore::getOperatorId, UserExt.getUser().getObjectId());
+        }
         List<TStore> list = storeService.list(wrapper);
         Page<DiscountList> page = new PageFactory<DiscountList>().defaultPage();
         List<DiscountList> discountLists = courseClient.queryDiscountList(new QueryDiscountList(page.getCurrent(),page.getSize(),provinceCode,cityCode,name,type,list.stream().map(TStore::getId).collect(Collectors.toList())));
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 97b1408..32a4d46 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
@@ -148,6 +148,12 @@
         query.setProvince(province);
         query.setCity(city);
         query.setStoreId(storeId);
+        if(UserExt.getUser().getObjectType()==2){
+            List<Integer> operatorId = storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId", UserExt.getUser().getObjectId())).stream()
+                    .map(TStore::getId).collect(Collectors.toList());
+            query.setStoresIds(operatorId);
+        }
         if(UserExt.getUser().getObjectType()==3){
             query.setStoreId(UserExt.getUser().getObjectId());
         }
@@ -236,6 +242,7 @@
     @RequestMapping(value = "/incomeListAll")
     @ResponseBody
     public List<IncomeVO> incomeListAll(String time,Integer incomeType,String userName,String amount) {
+
         // 充值记录查询query
         RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery();
         // 报名课程查询query
@@ -273,6 +280,15 @@
             competitionQuery.setAmount(new BigDecimal(amount));
             incomeQuery.setAmount(new BigDecimal(amount));
         }
+        if (UserExt.getUser().getObjectType()==2){
+            // 拿到门店集合id
+            List<Integer> operatorId = storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId", UserExt.getUser().getObjectId())).stream()
+                    .map(TStore::getId).collect(Collectors.toList());
+            query.setStoresIds(operatorId);
+            competitionQuery.setOperatorId(UserExt.getUser().getObjectId());
+            siteBookingQuery.setStoreIds(operatorId);
+        }
 
         siteBookingQuery.setTime(time);
         query.setRegisterTime(time);
@@ -283,24 +299,34 @@
         IncomeVO incomeVO = new IncomeVO();
         List<IncomeVO> incomeVOS = new ArrayList<>();
 
-        if (roleType == 1){
             if ( incomeType==null || incomeType == 1){
             // 会员支付记录
             List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery);
                 for (VipPayment vipPayment : vipPayments) {
-
+                    if (UserExt.getUser().getObjectType()!=1){
+                        break;
+                    }
                     TAppUser tAppUser = appUserClient.queryById(vipPayment.getAppUserId());
                     IncomeVO temp = new IncomeVO();
                     temp.setId(vipPayment.getId());
-                    temp.setProvince(tAppUser.getProvince());
-                    temp.setCity(tAppUser.getCity());
+                    if (tAppUser!=null){
+                        if (tAppUser.getProvince()!=null){
+                            temp.setProvince(tAppUser.getProvince());
+                        }
+                        if (tAppUser.getCity()!=null){
+                            temp.setCity(tAppUser.getCity());
+                        }
+                        temp.setPayUser(tAppUser.getName());
+                        temp.setPhone(tAppUser.getPhone());
+                    }
                     temp.setStoreName("");
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
                     temp.setAmount(new BigDecimal(vipPayment.getAmount().toString()));
                     temp.setIncomeType(1);
                     temp.setState(vipPayment.getState());
                     temp.setInsertTime(vipPayment.getInsertTime());
+                    if (UserExt.getUser().getObjectType()!=1){
+                        break;
+                    }
                     incomeVOS.add(temp);
                 }
             }
@@ -308,20 +334,30 @@
                 // 充值记录
                 List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery);
                 for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) {
+                    if (UserExt.getUser().getObjectType()!=1){
+                        break;
+                    }
                     TAppUser tAppUser = appUserClient.queryById(rechargeRecordsVO.getAppUserId());
                     IncomeVO temp = new IncomeVO();
                     temp.setId(rechargeRecordsVO.getId().intValue());
-                    temp.setProvince(tAppUser.getProvince());
-                    temp.setCity(tAppUser.getCity());
+                    if (tAppUser!=null){
+                        if (tAppUser.getProvince()!=null){
+                            temp.setProvince(tAppUser.getProvince());
+                        }
+                        if (tAppUser.getCity()!=null){
+                            temp.setCity(tAppUser.getCity());
+                        }
+                        temp.setPayUser(tAppUser.getName());
+                        temp.setPhone(tAppUser.getPhone());
+                    }
                     temp.setStoreName("");
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
                     temp.setInsertTime(rechargeRecordsVO.getInsertTime());
                     if (rechargeRecordsVO.getAmount() != null) {
                         temp.setAmount(rechargeRecordsVO.getAmount());
                     }
                     temp.setIncomeType(2);
                     temp.setState(rechargeRecordsVO.getPayStatus());
+
                     incomeVOS.add(temp);
                 }
             }
@@ -335,11 +371,19 @@
                     TAppUser tAppUser = appUserClient.queryById(registerOrderVO.getAppUserId());
                     IncomeVO temp = new IncomeVO();
                     temp.setId(registerOrderVO.getId().intValue());
-                    temp.setProvince(tAppUser.getProvince());
-                    temp.setCity(tAppUser.getCity());
+                    if (tAppUser!=null){
+                        if (tAppUser.getProvince()!=null){
+                            temp.setProvince(tAppUser.getProvince());
+                        }
+                        if (tAppUser.getCity()!=null){
+                            temp.setCity(tAppUser.getCity());
+                        }
+                        temp.setPayUser(tAppUser.getName());
+                        temp.setPhone(tAppUser.getPhone());
+                    }
+
                     temp.setStoreName(registerOrderVO.getStoreName());
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
+
                     temp.setInsertTime(registerOrderVO.getInsertTime());
                     if (registerOrderVO.getMoney() != null) {
                         temp.setAmount(registerOrderVO.getMoney());
@@ -357,21 +401,37 @@
                         if (competition.getPayStatus() == 3) {
                             continue;
                         }
+                        IncomeVO temp = new IncomeVO();
                         TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId());
                         Competition competition1 = competitionClient.queryById(competition.getCompetitionId());
                         if (!competition1.getStoreId().equals("")){
                             String[] split = competition1.getStoreId().split(",");
-                        }
-                        Store store = storeClient.getStoreById(Integer.valueOf(competition1.getStoreId()));
-                        IncomeVO temp = new IncomeVO();
-                        temp.setId(competition.getId().intValue());
-                        temp.setProvince(tAppUser.getProvince());
-                        temp.setCity(tAppUser.getCity());
-                        temp.setStoreName(store.getName());
-                        temp.setPayUser(tAppUser.getName());
-                        temp.setPhone(tAppUser.getPhone());
-                        temp.setInsertTime(competition.getInsertTime());
+                            List<Integer> list = new ArrayList<>();
+                            for (String s : split) {
+                                list.add(Integer.valueOf(s));
+                            }
+                            List<TStore> id = storeService.list(new QueryWrapper<TStore>().in("id", list));
+                            StringBuilder storeNames = new StringBuilder("");
+                            for (TStore store : id) {
+                                // 赛事举办门店 (可能会有多个门店举办 需要拼接门店名称)
+                                storeNames.append(store.getName() + ",");
+                            }
+                            String substring = storeNames.toString().substring(0, storeNames.toString().length() - 1);
 
+                            temp.setStoreName(substring);
+                        }
+                        temp.setId(competition.getId().intValue());
+                        if (tAppUser!=null){
+                            if (tAppUser.getProvince()!=null){
+                                temp.setProvince(tAppUser.getProvince());
+                            }
+                            if (tAppUser.getCity()!=null){
+                                temp.setCity(tAppUser.getCity());
+                            }
+                            temp.setPayUser(tAppUser.getName());
+                            temp.setPhone(tAppUser.getPhone());
+                        }
+                        temp.setInsertTime(competition.getInsertTime());
                         if (competition.getAmount() != null) {
                             temp.setAmount(new BigDecimal(competition.getAmount().toString()));
                         }
@@ -391,15 +451,24 @@
                     } else {
                         temp.setState(2);
                     }
-                    TAppUser tAppUser = appUserClient.queryById(siteBooking.getAppUserId());
+                    TAppUser tAppUser = appUserClient.queryAppUser1(siteBooking.getAppUserId());
                     Store store = storeClient.getStoreById(siteBooking.getStoreId());
 
                     temp.setId(siteBooking.getId());
                     temp.setProvince(siteBooking.getProvince());
                     temp.setCity(siteBooking.getCity());
                     temp.setStoreName(store.getName());
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
+                    if (tAppUser!=null){
+                        if (tAppUser.getProvince()!=null){
+                            temp.setProvince(tAppUser.getProvince());
+                        }
+                        if (tAppUser.getCity()!=null){
+                            temp.setCity(tAppUser.getCity());
+                        }
+                        temp.setPayUser(tAppUser.getName());
+                        temp.setPhone(tAppUser.getPhone());
+                    }
+
                     temp.setInsertTime(siteBooking.getInsertTime());
                     if (siteBooking.getPayMoney() != null) {
                         temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString()));
@@ -408,7 +477,6 @@
                     incomeVOS.add(temp);
                 }
             }
-        }
         return incomeVOS;
     }
 
@@ -455,6 +523,15 @@
             competitionQuery.setAmount(new BigDecimal(amount));
             incomeQuery.setAmount(new BigDecimal(amount));
         }
+        if (UserExt.getUser().getObjectType()==2){
+            // 拿到门店集合id
+            List<Integer> operatorId = storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId", UserExt.getUser().getObjectId())).stream()
+                    .map(TStore::getId).collect(Collectors.toList());
+            query.setStoresIds(operatorId);
+            competitionQuery.setOperatorId(UserExt.getUser().getObjectId());
+            siteBookingQuery.setStoreIds(operatorId);
+        }
 
         siteBookingQuery.setTime(time);
         query.setRegisterTime(time);
@@ -465,134 +542,205 @@
         IncomeVO incomeVO = new IncomeVO();
         List<IncomeVO> incomeVOS = new ArrayList<>();
 
-        if (roleType == 1){
-            if ( incomeType==null || incomeType == 1){
-                // 会员支付记录
-                List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery);
-                for (VipPayment vipPayment : vipPayments) {
-
-                    TAppUser tAppUser = appUserClient.queryById(vipPayment.getAppUserId());
-                    IncomeVO temp = new IncomeVO();
-                    temp.setId(vipPayment.getId());
-                    temp.setProvince(tAppUser.getProvince());
-                    temp.setCity(tAppUser.getCity());
-                    temp.setStoreName("");
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
-                    temp.setAmount(new BigDecimal(vipPayment.getAmount().toString()));
-                    temp.setIncomeType(1);
-                    temp.setState(vipPayment.getState());
-                    temp.setInsertTime(vipPayment.getInsertTime());
-                    incomeVOS.add(temp);
+        if ( incomeType==null || incomeType == 1){
+            // 会员支付记录
+            List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery);
+            for (VipPayment vipPayment : vipPayments) {
+                if (UserExt.getUser().getObjectType()!=1){
+                    break;
                 }
-            }
-            if ( incomeType==null || incomeType == 2) {
-                // 充值记录
-                List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery);
-                for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) {
-                    TAppUser tAppUser = appUserClient.queryById(rechargeRecordsVO.getAppUserId());
-                    IncomeVO temp = new IncomeVO();
-                    temp.setId(rechargeRecordsVO.getId().intValue());
-                    temp.setProvince(tAppUser.getProvince());
-                    temp.setCity(tAppUser.getCity());
-                    temp.setStoreName("");
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
-                    temp.setInsertTime(rechargeRecordsVO.getInsertTime());
-                    if (rechargeRecordsVO.getAmount() != null) {
-                        temp.setAmount(rechargeRecordsVO.getAmount());
+                TAppUser tAppUser = appUserClient.queryById(vipPayment.getAppUserId());
+                IncomeVO temp = new IncomeVO();
+                temp.setId(vipPayment.getId());
+                if (tAppUser!=null){
+                    if (tAppUser.getProvince()!=null){
+                        temp.setProvince(tAppUser.getProvince());
                     }
-                    temp.setIncomeType(2);
-                    temp.setState(rechargeRecordsVO.getState());
-                    incomeVOS.add(temp);
+                    if (tAppUser.getCity()!=null){
+                        temp.setCity(tAppUser.getCity());
+                    }
+                    temp.setPayUser(tAppUser.getName());
+                    temp.setPhone(tAppUser.getPhone());
                 }
+                temp.setStoreName("");
+                temp.setAmount(new BigDecimal(vipPayment.getAmount().toString()));
+                temp.setIncomeType(1);
+                temp.setState(vipPayment.getState());
+                temp.setInsertTime(vipPayment.getInsertTime());
+                if (UserExt.getUser().getObjectType()!=1){
+                    break;
+                }
+                incomeVOS.add(temp);
             }
-            if ( incomeType==null || incomeType == 3) {
-                // 报名课程记录
-                List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query);
-                for (RegisterOrderVO registerOrderVO : registerOrderVOS) {
-                    if (registerOrderVO.getMoney() == null) {
+        }
+        if ( incomeType==null || incomeType == 2) {
+            // 充值记录
+            List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery);
+            for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) {
+                if (UserExt.getUser().getObjectType()!=1){
+                    break;
+                }
+                TAppUser tAppUser = appUserClient.queryById(rechargeRecordsVO.getAppUserId());
+                IncomeVO temp = new IncomeVO();
+                temp.setId(rechargeRecordsVO.getId().intValue());
+                if (tAppUser!=null){
+                    if (tAppUser.getProvince()!=null){
+                        temp.setProvince(tAppUser.getProvince());
+                    }
+                    if (tAppUser.getCity()!=null){
+                        temp.setCity(tAppUser.getCity());
+                    }
+                    temp.setPayUser(tAppUser.getName());
+                    temp.setPhone(tAppUser.getPhone());
+                }
+                temp.setStoreName("");
+                temp.setInsertTime(rechargeRecordsVO.getInsertTime());
+                if (rechargeRecordsVO.getAmount() != null) {
+                    temp.setAmount(rechargeRecordsVO.getAmount());
+                }
+                temp.setIncomeType(2);
+                temp.setState(rechargeRecordsVO.getPayStatus());
+
+                incomeVOS.add(temp);
+            }
+        }
+        if ( incomeType==null || incomeType == 3) {
+            // 报名课程记录
+            List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query);
+            for (RegisterOrderVO registerOrderVO : registerOrderVOS) {
+                if (registerOrderVO.getMoney() == null) {
+                    continue;
+                }
+                TAppUser tAppUser = appUserClient.queryById(registerOrderVO.getAppUserId());
+                IncomeVO temp = new IncomeVO();
+                temp.setId(registerOrderVO.getId().intValue());
+                if (registerOrderVO.getPayStatus()==2) {
+                    temp.setState(2);
+                } else {
+                    temp.setState(1);
+                }
+                if (tAppUser!=null){
+                    if (tAppUser.getProvince()!=null){
+                        temp.setProvince(tAppUser.getProvince());
+                    }
+                    if (tAppUser.getCity()!=null){
+                        temp.setCity(tAppUser.getCity());
+                    }
+                    temp.setPayUser(tAppUser.getName());
+                    temp.setPhone(tAppUser.getPhone());
+                }
+
+                temp.setStoreName(registerOrderVO.getStoreName());
+
+                temp.setInsertTime(registerOrderVO.getInsertTime());
+                if (registerOrderVO.getMoney() != null) {
+                    temp.setAmount(registerOrderVO.getMoney());
+                }
+                temp.setIncomeType(3);
+                temp.setState(registerOrderVO.getPayStatus());
+                incomeVOS.add(temp);
+            }
+        }
+        if(roleType !=3) {
+            if (incomeType == null || incomeType == 4) {
+                // 报名活动
+                List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery);
+                for (PaymentCompetition competition : competitions) {
+                    if (competition.getPayStatus() == 3) {
                         continue;
                     }
-                    TAppUser tAppUser = appUserClient.queryById(registerOrderVO.getAppUserId());
                     IncomeVO temp = new IncomeVO();
-                    temp.setId(registerOrderVO.getId().intValue());
-                    temp.setProvince(tAppUser.getProvince());
-                    temp.setCity(tAppUser.getCity());
-                    temp.setStoreName(registerOrderVO.getStoreName());
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
-                    temp.setInsertTime(registerOrderVO.getInsertTime());
-                    if (registerOrderVO.getMoney() != null) {
-                        temp.setAmount(registerOrderVO.getMoney());
-                    }
-                    temp.setIncomeType(3);
-                    temp.setState(registerOrderVO.getPayStatus());
-                    incomeVOS.add(temp);
-                }
-            }
-            if(roleType !=3) {
-                if (incomeType == null || incomeType == 4) {
-                    // 报名活动
-                    List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery);
-                    for (PaymentCompetition competition : competitions) {
-                        if (competition.getPayStatus() == 3) {
-                            continue;
+                    TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId());
+                    Competition competition1 = competitionClient.queryById(competition.getCompetitionId());
+                    if (!competition1.getStoreId().equals("")){
+                        String[] split = competition1.getStoreId().split(",");
+                        List<Integer> list = new ArrayList<>();
+                        for (String s : split) {
+                            list.add(Integer.valueOf(s));
                         }
-                        TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId());
-                        Competition competition1 = competitionClient.queryById(competition.getCompetitionId());
-                        Store store = storeClient.getStoreById(Integer.valueOf(competition1.getStoreId().split(",")[0]));
-                        IncomeVO temp = new IncomeVO();
-                        temp.setId(competition.getId().intValue());
-                        temp.setProvince(tAppUser.getProvince());
-                        temp.setCity(tAppUser.getCity());
-                        temp.setStoreName(store.getName());
+                        List<TStore> id = storeService.list(new QueryWrapper<TStore>().in("id", list));
+                        StringBuilder storeNames = new StringBuilder("");
+                        for (TStore store : id) {
+                            // 赛事举办门店 (可能会有多个门店举办 需要拼接门店名称)
+                            storeNames.append(store.getName() + ",");
+                        }
+                        String substring = storeNames.toString().substring(0, storeNames.toString().length() - 1);
+
+                        temp.setStoreName(substring);
+                    }
+                    if (competition.getPayStatus()==2) {
+                        temp.setState(2);
+                    } else {
+                        temp.setState(1);
+                    }
+                    temp.setId(competition.getId().intValue());
+                    if (tAppUser!=null){
+                        if (tAppUser.getProvince()!=null){
+                            temp.setProvince(tAppUser.getProvince());
+                        }
+                        if (tAppUser.getCity()!=null){
+                            temp.setCity(tAppUser.getCity());
+                        }
                         temp.setPayUser(tAppUser.getName());
                         temp.setPhone(tAppUser.getPhone());
-                        temp.setInsertTime(competition.getInsertTime());
-
-                        if (competition.getAmount() != null) {
-                            temp.setAmount(new BigDecimal(competition.getAmount().toString()));
-                        }
-                        temp.setIncomeType(4);
-                        temp.setState(competition.getPayStatus());
-                        incomeVOS.add(temp);
                     }
-                }
-            }
-            if (incomeType == null || incomeType == 5) {
-                // 预约场地
-                List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery);
-                for (SiteBooking siteBooking : siteBookings) {
-                    IncomeVO temp = new IncomeVO();
-                    if (siteBooking.getStatus() == 0 || siteBooking.getStatus() == 5 || siteBooking.getStatus() == 4) {
-                        temp.setState(1);
-                    } else {
-                        temp.setState(2);
+                    temp.setInsertTime(competition.getInsertTime());
+                    if (competition.getAmount() != null) {
+                        temp.setAmount(new BigDecimal(competition.getAmount().toString()));
                     }
-                    TAppUser tAppUser = appUserClient.queryById(siteBooking.getAppUserId());
-                    Store store = storeClient.getStoreById(siteBooking.getStoreId());
-
-                    temp.setId(siteBooking.getId());
-                    temp.setProvince(siteBooking.getProvince());
-                    temp.setCity(siteBooking.getCity());
-                    temp.setStoreName(store.getName());
-                    temp.setPayUser(tAppUser.getName());
-                    temp.setPhone(tAppUser.getPhone());
-                    temp.setInsertTime(siteBooking.getInsertTime());
-                    if (siteBooking.getPayMoney() != null) {
-                        temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString()));
-                    }
-                    temp.setIncomeType(5);
+                    temp.setIncomeType(4);
+                    temp.setState(competition.getPayStatus());
                     incomeVOS.add(temp);
                 }
             }
         }
+        if (incomeType == null || incomeType == 5) {
+            // 预约场地
+            List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery);
+            for (SiteBooking siteBooking : siteBookings) {
+                IncomeVO temp = new IncomeVO();
+                if (siteBooking.getStatus() == 0 || siteBooking.getStatus() == 5 || siteBooking.getStatus() == 4) {
+                    temp.setState(1);
+                } else {
+                    temp.setState(2);
+                }
+                TAppUser tAppUser = appUserClient.queryAppUser1(siteBooking.getAppUserId());
+                Store store = storeClient.getStoreById(siteBooking.getStoreId());
+
+                temp.setId(siteBooking.getId());
+                temp.setProvince(siteBooking.getProvince());
+                temp.setCity(siteBooking.getCity());
+                temp.setStoreName(store.getName());
+                if (tAppUser!=null){
+                    if (tAppUser.getProvince()!=null){
+                        temp.setProvince(tAppUser.getProvince());
+                    }
+                    if (tAppUser.getCity()!=null){
+                        temp.setCity(tAppUser.getCity());
+                    }
+                    temp.setPayUser(tAppUser.getName());
+                    temp.setPhone(tAppUser.getPhone());
+                }
+
+                temp.setInsertTime(siteBooking.getInsertTime());
+                if (siteBooking.getPayMoney() != null) {
+                    temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString()));
+                }
+                temp.setIncomeType(5);
+                incomeVOS.add(temp);
+            }
+        }
+
         BigDecimal totalAmount = BigDecimal.ZERO; // 初始化累加变量为0
 
         for (IncomeVO vo : incomeVOS) {
-            BigDecimal totalMoney = vo.getAmount();
-            totalAmount = totalAmount.add(totalMoney); // 累加每个IncomeVO对象的amount
+            if (vo.getAmount() == null ){
+                BigDecimal temp = BigDecimal.ZERO;
+                totalAmount = totalAmount.add(temp);
+            }else{
+                BigDecimal totalMoney = vo.getAmount();
+                totalAmount = totalAmount.add(totalMoney); // 累加每个IncomeVO对象的amount
+            }
         }
         return totalAmount;
     }
@@ -615,6 +763,8 @@
     /**
      * 获取报名订单记录
      */
+    @Autowired
+    private IStoreService storeService;
     @RequestMapping(value = "/registerListAll")
     @ResponseBody
     public List<RegisterOrderVO> registerListAll(String province,String city,Integer storeId,String registerTime
@@ -623,6 +773,11 @@
         query.setProvince(province);
         query.setCity(city);
         query.setStoreId(storeId);
+        if(UserExt.getUser().getObjectType()==2){
+            query.setStoresIds(storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId",UserExt.getUser().getObjectId())
+                    ).stream().map(TStore::getId).collect(Collectors.toList()));
+        }
         if(UserExt.getUser().getObjectType()==3){
             query.setStoreId(UserExt.getUser().getObjectId());
         }
@@ -647,9 +802,9 @@
         if (userIds.size()==0){
             return new ArrayList<>();
         }
-        List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query);
 
-        return registerOrderVOS;
+
+        return coursePackagePaymentClient.listAllRegister(query);
     }
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
index 36654a5..4cba4fd 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
@@ -406,14 +406,14 @@
             user.setPassword(SecureUtil.md5("a123456"));
             user.setObjectType(3);
             user.setStatus(1);
+            userMapper.insert(user);
             tStore.setStoreStaffId(user.getId());
                 tStore.setLon(lon);
                 tStore.setLat(lat);
             tStore.setOperatorId(UserExt.getUser().getObjectId());
             storeService.save(tStore);
-
             user.setObjectId(tStore.getId());
-            userMapper.insert(user);
+
 
 
 
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
index c2cbed1..28fb52d 100644
--- 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
@@ -143,6 +143,13 @@
         integralGoodsOfSearch.setPage(page);
         integralGoodsOfSearch.setObjType(UserExt.getUser().getObjectType());
         integralGoodsOfSearch.setObjId(UserExt.getUser().getObjectId());
+        if (UserExt.getUser().getObjectType()==2){
+            // 查询这个运营商下的所有门店
+            List<Integer> operatorId = storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId", UserExt.getUser().getObjectId())).stream().map(TStore::getId)
+                    .collect(Collectors.toList());
+            integralGoodsOfSearch.setStoreIds(operatorId);
+        }
         return pointMercharsClient.ticketList(integralGoodsOfSearch);
     }
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
index 423bbaf..2adf231 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -2,14 +2,17 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.common.utils.Md5Utils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.course.dto.JsDto;
 import com.dsh.course.dto.StudentQeryDto;
+import com.dsh.course.feignClient.account.AppUserClient;
 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.account.model.TAppUser;
 import com.dsh.course.feignClient.course.CoursePackageClient;
 import com.dsh.course.feignClient.course.CoursePackageDiscountClient;
 import com.dsh.course.feignClient.course.CoursePackagePaymentConfigClient;
@@ -22,6 +25,7 @@
 import com.dsh.course.service.TGameConfigService;
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.modular.system.controller.util.MD5;
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.model.dto.*;
 import com.dsh.guns.modular.system.service.*;
@@ -94,6 +98,8 @@
 
     @Resource
     private CoursePackageClient coursePackageClient;
+    @Autowired
+    private AppUserClient appUserClient;
 
     @RequestMapping("/tolist")
     public String tolist(Model model) {
@@ -1132,6 +1138,30 @@
         siteBooking.setInsertTime(new Date());
         siteBooking.setState(1);
         siteBooking.setStatus(0);
+        // 查询当前预约人是否是会员
+        String phone = siteBooking.getPhone();
+        String booker = siteBooking.getBooker();
+        TAppUser appUserByPhone = appUserClient.getAppUserByPhone(phone);
+        TStore byId1 = storeService.getById(siteBooking.getStoreId());
+
+        if (appUserByPhone== null){
+            // 则当前预约人不是会员 添加到会员表里
+            TAppUser tAppUser = new TAppUser();
+            tAppUser.setName(booker);
+            tAppUser.setPhone(phone);
+            tAppUser.setProvince(byId1.getProvince());
+            tAppUser.setProvinceCode(byId1.getProvinceCode());
+            tAppUser.setCity(byId1.getCity());
+            tAppUser.setCityCode(byId1.getCityCode());
+            tAppUser.setIsVip(0);
+            tAppUser.setInsertType(UserExt.getUser().getObjectType());
+            tAppUser.setAddUserId(UserExt.getUser().getObjectId());
+            tAppUser.setInsertTime(new Date());
+            tAppUser.setPassword(MD5.md5("111111"));
+            appUserClient.addAppUser1(tAppUser);
+        }else{
+            siteBooking.setAppUserId(appUserByPhone.getId());
+        }
         // 如果是运营商添加的话 根据门店的省市来存储
         if (UserExt.getUser().getObjectType() == 2){
             TStore byId = storeService.getById(siteBooking.getStoreId());
@@ -1140,6 +1170,7 @@
             siteBooking.setCity(byId.getCity());
             siteBooking.setCityCode(byId.getCityCode());
         }
+
         siteClient.addSiteBooking(siteBooking);
         System.out.println("================="+siteBooking);
         return new ResultUtil<>(null,200,null,null,null);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuth.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuth.java
new file mode 100644
index 0000000..3a08955
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuth.java
@@ -0,0 +1,112 @@
+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 lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_operator_auth")
+public class OperatorAuth {
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    @TableField(value = "operatorId")
+    private Integer operatorId;
+    @TableField(value = "bodyType")
+    private String bodyType;
+    @TableField(value = "type")
+    private Integer type;
+    @TableField(value = "businessName")
+    private String businessName;
+    @TableField(value = "businessNumber")
+    private String businessNumber;
+    @TableField(value = "legalRepresentative")
+    private String legalRepresentative;
+    @TableField(value = "registerAddress")
+    private String registerAddress;
+    @TableField(value = "businessTerm")
+    private String businessTerm;
+    @TableField(value = "businessPicture")
+    private String businessPicture;
+    @TableField(value = "legalPerson")
+    private String legalPerson;
+    @TableField(value = "leagleNumber")
+    private String leagleNumber;
+    @TableField(value = "legalPhone")
+    private String legalPhone;
+    @TableField(value = "legalEmail")
+    private String legalEmail;
+    @TableField(value = "legalTerm")
+    private String legalTerm;
+    @TableField(value = "legalAddress")
+    private String legalAddress;
+    @TableField(value = "legalFront")
+    private String legalFront;
+    @TableField(value = "legalBack")
+    private String legalBack;
+    @TableField(value = "accountType")
+    private Integer accountType;
+    @TableField(value = "bank")
+    private String bank;
+    @TableField(value = "accountName")
+    private String accountName;
+    @TableField(value = "province")
+    private String province;
+    @TableField(value = "provinceCode")
+    private String provinceCode;
+    @TableField(value = "city")
+    private String city;
+    @TableField(value = "cityCode")
+    private String cityCode;
+    @TableField(value = "bankName")
+    private String bankName;
+    @TableField(value = "bankNumber")
+    private String bankNumber;
+    @TableField(value = "auditState")
+    private Integer auditState;
+    @TableField(value = "isBeneficiary")
+    private String isBeneficiary;
+    @TableField(value = "beneficiary")
+    private String beneficiary;
+    @TableField(value = "beneficiaryNumber")
+    private String beneficiaryNumber;
+    @TableField(value = "beneficiaryAddress")
+    private String beneficiaryAddress;
+    @TableField(value = "beneficiaryTerm")
+    private String beneficiaryTerm;
+    @TableField(value = "beneficiaryFront")
+    private String beneficiaryFront;
+    @TableField(value = "beneficiaryBack")
+    private String beneficiaryBack;
+    @TableField(value = "refuseReason")
+    private String refuseReason;
+
+    @TableField(value = "remark")
+    private String remark;
+    @TableField(value = "outBizNo")
+    private String outBizNo;
+    @TableField(value = "name")
+    private String name;
+    @TableField(value = "phone")
+    private String phone;
+    @TableField(value = "number")
+    private String number;
+    @TableField(value = "businessEnd")
+    private String businessEnd;
+    @TableField(value = "legalEnd")
+    private String legalEnd;
+    @TableField(value = "beneficiaryEnd")
+    private String beneficiaryEnd;
+    @TableField(value = "orderNo")
+    private String orderNo;
+    @TableField(value = "orderStatus")
+    private String orderStatus;
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java
new file mode 100644
index 0000000..d572aa2
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java
@@ -0,0 +1,12 @@
+package com.dsh.guns.modular.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.OperatorAuth;
+import com.dsh.guns.modular.system.model.TSite;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/8/1 17:49
+ */
+public interface IOperatorAuthService extends IService<OperatorAuth> {
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java
new file mode 100644
index 0000000..172150e
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java
@@ -0,0 +1,24 @@
+package com.dsh.guns.modular.system.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.mapper.TOperatorAuthMapper;
+import com.dsh.course.mapper.TTurnMapper;
+import com.dsh.guns.modular.system.model.OperatorAuth;
+import com.dsh.guns.modular.system.model.TTurn;
+import com.dsh.guns.modular.system.service.IOperatorAuthService;
+import com.dsh.guns.modular.system.service.TTurnService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Service
+public class TOperatorAuthServiceImpl extends ServiceImpl<TOperatorAuthMapper, OperatorAuth> implements IOperatorAuthService {
+
+}
diff --git a/cloud-server-management/src/main/resources/mapper/TOperatorAuthMapper.xml b/cloud-server-management/src/main/resources/mapper/TOperatorAuthMapper.xml
new file mode 100644
index 0000000..fa8d16e
--- /dev/null
+++ b/cloud-server-management/src/main/resources/mapper/TOperatorAuthMapper.xml
@@ -0,0 +1,6 @@
+<?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.TOperatorAuthMapper">
+
+
+</mapper>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html
index 8105712..5d092a7 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html
@@ -45,42 +45,214 @@
 <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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                <span id="storeStaff"></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                <span id="storePhone"></span>
+            </div>
+            <h2>商户号信息</h2>
+            </br>
+            </br>
+            <input hidden id="id" value="${id}">
             <div class="row">
                 <div class="col-lg-6" style="">
-                    <input id="operatorId" value="${operatorId}" hidden>
                     <div class="form-group">
-                        <label class="col-sm-3 control-label">*支付宝认证类型:</label>
+                        <label class="col-sm-4 control-label" >
+                            主题类型:<input checked type="radio" name="bodyType" value="IND_BIZ" onclick="updateHalf(1)">个人
+                            <input type="radio" name="bodyType" value="ENTERPRISE" onclick="updateHalf(2)">企业
+                        </label>
+                    </div>
+                    <div class="form-group" >
+                        <label class="col-sm-3 control-label">*联系人姓名:</label>
                         <div class="col-sm-9">
-                            <input type="radio" name="alipayType" value="1" checked>个人
-                            <input type="radio" name="alipayType" value="2" >企业
+                            <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>
+                        <label class="col-sm-3 control-label">*联系人电话:</label>
                         <div class="col-sm-9">
-                            <input style="width: 300px" class="form-control" id="alipayNum"  placeholder="请输入" type="text">
-                        </div>
-                    </div>
-
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">*微信认证类型:</label>
-                        <div class="col-sm-9">
-                            <input type="radio" name="wechatType" value="1" checked>个人
-                            <input type="radio" name="wechatType" value="2" >企业
+                            <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>
+                        <label class="col-sm-3 control-label">*联系人身份证号:</label>
                         <div class="col-sm-9">
-                            <input style="width: 300px" class="form-control" id="wechatNum"  placeholder="请输入" type="text">
+                            <input style="width: 300px" class="form-control" id="number"  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>
+                <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="merchantName"  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">
+                        </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="endTime" name="endTime" type="date">
+                            <input type="checkbox" style="margin-left: 10px" id="tradeE" value="0" onchange="TSite.tradeYse(this)">长期</input>
+                        </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="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">
+                        </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="IDCardEnd" name="IDCardTime" type="date">
+                            <input type="checkbox" style="margin-left: 10px" id="IDCardE" 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" id="benefit">
+                <div class="col-lg-6" style="">
+                    <div class="form-group">
+                        <label class="col-sm-4 control-label" >
+                            法人是否为受益人:<input type="radio" checked name="type" value="true">是 <input checked type="radio" name="type" value="false">否
+                        </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">
+                        <label class="col-sm-3 control-label">*受益人身份证结束时间:</label>
+                        <div class="col-sm-9" style="display: flex">
+                            <input style="width: 300px" class="form-control" id="bEnd" name="IDCardTime" type="date">
+                            <input type="checkbox" style="margin-left: 10px" id="bIDCardT" value="0" onchange="TSite.tradeYse(this)">长期</input>
+                        </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" >
@@ -93,26 +265,11 @@
     </div>
 </div>
 
-<script src="${ctxPath}/modular/system/operator/operator.js"></script>
+<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()
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponInfo.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponInfo.html
index 0ae3948..2ebb330 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponInfo.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponInfo.html
@@ -47,6 +47,7 @@
         <input hidden id="two" value="${two}">
         <input hidden id="three" value="${three}">
         <input hidden id="city" value="${city}">
+        <input hidden id="objectType" value="${objectType}">
         <div class="form-horizontal">
             <div class="row">
                 <div class="col-sm-6">
@@ -131,6 +132,9 @@
                 </div>
             </div>
 
+            @if(objectType == 1){
+
+
             <div class="row" id="exchangeType"  >
                 <div class="col-sm-6">
                     <div class="form-group">
@@ -163,7 +167,7 @@
                     
                 </div>
             </div>
-
+            @}
             <div class="row" id="needIntegral" >
                 <div class="col-sm-6">
                     <div class="form-group">
@@ -229,7 +233,7 @@
                            placeholder="请选择"/>
                 </div>
             </div>
-
+            @if(objectType == 1){
             <div class="row" id="app" >
                 <div class="col-sm-6">
                     <div class="form-group">
@@ -255,7 +259,7 @@
                     
                 </div>
             </div>
-
+            @}
             <div class="row" id="belongsCon" >
                 <div class="col-sm-6">
                     <div class="form-group">
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
index 746abf5..f5c972f 100644
--- 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
@@ -34,7 +34,189 @@
         },
     ];
 };
+TSite.addSubmit = function(){
 
+    var bodyType = $("input[name='bodyType']:checked").val();
+    var type = $("input[name='type']:checked").val();
+    if (bodyType=="" || null == type){
+        Feng.error("请选择主体类型");
+        return;
+    }
+    if ("" == $("#name").val() || null == $("#name").val()){
+        Feng.error("请输入联系人姓名");
+        return;
+    }
+    if ("" == $("#phone").val() || null == $("#phone").val()){
+        Feng.error("请输入联系人电话");
+        return;
+    }
+    if ("" == $("#number").val() || null == $("#number").val()){
+        Feng.error("请输入联系人身份证号");
+        return;
+    }
+    var platform = $("input[name='platform']:checked").val();
+
+    if ("" == $("#merchantName").val() || null == $("#merchantName").val()){
+        Feng.error("请输入营业执照商户名称");
+        return;
+    }
+    if ("" == $("#lrName").val() || null == $("#lrName").val()){
+        Feng.error("请输入法定代表人姓名");
+        return;
+    }
+    var tradeT = document.getElementById("tradeE");
+    if (!tradeT.checked){
+        if ("" == $("#endTime").val() || null == $("#endTime").val()){
+            Feng.error("请输入营业证照过期时间");
+            return;
+        }
+    }
+    if ("" == $("#tradeTime").val() || null == $("#tradeTime").val()){
+        Feng.error("请输入营业执照生效期间");
+        return;
+    }
+    if ("" == $("#licenseRegistration").val() || null == $("#licenseRegistration").val()){
+        Feng.error("请输入营业执照注册号");
+        return;
+    }
+    if ("" == $("#registerAddress").val() || null == $("#registerAddress").val()){
+        Feng.error("请输入注册地址");
+        return;
+    }
+    if ("" == $("#license").val() || null == $("#license").val()){
+        Feng.error("请上传营业执照");
+        return;
+    }if ("" == $("#legalPerson").val() || null == $("#legalPerson").val()){
+        Feng.error("请输入法人姓名");
+        return;
+    }if ("" == $("#legalPhone").val() || null == $("#legalPhone").val()){
+        Feng.error("请输入法人手机号");
+        return;
+    }
+    var IDCardT = document.getElementById("IDCardE");
+    if (!IDCardT.checked){
+        if ("" == $("#IDCardTime").val() || null == $("#IDCardTime").val()){
+            Feng.error("请输入法人身份证结束时间");
+            return;
+        }
+    }
+    if ("" == $("#IDCardTime").val() || null == $("#IDCardTime").val()){
+        Feng.error("请输入法人身份证开始时间");
+        return;
+    }
+
+    if ("" == $("#IDCardImg").val() || null == $("#IDCardImg").val()){
+        Feng.error("请上传法人身份证正面照");
+        return;
+    }if ("" == $("#lIDNumber").val() || null == $("#lIDNumber").val()){
+        Feng.error("请输入法人身份证号");
+        return;
+    }if ("" == $("#lEmail").val() || null == $("#lEmail").val()){
+        Feng.error("请输入法人邮箱");
+        return;
+    }if ("" == $("#lIDAddress").val() || null == $("#lIDAddress").val()){
+        Feng.error("请输入法人身份证地址");
+        return;
+    }if ("" == $("#IDCardImg1").val() || null == $("#IDCardImg1").val()){
+        Feng.error("请上传法人身份证背面照");
+        return;
+    }
+
+    if(type=="ENTERPRISE"){
+        if ("" == $("#bName").val() || null == $("#bName").val()){
+            Feng.error("请输入受益人姓名");
+            return;
+        }if ("" == $("#bPhone").val() || null == $("#bPhone").val()){
+            Feng.error("请输入受益人手机号");
+            return;
+        }if ("" == $("#bAddress").val() || null == $("#bAddress").val()){
+            Feng.error("请输入受益人身份证地址");
+            return;
+        }
+        var bIDCardT = document.getElementById("bIDCardT");
+        if (!bIDCardT.checked){
+            if ("" == $("#bEnd").val() || null == $("#bEnd").val()){
+                Feng.error("请输入受益人身份证结束时间");
+                return;
+            }
+        }
+        if ("" == $("#bTime").val() || null == $("#bTime").val()){
+            Feng.error("请输入受益人身份证开始时间");
+            return;
+        }
+        if ("" == $("#bImg1").val() || null == $("#bImg1").val()){
+            Feng.error("请上传受益人身份证正面照");
+            return;
+        }
+        if ("" == $("#bIDNumber").val() || null == $("#bIDNumber").val()){
+            Feng.error("请输入受益人身份证号");
+            return;
+        }
+        if ("" == $("#bImg2").val() || null == $("#bImg2").val()){
+            Feng.error("请输入受益人身份证背面照");
+            return;
+        }
+    }
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/operator/auth", function(data){
+        Feng.success("操作成功!");
+        // window.parent.TSite.table.refresh();
+        // TSite.close();
+    },function(data){
+        Feng.error("操作失败!");
+    });
+    ajax.set("operatorId",        $("#id").val()    );
+    ajax.set("bodyType",        bodyType    );
+    ajax.set("type",        platform    );
+    ajax.set("businessName",        $("#merchantName").val()    );
+    ajax.set("businessNumber",        $("#licenseRegistration").val()    );
+    ajax.set("legalRepresentative",        $("#lrName").val()    );
+    ajax.set("registerAddress",        $("#registerAddress").val()    );
+    if ($("#endTime").val()==""){
+        ajax.set("businessEnd","forever");
+    }else{
+        ajax.set("businessEnd",$("#endTime").val());
+    }
+    if ($("#IDCardEnd").val()==""){
+        ajax.set("legalEnd","forever");
+    }else{
+        ajax.set("legalEnd",$("#IDCardEnd").val());
+    }
+
+    if(bodyType=="ENTERPRISE"){
+        if ($("#bEnd").val()==""){
+            console.log("永远")
+            ajax.set("beneficiaryEnd","forever");
+        }else{
+            console.log("嗯嗯嗯")
+            ajax.set("beneficiaryEnd",$("#bEnd").val());
+        }
+    }
+    ajax.set("businessTerm",        $("#tradeTime").val()    );
+    ajax.set("name",        $("#name").val()    );
+    ajax.set("phone",        $("#phone").val()    );
+    ajax.set("number",        $("#number").val()    );
+    ajax.set("businessPicture",        $("#license").val()    );
+    ajax.set("legalPerson",        $("#legalPerson").val()    );
+    ajax.set("legalNumber",        $("#lIDNumber").val()    );
+    ajax.set("legalPhone",        $("#legalPhone").val()    );
+    ajax.set("legalEmail",        $("#lEmail").val()    );
+    ajax.set("legalTerm",        $("#IDCardTime").val()    );
+    ajax.set("legalAddress",        $("#lIDAddress").val()    );
+    ajax.set("legalFront",        $("#IDCardImg").val()    );
+    ajax.set("legalBack",        $("#IDCardImg1").val()    );
+    ajax.set("isBeneficiary",        type    );
+    ajax.set("beneficiary",        $("#bName").val()    );
+    ajax.set("beneficiaryPhone",        $("#bPhone").val()    );
+    ajax.set("beneficiaryNumber",        $("#bIDNumber").val()    );
+    ajax.set("beneficiaryAddress",        $("#bAddress").val()    );
+    ajax.set("beneficiaryTerm",        $("#bTime").val()    );
+    ajax.set("beneficiaryFront",        $("#bImg1").val()    );
+    ajax.set("beneficiaryBack",        $("#bImg2").val()    );
+    ajax.set("remark",        $("#remark").val()    );
+    ajax.start();
+};
 /**
  * 检查是否选中
  */
@@ -115,22 +297,37 @@
     TSite.search();
 };
 TSite.tradeYse = function () {
-    var tradeT = document.getElementById('tradeT');
-    var IDCardT = document.getElementById('IDCardT');
+
+    var tradeT = document.getElementById('tradeE');
+    var endTime = document.getElementById('endTime');
+    var IDCardT = document.getElementById('IDCardE');
+    var bIDCardT = document.getElementById('bIDCardT');
     var tradeTime = document.getElementById('tradeTime');
-    var IDCardTime = document.getElementById('IDCardTime');
+    var IDCardTime = document.getElementById('IDCardEnd');
+    var bTime = document.getElementById('bEnd');
+    console.log("进入")
 // 判断是否被选中
     if (tradeT.checked) {
-        tradeTime.disabled = true;
+        endTime.disabled = true;
+        endTime.value="";
     } else {
-        tradeTime.disabled = false;
+        endTime.disabled = false;
     }
     if (IDCardT.checked) {
+        IDCardTime.value="";
         IDCardTime.disabled = true;
     } else {
         IDCardTime.disabled = false;
     }
+    if (bIDCardT.checked) {
+        bTime.value="";
+        bTime.disabled = true;
+    } else {
+        bTime.disabled = false;
+    }
 };
+
+
 $(function () {
     $("#benefit").hide()
     var defaultColunms = TSite.initColumn();
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
index 6dbb6fd..d4cab8a 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
@@ -358,10 +358,12 @@
     }
 
 
-    // 说明
-    var illustrate = $('#illustrate').val();
-    if (illustrate === undefined || illustrate === '' || illustrate === null){
-        return Feng.error('优惠券说明不能为空');
+    if ($('#userType').val()==1) {
+        // 说明
+        var illustrate = $('#illustrate').val();
+        if (illustrate === undefined || illustrate === '' || illustrate === null) {
+            return Feng.error('优惠券说明不能为空');
+        }
     }
     // 发放方式
     let distributionMethod = $(":radio[name='distributionMethod']:checked").val();
@@ -390,6 +392,7 @@
     if (periodOfValidity === undefined || periodOfValidity === '' || periodOfValidity === null){
         return Feng.error('有效期不能为空');
     }
+    if ($('#userType').val()==1){
     // 兑换方式
     let exchangeMethod = $(':radio[name="exchangeMethod"]:checked').val();
     if (exchangeMethod === '' || exchangeMethod === undefined || exchangeMethod === null){
@@ -413,28 +416,29 @@
             return Feng.error('所需现金不能为空');
         }
     }
-
+    }
     let company = $(':radio[name="company"]:checked').val();
     var cts = "";
-    if (company === '2'){
-        var myselect=document.getElementById('cityData');
-        var seCity = myselect.options[myselect.selectedIndex].value;
-        if (seCity === null || seCity === undefined || seCity === ''){
-            return Feng.error('请选中一个省市');
-        }
-        cityIds.push(seCity);
-        if (num > 0){
-            for (let i = 1; i <= num; i++) {
-                var insSelect=document.getElementById('cityData'+i);
-                var inData = insSelect.options[insSelect.selectedIndex].value;
-                if (inData !== undefined || inData !== null ||  inData !== ''){
-                    cityIds.push(inData);
-                }
+    if ($('#userType').val()==1) {
+        if (company === '2') {
+            var myselect = document.getElementById('cityData');
+            var seCity = myselect.options[myselect.selectedIndex].value;
+            if (seCity === null || seCity === undefined || seCity === '') {
+                return Feng.error('请选中一个省市');
             }
-            cts = cityIds.join(',');
+            cityIds.push(seCity);
+            if (num > 0) {
+                for (let i = 1; i <= num; i++) {
+                    var insSelect = document.getElementById('cityData' + i);
+                    var inData = insSelect.options[insSelect.selectedIndex].value;
+                    if (inData !== undefined || inData !== null || inData !== '') {
+                        cityIds.push(inData);
+                    }
+                }
+                cts = cityIds.join(',');
+            }
         }
     }
-
     const commaSeparatedString = this.goodsPicArray.join(',');
 
     var stores = "";
@@ -454,14 +458,15 @@
     }, function (data) {
         Feng.error("添加失败!" + data.responseJSON.message + "!");
     });
-    ajax.set("userType",1);
-    ajax.set("cityManagerId",1);
+    ajax.set("userType",$('#userType').val());
+    ajax.set("cityManagerId",0);
     ajax.set("couponName",couponName);
     ajax.set("prescription",prescription);
     ajax.set("condition",conditionalAmount);
     ajax.set("subtraction",deductionAmount);
     ajax.set("discount",voucherAmount);
     ajax.set("experience",experienceName);
+    var illustrate = $('#illustrate').val();
     ajax.set("illustrate",illustrate);
     ajax.set("distributionMethod",distributionMethod);
     ajax.set("requiredPoints",requiredPoints);
@@ -470,7 +475,13 @@
     ajax.set("quantityIssued",quantityIssued);
     ajax.set("pickUpQuantity",pickUpQuantity);
     ajax.set("periodOfValidity",periodOfValidity);
-    ajax.set("exchangeMethod",exchangeMethod);
+
+    if ($('#userType').val()==2) {
+        ajax.set("exchangeMethod",1);
+    }else{
+        let exchangeMethod = $(':radio[name="exchangeMethod"]:checked').val();
+        ajax.set("exchangeMethod",exchangeMethod);
+    }
     ajax.set("goodImg",this.goodsCover);
     ajax.set("goodImgs",commaSeparatedString);
     ajax.set("company",company);

--
Gitblit v1.7.1