liujie
2023-10-31 1c08cdb19aa0531dc77665dbbde052133dff9ceb
Merge remote-tracking branch 'origin/master'
15个文件已修改
2个文件已添加
1560 ■■■■ 已修改文件
.idea/workspace.xml 169 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/pom.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/ManagementApplication.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/MgtShopAuthDto.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/WeChatUtil.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/TOperatorUserMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html 600 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml
@@ -25,11 +25,24 @@
    <select />
  </component>
  <component name="ChangeListManager">
    <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" />
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="">
      <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/MgtShopAuthDto.java" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/WeChatUtil.java" 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-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" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/pom.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/ManagementApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/ManagementApplication.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/resources/TOperatorUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/resources/TOperatorUserMapper.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js" afterDir="false" />
    </list>
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
@@ -116,6 +129,8 @@
      <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.guns.modular.system.util" />
      <recent name="com.dsh.guns.modular.system.model" />
      <recent name="com.dsh.course.feignClient.account.model" />
      <recent name="com.dsh.guns.modular.system.model.dto" />
      <recent name="com.dsh.course.mapper" />
@@ -148,7 +163,7 @@
      </list>
    </option>
  </component>
  <component name="RunManager" selected="Spring Boot.ManagementApplication">
  <component name="RunManager" selected="Application.AntMerchantExpandIndirectImageUpload">
    <configuration default="true" type="JUnit" factoryName="JUnit">
      <shortenClasspath name="MANIFEST" />
      <option name="TEST_OBJECT" value="class" />
@@ -201,19 +216,6 @@
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration name="BigDecimalToChineseWords" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <option name="MAIN_CLASS_NAME" value="com.dsh.guns.modular.system.util.BigDecimalToChineseWords" />
      <module name="mb-cloud-management" />
      <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" />
@@ -233,6 +235,19 @@
      <extension name="coverage">
        <pattern>
          <option name="PATTERN" value="com.dsh.guns.modular.system.api.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration name="WeChatUtil" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <option name="MAIN_CLASS_NAME" value="com.dsh.guns.modular.system.util.WeChatUtil" />
      <module name="mb-cloud-management" />
      <extension name="coverage">
        <pattern>
          <option name="PATTERN" value="com.dsh.guns.modular.system.util.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
@@ -412,7 +427,12 @@
      </method>
    </configuration>
    <list>
      <item itemvalue="Application.AccountApplicationTests" />
      <item itemvalue="Application.BigDecimalToChineseWords" />
      <item itemvalue="Application.OperatorController" />
      <item itemvalue="Application.AntMerchantExpandIndirectImageUpload" />
      <item itemvalue="Application.SaticScheduleTask" />
      <item itemvalue="Application.WeChatUtil" />
      <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
      <item itemvalue="Spring Boot.CourseApplication" />
      <item itemvalue="Spring Boot.AuthApplication" />
@@ -422,14 +442,12 @@
      <item itemvalue="Spring Boot.OtherApplication" />
      <item itemvalue="Spring Boot.ActivityApplication" />
      <item itemvalue="Spring Boot.CompetitionApplication" />
      <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.WeChatUtil" />
        <item itemvalue="Application.SaticScheduleTask" />
        <item itemvalue="Application.OperatorController" />
        <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
      </list>
@@ -443,17 +461,12 @@
          <expand>
            <path>
              <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@f1b22ae" type="7427dc5b:ServiceModel$ServiceGroupNode" />
              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@89aeeae2" type="7427dc5b:ServiceModel$ServiceGroupNode" />
            </path>
            <path>
              <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
              <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@f1b22ae" type="7427dc5b:ServiceModel$ServiceGroupNode" />
              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@4c3d359f" type="7427dc5b:ServiceModel$ServiceGroupNode" />
              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@89aeeae2" type="7427dc5b:ServiceModel$ServiceGroupNode" />
              <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@5fffee20" type="7427dc5b:ServiceModel$ServiceGroupNode" />
            </path>
          </expand>
          <select />
@@ -551,55 +564,9 @@
      <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" />
      <created>1696749061197</created>
      <option name="number" value="00039" />
      <option name="presentableId" value="LOCAL-00039" />
      <option name="project" value="LOCAL" />
      <updated>1696749061197</updated>
    </task>
    <task id="LOCAL-00040" summary="10.8。1">
      <option name="closed" value="true" />
      <created>1696753188954</created>
      <option name="number" value="00040" />
      <option name="presentableId" value="LOCAL-00040" />
      <option name="project" value="LOCAL" />
      <updated>1696753188954</updated>
    </task>
    <task id="LOCAL-00041" summary="10.11">
      <option name="closed" value="true" />
      <created>1696932564568</created>
      <option name="number" value="00041" />
      <option name="presentableId" value="LOCAL-00041" />
      <option name="project" value="LOCAL" />
      <updated>1696932564568</updated>
    </task>
    <task id="LOCAL-00042" summary="10.12">
      <option name="closed" value="true" />
      <created>1696989564532</created>
      <option name="number" value="00042" />
      <option name="presentableId" value="LOCAL-00042" />
      <option name="project" value="LOCAL" />
      <updated>1696989564532</updated>
    </task>
    <task id="LOCAL-00043" summary="10.12">
      <option name="closed" value="true" />
      <created>1696990659189</created>
      <option name="number" value="00043" />
      <option name="presentableId" value="LOCAL-00043" />
      <option name="project" value="LOCAL" />
      <updated>1696990659189</updated>
    </task>
    <task id="LOCAL-00044" summary="10.11">
      <option name="closed" value="true" />
      <created>1696993684991</created>
      <option name="number" value="00044" />
      <option name="presentableId" value="LOCAL-00044" />
      <option name="project" value="LOCAL" />
      <updated>1696993684991</updated>
      <workItem from="1698325880893" duration="54542000" />
      <workItem from="1698455150596" duration="11287000" />
      <workItem from="1698627531587" duration="2092000" />
    </task>
    <task id="LOCAL-00045" summary="10.12">
      <option name="closed" value="true" />
@@ -931,7 +898,49 @@
      <option name="project" value="LOCAL" />
      <updated>1698383333283</updated>
    </task>
    <option name="localTasksCounter" value="88" />
    <task id="LOCAL-00088" summary="商户认证">
      <created>1698383355441</created>
      <option name="number" value="00088" />
      <option name="presentableId" value="LOCAL-00088" />
      <option name="project" value="LOCAL" />
      <updated>1698383355441</updated>
    </task>
    <task id="LOCAL-00089" summary="商户认证">
      <created>1698383380121</created>
      <option name="number" value="00089" />
      <option name="presentableId" value="LOCAL-00089" />
      <option name="project" value="LOCAL" />
      <updated>1698383380121</updated>
    </task>
    <task id="LOCAL-00090" summary="商户认证">
      <created>1698383394712</created>
      <option name="number" value="00090" />
      <option name="presentableId" value="LOCAL-00090" />
      <option name="project" value="LOCAL" />
      <updated>1698383394712</updated>
    </task>
    <task id="LOCAL-00091" summary="商户认证">
      <created>1698383409580</created>
      <option name="number" value="00091" />
      <option name="presentableId" value="LOCAL-00091" />
      <option name="project" value="LOCAL" />
      <updated>1698383409580</updated>
    </task>
    <task id="LOCAL-00092" summary="商户认证">
      <created>1698384180115</created>
      <option name="number" value="00092" />
      <option name="presentableId" value="LOCAL-00092" />
      <option name="project" value="LOCAL" />
      <updated>1698384180115</updated>
    </task>
    <task id="LOCAL-00093" summary="商户认证">
      <created>1698394471402</created>
      <option name="number" value="00093" />
      <option name="presentableId" value="LOCAL-00093" />
      <option name="project" value="LOCAL" />
      <updated>1698394471402</updated>
    </task>
    <option name="localTasksCounter" value="94" />
    <servers />
  </component>
  <component name="TypeScriptGeneratedFilesManager">
cloud-server-management/pom.xml
@@ -229,6 +229,20 @@
            <version>4.38.10.ALL</version>
            <scope>compile</scope>
        </dependency>
        <!-- 小程序统一服务 -->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-miniapp</artifactId>
            <version>4.5.0</version>
        </dependency>
        <!-- 微信 -->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-pay</artifactId>
            <version>4.5.0</version>
        </dependency>
    </dependencies>
    <build>
cloud-server-management/src/main/java/com/dsh/ManagementApplication.java
@@ -8,9 +8,11 @@
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.annotation.PostConstruct;
@@ -26,6 +28,7 @@
@MapperScan("com.dsh.course.mapper")
@ServletComponentScan
@EnableScheduling
@ComponentScan(basePackages = {"com.dsh.*","com.github.binarywang.wxpay.service"})
public class ManagementApplication {
    public static void main(String[] args) {
        try{
cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.guns.modular.system.model.OperatorAuth;
import com.dsh.guns.modular.system.model.TTurn;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
@@ -13,6 +14,7 @@
 * @author administrator
 * @since 2023-09-19
 */
@Mapper
public interface TOperatorAuthMapper extends BaseMapper<OperatorAuth> {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java
@@ -6,12 +6,167 @@
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.AlipayConfig;
import com.alipay.api.request.AntMerchantExpandIndirectImageUploadRequest;
import com.alipay.api.request.AntMerchantExpandIndirectZftCreateRequest;
import com.alipay.api.response.AntMerchantExpandIndirectImageUploadResponse;
import com.alipay.api.FileItem;
import com.alipay.api.response.AntMerchantExpandIndirectZftCreateResponse;
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("调用失败");
//        }
//    }
    public static void main(String[] args) {
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
                "2021004124642138",
                "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC8Jqz8JmnbbggpEqdIyimlk1z7uq0W/rexxMZsh5f7LjSafci1/Gce3USgp1L2rVxEJPfL85rYXiLwnqUUPqi1P5MoymOU9GtK99dzlbkU8IPYKJWYWCtdnq5IdGLf4Kcs6ghYvTwbNHw5vl5QevtfEW8kzYxPrYkfO1i38i8zT8OTLHP2T+lRbfRvLMgScv+kiCWlI4k411yeeLxWm5ikg3M3zMjTl05VOqVhp45N3aglGzMMN3b6Ior73PzBUARmMeDQ73YX0l24acIpy1qNYkjZnvs0ghxd2eowgYgmaJBpfRZfD8NDFe20g/RQSK+mdJslxcdaFjW4OVUU8rdvAgMBAAECggEAeq1Q/vtg7BTbN0SVVC2UaAQkjXGTKDoetccShXMHklv3KoA3HQmchxBIjeNrgbFZRolAFHgaj1cZuwAFrKSKRdtU7TTBJz8SsgfVL+UAj3mezZLwrytV4y3yfwV77nNBLVTO6mVASpC3KsNIJXt6aOsqJ7np8Y25qWZ9mzpKsk4CPaSSPMj9KXZN1ivjfd4rscT9jPnzuTtcUwH2DBn4ykDsc1bnwRO/6IUwo7FJGK5IY7WRrmYFPqdqXpfmKZAMzBoRLJtBp+sbBkSjXHjVpsEJJYTgYqVaTc+iX3SjLi0a/7GieVd2U8OWVVmvbdJgawKWK1kEjCDIOVjOUzFI0QKBgQDlq+LiDPSjt2l+eosR1w82LdfaAyhh5Bhg3C9Or7GoP/PHvk/R3TfDR8yx1JJk1tM2PNg7gsx0KBnu8IKJviBNNvZ8ftMYL3Z3L+4SvUlD7sN01TUA1vPtWsMGEc73eqYy8a88H+rhUTSm6eHiq2sZGLKid+/ShLf+pXvHE5YRqQKBgQDRuE0ltOFbJHdDjP1W9xCZWbx3mDsSs/pZv761CLRKY0TVGq3QgakBJpjSX7OYJ4Cg2j+8R8PJjHsE1pnrRbiF63ypbCm2j5knCqgqFpctAqQ4fQk0263GORw+9FRPuVbL1zyFzFJTeOkwpK+p61tA0JAdDnymUKLdDuNZAl1fVwKBgQDZGPJdFTwGqW/p43IjyfMSFqFr7gI1DkRRArEhIwi+7rzEOcv/p6l3SR5fln1PHpYGNdt73Xbf8awZ5XSvOW4VLvgt1EA8I1lK7p6PTie8NCzD+mmgwo9O9LVWvmyyGFiT3Ur0fYMruvQXNwuTlM+mqGbrFo42o8e8yLZJBuWbCQKBgQCn901KmuE3BzDCGIS7ByvzNkzdGD6Pzzf+c7UA91S2k2UIrNJzQbWjJ0+UhnOntFOwALy1RmEH5oyMpngmV/PexmlUpD2QathFzaI7+1XfBdOTLomWHS/Dp+/4d+Wi6JUcs2lU2/0/v4I8pFnQ5KB0e9ZAf17UMZcPJ6Jsopk4BwKBgQCNnSK8b1xG/WMOae2HaHDjgwRCFJn5gS3NsLcj0zdFb9VfpaoxBd2vpR/kNO3VCEM6pZMOAGTYxaaS/27Wbavbu+m5oAZs1IwCjAryM9jSevwF59AX+OxOi8r4UYiEXMdmlSoNseIAe8U8X1/ZCGuLiS1p7k7nSkkCLBvWnzNKfA==","json","GBK",
                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB","RSA2");
        AntMerchantExpandIndirectZftCreateRequest request = new AntMerchantExpandIndirectZftCreateRequest();
        request.setBizContent("{" +
                "  \"in_door_images\":[" +
                "    \"c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg\"" +
                "  ]," +
                "  \"external_id\":\"105290059990194\"," +
                "  \"merchant_type\":\"01\"," +
                "  \"name\":\"蚂蚁金服(杭州)网络技术有限公司\"," +
                "  \"alias_name\":\"支付宝\"," +
                "  \"mcc\":\"B0007\"," +
                "  \"cert_no\":\"9133010608210550XR\"," +
                "  \"cert_type\":\"201\"," +
                "  \"cert_image\":\"c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg\"," +
                "  \"cert_image_back\":\"25a10d04-ca9c-41aa-896f-3e0904bec470.jpg\"," +
                "  \"legal_name\":\"马云\"," +
                "  \"legal_cert_no\":\"100100198811110001\"," +
                "  \"legal_cert_front_image\":\"25a10d04-ca9c-41aa-896f-3e0904bec470.jpg\"," +
                "  \"legal_cert_back_image\":\"25a10d04-ca9c-41aa-896f-3e0904bec470.jpg\"," +
                "  \"business_address\":{" +
                "    \"city_code\":\"371000\"," +
                "    \"district_code\":\"371002\"," +
                "    \"address\":\"万塘路18号黄龙时代广场B座\"," +
                "    \"province_code\":\"370000\"," +
                "    \"poiid\":\"B0FFIVU189\"," +
                "    \"longitude\":\"120.760001\"," +
                "    \"latitude\":\"60.270001\"" +
                "  }," +
                "  \"service_phone\":\"0571-85022088\"," +
                "  \"contact_infos\":[" +
                "    {" +
                "      \"name\":\"张三\"," +
                "      \"phone\":\"0571-85022088\"," +
                "      \"mobile\":\"13888888888\"," +
                "      \"email\":\"user@domain.com\"," +
                "      \"id_card_no\":\"110000199001011234\"" +
                "    }" +
                "  ]," +
                "  \"biz_cards\":[" +
                "    {" +
                "      \"account_holder_name\":\"张三\"," +
                "      \"account_no\":\"621485*****10408\"," +
                "      \"account_inst_province\":\"浙江省\"," +
                "      \"account_inst_city\":\"杭州市\"," +
                "      \"account_branch_name\":\"招商银行杭州高新支行\"," +
                "      \"usage_type\":\"01\"," +
                "      \"account_type\":\"DC\"," +
                "      \"account_inst_name\":\"招商银行\"," +
                "      \"account_inst_id\":\"CMB\"," +
                "      \"bank_code\":\"103290003044\"" +
                "    }" +
                "  ]," +
                "  \"qualifications\":[" +
                "    {" +
                "      \"industry_qualification_type\":\"B0099\"," +
                "      \"industry_qualification_image\":\"c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg\"" +
                "    }" +
                "  ]," +
                "  \"out_door_images\":[" +
                "    \"c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg\"" +
                "  ]," +
                "  \"license_auth_letter_image\":\"c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg\"," +
                "  \"service\":[" +
                "    \"当面付\"" +
                "  ]," +
                "  \"sign_time_with_isv\":\"2015-04-15\"," +
                "  \"alipay_logon_id\":\"qwert@163.com\"," +
                "  \"sites\":[" +
                "    {" +
                "      \"site_type\":\"01\"," +
                "      \"site_url\":\"www.xxx.com\"," +
                "      \"site_name\":\"XXX网站\"," +
                "      \"account\":\"测试账号\"," +
                "      \"password\":\"测试密码\"" +
                "    }" +
                "  ]," +
                "  \"invoice_info\":{" +
                "    \"auto_invoice\":true," +
                "    \"accept_electronic\":true," +
                "    \"tax_payer_qualification\":\"01\"," +
                "    \"title\":\"蚂蚁金服(杭州)信息技术有限公司\"," +
                "    \"tax_no\":\"51010482542598631219\"," +
                "    \"tax_payer_valid\":\"19981011\"," +
                "    \"address\":\"浙江省杭州市*****路蚂蚁金服\"," +
                "    \"telephone\":\"0571****8888\"," +
                "    \"bank_account\":\"1234567******678123\"," +
                "    \"mail_name\":\"张*\"," +
                "    \"mail_address\":{" +
                "      \"city_code\":\"371000\"," +
                "      \"district_code\":\"371002\"," +
                "      \"address\":\"万塘路18号黄龙时代广场B座\"," +
                "      \"province_code\":\"370000\"," +
                "      \"poiid\":\"B0FFIVU189\"," +
                "      \"longitude\":\"120.760001\"," +
                "      \"latitude\":\"60.270001\"," +
                "      \"type\":\"BUSINESS_ADDRESS\"" +
                "    }," +
                "    \"mail_telephone\":\"0571****8888\"," +
                "    \"bank_name\":\"中国银行\"" +
                "  }," +
                "  \"cert_name\":\"xxxx小卖铺\"," +
                "  \"binding_alipay_logon_id\":\"asdf@163.com\"," +
                "  \"legal_cert_type\":\"100\"," +
                "  \"default_settle_rule\":{" +
                "    \"default_settle_type\":\"alipayAccount\"," +
                "    \"default_settle_target\":\"myalipay@alipay.com\"" +
                "  }" +
                "}");
        AntMerchantExpandIndirectZftCreateResponse response = null;
        try {
            response = alipayClient.execute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if(response.isSuccess()){
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
@@ -433,6 +433,15 @@
        data.setStatus(1);
        data.setState(1);
        operatorService.save(data);
        // 添加运营商认证数据
        OperatorUser operatorUser = new OperatorUser();
        operatorUser.setUserId(user.getId());
        operatorUser.setAlipay("支付宝");
        operatorUser.setWechat("微信");
        operatorUser.setAlipayType(3);
        operatorUser.setWechatType(3);
        operatorUser.setOperatorId(data.getId());
        operatorUserService.save(operatorUser);
        user.setObjectId(data.getId());
        userService.updateById(user);
        if (SinataUtil.isNotEmpty(comArr)){
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java
@@ -7,25 +7,31 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.account.StoreStaffClient;
import com.dsh.course.feignClient.account.model.TStoreStaff;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.core.base.tips.SuccessTip;
import com.dsh.guns.core.common.constant.factory.PageFactory;
import com.dsh.guns.core.util.SinataUtil;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.service.*;
import com.dsh.guns.modular.system.service.impl.TOperatorUserServiceImpl;
import com.dsh.guns.modular.system.util.ResultUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -69,10 +75,20 @@
    @RequestMapping(value = "/listAll")
    @ResponseBody
    public Object listAll(String province,String city,String userName, String phone,Integer platform,Integer type,Integer state) {
        Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
        List<Map<String,Object>> list =  operatorUserService.listAll(page,province,city,userName,phone,platform,type,state);
        page.setRecords(list);
        return super.packForBT(page);
        List<Map<String,Object>> list =  operatorUserService.listAll(new Page<>(),province,city,userName,phone,platform,type,state);
        return list;
    }
    @RequestMapping(value = "/mgtShopAuth", method = RequestMethod.POST)
    @ApiOperation(value = "平台商户进件")
    @ResponseBody
    public Object mgtShopAuth() {
        MgtShopAuthDto mgtShopAuthDto = new MgtShopAuthDto();
        Integer userId = Objects.requireNonNull(UserExt.getUser()).getId();
        mgtShopAuthDto.setUserId(userId);
        operatorUserService.mgtShopAuth(mgtShopAuthDto);
        return SUCCESS_TIP;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/MgtShopAuthDto.java
New file
@@ -0,0 +1,204 @@
package com.dsh.guns.modular.system.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
 * @ClassName Mgt
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/19 10:57
 * @Version 1.0
 */
@Data
public class MgtShopAuthDto implements Serializable {
    @ApiModelProperty(value = "userId",hidden = true)
    private Integer userId;
    @ApiModelProperty(value = "审核id")
    @NotNull(message = "审核id不能为空")
    private String authId;
    /**
     * 商户id
     */
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value = "商户名称")
    private String shopName;
    @ApiModelProperty(value="店主姓名")
    private String shopownerName;
    @ApiModelProperty(value="店主联系方式")
    private String shopownerPhone;
    /**
     * 主题类型1个人2企业
     */
    @ApiModelProperty(value = "主题类型1个人2企业")
    private Integer mainType;
    /**
     * 营业执照商户名称
     */
    @ApiModelProperty(value = "营业执照商户名称")
    private String blShopName;
    /**
     * 营业执照编号
     */
    @ApiModelProperty(value = "营业执照编号")
    private String blNumber;
    /**
     * 营业执照法人姓名
     */
    @ApiModelProperty(value = "营业执照法人姓名")
    private String blCorporateName;
    /**
     * 营业执照注册地址
     */
    @ApiModelProperty(value = "营业执照注册地址")
    private String blRegisteredAddress;
    @ApiModelProperty(value = "营业执照开始时间")
    private String blBusinessStartTime;
    @ApiModelProperty(value = "营业执照截止日期")
    private String blBusinessDeanline;
    @ApiModelProperty(value = "营业执照期限长期标记0否1是")
    private Integer blBusinessFoeverFlag;
    /**
     * 营业执照图片
     */
    @ApiModelProperty(value = "营业执照图片")
    private String blImage;
    /**
     * 法人姓名
     */
    @ApiModelProperty(value = "法人姓名")
    private String lpCorporateName;
    /**
     * 法人身份证号
     */
    @ApiModelProperty(value = "法人身份证号")
    private String lpIdCard;
    @ApiModelProperty(value = "法人身份证地址")
    private String lpIdAddress;
    /**
     * 法人身份证开始日期
     */
    @ApiModelProperty(value = "法人身份证开始日期")
    private String lpIcStartDate;
    /**
     * 法人身份证有效日期
     */
    @ApiModelProperty(value = "法人身份证有效日期")
    private String lpIcEndDate;
    @ApiModelProperty(value = "法人身份证长期标记0否1是")
    private Integer lpIcForeverFlag;
    /**
     * 法人身份证正面
     */
    @ApiModelProperty(value = "法人身份证正面")
    private String lpIcFront;
    /**
     * 法人身份证背面
     */
    @ApiModelProperty(value = "法人身份证背面")
    private String lpIcBack;
    @ApiModelProperty(value = "法人手机号")
    private String lpMobilePhone;
    @ApiModelProperty(value = "法人邮箱")
    private String lpContactEmail;
    /**
     * 结算账户类型1对公2对私
     */
    @ApiModelProperty(value = "结算账户类型1对公2对私")
    private String settlementAccountType;
    /**
     * 开户行
     */
    @ApiModelProperty(value = "开户行")
    private String saBank;
    /**
     * 开户名称
     */
    @ApiModelProperty(value = "开户名称")
    private String saAccountName;
    /**
     * 开户所在省
     */
    @ApiModelProperty(value = "开户所在省")
    private String saBankProvinceCode;
    /**
     * 开户所在市
     */
    @ApiModelProperty(value = "开户所在市")
    private String saBankCityCode;
    /**
     * 开户行全称
     */
    @ApiModelProperty(value = "开户行全称")
    private String saBankName;
    /**
     * 银行卡号
     */
    @ApiModelProperty(value = "银行卡号")
    private String saNumber;
    @ApiModelProperty(value = "补充资料")
    private String baPics;
    @ApiModelProperty(value = "补充说明")
    private String baDesc;
    @ApiModelProperty(value = "法人是否受益人 0否1是")
    private Integer owner;
    /**
     * 受益人姓名
     */
    @ApiModelProperty(value = "受益人姓名")
    private String uboName;
    /**
     * 受益人身份证号
     */
    @ApiModelProperty(value = "受益人身份证号")
    private String uboIdCard;
    /**
     * 受益人身份证开始日期
     */
    @ApiModelProperty(value = "受益人身份证开始日期")
    private String uboIcStartDate;
    /**
     * 受益人身份证有效日期
     */
    @ApiModelProperty(value = "受益人身份证有效日期")
    private String uboIcEndDate;
    /**
     * 受益人身份证正面
     */
    @ApiModelProperty(value = "受益人身份证正面")
    private String uboIcFront;
    /**
     * 受益人身份证背面
     */
    @ApiModelProperty(value = "受益人身份证背面")
    private String uboIcBack;
    /**
     * 受益人身份证背面
     */
    @ApiModelProperty(value = "受益人居住地址")
    private String uboIcAddress;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.guns.core.dataScope.DataScope;
import com.dsh.guns.modular.system.model.MgtShopAuthDto;
import com.dsh.guns.modular.system.model.OperatorUser;
import com.dsh.guns.modular.system.model.User;
import org.apache.ibatis.annotations.Param;
@@ -15,5 +16,14 @@
 */
public interface IOperatorUserService extends IService<OperatorUser> {
    List<Map<String, Object>> listAll(Page<Map<String, Object>> page, String province, String city, String userName, String phone, Integer platform, Integer type, Integer state);
    List<Map<String, Object>> listAll( Page<Map<String, Object>> page,String province, String city, String userName, String phone, Integer platform, Integer type, Integer state);
    /**
     * @description  商户进件
     * @author  jqs
     * @date    2023/6/19 11:02
     * @param mgtShopAuthDto
     * @return  void
     */
    void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto);
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java
@@ -1,17 +1,30 @@
package com.dsh.guns.modular.system.service.impl;
import com.alipay.api.domain.Shop;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.dto.StudentSearch;
import com.dsh.course.dto.TStudentDto;
import com.dsh.course.feignClient.account.AppUserClient;
import com.dsh.course.mapper.TOperatorAuthMapper;
import com.dsh.course.mapper.TOperatorMapper;
import com.dsh.course.mapper.TOperatorUserMapper;
import com.dsh.course.mapper.TSiteMapper;
import com.dsh.guns.modular.system.model.OperatorUser;
import com.dsh.guns.modular.system.model.TSite;
import com.dsh.guns.modular.system.model.TStudent;
import com.dsh.course.util.UUIDUtil;
import com.dsh.guns.core.exception.ServiceException;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.service.IOperatorAuthService;
import com.dsh.guns.modular.system.service.IOperatorUserService;
import com.dsh.guns.modular.system.service.ITStudentService;
import com.dsh.guns.modular.system.util.WeChatUtil;
import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult;
import com.github.binarywang.wxpay.service.EcommerceService;
import com.github.binarywang.wxpay.service.WxPayService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.commons.util.IdUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -29,8 +42,80 @@
@Service
public class TOperatorUserServiceImpl extends ServiceImpl<TOperatorUserMapper, OperatorUser> implements IOperatorUserService {
    @Autowired
    private IOperatorAuthService operatorAuthService;
    @Autowired
    private TOperatorMapper operatorMapper;
    @Autowired
    private WeChatUtil weChatUtil;
    @Override
    public List<Map<String, Object>> listAll(Page<Map<String, Object>> page, String province, String city, String userName, String phone, Integer platform, Integer type, Integer state) {
        return this.baseMapper.listAll(page,province,city,userName,phone,platform,type,state);
    }
    @Override
    public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) {
        mgtShopAuthDto.setUserId(1);
        mgtShopAuthDto.setAuthId("1");
        mgtShopAuthDto.setShopId(1L);
        mgtShopAuthDto.setShopName("商户名称");
        mgtShopAuthDto.setShopownerName("店主姓名");
        mgtShopAuthDto.setShopownerPhone("17628220929");
        mgtShopAuthDto.setMainType(1);
        mgtShopAuthDto.setBlShopName("营业执照商户名称");
        mgtShopAuthDto.setBlNumber("营业执照编号");
        mgtShopAuthDto.setBlCorporateName("营业执照法人姓名");
        mgtShopAuthDto.setBlRegisteredAddress("营业执照注册地址");
        mgtShopAuthDto.setBlBusinessStartTime("2022-02-11");
        mgtShopAuthDto.setBlBusinessDeanline("2025-05-09");
        mgtShopAuthDto.setBlBusinessFoeverFlag(0);
        mgtShopAuthDto.setBlImage("营业执照图片");
        mgtShopAuthDto.setLpCorporateName("法人姓名");
        mgtShopAuthDto.setLpIdCard("513701199910156123");
        mgtShopAuthDto.setLpIdAddress("法人身份证地址");
        mgtShopAuthDto.setLpIcStartDate("2020-05-05");
        mgtShopAuthDto.setLpIcEndDate("2025-05-05");
        mgtShopAuthDto.setLpIcForeverFlag(0);
        mgtShopAuthDto.setLpIcFront("法人身份证正面");
        mgtShopAuthDto.setLpIcBack("法人身份证背面");
        mgtShopAuthDto.setLpMobilePhone("17628220929");
        mgtShopAuthDto.setLpContactEmail("法人邮箱");
        mgtShopAuthDto.setSettlementAccountType("2");
        mgtShopAuthDto.setSaBank("开户行");
        mgtShopAuthDto.setSaAccountName("开户名称");
        mgtShopAuthDto.setSaBankProvinceCode("开户所在省");
        mgtShopAuthDto.setSaBankCityCode("开户所在市");
        mgtShopAuthDto.setSaBankName("开户行全称");
        mgtShopAuthDto.setSaNumber("银行卡号");
        mgtShopAuthDto.setOwner(1);
        mgtShopAuthDto.setUboName("ck");
        mgtShopAuthDto.setUboIdCard("513701199910156123");
        mgtShopAuthDto.setUboIcStartDate("2020-05-05");
        mgtShopAuthDto.setUboIcEndDate("2025-05-05");
        mgtShopAuthDto.setUboIcFront("受益人身份证正面");
        mgtShopAuthDto.setUboIcBack("受益人身份证正面");
        mgtShopAuthDto.setUboIcAddress("受益人居住地址");
        OperatorAuth shopAuthentication = new OperatorAuth();
        if(mgtShopAuthDto.getBlBusinessFoeverFlag()!=null&&mgtShopAuthDto.getBlBusinessFoeverFlag()==1){
            mgtShopAuthDto.setBlBusinessDeanline("长期");
        }
        if(mgtShopAuthDto.getLpIcForeverFlag()!=null&&mgtShopAuthDto.getLpIcForeverFlag()==1){
            mgtShopAuthDto.setLpIcEndDate("长期");
        }
        BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication);
        TOperator operator = operatorMapper.selectById(shopAuthentication.getOperatorId());
        String applyNumber = UUIDUtil.getNativeUUID().replace("-","");
        shopAuthentication.setOutBizNo(applyNumber);
        ApplymentsResult applymentsResult;
        try {
            applymentsResult = weChatUtil.ecommerceApply(shopAuthentication,applyNumber,operator);
        } catch (Exception e) {
            throw new ServiceException(e.getMessage());
        }
        shopAuthentication.setOrderStatus("AUDITING");
        shopAuthentication.setOrderNo(applymentsResult.getApplymentId());
        operatorAuthService.saveOrUpdate(shopAuthentication);
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java
@@ -1,6 +1,7 @@
package com.dsh.guns.modular.system.util;
import com.obs.services.ObsClient;
import com.obs.services.model.ObsObject;
import com.obs.services.model.PutObjectResult;
import org.springframework.web.multipart.MultipartFile;
@@ -34,4 +35,12 @@
        String objectUrl = putObjectResult.getObjectUrl();
        return objectUrl;
    }
    public static InputStream getOBSStream(String key){
        // 创建ObsClient实例
        ObsClient obsClient = new ObsClient(accessKey, accessKeySecret, endPoint);
        ObsObject object = obsClient.getObject(bucketName, key);
        // 待上传的本地文件路径,需要指定到具体的文件名
        return object.getObjectContent();//获得指定文件的输入流
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/WeChatUtil.java
New file
@@ -0,0 +1,168 @@
package com.dsh.guns.modular.system.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.domain.Shop;
import com.dsh.course.util.UUIDUtil;
import com.dsh.guns.core.util.ToolUtil;
import com.dsh.guns.modular.system.controller.util.UploadUtil;
import com.dsh.guns.modular.system.model.OperatorAuth;
import com.dsh.guns.modular.system.model.TOperator;
import com.dsh.guns.modular.system.model.User;
import com.dsh.guns.modular.system.service.IUserService;
import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsRequest;
import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult;
import com.github.binarywang.wxpay.bean.media.ImageUploadResult;
import com.github.binarywang.wxpay.service.EcommerceService;
import com.github.binarywang.wxpay.service.MerchantMediaService;
import com.github.binarywang.wxpay.service.WxPayService;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 微信工具类
 */
@Component
public class WeChatUtil {
    private  WxPayService wxService;
    /**
     * @description  电商二级商户进件(提交申请单)
     * @author  jqs
     * @date    2023/8/11 10:04
     * @param shopAuthentication
     * @param applyNumber
     * @param operator
     * @return  ApplymentsResult
     */
    public  ApplymentsResult ecommerceApply(OperatorAuth shopAuthentication, String applyNumber, TOperator operator) throws Exception {
        EcommerceService ecommerceService = wxService.getEcommerceService();
        MerchantMediaService merchantMediaService = wxService.getMerchantMediaService();
        ApplymentsRequest request = new ApplymentsRequest();
        //生成提交类
        request.setOutRequestNo(applyNumber);
        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
            request.setOrganizationType("2");
        }else{
            request.setOrganizationType("4");
        }
        //营业执照
        ApplymentsRequest.BusinessLicenseInfo business_license_info = new ApplymentsRequest.BusinessLicenseInfo();
        InputStream blImageIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBusinessPicture().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
        ImageUploadResult blImageIR = merchantMediaService.imageUploadV3(blImageIO,applyNumber+"blimage.jpg");
        business_license_info.setBusinessLicenseCopy(blImageIR.getMediaId());
        blImageIO.close();
        business_license_info.setBusinessLicenseNumber(shopAuthentication.getBusinessNumber());
        business_license_info.setMerchantName(shopAuthentication.getBusinessName());
        business_license_info.setLegalPerson(shopAuthentication.getLegalPerson());
        business_license_info.setCompanyAddress(shopAuthentication.getRegisterAddress());
        List<String> businessTimeList = new ArrayList<>();
        businessTimeList.add(0,shopAuthentication.getBusinessTerm());
        businessTimeList.add(1,shopAuthentication.getBusinessEnd());
        if(businessTimeList!=null&&businessTimeList.size()>1){
            String businessTime = JSONObject.toJSONString(businessTimeList);
            business_license_info.setBusinessTime(businessTime);
        }
        request.setBusinessLicenseInfo(business_license_info);
        //法人证件
        request.setIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
        ApplymentsRequest.IdCardInfo id_card_info = new ApplymentsRequest.IdCardInfo();
        InputStream lpIcFrontIO = OBSUploadUtil.getOBSStream(shopAuthentication.getLegalFront().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
        ImageUploadResult lpIcFrontIR = merchantMediaService.imageUploadV3(lpIcFrontIO,applyNumber+"lpIcFront.jpg");
        id_card_info.setIdCardCopy(lpIcFrontIR.getMediaId());
        lpIcFrontIO.close();
        InputStream lpIcBackIO = OBSUploadUtil.getOBSStream(shopAuthentication.getLegalBack().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
        ImageUploadResult lpIcBackIR = merchantMediaService.imageUploadV3(lpIcBackIO,applyNumber+"lpIcBack.jpg");
        id_card_info.setIdCardNational(lpIcBackIR.getMediaId());
        lpIcBackIO.close();
        id_card_info.setIdCardName(shopAuthentication.getLegalPerson());
        id_card_info.setIdCardNumber(shopAuthentication.getLeagleNumber());
        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
            id_card_info.setIdCardAddress(shopAuthentication.getLegalAddress());
        }
        id_card_info.setIdCardValidTimeBegin(shopAuthentication.getLegalTerm());
        id_card_info.setIdCardValidTime(shopAuthentication.getLegalEnd());
        request.setIdCardInfo(id_card_info);
        //企业填写
        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
            //受益人
            if("true".equals(shopAuthentication.getIsBeneficiary())){
                request.setOwner(true);
            }else{
                request.setOwner(false);
                List<ApplymentsRequest.UboInfo> ubo_info_list = new ArrayList<>();
                ApplymentsRequest.UboInfo uboInfo = new ApplymentsRequest.UboInfo();
                uboInfo.setUboIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
                InputStream uboIcFrontIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBeneficiaryFront().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
                ImageUploadResult uboIcFrontIR = merchantMediaService.imageUploadV3(uboIcFrontIO,applyNumber+"uboIcFront.jpg");
                uboInfo.setUboIdDocCopy(uboIcFrontIR.getMediaId());
                uboIcFrontIO.close();
                InputStream uboIcBackIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBeneficiaryBack().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
                ImageUploadResult uboIcBackIR = merchantMediaService.imageUploadV3(uboIcBackIO,applyNumber+"uboIcBack.jpg");
                uboInfo.setUboIdDocCopyBack(uboIcBackIR.getMediaId());
                uboIcBackIO.close();
                uboInfo.setUboIdDocName(shopAuthentication.getBeneficiary());
                uboInfo.setUboIdDocNumber(shopAuthentication.getBeneficiaryNumber());
                uboInfo.setUboIdDocAddress(shopAuthentication.getBeneficiaryAddress());
                uboInfo.setUboIdDocPeriodBegin(shopAuthentication.getBeneficiaryTerm());
                ubo_info_list.add(uboInfo);
                request.setUboInfoList(ubo_info_list);
            }
        }
        //结算账户信息
        ApplymentsRequest.AccountInfo accountInfo = new ApplymentsRequest.AccountInfo();
        if(shopAuthentication.getAccountType().equals(1)){
            accountInfo.setBankAccountType("74");
        }else{
            accountInfo.setBankAccountType("75");
        }
        accountInfo.setAccountBank(shopAuthentication.getBank());
        accountInfo.setAccountName(shopAuthentication.getAccountName());
        accountInfo.setBankAddressCode(shopAuthentication.getCityCode());
        accountInfo.setBankName(shopAuthentication.getBankName());
        accountInfo.setAccountNumber(shopAuthentication.getBankNumber());
        request.setAccountInfo(accountInfo);
        ApplymentsRequest.ContactInfo contactInfo = new ApplymentsRequest.ContactInfo();
        contactInfo.setContactType("65");
        contactInfo.setContactName(shopAuthentication.getLegalPerson());
        contactInfo.setContactIdCardNumber(shopAuthentication.getLeagleNumber());
        contactInfo.setMobilePhone(shopAuthentication.getLegalPhone());
        contactInfo.setContactEmail(shopAuthentication.getLegalEmail());
        request.setContactInfo(contactInfo);
        //店铺信息
        ApplymentsRequest.SalesSceneInfo salesSceneInfo = new ApplymentsRequest.SalesSceneInfo();
        salesSceneInfo.setStoreName(operator.getName());
//        InputStream storeQrCodeIO = OBSUploadUtils.getOSSInputStream(operator.getShopCode().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
//        ImageUploadResult storeQrCodeIR = merchantMediaService.imageUploadV3(storeQrCodeIO,applyNumber+"storeQrCode.jpg");
//        salesSceneInfo.setStoreQrCode(storeQrCodeIR.getMediaId());
//        storeQrCodeIO.close();
        request.setSalesSceneInfo(salesSceneInfo);
        request.setMerchantShortname(operator.getName());
//        request.setBusinessAdditionPics(shopAuthentication.getBaPics());
//        request.setBusinessAdditionDesc(shopAuthentication.getBaDesc());
        return ecommerceService.createApply(request);
    }
}
cloud-server-management/src/main/resources/TOperatorUserMapper.xml
@@ -2,4 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.course.mapper.TOperatorUserMapper">
    <select id="listAll" resultType="java.util.Map">
        select t1.name as name ,t2.name as userName,t2.phone as phone  from t_operator t1
        left join sys_user t2 t1.id = t1.objectId and t2.objectType = 2
    </select>
</mapper>
cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html
@@ -183,7 +183,59 @@
            <div class="row">
                <div class="col-lg-6" style="">
                    <div class="form-group" >
                        <label class="col-sm-4 control-label" >
                            结算账户类型:<input type="radio" name="type" value="1">对公 <input type="radio" name="type" value="2">对私
                        </label>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">开户银行:</label>
                        <div class="col-sm-9">
                            <select style="width: 300px" class="form-control" id="bank" name="bank">
                                <option value="">选择开户银行</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">开户所在地:</label>
                        <div class="col-sm-9" style="display: flex">
                            <select style="width: 150px" class="form-control" id="pCode" onchange="TSite.oneChange(this)" name="bank">
                                <option value="">选择省</option>
                                @for(obj in provinceList){
                                <option value="${obj.code}">${obj.name}</option>
                                @}
                            </select>
                            <select style="width: 150px" class="form-control" id="cCode" name="bank">
                                <option value="">选择市区</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*银行卡号:</label>
                        <div class="col-sm-9">
                            <input style="width: 300px" class="form-control" id="backNumber" name="backNumber" type="text">
                        </div>
                    </div>
                </div>
                <div class="col-lg-6" style="">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*开户名称:</label>
                        <div class="col-sm-9">
                            <input style="width: 300px" class="form-control" id="backUserName"  placeholder="请输入" type="text">
                        </div>
                    </div>
                    <div class="form-group" >
                        <label class="col-sm-3 control-label">*开户行全称:</label>
                        <div class="col-sm-9">
                            <input style="width: 300px" class="form-control" id="backName"  placeholder="请输入" type="text">
                        </div>
                    </div>
                </div>
            </div>
cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html
@@ -1,113 +1,491 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>运营商商户管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            所在省
                                        </button>
                                    </div>
                                    <select class="form-control" id="pCode" onchange="TSite.oneChange(this)">
                                        <option value="">选择省</option>
                                        @for(obj in provinceList){
                                        <option value="${obj.code}">${obj.name}</option>
                                        @}
                                    </select>
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            所在市
                                        </button>
                                    </div>
                                    <select class="form-control" id="cCode">
                                        <option value="">请先选择省</option>
                                    </select>
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="name" name="管理员姓名:" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="phone" name="管理员手机号:" />
                            </div>
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            认证平台
                                        </button>
                                    </div>
                                    <select style="width: 300px" class="form-control" id="platform" name = "platform">
                                        <option value="">全部</option>
                                        <option value="1">微信</option>
                                        <option value="2">支付宝</option>
                                    </select>
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            认证类型
                                        </button>
                                    </div>
                                    <select style="width: 300px" class="form-control" id="type" name = "platform">
                                        <option value="">全部</option>
                                        <option value="1">法人</option>
                                        <option value="2">个人</option>
                                    </select>
                                </div>
                            </div>
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <title>amis demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta
            name="viewport"
            content="width=device-width, initial-scale=1, maximum-scale=1"
    />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <link rel="stylesheet" href="${ctxPath}/sdk/sdk.css" />
    <link rel="stylesheet" href="${ctxPath}/sdk/helper.css" />
    <link rel="stylesheet" href="${ctxPath}/sdk/iconfont.css" />
    <!-- 这是默认主题所需的,如果是其他主题则不需要 -->
    <!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 -->
    <!-- <link rel="stylesheet" href="sdk-ie11.css" /> -->
    <!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue -->
    <style>
        html,
        body,
        .app-wrapper {
            position: relative;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>
<div id="root" class="app-wrapper"></div>
<script src="${ctxPath}/sdk/sdk.js"></script>
<script type="text/javascript">
    (function () {
        let amis = amisRequire('amis/embed');
        // 通过替换下面这个配置来生成不同页面
        let amisJSON = {
            "type": "page",
            "title": "",
            "regions": [
                "body",
                "toolbar",
                "header"
            ],
            "body": [
                {
                    "type": "crud",
                    "id": "u:e103c7434df8",
                    "syncLocation": false,
                    "api": {
                        "method": "post",
                        "url": "/operatorUser/listAll",
                        "messages": {
                        }
                    },
                    "columns": [
                        {
                            "label": "所在市",
                            "type": "text",
                            "name": "city",
                            "id": "u:71aded278293"
                        },
                        {
                            "label": "管理员姓名",
                            "type": "text",
                            "name": "adminName",
                            "id": "u:22cab5368b85",
                            "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>",
                            "placeholder": "-"
                        },
                        {
                            "label": "管理员手机号",
                            "type": "text",
                            "name": "adminPhone",
                            "id": "u:100d93c3a7af",
                            "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>",
                            "placeholder": "-"
                        },
                        {
                            "label": "认证平台",
                            "type": "mapping",
                            "name": "ptType",
                            "id": "u:0529135bd40c",
                            "placeholder": "-",
                            "map": {
                                "1": "支付宝",
                                "2": "微信"
                            }
                        },
                        {
                            "label": "认证类型",
                            "type": "mapping",
                            "name": "regisType",
                            "id": "u:89e54c565da1",
                            "placeholder": "-",
                            "map": {
                                "1": "法人",
                                "2": "个人"
                            }
                        },
                        {
                            "label": "分账比例",
                            "type": "text",
                            "name": "percent",
                            "id": "u:9f3c838b4dce",
                            "placeholder": "-",
                            "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>"
                        },
                        {
                            "type": "mapping",
                            "name": "isPass",
                            "label": "审核状态",
                            "id": "u:89e54c565da1",
                            "placeholder": "-",
                            "map": {
                                "1": "待审核",
                                "2": "审核中",
                                "3": "已通过",
                                "4": "已拒绝"
                            }
                        },
                        {
                            "type": "operation",
                            "id": "u:d69a8d60da29",
                            "buttons": [
                                {
                                    "type": "button",
                                    "label": "详情",
                                    "onEvent": {
                                        "click": {
                                            "actions": [
                                                {
                                                    "args": {
                                                        "options": {
                                                            "silent": false
                                                        },
                                                        "api": {
                                                            "url": "/ball/toRegister/$id",
                                                            "method": "get"
                                                        }
                                                    },
                                                    "actionType": "ajax"
                                                }
                                            ]
                                        }
                                    },
                                    "id": "u:ed2016be790a",
                                    "class": "link",
                                    "level": "link"
                                }
                            ]
                        }
                    ],
                    "bulkActions": [
                        {
                            "type": "button",
                            "level": "danger",
                            "label": "批量删除",
                            "actionType": "ajax",
                            "confirmText": "确定要删除?",
                            "api": "/xxx/batch-delete",
                            "id": "u:e179a3daeee8"
                        },
                        {
                            "type": "button",
                            "label": "批量编辑",
                            "actionType": "dialog",
                            "dialog": {
                                "title": "批量编辑",
                                "size": "md",
                                "body": {
                                    "type": "form",
                                    "api": "/xxx/bacth-edit",
                                    "body": [
                                        {
                                            "label": "字段1",
                                            "text": "字段1",
                                            "type": "input-text"
                                        }
                                    ]
                                }
                            },
                            "id": "u:4bbe1e5df5ed"
                        }
                    ],
                    "itemActions": [
                        {
                            "label": "分账比例",
                            "type": "button",
                            "id": "u:0120816fbcb0",
                            "level": "info",
                            "onEvent": {
                                "click": {
                                    "actions": [
                                        {
                                            "args": {
                                            },
                                            "dialog": {
                                                "type": "dialog",
                                                "title": "弹框标题",
                                                "body": [
                                                    {
                                                        "type": "form",
                                                        "title": "表单",
                                                        "body": [
                                                            {
                                                                "label": "测试分账id",
                                                                "type": "input-text",
                                                                "name": "id",
                                                                "id": "u:64ad701b83c3"
                                                            },
                                                            {
                                                                "label": "支付宝分账比例",
                                                                "type": "input-text",
                                                                "name": "ali",
                                                                "id": "u:91534896ba54"
                                                            },
                                                            {
                                                                "label": "微信分账比例",
                                                                "type": "input-text",
                                                                "name": "text",
                                                                "id": "u:4649d90555b1"
                                                            }
                                                        ],
                                                        "api": {
                                                            "url": "/ball/resSet",
                                                            "method": "get"
                                                        },
                                                        "id": "u:01f28ccf4fb8"
                                                    }
                                                ],
                                                "showCloseButton": true,
                                                "showErrorMsg": true,
                                                "showLoading": true,
                                                "id": "u:073191c211be"
                                            },
                                            "actionType": "dialog"
                                        }
                                    ],
                                    "weight": 0
                                }
                            }
                        }
                    ],
                    "filterSettingSource": [
                        "id",
                        "customerName",
                        "simName",
                        "address",
                        "industryId",
                        "email",
                        "createBy",
                        "updateBy",
                        "remark",
                        "customerCode"
                    ],
                    "features": [
                        "create",
                        "filter",
                        "bulkDelete",
                        "view",
                        "delete",
                        "update",
                        "bulkUpdate"
                    ],
                    "filterColumnCount": 3,
                    "filterEnabledList": [
                    ],
                    "headerToolbar": [
                        {
                            "label": "新增",
                            "type": "button",
                            "actionType": "dialog",
                            "level": "primary",
                            "dialog": {
                                "title": "新增",
                                "body": {
                                    "type": "form",
                                    "api": {
                                        "method": "post",
                                        "url": "/ball/getRegisterList",
                                        "messages": {
                                        }
                                    },
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "name": "city",
                                            "label": "所在市"
                                        },
                                        {
                                            "type": "input-text",
                                            "name": "adminName",
                                            "label": "管理员姓名"
                                        },
                                        {
                                            "type": "input-text",
                                            "name": "adminPhone",
                                            "label": "管理员手机号"
                                        },
                                        {
                                            "type": "select",
                                            "name": "ptType",
                                            "label": "认证平台"
                                        },
                                        {
                                            "type": "select",
                                            "name": "regisType",
                                            "label": "认证类型"
                                        },
                                        {
                                            "type": "input-text",
                                            "name": "percent",
                                            "label": "分账比例"
                                        },
                                        {
                                            "type": "select",
                                            "name": "isPass",
                                            "label": "审核状态"
                                        },
                                        {
                                            "type": "input-operation"
                                        }
                                    ]
                                }
                            },
                            "id": "u:7ab8ef9ba27f"
                        },
                        "bulkActions"
                    ],
                    "filter": {
                        "title": "查询条件",
                        "columnCount": 3,
                        "mode": "horizontal",
                        "body": [
                            {
                                "type": "input-city",
                                "label": "城市选择",
                                "name": "cityCode",
                                "allowDistrict": false,
                                "id": "u:16db9fd9fe42",
                                "mode": "horizontal",
                                "horizontal": {
                                    "left": 3,
                                    "right": 9
                                },
                                "className": ""
                            },
                            {
                                "type": "input-date-range",
                                "label": "日期范围",
                                "name": "times",
                                "id": "u:5ea0ab341c9e",
                                "embed": false,
                                "format": "YYYY-MM-DD",
                                "inputFormat": "YYYY-MM-DD"
                            },
                            {
                                "type": "input-text",
                                "label": "管理员姓名",
                                "name": "adminName",
                                "id": "u:528726820775"
                            },
                            {
                                "type": "select",
                                "label": "认证平台",
                                "name": "ptType",
                                "options": [
                                    {
                                        "label": "全部",
                                        "value": ""
                                    },
                                    {
                                        "label": "支付宝",
                                        "value": "1"
                                    },
                                    {
                                        "label": "微信",
                                        "value": "2"
                                    }
                                ],
                                "id": "u:3f0a0a09ae17",
                                "multiple": false
                            },
                            {
                                "type": "select",
                                "label": "认证类型",
                                "name": "regisType",
                                "options": [
                                    {
                                        "label": "全部",
                                        "value": "全部"
                                    },
                                    {
                                        "label": "法人",
                                        "value": "1"
                                    },
                                    {
                                        "label": "个人",
                                        "value": "2"
                                    }
                                ],
                                "id": "u:62ad230ae3e4",
                                "multiple": false
                            },
                            {
                                "type": "select",
                                "label": "审核状态",
                                "name": "isPass",
                                "options": [
                                    {
                                        "label": "全部",
                                        "value": "全部"
                                    },
                                    {
                                        "label": "待审核",
                                        "value": "1"
                                    },
                                    {
                                        "label": "审核中",
                                        "value": "2"
                                    },
                                    {
                                        "label": "已通过",
                                        "value": "3"
                                    },
                                    {
                                        "label": "已拒绝",
                                        "value": "4"
                                    }
                                ],
                                "id": "u:b5833dda16af",
                                "multiple": false
                            }
                        ],
                        "id": "u:2c92f31a25d0",
                        "name": "select1",
                        "rules": [
                        ]
                    },
                    "perPageAvailable": [
                        10,
                        20,
                        50,
                        100
                    ],
                    "messages": {
                    },
                    "footerToolbar": [
                        {
                            "type": "statistics",
                            "align": "left"
                        },
                        {
                            "type": "pagination",
                            "align": "left"
                        },
                        {
                            "type": "switch-per-page",
                            "tpl": "内容",
                            "align": "left"
                        }
                    ],
                    "columnsTogglable": "auto",
                    "pageField": "",
                    "perPageField": "",
                    "alwaysShowPagination": true,
                    "loadDataOnce": true,
                    "perPage": 5,
                    "combineNum": 3
                }
            ],
            "id": "u:b14a93e2aeb3"
        };
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            审核状态
                                        </button>
                                    </div>
                                    <select class="form-control" id="state" >
                                        <option value="">全部</option>
                                        <option value="1">待审核</option>
                                        <option value="2">审核中</option>
                                        <option value="2">已审核</option>
                                        <option value="2">已拒绝</option>
                                    </select>
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TSite.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TSite.resetSearch()" space="true"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
                            <#button name="分账比例" icon="fa-plus" clickFun="TSite.proportion()"/>
                        </div>
                        <#table id="TSiteTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/operatorUser/operatorUser.js"></script>
<script>
    laydate.render({
        elem: '#createTime'
        ,range: true
        ,lang:"en"
    });
        let amisScoped = amis.embed('#root', amisJSON);
    })();
    function test(){
        console.log("测试成功")
    }
    var myButton = document.getElementById("ttt");
    myButton.addEventListener("click",test);
</script>
@}
</body>
</html>
cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
@@ -564,4 +564,15 @@
    var carPhoto = new $WebUpload("img");
    carPhoto.setUploadBarId("progressBar");
    carPhoto.init();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/operatorUser/mgtShopAuth", function (data) {
        Feng.success("添加成功!");
        window.parent.Course.table.refresh();
        CourseInfo.close();
    }, function (data) {
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.start();
});
cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js
@@ -37,6 +37,7 @@
TSite.addSubmit = function(){
    var bodyType = $("input[name='bodyType']:checked").val();
    var accountType = $("input[name='accountType']:checked").val();
    var type = $("input[name='type']:checked").val();
    if (bodyType=="" || null == type){
        Feng.error("请选择主体类型");
@@ -121,7 +122,27 @@
        Feng.error("请上传法人身份证背面照");
        return;
    }
// todo 确定银行列表
    if ("" == $("#bank").val() || null == $("#bank").val()){
        Feng.error("请选择银行");
        return;
    }
    if ("" == $("#pCode").val() || null == $("#pCode").val()){
        Feng.error("请选择开户所在省");
        return;
    }if ("" == $("#cCode").val() || null == $("#cCode").val()){
        Feng.error("请选择开户所在市");
        return;
    }if ("" == $("#backNumber").val() || null == $("#backNumber").val()){
        Feng.error("请输入银行卡号");
        return;
    }if ("" == $("#backUserName").val() || null == $("#backUserName").val()){
        Feng.error("请输入开户名称");
        return;
    }if ("" == $("#backName").val() || null == $("#backName").val()){
        Feng.error("请输入开户行全称");
        return;
    }
    if(type=="ENTERPRISE"){
        if ("" == $("#bName").val() || null == $("#bName").val()){
            Feng.error("请输入受益人姓名");
@@ -206,6 +227,15 @@
    ajax.set("legalAddress",        $("#lIDAddress").val()    );
    ajax.set("legalFront",        $("#IDCardImg").val()    );
    ajax.set("legalBack",        $("#IDCardImg1").val()    );
    ajax.set("accountType",        accountType    );
    ajax.set("bank",        $("#bank").val()    );
    ajax.set("accountName",        $("#backUserName").val()    );
    ajax.set("province",        $('#pCode option:selected').text()   );
    ajax.set("provinceCode",        $("#pCode").val()    );
    ajax.set("city",        $('#cCode option:selected').text()    );
    ajax.set("cityCode",        $("#cCode").val()    );
    ajax.set("bankName",        $("#backName").val()    );
    ajax.set("bankNumber",        $("#backNumber").val()    );
    ajax.set("isBeneficiary",        type    );
    ajax.set("beneficiary",        $("#bName").val()    );
    ajax.set("beneficiaryPhone",        $("#bPhone").val()    );